VO

[Resolvido] Spell que Imobilzia

Por Vorkhon, 21 de set. de 2020 em Resolvidos

9
2.9k
VorkhonV
21 de setembro de 2020 às 20:41

Fala pessoal! Eu to querendo uma spell que de dano em area, transforma em objeto e deixa imobilizado. Não quero usar o paralyze pq é muito ruim, quero 100% imovel por 5 segundos. Segue meu script que ta ruim em anexo:

 

 

koeteK
27 de setembro de 2020 às 10:40

para paralizar você pode usar a função.

doCreatureSetNoMove(cid, true)

True paraliza, false desparaliza.

você varia entre os alvos no Cid, cid vai apralizar vc usa um target como getCreatureTarget(cid) que ira paralizar seu target. 

No final faça um retorno pra poder desparalizar seu personagem depois de um tempo. 

VorkhonV
27 de setembro de 2020 às 19:22
8 horas atrás, koete disse:

para paralizar você pode usar a função.

doCreatureSetNoMove(cid, true)

True paraliza, false desparaliza.

você varia entre os alvos no Cid, cid vai apralizar vc usa um target como getCreatureTarget(cid) que ira paralizar seu target. 

No final faça um retorno pra poder desparalizar seu personagem depois de um tempo. 

Funcionou amigo! Mas só uma coisa. Se o alvo morre, ele tenta "desparalizar" e acaba desparalizando o nada e da um errinho na distro, tem como fazer isso não acontecer?

koeteK
28 de setembro de 2020 às 15:32

Usa isso em seu script, pra na hora que ele for retornar ele vai checar antes se ainda há a criatura se não houver então ele vai retornar false e não vai dar o erro.

if isCreature(cid) == false then
return false
end

 

VorkhonV
28 de setembro de 2020 às 20:38
5 horas atrás, koete disse:

Usa isso em seu script, pra na hora que ele for retornar ele vai checar antes se ainda há a criatura se não houver então ele vai retornar false e não vai dar o erro.

if isCreature(cid) == false then
return false
end

 

Cara eu não manjo muito onde colocar direitinho. Mas botei em varios lugares e não ta dando certo. Eu entendi a logica do código, mas não ta dando. No creature cid não tem que especifica nada? Minha spell eu fiz de target ao inves de wave, nao sei se muda algo. Segue como eu fiz:
 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
local condition = createConditionObject(CONDITION_OUTFIT)
setConditionParam(condition, CONDITION_PARAM_TICKS, 6000)
for i = 5474, 5474 do
addOutfitCondition(condition, {lookTypeEx = i})
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -60, -1, -60, 5, 5, 4, 7)
end
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
local target = getCreatureTarget(cid)
if isCreature(cid) == false then
return false
end
doCreatureSetNoMove(target, true)
addEvent(doCreatureSetNoMove, 6 * 1000, target, false)
return doCombat(cid, combat, var)
end

 

koeteK
29 de setembro de 2020 às 09:20
Melhor resposta
Spoiler
local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
local condition = createConditionObject(CONDITION_OUTFIT)
setConditionParam(condition, CONDITION_PARAM_TICKS, 6000)
for i = 5474, 5474 do
addOutfitCondition(condition, {lookTypeEx = i})
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -60, -1, -60, 5, 5, 4, 7)
end
setCombatCondition(combat, condition)


function VorkhonParar(cid)
if isCreature(cid) == false then
return false
end
doCreatureSetNoMove(cid, true)
end

function VorkhonMover(cid)
if isCreature(cid) == false then
return false
end
doCreatureSetNoMove(cid, false)
end





function onCastSpell(cid, var)
local target = getCreatureTarget(cid)
VorkhonParar(target)
addEvent(VorkhonMover, 6 * 1000, target)
return doCombat(cid, combat, var)
end

 

 

 

Testa dessa forma.

Editado Setembro 29 por koete

VorkhonV
29 de setembro de 2020 às 17:22
8 horas atrás, koete disse:
  Ocultar conteúdo

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
local condition = createConditionObject(CONDITION_OUTFIT)
setConditionParam(condition, CONDITION_PARAM_TICKS, 6000)
for i = 5474, 5474 do
addOutfitCondition(condition, {lookTypeEx = i})
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -60, -1, -60, 5, 5, 4, 7)
end
setCombatCondition(combat, condition)


function VorkhonParar(cid)
if isCreature(cid) == false then
return false
end
doCreatureSetNoMove(cid, true)
end

function VorkhonMover(cid)
if isCreature(cid) == false then
return false
end
doCreatureSetNoMove(cid, false)
end





function onCastSpell(cid, var)
local target = getCreatureTarget(cid)
VorkhonParar(target)
addEvent(VorkhonMover, 6 * 1000, target)
return doCombat(cid, combat, var)
end

 

 

 

Testa dessa forma.

Maravilha! Funcionou amigo!

DeadpoolD
29 de setembro de 2020 às 19:50
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
DeadpoolD
29 de setembro de 2020 às 19:50

Tópico movido de Suporte > OTServ > Scripts para Suporte > OTServ > Resolvidos.

Fique atento às regras do fórum.