Ir para conteúdo

Como Eu Faço Para Quando Usar A Magia, Dar 20 Segundos De Exaust?


Pallyfox

Posts Recomendados

Eu uso:

Tibia 8.50,

TFS 0.3.5

 

Pessoal eu tenho uma magia chamada "magic" ela não é agressiva, a magia deve ter 20 seg. de exaust, mas quando eu coloco exaust pelo spells.xml fica com exaust em todas as magias, sendo 20 segundos de espera para atacar qualquer magia,

Então eu acho que deve ter algum jeito para colocar no próprio código de exaust da spell.

Mas esse exaust será apenas para aquela magia, ou seja, ao usar a magia, eu fico com exaust de 20 segundos somente para aquela magia (magic), podendo usar outra magia mesmo com exaust da magia "magic".

Eu quero:

Um script que quando usa a magia o player fica exausto por 20 segundos somente para aquela magia.

 

Exemplo:

EU uso magia

e depois de 1 segundo eu posso usar qualquer magia menos a magia que tem 20 segundos de exaust.

 

Por favor, quem puder ajudar eu fico muito grato.

Se você não entendeu escreva suas dúvidas ai!

SEI QUE É DIFICIL DE ENTENDER, SE PRECISO, COLOCAREI UM VIDEO EXPLICATIVO!

 

TAG DA MAGIA:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, 31)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local speed = createConditionObject(CONDITION_HASTE)
setConditionParam(speed, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(speed, 9.9, -999, 9.9, -999)
setCombatCondition(combat, speed)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Editado por Pallyfox
Link para o comentário
Compartilhar em outros sites

Poste o script e a tag da magia, para que alguem possa te ajudar melhor :p

 

TAG DA MAGIA:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, 31)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local speed = createConditionObject(CONDITION_HASTE)
setConditionParam(speed, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(speed, 9.9, -999, 9.9, -999)
setCombatCondition(combat, speed)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

 

Essa ai é uma magia de exemplo, por que na verdade quero colocar em uma outras magias, mas as outras são exclusiva do meu server... :/

 

Acho que qualquer scripter lua saberia...

Editado por Pallyfox
Link para o comentário
Compartilhar em outros sites

Bom, pelo que entendi -> se você quer uma spell com exhaust, Acho que você vai ter que fazer um storage somente para aquela magia, certo? Mas isso é deve ser facil... Só que eu não sou scripter.. Quem puder ajudar pallyfox ai!

 

Link para o comentário
Compartilhar em outros sites

Não sei se vai dar:

 

Tenta:

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, 31)

setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

 

local speed = createConditionObject(CONDITION_HASTE)

setConditionParam(speed, CONDITION_PARAM_TICKS, 3000)

setConditionFormula(speed, 9.9, -999, 9.9, -999)

setCombatCondition(combat, speed)

 

function onCastSpell(cid, var)

if getPlayerExhaust(cid,storage,segundos) == -1 then

return doCombat(cid, combat, var)

else

doPlayerSendCancel(cid,"You are exhausted.")

end

end

 

 

Onde esta em negrito vc edita:

Storage: Qualquer numero para o storge.

segundos: o quanto de segundos vai ser de exhaust.

 

 

Link para o comentário
Compartilhar em outros sites

Vai em data/spells/lib/spells.lua e põe isso no final:

 

function getPlayerExhaust(player,number,time)

 

now = os.time()

before = getPlayerStorageValue(player,number)

 

exhaust = os.difftime(now,before)

 

if before == -1 then

setPlayerStorageValue(player,number,now)

return -1

else

if exhaust >= time then

setPlayerStorageValue(player,number,now)

return -1

else

return 1

end

end

end

 

A função na spell é essa:

if getPlayerExhaust(cid,storage,tempo) == 1 then

 

 

e também dá uma olhada no post de baixo

Editado por Lordfire
Link para o comentário
Compartilhar em outros sites

