Postado Fevereiro 9, 2016 9 anos Bom dia, estou criando um OT a partir de uma database bem limpa. Ao começar a usar scripts para a criação de spells, ja tive um problema com essa spell: Spoiler local cura = getPlayerMagLevel(cid) local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setHealingFormula(combat, COMBAT_FORMULA_DAMAGE, cura, 0, cura, 0) function onCastSpell(cid, var) return doCombat(cid, combat, var) end O erro que aparece na distro é esse: Citar [Error - Spell Interface] data/spells/scripts/healing/light healing.lua Description: <luaGetPlayerMagLevel> Player not found Imaginei que a causa do erro fosse a ausencia da função no 050 - functions.lua, entretanto, ao substituir o arquivo pelo mesmo, só q de uma datapack que eu ja tinha usado a função getPlayerMagLevel sem problemas, o erro persistiu. Conto com a ajuda de vocês Edit: Tentei mudar a função getPlayerMagLevel por getPlayerlevel, e o erro na distro foi: Citar [Error - Spell Interface] data/spells/scripts/healing/light healing.lua Description: <internalGetPlayerInfo> Player not found when requested info #3 Editado Fevereiro 9, 2016 9 anos por Hoad (veja o histórico de edições)
Postado Fevereiro 9, 2016 9 anos Vamos ler a descrição do erro e tentar entender oque ela significa: Description: <luaGetPlayerMagLevel> Player not found ao usar a função getPlayerMagLevel ele não encontrou o player que vc tá tentando fazer a checagem. Ok, mas por que isso ocorre? Bom, você colocou lá em cima: local cura = getPlayerMagLevel(cid) Mas oque é esse cid aí? De onde ele vem? Parece que achamos o problema... vc tá tentando puxar o ml de algo que não está definido ainda. "Mas Lobo, cid é o player que executa a spell, certo?" SIM, mas só dentro do escopo da spell. Acompanhe: Spoiler -- local cura = getPlayerMagLevel(cid) -- isso daqui não existe. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setHealingFormula(combat, COMBAT_FORMULA_DAMAGE, cura, 0, cura, 0) --- escopo da spell function onCastSpell(cid, var) -- a partir daqui vc pode usar o cid pois ele é um dos parametros return doCombat(cid, combat, var) --- aqui vc não pode mais usar o cid end Pra você fazer uma spell que recupera dependendo do ml vc precisa fazer um callback nessa spell.. segue esse tutorial aqui 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 Fevereiro 9, 2016 9 anos Autor Obrigado por responder. Então, depois de ler e pesquisar mais um pouco sobre, refiz a spell e assim ficou: Citar local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onGetFormulaValues(cid, level, maglevel) min = (level * 1 + maglevel * 1) max = (level * 1 + maglevel * 1) + 10 return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, “onGetFormulaValues”) function onCastSpell(cid, var) return doCombat(cid, combat, var) end E agora foi certinho Obrigado mais uma vez NW C:
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.