Ótimo tutorial, explica Bem, mas odeio o colddown.
Anyway, aprovado.
Por ninexin, 15 de jun. de 2011 em Tutoriais de Scripting
info
Grupo: Herói
Registrado: 22/04/11
Posts: 2.5k
Reputação: +293
Gênero: Masculino
Char no Tibia: Thyn Zare

Ótimo tutorial, explica Bem, mas odeio o colddown.
Anyway, aprovado.
Editado Junho 15 por AnyurCT
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

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.
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
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?
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!
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

Olha, era isso que eu tava falando quanto os storages.
Da uma olhada pra ti ver se entendeu o problema desse sistema. Até.
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 ![]()
info
Grupo: Lenda
Registrado: 03/10/06
Posts: 2.6k
Reputação: +309
Gênero: Masculino
Char no Tibia: Knight Orion

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?
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

@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.
@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 ![]()
info
Grupo: Visconde
Registrado: 24/01/11
Posts: 254
Reputação: +29
Char no Tibia: Zemekiz

Aew man o colldown é tipow 1 exausth?? e porque usar ele em vez de usar o exausth? vlw
info
Grupo: Campones
Registrado: 10/08/07
Posts: 8
Reputação: 0
Char no Tibia: King Delux

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
info
Grupo: Campones
Registrado: 22/06/07
Posts: 39
Reputação: +2
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:
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 endficando 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 endExplicando:
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 por Xin