Ir para conteúdo

Spell com chance de errar


gabriel28

Posts Recomendados

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

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

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...