Ir para conteúdo

Featured Replies

Postado

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 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.

 

cbCyOSZ.png

  • Respostas 14
  • Visualizações 3.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • eventsId = {} local function rechargeStamina(cid)     if not isPlayer(cid) then         eventsId[cid] = nil         return     end     doPlayerSetStamina(cid, getPlayerStamina(cid) + 1)     eventsI

  • Adriano SwaTT
    Adriano SwaTT

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

  • TFS 1.1:   TFS 0.3.6 ~ 0.4: OTX 2:   Salve como stamina_tile.lua em movements/script   movements.xml:     <movevent event="StepIn" itemid="407" script="stamina_tile.lua" /&gt

Postado

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 por elwyn (veja o histórico de edições)

Postado
  • 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
  • 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

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 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.

 

cbCyOSZ.png

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo