gabriel28 60 Postado Abril 22, 2017 Share Postado Abril 22, 2017 Então, eu tava precisando que a paralyze tivesse uma chance de erro pra não ficar muito apelativo no server que estou criando, porque ter 5 ou mais druids dando paralyze todos ao mesmo tempo torna quase impossível sair vivo, mas enfim, ai vai o script: local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)local condition = createConditionObject(CONDITION_PARALYZE)setConditionParam(condition, CONDITION_PARAM_TICKS, 20000)setConditionFormula(condition, -0.9, 0, -0.9, 0)setCombatCondition(combat, condition)function onCastSpell(cid, var) local conseguir = { {chance = 40} --Você altera a chance de acerto aqui. Quanto maior, mais fácil de acertar. } local chance = math.random(1,100) for i = 1, #conseguir, 1 do if(chance < conseguir[i].chance) then if(not doCombat(cid, combat, var)) then return false end doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_GREEN) else doPlayerSendCancel(cid, "You missed.") end end return trueend Se seguir a lógica, da pra fazer isso em todos os tipos de magia. (Cura, Suporte, Ataque...) Eu não sou scripter, fiz apenas uma gambiarra, talvez alguém consiga fazer algo mais limpo e/ou até aprimorar isso, desenvolvendo algo como um aprimoramento, onde o player faria certa ação pra melhorar a taxa de acerto de suas spells. (Espero que alguém faça isso, seria bastante interessante) Por fim, espero que gostem e que seja útil pra alguém. Link para o comentário Compartilhar em outros sites More sharing options...
rohfagundes 78 Postado Abril 22, 2017 Share Postado Abril 22, 2017 1 hora atrás, gabriel28 disse: Então, eu tava precisando que a paralyze tivesse uma chance de erro pra não ficar muito apelativo no server que estou criando, porque ter 5 ou mais druids dando paralyze todos ao mesmo tempo torna quase impossível sair vivo, mas enfim, ai vai o script: local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)local condition = createConditionObject(CONDITION_PARALYZE)setConditionParam(condition, CONDITION_PARAM_TICKS, 20000)setConditionFormula(condition, -0.9, 0, -0.9, 0)setCombatCondition(combat, condition)function onCastSpell(cid, var) local conseguir = { {chance = 40} --Você altera a chance de acerto aqui. Quanto maior, mais fácil de acertar. } local chance = math.random(1,100) for i = 1, #conseguir, 1 do if(chance < conseguir[i].chance) then if(not doCombat(cid, combat, var)) then return false end doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_GREEN) else doPlayerSendCancel(cid, "You missed.") end end return trueend Se seguir a lógica, da pra fazer isso em todos os tipos de magia. (Cura, Suporte, Ataque...) Eu não sou scripter, fiz apenas uma gambiarra, talvez alguém consiga fazer algo mais limpo e/ou até aprimorar isso, desenvolvendo algo como um aprimoramento, onde o player faria certa ação pra melhorar a taxa de acerto de suas spells. (Espero que alguém faça isso, seria bastante interessante) Por fim, espero que gostem e que seja útil pra alguém. vc n precisa usar o for no caso ficaria assim Spoiler function onCastSpell(cid, var) local chance = 40 if (math.random(100) < chance) then if(not doCombat(cid, combat, var)) then return false end doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_GREEN) else doPlayerSendCancel(cid, "You missed.") end end Link para o comentário Compartilhar em outros sites More sharing options...
gabriel28 60 Postado Abril 22, 2017 Autor Share Postado Abril 22, 2017 Valeu. Dessa forma deixa o script bem mais limpo. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados