Colocando cooldown e condition haste neste item

Zazeros
em Scripts

Zazeros

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/02/13Posts: 22

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.

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

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)

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

Zazeros

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/02/13Posts: 22

 

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 ^^

 

 

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

@@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

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!