Postado Abril 19, 2019 6 anos Em 17/04/2019 em 19:40, Freire disse: @KiraConquest vou tenta aqui, valeu Edit: Testei tirando linha por linha, não consegui acha o erro. oque aconteceu foi, ou o script para de funciona totalmente ou conituna com o mesmo erro. O que o script FAZ?
Postado Abril 19, 2019 6 anos Em 17/04/2019 em 17:47, Freire disse: Alguém pode me ajuda com esse script ? ele funciona normal, mas se o player desloga com o efeito da potion o server crasha . não aparece erro na distro. uso o servidor do malucooo como base. link do servidor. Mostrar conteúdo oculto Mostrar conteúdo oculto script Mostrar conteúdo oculto Mostrar conteúdo oculto local config = { cooldown = 35, -- tempo entre uma magia e outra tempo = 30, -- tempo em segundos que ficará healando storage = 134813, effect = 49, --- efeito que vai sair } function onUse(cid, item, fromPosition, itemEx, toPosition) if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then if getPlayerSoul(cid) <= 49 then doPlayerSendTextMessage(cid,20,'Desculpe, você não tem Souls suficiente.') return true else doPlayerAddSoul(cid,-50) for i = 1, config.tempo do addEvent(function() if isCreature(cid) then local pos = getPlayerPosition(cid) doCreatureAddHealth(cid, (12*getCreatureMaxHealth(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) doPlayerAddMana(cid,(12*getPlayerMaxMana(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) doSendMagicEffect(pos, config.effect) end end, 2000*i) end end setPlayerStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "cooldown "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end Acho que algo para "burlar" esse bug seria dar a condição de battle na script, assim o player não relogaria (porém, no caso de morte ou algo do tipo, acho que continuaria o erro)
Postado Abril 19, 2019 6 anos Em 17/04/2019 em 17:47, Freire disse: Alguém pode me ajuda com esse script ? ele funciona normal, mas se o player desloga com o efeito da potion o server crasha . não aparece erro na distro. uso o servidor do malucooo como base. link do servidor. Mostrar conteúdo oculto Mostrar conteúdo oculto script Mostrar conteúdo oculto Mostrar conteúdo oculto local config = { cooldown = 35, -- tempo entre uma magia e outra tempo = 30, -- tempo em segundos que ficará healando storage = 134813, effect = 49, --- efeito que vai sair } function onUse(cid, item, fromPosition, itemEx, toPosition) if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then if getPlayerSoul(cid) <= 49 then doPlayerSendTextMessage(cid,20,'Desculpe, você não tem Souls suficiente.') return true else doPlayerAddSoul(cid,-50) for i = 1, config.tempo do addEvent(function() if isCreature(cid) then local pos = getPlayerPosition(cid) doCreatureAddHealth(cid, (12*getCreatureMaxHealth(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) doPlayerAddMana(cid,(12*getPlayerMaxMana(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) doSendMagicEffect(pos, config.effect) end end, 2000*i) end end setPlayerStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "cooldown "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end Ah sim, pelo visto o problema é causado porque o ao deslogar o Efeito persiste, porém como não há creature, o server crasha, mas não é um BUG, é apenas um pequeno erro de lógica. A Resolução seria você fazer uma versão deste item, só que em SPELLS local config = { cooldown = 35, -- tempo entre uma magia e outra storage = 134813, effect = 49, --- efeito que vai sair } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, config.effect) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onGetFormulaValues(cid, level, skill) local multiplier = (100*level/100)*(100*skill/100) return (10*getCreatureMaxHealth(cid)/100)+multiplier, (10*getCreatureMaxHealth(cid)/100)+multipliercura end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then if getPlayerSoul(cid) <= 49 then doPlayerSendTextMessage(cid,20,'Desculpe, você não tem Souls suficiente.') return true else doPlayerAddSoul(cid,-50) addEvent(doCombat, 0, cid, combat, var) addEvent(doCombat, 2000, cid, combat, var) addEvent(doCombat, 4000, cid, combat, var) addEvent(doCombat, 6000, cid, combat, var) addEvent(doCombat, 8000, cid, combat, var) addEvent(doCombat, 10000, cid, combat, var) addEvent(doCombat, 12000, cid, combat, var) addEvent(doCombat, 14000, cid, combat, var) addEvent(doCombat, 16000, cid, combat, var) addEvent(doCombat, 18000, cid, combat, var) addEvent(doCombat, 20000, cid, combat, var) addEvent(doCombat, 22000, cid, combat, var) addEvent(doCombat, 24000, cid, combat, var) addEvent(doCombat, 26000, cid, combat, var) addEvent(doCombat, 28000, cid, combat, var) addEvent(doCombat, 30000, cid, combat, var) end setPlayerStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "cooldown "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end Ai em spells.xml você coloca assim V <rune name="Nome Qualquer" id="ID DO ITEM" allowfaruse="1" charges="1" lvl="1" maglv="0" exhaustion="0" blocktype="solid" event="script" value="nomedoscript.lua"/>
Postado Abril 20, 2019 6 anos Autor @Joaovettor Desculpe a demora pra testa e te responde, eu testei aqui e fica falando que não é possível usar a potion (you cannot use this object). não aparece erro na distro. Obrigado por tentar ajudar. ? @ZeeroBR seria uma forma de burla, mas como você disse, se o player morre vai crasha o serve do mesmo jeito. Obrigado pela dica ? @Joaovettor percebi que a tag da spell.xml que você me passo é diferente do meu, então arrumei a tag. o script usa a potion normal, não da erro mas também não cura o char. Edit: deixei o script assim Mostrar conteúdo oculto local config = { cooldown = 35, -- tempo entre uma magia e outra storage = 134813, effect = 49, --- efeito que vai sair } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, config.effect) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onGetFormulaValues(cid, level, maglevel) doCreatureAddHealth(cid, (12*getCreatureMaxHealth(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) doPlayerAddMana(cid,(12*getPlayerMaxMana(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then if getPlayerSoul(cid) <= 49 then doPlayerSendTextMessage(cid,20,'Desculpe, você não tem Souls suficiente.') return true else doPlayerAddSoul(cid,-1) addEvent(doCombat, 0, cid, combat, var) addEvent(doCombat, 2000, cid, combat, var) addEvent(doCombat, 4000, cid, combat, var) addEvent(doCombat, 6000, cid, combat, var) addEvent(doCombat, 8000, cid, combat, var) addEvent(doCombat, 10000, cid, combat, var) addEvent(doCombat, 12000, cid, combat, var) addEvent(doCombat, 14000, cid, combat, var) addEvent(doCombat, 16000, cid, combat, var) addEvent(doCombat, 18000, cid, combat, var) addEvent(doCombat, 20000, cid, combat, var) addEvent(doCombat, 22000, cid, combat, var) addEvent(doCombat, 24000, cid, combat, var) addEvent(doCombat, 26000, cid, combat, var) addEvent(doCombat, 28000, cid, combat, var) addEvent(doCombat, 30000, cid, combat, var) end setPlayerStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "cooldown "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end porem fica dando erro em todos addEvent(doCombat, 0, cid, combat, var) falando que o Argument #3 is unsafe ai eu mudo o cid pra creature ou pra player ai para de cura. Editado Abril 20, 2019 6 anos por Freire (veja o histórico de edições)
Postado Abril 20, 2019 6 anos Em 20/04/2019 em 18:01, Freire disse: @Joaovettor Desculpe a demora pra testa e te responde, eu testei aqui e fica falando que não é possível usar a potion (you cannot use this object). não aparece erro na distro. Obrigado por tentar ajudar. ? @ZeeroBR seria uma forma de burla, mas como você disse, se o player morre vai crasha o serve do mesmo jeito. Obrigado pela dica ? @Joaovettor percebi que a tag da spell.xml que você me passo é diferente do meu, então arrumei a tag. o script usa a potion normal, não da erro mas também não cura o char. Edit: deixei o script assim Mostrar conteúdo oculto Mostrar conteúdo oculto local config = { cooldown = 35, -- tempo entre uma magia e outra storage = 134813, effect = 49, --- efeito que vai sair } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, config.effect) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onGetFormulaValues(cid, level, maglevel) doCreatureAddHealth(cid, (12*getCreatureMaxHealth(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) doPlayerAddMana(cid,(12*getPlayerMaxMana(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then if getPlayerSoul(cid) <= 49 then doPlayerSendTextMessage(cid,20,'Desculpe, você não tem Souls suficiente.') return true else doPlayerAddSoul(cid,-1) addEvent(doCombat, 0, cid, combat, var) addEvent(doCombat, 2000, cid, combat, var) addEvent(doCombat, 4000, cid, combat, var) addEvent(doCombat, 6000, cid, combat, var) addEvent(doCombat, 8000, cid, combat, var) addEvent(doCombat, 10000, cid, combat, var) addEvent(doCombat, 12000, cid, combat, var) addEvent(doCombat, 14000, cid, combat, var) addEvent(doCombat, 16000, cid, combat, var) addEvent(doCombat, 18000, cid, combat, var) addEvent(doCombat, 20000, cid, combat, var) addEvent(doCombat, 22000, cid, combat, var) addEvent(doCombat, 24000, cid, combat, var) addEvent(doCombat, 26000, cid, combat, var) addEvent(doCombat, 28000, cid, combat, var) addEvent(doCombat, 30000, cid, combat, var) end setPlayerStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "cooldown "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end porem fica dando erro em todos addEvent(doCombat, 0, cid, combat, var) falando que o Argument #3 is unsafe ai eu mudo o cid pra creature ou pra player ai para de cura. @Freire Nesta linha V function onGetFormulaValues(cid, level, maglevel) doCreatureAddHealth(cid, (12*getCreatureMaxHealth(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) doPlayerAddMana(cid,(12*getPlayerMaxMana(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2)) end Você tem que colocar retornar o valor que você quer que cure V function onGetFormulaValues(cid, level, maglevel) cura = (12*getCreatureMaxHealth(cid)/100)+(getPlayerSkill(cid)*6)+(getPlayerMagLevel(cid)*2) return cura, cura end
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.