ZA
dúvida

Colocando cooldown e condition haste neste item

Por Zazeros, 27 de mar. de 2016 em Scripts

cooldown
item
comdition
haste
4
1.4k
ZazerosZ
27 de março de 2016 às 14:43

Boa(m) dia/tarde/noite galera, tudo suave ?

 

Gente, eu tava fazendo uma nova potion no meu server, ela aumenta o skill de fist fighting e shielding, da uma regen de vida e mana.

Eu tentei botar cooldown nela, mas não fuincionou, até apareceu a msg do cooldown quando usa o item mas ele nao cancela a utilização do mesmo.

Eu tentei colocar pra ele aumentar a velocidade de movimento do player tbm, mas por algum motivo que desconheço, ele simplesmente ignora isso.

 

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

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 120000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, 600)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, 50)

local condition2 = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition2, CONDITION_PARAM_SUBID, 2)
setConditionParam(condition2, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition2, CONDITION_PARAM_TICKS, 120000)
setConditionParam(condition2, CONDITION_PARAM_HEALTHGAIN, 25)
setConditionParam(condition2, CONDITION_PARAM_HEALTHTICKS, 3000)
setConditionParam(condition2, CONDITION_PARAM_MANAGAIN, 15)
setConditionParam(condition2, CONDITION_PARAM_MANATICKS, 1500)



local speed = createConditionObject(CONDITION_HASTE)
setConditionParam(speed, CONDITION_PARAM_TICKS, 60000)
setConditionFormula(speed, 3, -850, 3, -850)
setCombatCondition(combat, speed)


function onUse(cid, item, frompos, item2, topos)
if(isInArray({1,2,3,4,5,6,7,8,9,10,11,12,13,14}, getPlayerVocation(cid)) == TRUE) then
var = numberToVariant(cid)
doTargetCombatCondition(0, cid, condition, CONST_ME_MAGIC_RED)
doRemoveItem(item.uid, 1)
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Voce ainda nao pode usar este item. ")
return 1
end
if exhaustion.check(cid, 23999) == false then
exhaustion.set(cid, 23999, 100)
else
doPlayerSendCancel(cid, "Seu corpo ainda esta fraco, espere [" ..exhaustion.get(cid, 23999).."] segundo(s)")
return false

end

doAddCondition(cid, condition2)
end

O resto esta funcionando tranquilo. Só queria o cooldown mesmo e o haste quando o player usasse. Se puder me explicar como faz pra ele nao ignorar esse haste eu agradeço mais ainda

 

Obrigado desde ja pessoal, amo vcs.

DanihcvD
27 de março de 2016 às 15:43

Tenta ao invés de usar assim:

if exhaustion.check(cid, 23999) == false then
exhaustion.set(cid, 23999, 100)

Usar assim:

if not exhaustion.check(cid, 23999) then
exhaustion.make(cid, 23999, 100)

E eu acredito que o script está ignorando o haste, pq vc esqueceu de colocar essa linha:

doAddCondition(cid, speed)
ZazerosZ
28 de março de 2016 às 12:11

 

Tenta ao invés de usar assim:

if exhaustion.check(cid, 23999) == false then
exhaustion.set(cid, 23999, 100)

Usar assim:

if not exhaustion.check(cid, 23999) then
exhaustion.make(cid, 23999, 100)

E eu acredito que o script está ignorando o haste, pq vc esqueceu de colocar essa linha:

doAddCondition(cid, speed)

 

Cara, o cooldown continua nao funcionando, ele aparece a msg mas nao cancela a utilização.

Ja o haste, quando coloco esta linha : doAddCondition(cid, speed), ele nao carrega o script e fala que ta faltando um end pra fechar com o if, só que se eu colocar um end aonde ele ta pedindo, acaba comendo uma parte do script, então eu não sei aonde botar isso, na verdade...

Obrigado ^^

 

 

DanihcvD
28 de março de 2016 às 15:16

@@Zazeros, certo... Vamo tentar com outras funções. addEvent e doChangeSpeed.

Vc terá que o usar um addEvent para se encarregar do cooldown (por meio de uma storage):

exemplo:

setPlayerStorageValue(cid, 6969, 1)

addEvent(setPlayerStorageValue, cooldown, cid, 6969, 0)

*aqui, vc irá definir uma storage para o player, e deverá acrescentar uma checagem para ela logo no inicio do script, para que se o player tiver a storage, o script não executará mais nenhuma função. E o addEvent servirá para que, dps do tempo de cooldown, a storage tenha o seu valor resetado.

Agora quanto ao haste, vc deverá usar outro addEvent para que a velocidade do player volte ao normal dps do tempo de cooldown.

exemplo:

local velocidadeAtual = getCreatureSpeed(cid)

doChangeSpeed(cid, novaVelo)

addEvent(doChangeSpeed, cooldown, cid, velocidadeAtual)

Espero que eu tenha explicado de uma forma bacana... shauhsauhsa

Editado Março 28 por Danihcv