Postado Julho 10, 2016 8 anos Seguinte, eu consegui fazer isso pra armas melee. Vou recapitular oq eu fiz antes de colocar minhas dúvidas: Adicionei scripts="melee.lua" em todas as armas melee em data/weapons/weapons.xml Quote <melee id="2454" level="65" unproperly="1" function="default" script="melee.lua"> Criei um arquivo melee.lua em data/weapons/scripts e coloquei (baseado nas spells): local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) combat:setParameter(COMBAT_PARAM_USECHARGES, true) function onGetFormulaValues(player, skill, attack, factor) local min = (skill * 1.28) + (attack * 1.12) local max = (skill * 1.92) + (attack * 1.68) return -min, -max end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onUseWeapon(player, var) return combat:execute(player, var) end E funciona perfeitamente, mas essa fórmula que eu calculei é uma alteração baseada na fórmula para offensive stance. Tem também a balanced stance (75% do dano) e defensive stance (50%). Minhas dúvidas: 1. Como adiciono as stances na fórmula? 2. Do jeito que eu fiz precisaria adicionar script="melee.lua" em toda arma nova. Como eu faço pra, no lugar disso, substituir a fórmula padrão? Em outras palavras, fazer com que toda arma melee, mesmo as adicionadas depois, funcionem pela mesma fórmula? 3. Tem como fazer isso pra wands também? Todas as wands dando o mesmo dano por fórmula (não fixo), mudando apenas o elemento dela? EDIT: 4: O que é o function="default" no weapons.xml? Quais outros comandos são úteis pra essa linha? Agradeço qualquer ajuda. Se interessa alguém, tô finalizando uma série de alterações pra deixar o Tibia no estilo hack'n'slash. Tá excelente, vou postar dia desses. Editado Julho 11, 2016 8 anos por porcohomicida (veja o histórico de edições)
Postado Julho 11, 2016 8 anos 1) se não me enganou postaram no git oficial do tfs um pr para uma função de pegar a stance por Lua, ai voce só colocar if player:getStance() == 1 pra controlar 2) Voce pode fazer ele registrar não pra um id mas pra todos os itens com determinada propriedade, mas isso requer alteração na source. Contudo, se vc realmente vai mudar a fórmula de tudo, é muito mais vantajoso alterar em weapons.cpp as fórmulas direto do que utilizar scripts pra isso. 3) voce pode alterar a formula das wands tanto por script quanto por source. 4) function default é uma atribuição que voce coloca pra definir que a função daquela tag é a padrão (registrar um script), existem outros tipos de function pré definidas na source que você pode escolher sem ter q modificar nada. Um exemplo melhor disso é encontrado nas talkactions, lá alem de default você tem functions como attr e reload que são controladas diretamente pela source e você não vai achar nenhum script vinculados à ela. Outro exemplo é o exiva. Agora pra weapons eu desconheço quais são os outros functions existentes, mas posso verificar pra você na source, se quiser Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Julho 11, 2016 8 anos Autor 6 hours ago, xWhiteWolf said: 1) se não me enganou postaram no git oficial do tfs um pr para uma função de pegar a stance por Lua, ai voce só colocar if player:getStance() == 1 pra controlar 2) Voce pode fazer ele registrar não pra um id mas pra todos os itens com determinada propriedade, mas isso requer alteração na source. Contudo, se vc realmente vai mudar a fórmula de tudo, é muito mais vantajoso alterar em weapons.cpp as fórmulas direto do que utilizar scripts pra isso. 3) voce pode alterar a formula das wands tanto por script quanto por source. 4) function default é uma atribuição que voce coloca pra definir que a função daquela tag é a padrão (registrar um script), existem outros tipos de function pré definidas na source que você pode escolher sem ter q modificar nada. Um exemplo melhor disso é encontrado nas talkactions, lá alem de default você tem functions como attr e reload que são controladas diretamente pela source e você não vai achar nenhum script vinculados à ela. Outro exemplo é o exiva. Agora pra weapons eu desconheço quais são os outros functions existentes, mas posso verificar pra você na source, se quiser Weapons.cpp parece melhor mesmo. Não conhecia esse. Como eu faço com intervalos do tipo: function onGetFormulaValues(player, skill, attack, factor) local min = (player:getLevel() * 0.1) + (skill * 0.96) + (attack * 0.48) local max = (player:getLevel() * 0.1) + (skill * 1.44) + (attack * 0.72) return -min, -max end ^ Para hits normais de knight. E para wands: function onGetFormulaValues(player, level, maglevel) local min = (level / 10) + (maglevel * 0.46) + 8 local max = (level / 10) + (maglevel * 0.69) + 12 return -min, -max end Pra wands daí seria bom manter o sistema original de colocar type="" no weapons.xml pra especificar o tipo de dano.
Postado Julho 11, 2016 8 anos no weapons.cpp vc configura a formula pra melee, distance e pra wands. Só fuçar lá, achar as funções que definem dano e alterar elas pro q vc quiser.. claro q vc nao vai botar player:getLevel(), vc precisa usar as funções próprias da source, e não as de Lua. Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Julho 11, 2016 8 anos 9 horas atrás, xWhiteWolf disse: 1) se não me enganou postaram no git oficial do tfs um pr para uma função de pegar a stance por Lua, ai voce só colocar if player:getStance() == 1 pra controlar 2) Voce pode fazer ele registrar não pra um id mas pra todos os itens com determinada propriedade, mas isso requer alteração na source. Contudo, se vc realmente vai mudar a fórmula de tudo, é muito mais vantajoso alterar em weapons.cpp as fórmulas direto do que utilizar scripts pra isso. 3) voce pode alterar a formula das wands tanto por script quanto por source. 4) function default é uma atribuição que voce coloca pra definir que a função daquela tag é a padrão (registrar um script), existem outros tipos de function pré definidas na source que você pode escolher sem ter q modificar nada. Um exemplo melhor disso é encontrado nas talkactions, lá alem de default você tem functions como attr e reload que são controladas diretamente pela source e você não vai achar nenhum script vinculados à ela. Outro exemplo é o exiva. Agora pra weapons eu desconheço quais são os outros functions existentes, mas posso verificar pra você na source, se quiser tem algo assim das stances para tfs 0.4? ontem procurei no lua functions não achei ;s Toda terça-feira um tópico novo: Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/ Peça sua spell (Suporte): https://tibiaking.com/forums/topic/84162-peça-sua-spell/ Chuva de flechas (Spell): https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/ Doom (Spell): https://tibiaking.com/forums/topic/51622-doom-spell/ Utilização do VS Code (Infra): https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/ SD com Combo (Spell): https://tibiaking.com/forums/topic/94520-sd-modificada/ Alteração attack speed (C++): https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/ Bônus de Speed (NPC): https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.