Com o bagulho do Lordfire:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, 31)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local speed = createConditionObject(CONDITION_HASTE)
setConditionParam(speed, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(speed, 9.9, -999, 9.9, -999)
setCombatCondition(combat, speed)

function onCastSpell(cid, var)
if getPlayerExhaust(cid, 62033, 20000) <= 0 then
	return doCombat(cid, combat, var)
else
	return doPlayerSendCancel(cid, "You are exhausted.") and doSendMagicEffect(getThingPos(cid), 2)
end
end

Editado por iRockStar
Link para o comentário
Compartilhar em outros sites

Deu tudo certo ma quero acrescentar em outras magia

E se a magia terminar assim:

 

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 }
addEvent(onCastSpell1, 000, parameters)
addEvent(onCastSpell2, 000, parameters)
return TRUE
end

 

Como que eu faço?

 

Outra coisa..

O exhausted funciona.

Mas ta tirando mana sem exhaust e com exhaust.

Não devia tirar mana..

 

ah

 

E alem disso Toda vez que fala a magia ele acrescenta + 20 segundos de exhaust..

se eu fala 2 veses a magia, eu fico com 40 seg de exhaust...

o que eu faço?

Editado por Pallyfox
Link para o comentário
Compartilhar em outros sites

Deu tudo certo ma quero acrescentar em outras magia

E se a magia terminar assim:

 

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 }
addEvent(onCastSpell1, 000, parameters)
addEvent(onCastSpell2, 000, parameters)
return TRUE
end

 

Como que eu faço?

 

Outra coisa..

O exhausted funciona.

Mas ta tirando mana sem exhaust e com exhaust.

Não devia tirar mana..

 

ah

 

E alem disso Toda vez que fala a magia ele acrescenta + 20 segundos de exhaust..

se eu fala 2 veses a magia, eu fico com 40 seg de exhaust...

o que eu faço?

 

 

 

 

Pra isso não acontecer de tira mana mesmo com exhaust você coloca embaixo do "else" e acrescenta:

doPlayerAddMana(cid, aqui você poem o tanto de mana que a magia vai gastar)

 

O exhaust é em segundos então você coloca assim:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, 31)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local speed = createConditionObject(CONDITION_HASTE)
setConditionParam(speed, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(speed, 9.9, -999, 9.9, -999)
setCombatCondition(combat, speed)

function onCastSpell(cid, var)
if getPlayerExhaust(cid, 62033, 20) == -1 then
return doCombat(cid, combat, var)
else
return doPlayerSendCancel(cid, "You are exhausted.") and doSendMagicEffect(getThingPos(cid), 2)
end
end

 

O que vc faalo:

 

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 }

addEvent(onCastSpell1, 000, parameters)

addEvent(onCastSpell2, 000, parameters)

return TRUE

end

 

troca por

 

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 }

if getPlayerExhaust(cid, 62033, 20) == -1 then

addEvent(onCastSpell1, 000, parameters)

addEvent(onCastSpell2, 000, parameters)

return TRUE

else

return doPlayerSendCancel(cid, "You are exhaustedo.") and doSendMagicEffect(getThingPos(cid), 2)

end

end

 

Esperoo ter ajudado...

Editado por Focost
Link para o comentário
Compartilhar em outros sites

Nossa! Eu fiz tudo certo... Eu tava testando aqui faz tempo.. e eu entendi o que você quis dizer com

doPlayerAddMana, no meu caso se caso estar exhaust ele vai add mana.. Maiis tem uma coisa!

E se a magia for em porcento?

EXEMPLO:

<instant name="Magia" words="Magia" lvl="100" manapercent="40" prem="1" needlearn="0" script="magia.lua">

<vocation id="1"/>

<vocation id="2"/>

<vocation id="3"/>

<vocation id="4"/>

<vocation id="5"/>

<vocation id="6"/>

<vocation id="7"/>

<vocation id="8"/>

</instant>

 

Como que eu faço pra add mana em % ??????

Link para o comentário
Compartilhar em outros sites

o Do Lordfire

 

Deu certo aqui tenta denovo

 

Tentar denovo?????????

Eu ja consegui.. Só falta colocar um código tipo:

doPlayerAddMana(cid,20%)

 

Mas isso não da certo... Gostariaa de saber se tem outro jeito..

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...