Postado Novembro 15, 2020 4 anos Uma spell que regenera, a cada 1 segundo, uma certa quantidade de vida própria e de seus aliados em party (sistema de party) que estejam ao alcance de uma área ao seu redor. obs: a spell ficará ativa por 20 segundos. tfs 0.4
Postado Novembro 19, 2020 4 anos Autor 9 horas atrás, FlameArcixt disse: Acredito que nesse tópico, você encontra a solução: Tópico Bom primeiramente obg pow min responde. Mas não é o que quero. Por que os membro precisa está dentro da xarea pra se curar. E ali basta está na party que já curado também. 7 minutos atrás, BangxD disse: Bom primeiramente obg pow min responde. Mas não é o que quero. Por que os membro precisa está dentro da xarea pra se curar. E ali basta está na party que já curado.
Postado Novembro 30, 2020 4 anos Solução Não sei se entendi direito o que você queria. Mas acho que eu tinha uma spell assim, que usei a um tempo atrás. Não testei atualmente (mas quando usei funcionava perfeitamente). Só funciona em party. local config = { tempo = 20, --- tempo que vai durar a spell intervalo = 1, --- intervalo que leva pra recuperar X de mana/vida (em segundos) hp = 5000, -- quanto de hp ganha a cada intervalo mana = 5000, -- quanto de mana ganha a cada intervalo } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 349) -- efeito setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE) CROSS5X5 = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, } local area = createCombatArea(CROSS5X5) setCombatArea(combat, area) local condition = createConditionObject(CONDITION_FOOD) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, config.mana) setConditionParam(condition, CONDITION_PARAM_MANATICKS, config.intervalo*1000) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, config.hp) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, config.intervalo*1000) local baseMana = 120 function onCastSpell(cid, var) local waittime = 30 -- Tempo de exhaustion local storage = 115826 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Podera usar novamente dentro de 30 segundos.") return false end local pos = getCreaturePosition(cid) local membersList = getPartyMembers(cid) if(membersList == nil or type(membersList) ~= 'table' or table.maxn(membersList) <= 1) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end local affectedList = {} for _, pid in ipairs(membersList) do if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then table.insert(affectedList, pid) end end local tmp = table.maxn(affectedList) if(tmp <= 1) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end local mana = math.ceil((0.9 ^ (tmp - 1) * baseMana) * tmp) if(getCreatureMana(cid) < mana) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end if(doCombat(cid, combat, var) ~= LUA_NO_ERROR) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end doCreatureAddMana(cid, -(mana - baseMana), FALSE) doPlayerAddSpentMana(cid, (mana - baseMana)) for _, pid in ipairs(affectedList) do doAddCondition(pid, condition) end exhaustion.set(cid, storage, waittime) return LUA_NO_ERROR end Editado Novembro 30, 2020 4 anos por Yamili (veja o histórico de edições)
Postado Novembro 30, 2020 4 anos Autor 59 minutos atrás, Yamili disse: Não sei se entendi direito o que você queria. Mas acho que eu tinha uma spell assim, que usei a um tempo atrás. Não testei atualmente (mas quando usei funcionava perfeitamente). Só funciona em party. local config = { tempo = 20, --- tempo que vai durar a spell intervalo = 1, --- intervalo que leva pra recuperar X de mana/vida (em segundos) hp = 5000, -- quanto de hp ganha a cada intervalo mana = 5000, -- quanto de mana ganha a cada intervalo } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 349) -- efeito setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE) CROSS5X5 = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, } local area = createCombatArea(CROSS5X5) setCombatArea(combat, area) local condition = createConditionObject(CONDITION_FOOD) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, config.mana) setConditionParam(condition, CONDITION_PARAM_MANATICKS, config.intervalo*1000) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, config.hp) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, config.intervalo*1000) local baseMana = 120 function onCastSpell(cid, var) local waittime = 30 -- Tempo de exhaustion local storage = 115826 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Podera usar novamente dentro de 30 segundos.") return false end local pos = getCreaturePosition(cid) local membersList = getPartyMembers(cid) if(membersList == nil or type(membersList) ~= 'table' or table.maxn(membersList) <= 1) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end local affectedList = {} for _, pid in ipairs(membersList) do if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then table.insert(affectedList, pid) end end local tmp = table.maxn(affectedList) if(tmp <= 1) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end local mana = math.ceil((0.9 ^ (tmp - 1) * baseMana) * tmp) if(getCreatureMana(cid) < mana) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end if(doCombat(cid, combat, var) ~= LUA_NO_ERROR) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end doCreatureAddMana(cid, -(mana - baseMana), FALSE) doPlayerAddSpentMana(cid, (mana - baseMana)) for _, pid in ipairs(affectedList) do doAddCondition(pid, condition) end exhaustion.set(cid, storage, waittime) return LUA_NO_ERROR end Opa muito obrigado
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.