Ir para conteúdo
  • 0

Colocando cooldown e condition haste neste item


Zazeros

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

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)
Link para o comentário
Compartilhar em outros sites

  • 0

 

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

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...