ninexin 2 Postado Junho 15, 2011 Share Postado Junho 15, 2011 (editado) Aow turminha do XTIBIA, estou aqui para explicar como por um Cooldown independente para cada magia, sendo possivel se tirar o exausted do jogo e só usar o Cooldown, bom eu testei em TFS 0.3.6 e 0.4 + acho que funcione em todos 8.50+ !!!! Bom vamos começar primeiro pegue uma magia de sua pasta spells, que deseja por o cooldown, vou usar no exemplo abaixo a magia exori vis: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) function onGetFormulaValues(cid, level, maglevel) min = -(level * 0.28 + maglevel * 1.48) * 1.0 max = -(level * 0.34 + maglevel * 2.34) * 1.0 return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end bom agora a baixo de "function onCastSpell(cid, var)" voce apaga tudo e poe: if exhaustion.check(cid, 23006) == false then exhaustion.set(cid, 23006, 1) return doCombat(cid, combat, var) else doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]") end end ficando assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) function onGetFormulaValues(cid, level, maglevel) min = -(level * 0.28 + maglevel * 1.48) * 1.0 max = -(level * 0.34 + maglevel * 2.34) * 1.0 return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) if exhaustion.check(cid, 23006) == false then exhaustion.set(cid, 23006, 1) return doCombat(cid, combat, var) else doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]") end end Explicando: if exhaustion.check(cid, 23006) == false then exhaustion.set(cid, 23006, 1) return doCombat(cid, combat, var) else doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]") bom os numeros 23006 são a storage que a magia usa entao cada magia deve posuir um numero diferente!!!! e o numero 1 é o tempo do cooldown ou seja 1segundo!!! dae é só ir em spells.xml e abaixar o exausted ou até mesmo zerar se voce for usar esse sistema em todas as magias do jogo!!! ;D BOM É MEU PRIMEIRO TUTORIAL AQUI NO XTIBIA, ESPERO AJUDAR UMA GALERA AE ^^ AJUDEM DANDO REPUTAÇÃO CASO SEJA UTIL PRA TI ESSE TUTORIAL!!! SEJAM TODOS FELIZES T+ Editado Junho 15, 2011 por Xin Link para o comentário Compartilhar em outros sites More sharing options...
Gabriel Couto 293 Postado Junho 15, 2011 Share Postado Junho 15, 2011 (editado) Ótimo tutorial, explica Bem, mas odeio o colddown. Anyway, aprovado. Editado Junho 15, 2011 por AnyurCT Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Junho 16, 2011 Share Postado Junho 16, 2011 Eu já tinha desenvolvido um sistema de cooldown utilizando a função os.time e storages, mas logo percebi que é contraprodutivo. É o mesmo caso, por isso, minha opinião é que não vale a pena pois usa muitos storages. Já tenho ideia de como desenvolver um sistema utilizando apenas 1 storage, em breve farei. Abraços e tutorial aprovado. Link para o comentário Compartilhar em outros sites More sharing options...
ninexin 2 Postado Junho 16, 2011 Autor Share Postado Junho 16, 2011 OPa vlw por aprovar !! ;D simm demora um pouco pra ageitar pra usar em todas as magias ++ nada que uma ou 2horinhas nao resolva ;P funciona 100% nunca tive problemas com o sistema eu uso no meu servidor!! flwss bro ;D Link para o comentário Compartilhar em outros sites More sharing options...
Articus 0 Postado Junho 16, 2011 Share Postado Junho 16, 2011 Eu queria aproveitar este script para colocar um cooldown maior na minha shovel, será que é possivel? function onUseItem(cid, item, fromPosition, itemEx, toPosition) if exhaustion.check(cid, 23006) == false then exhaustion.set(cid, 23006, 1) return doCombat(cid, combat, var) else doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]") end Colocar algo parecido com isso? E esse "storage" 23006, o que ele significa? Link para o comentário Compartilhar em outros sites More sharing options...
ninexin 2 Postado Junho 18, 2011 Autor Share Postado Junho 18, 2011 sim funciona simm brother o storage é onde vai armazenar que voce ainda esta no cooldown! exemplo voce configura um cooldown de 10segundo essa informação fica registrada na storage pra que voce só possa usar a magia novamente quando atingir os 10segundos!!! por isso cada script que voce for usar esse sistema de cooldown voce precisa colocar uma storage diferente pra nao dar problema ^^ abrass brother, qual quer duvida só postar! Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Junho 19, 2011 Share Postado Junho 19, 2011 Olha, era isso que eu tava falando quanto os storages. Da uma olhada pra ti ver se entendeu o problema desse sistema. Até. Link para o comentário Compartilhar em outros sites More sharing options...
ninexin 2 Postado Junho 19, 2011 Autor Share Postado Junho 19, 2011 a problema não tem nenhum até pq vai da na mesma o cara criar uma lib e vai ter q alterar todas as magias do mesmo jeito então da praticamente na mesma os dois funcionam perfeitamente Link para o comentário Compartilhar em outros sites More sharing options...
Lordfire 309 Postado Junho 19, 2011 Share Postado Junho 19, 2011 O cooldown deveria ser para cada tipo de spell, não para cada uma, mas isso é fácil de contornar. Por acaso os medidores de cooldown embaixo da tela funcionam? Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Junho 19, 2011 Share Postado Junho 19, 2011 @Lordfire Para fazer que o mesmo tipo de spell use o mesmo cooldown, é só usar o mesmo storage. Não mostra nada em baixo, esse tipo de cooldown (o meu também) é só para ficar exausto de usar a spell. @Xin Sim, as duas funcionam perfeitamente. Mas como eu disse, usar muitos storages aumenta a chance de bugar algo no OT. -- Abraços. Link para o comentário Compartilhar em outros sites More sharing options...
ninexin 2 Postado Junho 21, 2011 Autor Share Postado Junho 21, 2011 @Demonbholder é mesmo bro vlw pro criar a lib e liberar aqui pra gente usar tbm !!! vou usa-la até pq vendo pelo lado de bugs é melhor nao usar tantas ja que posso diminuir @Lordfire não entendi mto bem sua pergunta, mas se os medidores que vc fala são aqueles emblemas que a cip pois depois do update 8.70 a resposta é não! o q o sistema faz é aparecer no roda pé do jogo aparece a seguinte frase se vc tentar usar a magia: Cooldown[x]! o X é o tempo que falta pra vc usar a magia novamente!!! espero q sua pergunta seja essa Link para o comentário Compartilhar em outros sites More sharing options...
joao33 29 Postado Junho 24, 2011 Share Postado Junho 24, 2011 Aew man o colldown é tipow 1 exausth?? e porque usar ele em vez de usar o exausth? vlw Link para o comentário Compartilhar em outros sites More sharing options...
luis32sc 0 Postado Janeiro 28, 2013 Share Postado Janeiro 28, 2013 Ae manow essa e o do exori gran ico olha so como e o script tenta ajudar eu ai local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE) setCombatParam(combat, COMBAT_PARAM_USECHARGES, true) function onGetFormulaValues(cid, level, skill, attack, element, factor) local levelTotal, formula = level / 5, 0.1606 local normal, elemental = -(skill * attack * formula + levelTotal), math.ceil((skill * element * formula + levelTotal)) return normal/2, normal, -math.random(elemental/2, elemental) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados