Postado Setembro 7, 2019 5 anos TFS 0.4 Boa tarde povo, venho mais uma vez recorrer à vocês para me ajudar no seguinte: Eu gostaria de uma spell que fosse igual um exura sio, ou seja, cure um player que não seja você e que ele dava uma regen periodica, tipo o utura, só que essa cura seria de acordo com uma % da vida maxima do cara que lançou a magia. Eu tenho uma magia que cura periodicamente quem a usou de acordo com a % da vida maxima, porem, se eu colocar "params" no xml, a magia para de funcionar, e da um erro no console Citar local config = { cooldown = 10, -- tempo entre uma magia e outra time = 10, -- tempo em segundos que ficará healando percent = 5, --- porcentagem da vida que cura storage = 19330, effect = 12, --- efeito que vai sair } function onCastSpell(cid, var) if getCreatureMana(cid) >= config.mana then if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then doPlayerSetStorageValue(cid, config.storage, os.time()) local i = 0 while i < config.time do i = i+1 addEvent(function() if isCreature(cid) then if getCreatureMaxHealth(cid) ~= getCreatureHealth(cid) then local lifedraw = math.ceil(getCreatureMaxHealth(cid) * (config.percent)/100) local pos = getPlayerPosition(cid) doCreatureAddHealth(cid, lifedraw, 1) doSendMagicEffect(pos, config.effect) end end end, 1000*i) end else doPlayerSendCancel(cid, "COOLDOWN: "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end else doPlayerSendCancel(cid, 36) end return false end Erro no console: [7/9/2019 16:31:30] [Error - Spell Interface] [7/9/2019 16:31:30] data/spells/scripts/healing/test 1.lua:onCastSpell [7/9/2019 16:31:30] Description: [7/9/2019 16:31:30] data/spells/scripts/healing/test 1.lua:10: attempt to compare nil with number [7/9/2019 16:31:30] stack traceback: [7/9/2019 16:31:30] data/spells/scripts/healing/test 1.lua:10: in function <data/spells/scripts/healing/test 1.lua:9>
Postado Setembro 7, 2019 5 anos @Zazeros local config = { cooldown = 10, -- tempo entre uma magia e outra time = 10, -- tempo em segundos que ficará healando percent = 5, --- porcentagem da vida que cura storage = 19330, effect = 12, --- efeito que vai sair mana = 10 } function onCastSpell(cid, var) if getCreatureMana(cid) >= config.mana then if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then doPlayerSetStorageValue(cid, config.storage, os.time()) local i = 0 while i < config.time do i = i+1 addEvent(function() if isCreature(cid) then if getCreatureMaxHealth(cid) ~= getCreatureHealth(cid) then local lifedraw = math.ceil(getCreatureMaxHealth(cid) * (config.percent)/100) local pos = getPlayerPosition(cid) doCreatureAddHealth(cid, lifedraw, 1) doSendMagicEffect(pos, config.effect) end end end, 1000*i) end else doPlayerSendCancel(cid, "COOLDOWN: "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end else doPlayerSendCancel(cid, 36) end return false end O rei de seu proprio destino é aquele que luta pela gloria do amanhã! Discord : ZoR#9373
Postado Setembro 7, 2019 5 anos Autor @ZoR Cara, eu não entendi exatamente o que voce mudou, mas eu tentei e continua a mesma coisa...
Postado Setembro 7, 2019 5 anos @Zazeros bom na tabela faltava a parte "MANA" ou seja o script chamava algo vazio, não tinha a variavel mana na tabela olhe a parte do code que falta a variavel mana! local config = { cooldown = 10, -- tempo entre uma magia e outra time = 10, -- tempo em segundos que ficará healando percent = 5, --- porcentagem da vida que cura storage = 19330, effect = 12, --- efeito que vai sair } function onCastSpell(cid, var) if getCreatureMana(cid) >= config.mana then este acima é a parte do seu script que eu editei e coloquei a "MANA" O rei de seu proprio destino é aquele que luta pela gloria do amanhã! Discord : ZoR#9373
Postado Setembro 7, 2019 5 anos Autor @ZoR Cara, agora não está dando erro no console nem um, mas tambem não está funcionando a magia
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.