Ir para conteúdo
  • 0

Error Tile que regenera Mana/Health


ivonebruno01

Pergunta

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

6 respostass a esta questão

Posts Recomendados

  • 0

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"/>

 

Editado por Kuro o Shiniga
Link para o comentário
Compartilhar em outros sites

  • 0

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
 

Link para o comentário
Compartilhar em outros sites

  • 0

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"/>
Editado por Kuro o Shiniga
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...