Error Tile que regenera Mana/Health

ivonebruno01
em Scripts

ivonebruno01

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/06/13Posts: 11Char no Tibia: Shadow Chrome
Estou com problema nesse script. Não da error no console mas, se eu ficar saindo e entrando no tile, começa a curar rápido.

 

     local storage = 11131
      local _soul = 3 -- Pontos que irá receber
      local seg = 2 -- intervalo de tempo
      local efecto = 0 -- efeito

      local evento = {}
    function Soul(cid)
        if isPlayer(cid) then
            if getPlayerStorageValue(cid, storage) == 1 then
                doSendMagicEffect(getThingPos(cid), efecto)
                doPlayerAddSoul(cid,_soul)
                evento = addEvent(Soul, 1000*seg, cid)
                if getPlayerStorageValue(cid, storage) < 0 or getPlayerStorageValue(cid, storage) == nil then
     stopEvent(evento)
                end

            end
        end
    end

    function onStepIn(cid, item, pos)
        if isPlayer(cid) then
     setPlayerStorageValue(cid, storage, 1)
            Soul(cid)
        end

      return true
    end

    function onStepOut(cid, item, pos)
        if getPlayerStorageValue(cid, storage) == 1 then
            setPlayerStorageValue(cid, storage)
            stopEvent(evento)
        end

      return true
    end

Kuro o Shiniga

avatar
Colaborador
Colaborador

INFOS

Grupo: ColaboradorRegistrado: 27/12/10Posts: 271Gênero: Masculino

Toda vez que o player pisa no Tile o evento de cura é chamado, e toda vez que tu sai ele para, se ficar pisando toda hora vai healar rapido mesmo porque sempre chama o evento quando pisa, tenta assim :

 

local config = {
storageum = 11155,
_soul = 3,
seg = 2,
effect = 0,
evento = nil
}

function Soul(cid)
if isPlayer(cid) then
	doSendMagicEffect(getThingPos(cid), config.effect)
	doPlayerAddSoul(cid, config._soul)
	config.evento = addEvent(Soul, 1000*config.seg, cid)
	doSendAnimatedText(getCreaturePosition(cid), "HEALTH", 170)
end
end
	
	

function onStepIn(cid, item, pos, topos)
 if isPlayer(cid) and getPlayerStorageValue(cid, config.storageum) < os.time() then
	setPlayerStorageValue(cid, config.storageum, os.time() + config.seg*10)
	Soul(cid)
 else
	doSendMagicEffect(getThingPos(cid), 2)
	doPlayerSendTextMessage(cid, 22, "Voce nao pode retornar agora, espere por 20 segundos!")
	doTeleportThing(cid, topos)
end
return true
 end
 
function onStepOut(cid, item, pos)
stopEvent(config.evento)
doSendAnimatedText(getCreaturePosition(cid), "STOP", 180)
end

Tem que adicionar as tag StepIn e StepOut no movements.xml

<movevent type="StepIn" actionid="action_id_tile" event="script" value="arquivolua.lua"/>
<movevent type="StepOut" actionid="action_id_tile" event="script" value="arquivolua.lua"/>

 

ivonebruno01

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/06/13Posts: 11Char no Tibia: Shadow Chrome

Não deu muito certo, quando acabam os 20s e volto pro tile, começa a curar rapido.

 

Acho que esse script aqui é melhor pra resolver isso de tile"moviments", esse é por coordenadas"creaturescripts", mas tem um problema nele, não ta curando.

Sabe oque pode ser?

 

function onThink(cid, interval)
--if(interval == 1000) then
local pos = getCraturePosition(cid) 
if (x=1305, y=1418, z=7), (x=1320, y=1418, z=7) then
    if(isPlayerGhost(cid)) then
        return true
    end

if (isPlayer(cid)) then
doCreatureAddMana(cid,300)
doCreatureAddHealth(cid,300)
end
end
return true
end
 

Kuro o Shiniga

avatar
Colaborador
Colaborador

INFOS

Grupo: ColaboradorRegistrado: 27/12/10Posts: 271Gênero: Masculino

Você adicionou a tag de StepOut no movements.xml ?

Não teria porque healar rapadio, o player pode esperar os 20s em cima do tile, e sair e pisar de novo, mas apos ele sair ele para o evento, e quando pisa começa tudo de novo

 

<movevent type="StepOut" actionid="action_id_tile" event="script" value="arquivolua.lua"/>

ivonebruno01

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/06/13Posts: 11Char no Tibia: Shadow Chrome

No caso, seu eu quiser fazer isso em uma area, terei que colocar ActionId em todos os tile. Por isso que eu queria um de coordenadas, para faciltar

 

Kuro o Shiniga

avatar
Colaborador
Colaborador

INFOS

Grupo: ColaboradorRegistrado: 27/12/10Posts: 271Gênero: Masculino

Você quer fazer um sistema que heala apenas em certa poss ?

ivonebruno01

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/06/13Posts: 11Char no Tibia: Shadow Chrome

Não é bem uma posição, em uma area, tipo 5x5