@bismarkzika,
Qual é a condição a ser satisfeita para parar o damage? O jogador sair do piso??
Caso seja, aqui está o script:
Nome: [PEDIDO] Tile que da dano em x vocation
Distro utilizada nos testes: Aries Server to Tibia 8.1 - Version 4.0 based on OTServ SVN Version 0.6.0
Comportamento: Caso um jogador de uma das vocations especificadas na lista config.vocation pise no local indicado, um contador será inicializado e, a cada tickTime segundos o jogador receberá damagePerTick de dano caso permaneça neste local.
Em data/movements/movements.xml, adicione esta tag:
<movevent event="StepIn" actionid="9999" script="vocation_damage.lua" />
Em data/movements/scripts crie um arquivo chamado vocation_damage.lua e cole isto dentro dele:
-- [PEDIDO] Tile que da dano em x vocation by marcot
local config = {
vocation = {4}, -- Lista de Vocations afetadas pelo damage
damagePerTick = 50, -- Dano recebido a cada tick
tickTime = 5 -- Tempo do dano (segundos)
}
-- Main
function onStepIn(cid, item, pos)
if not isPlayer (cid) then
return false
end
if isInArray(config.vocation, getPlayerVocation(cid)) then
infos = {
cid = cid,
pos = getPlayerPosition(cid),
}
addEvent (damageCondition, config.tickTime * 1000, infos)
end
return true
end
-- Funcao para comparar duas coordenadas (Retorna true caso sejam iguais)
function comparePositions (posA, posB)
if posA.x == posB.x and posA.y == posB.y and posA.z == posB.z then
return true
end
return false
end
-- Funcao responsavel pela condition do player receber dano
function damageCondition (infos)
if comparePositions (infos.pos, getPlayerPosition(infos.cid)) then
doCreatureAddHealth (infos.cid, -config.damagePerTick)
addEvent (damageCondition, config.tickTime * 1000, infos)
end
end