Postado Janeiro 26, 2015 10 anos Teste este: Registre em movements.xml as tags abaixo: <movevent type="StepIn" actionid="12129" event="script" value="tile_stamina.lua"/> <movevent type="StepOut" actionid="12129" event="script" value="tile_stamina.lua"/> Crie o arquivo tile_stamina.lua e cole o código abaixo dentro: ---------- Script by: Adriano Swatt -------- local maxstamina = 2520 -- quantidade máxima de Stamina (Não sei se é este valor mesmo) local qtdd = 1 -- quantidade de Stamina é adicionada local tempo = 5 -- em segundos para cada regeneração local tileid, action = 412, 12129 -- ID do Piso de Stamina, ActionID usada no Piso ----------- FIM DAS CONFIGURAÇÕES ----------- function onStepIn(cid, item, position, fromPosition) local getpos = getPlayerPosition(cid) local tilepos = getTileItemById(getpos, tileid).actionid local getsta = getPlayerStamina(cid) if getsta < maxstamina and isPlayer(cid) then addEvent(GetStamina, 100, cid) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Sua stamina já está cheia.") end return true end function onStepOut(cid, item, position, fromPosition) stopEvent(GetStamina) return true end function GetStamina(cid) local getpos = getPlayerPosition(cid) local tilepos = getTileItemById(getpos, tileid).actionid local getsta = getPlayerStamina(cid) if tilepos == action then if getsta < maxstamina and isPlayer(cid) then doPlayerSendCancel(cid, "Sua stamina está subindo.") setPlayerStamina(cid, getsta + qtdd) addEvent(GetStamina, tempo * 1000, cid) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Sua stamina já está cheia.") end end return true end Poste o resultado. Boa sorte. Editado Janeiro 26, 2015 10 anos por Adriano SwaTT (veja o histórico de edições) Gosta do meu trabalho? Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs. Atenciosamente,Adriano Swatt' Para ver meus tutoriais acesse meu perfil.
Postado Janeiro 26, 2015 10 anos Testei e não funcionou! Não adicionou a stamina, e apareceu as mensagens no console: Essas mensagens são do print que deixei sem querer. Não apareceram outras mensagens? Se você fizer essa talkaction: function onSay(cid, words, param) local value = param and tonumber(param) or 1 doPlayerSetStamina(cid, value) return true end Com a seguinte tag: <talkaction access="0-4" words="!teste" event="script" value="stamina.lua" /> E mandar no tibia a seguinte mensagem: !teste 20 Sua stamina muda para 00:20? A propósito, o script que estou usando no OTX é exatamente este: eventsId = {} local function rechargeStamina(cid) if not isPlayer(cid) then eventsId[cid] = nil return end doPlayerSetStamina(cid, getPlayerStamina(cid) + 1) eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid) end function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then eventsId[cid] = addEvent(rechargeStamina, 1000, cid) end return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then stopEvent(eventsId[cid]) eventsId[cid] = nil end return true end E funciona perfeitamente. Note que é apenas o script anterior sem o print e com um delay maior no regen de stamina. Editado Janeiro 26, 2015 10 anos por elwyn (veja o histórico de edições)
Postado Janeiro 26, 2015 10 anos Autor Teste este: Registre em movements.xml as tags abaixo: <movevent type="StepIn" actionid="12129" event="script" value="tile_stamina.lua"/> <movevent type="StepOut" actionid="12129" event="script" value="tile_stamina.lua"/> Crie o arquivo tile_stamina.lua e cole o código abaixo dentro: ---------- Script by: Adriano Swatt -------- local maxstamina = 2520 -- quantidade máxima de Stamina (Não sei se é este valor mesmo) local qtdd = 1 -- quantidade de Stamina é adicionada local tempo = 5 -- em segundos para cada regeneração local tileid, action = 412, 12129 -- ID do Piso de Stamina, ActionID usada no Piso ----------- FIM DAS CONFIGURAÇÕES ----------- function onStepIn(cid, item, position, fromPosition) local getpos = getPlayerPosition(cid) local tilepos = getTileItemById(getpos, tileid).actionid local getsta = getPlayerStamina(cid) if getsta < maxstamina and isPlayer(cid) then addEvent(GetStamina, 100, cid) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Sua stamina já está cheia.") end return true end function onStepOut(cid, item, position, fromPosition) stopEvent(GetStamina) return true end function GetStamina(cid) local getpos = getPlayerPosition(cid) local tilepos = getTileItemById(getpos, tileid).actionid local getsta = getPlayerStamina(cid) if tilepos == action then if getsta < maxstamina and isPlayer(cid) then doPlayerSendCancel(cid, "Sua stamina está subindo.") setPlayerStamina(cid, getsta + qtdd) addEvent(GetStamina, tempo * 1000, cid) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Sua stamina já está cheia.") end end return true end Poste o resultado. Boa sorte. Muito obrigado pela sua ajuda, mas já consegui com o que o elwyn postou!! Essas mensagens são do print que deixei sem querer. Não apareceram outras mensagens? Se você fizer essa talkaction: function onSay(cid, words, param) local value = param and tonumber(param) or 1 doPlayerSetStamina(cid, value) return true end Com a seguinte tag: <talkaction access="0-4" words="!teste" event="script" value="stamina.lua" /> E mandar no tibia a seguinte mensagem: Sua stamina muda para 00:20? A propósito, o script que estou usando no OTX é exatamente este: eventsId = {} local function rechargeStamina(cid) if not isPlayer(cid) then eventsId[cid] = nil return end doPlayerSetStamina(cid, getPlayerStamina(cid) + 1) eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid) end function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then eventsId[cid] = addEvent(rechargeStamina, 1000, cid) end return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then stopEvent(eventsId[cid]) eventsId[cid] = nil end return true end E funciona perfeitamente. Note que é apenas o script anterior sem o print e com um delay maior no regen de stamina. Agora foi! Eu que errei em uma configuração aqui! Só tem um problema, quando o player sai e entra denovo no slot ele adiciona. Ou seja, quando ele fica entrando e saindo a stamina sobe sem contar os 60 * 1000. Muito obrigado pela ajuda desde já! Att, Grafit.
Postado Janeiro 26, 2015 10 anos Solução Muito obrigado pela sua ajuda, mas já consegui com o que o elwyn postou!! Agora foi! Eu que errei em uma configuração aqui! Só tem um problema, quando o player sai e entra denovo no slot ele adiciona. Ou seja, quando ele fica entrando e saindo a stamina sobe sem contar os 60 * 1000. Muito obrigado pela ajuda desde já! eventsId = {} local function rechargeStamina(cid) if not isPlayer(cid) then eventsId[cid] = nil return end doPlayerSetStamina(cid, getPlayerStamina(cid) + 1) eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid) end function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid) end return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then stopEvent(eventsId[cid]) eventsId[cid] = nil end return true end Agora ele só adicionará a cada minuto.
Postado Janeiro 26, 2015 10 anos Tudo bem, sem problemas. Vou apenas pedir para que selecione como Melhor Resposta para que o tópico receba a tag de Resolvido. Abraços e boa sorte com seu projeto. Editado Janeiro 26, 2015 10 anos por Adriano SwaTT (veja o histórico de edições) Gosta do meu trabalho? Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs. Atenciosamente,Adriano Swatt' Para ver meus tutoriais acesse meu perfil.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.