- Fórum
- xTibia - Notícias e Suporte
- Soluções
- Archived
- Como Eu Faço Para Quando Usar A Magia, Dar 20 Segundos De Exaust?
Como Eu Faço Para Quando Usar A Magia, Dar 20 Segundos De Exaust?
Por Pallyfox, 02 de nov. de 2009 em Archived
Poste o script e a tag da magia, para que alguem possa te ajudar melhor
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 Novembro 2 por Pallyfox
se quer uma magia com exhaust ou uma action?
O que???
Leia atetaamente você vai descobrir! :smile_positivo:
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!
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.
info
Grupo: Lenda
Registrado: 03/10/06
Posts: 2.6k
Reputação: +309
Gênero: Masculino
Char no Tibia: Knight Orion

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 Novembro 4 por Lordfire
info
Grupo: Barão
Registrado: 01/07/09
Posts: 216
Reputação: +4

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 Novembro 4 por iRockStar
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 Novembro 4 por Pallyfox
Deu tudo certo ma quero acrescentar em outras magiaE 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 Novembro 5 por Focost
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 % ??????
info
Grupo: Campones
Registrado: 19/07/07
Posts: 71
Reputação: +1

o Do Lordfire
Deu certo aqui tenta denovo
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..





info
Grupo: Campones
Registrado: 30/07/08
Posts: 65
Reputação: 0
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:
Editado Novembro 2 por Pallyfox