MU
action

Checkpoint

Por Mudrock, 16 de abr. de 2015 em Actions e Talkactions

tibia
script
otserv
15
3.1k
MudrockM
16 de abril de 2015 às 14:13

Como funciona: Bom, basicamente, é um comando sem parâmetros, que marca um lugar na zona de proteção e volta para esse lugar depois que usa o comando pela segunda vez,

Em caso de

local parceiro = true

deixando um portal que some em aproximadamente 3 segundos, para que possam seguir ele...

Caso não queira isso, coloque false.

Bom, o script é esse:

depois irei adicionar mais coisas

(talkactions/scripts/checkpoint.lua)

local parceiro = true -- false vai tirar o teleporte que o player deixa de rastro
 
function onSay(cid, words, param)
 
if param == "" then
    local cidpos = getThingPos(cid)
 
    if not getTileInfo(cidpos).protection then
        return doPlayerSendCancel(cid,"You need stay in a protect zone ( PZ ). ")
    end

if(tonumber(getPlayerStorageValue(cid,"Checkpoint"))) then
        
        setPlayerStorageValue(cid,"Checkpoint", "{x = "..cidpos.x..", y = "..cidpos.y..", z = "..cidpos.z..", stackpos = "..cidpos.stackpos.."}")
        doPlayerSendTextMessage(cid, 27, "You put a checkpoint here.")
        doSendMagicEffect(cidpos, 9)
    else
        local str = "return "..getPlayerStorageValue(cid, "Checkpoint")
        local pos = loadstring(str)()
        
        doTeleportThing(cid, pos, TRUE)
        if "{x = "..cidpos.x..", y = "..cidpos.y..", z = "..cidpos.z..", stackpos = "..cidpos.stackpos.."}" == "{x = "..pos.x..", y = "..pos.y..", z = "..pos.z..", stackpos = "..pos.stackpos.."}" then    
     return doPlayerSendCancel(cid,"You can't do this, please choose another position to come back") and doSendMagicEffect(cidpos, 2)
        end
        
        if parceiro then
        doCreateTeleport(1387, pos, cidpos)
        doSendAnimatedText(cidpos, "Removing", 221)
        local t = { [500] = "in",
                    [1000] = "3",
                    [1500] = "2",
                    [2000] = "1",
                }
            for q, w in pairs(t) do
                addEvent(doSendAnimatedText,q,cidpos, w, 221)
         end
                        addEvent(function()
                        doRemoveItem(getTileItemById(cidpos, 1387).uid)
                        doSendMagicEffect(cidpos, 2)
                        end,2700)
        end
        doCreatureSay(cid, "You reached your destiny.", MESSAGE_EVENT_ORANGE)
        doPlayerSendTextMessage(cid, 27, "You reached your destiny.")
setPlayerStorageValue(cid,"Checkpoint", 0)
        doSendMagicEffect(cidpos, 67)
    end
end
    return true
end

Em (talkactions.xml)

<talkaction log="yes" words="/checkpoint" event="script" value="Xcriptis/checkpoint.lua"/>

Ao usar o comando para fixar o checkpoint:

Jj5FJyf.png

wRCdXnA.png

Ao usar o mesmo comando para voltar ao checkpoint no mesmo lugar:

4Sev0RR.png

nRIFYRp.png

Escolhendo uma nova posição

Usando o comando na nova posição:

JyfyFnz.png

KGsxy4p.png


Sugestão: O jogador só pode usar o comando a cada 24 horas, e o tempo é sincronizado com o tempo real (horário real fora do jogo).


 

 

CASO QUEIRAM COM EXHAUST EM SEGUNDOS, CONFIGURÁVEL !!!, AQUI ESTÁ:

local parceiro = true -- false vai tirar o teleporte que o player deixa de rastro
local tempo = 24*60*60 -- 24 h em segundos

function onSay(cid, words, param)

    if param == "" then

local cidpos = getThingPos(cid)

if not getTileInfo(cidpos).protection then
    return doPlayerSendCancel(cid,"You need stay in a protect zone ( PZ ). ")
end

    if(tonumber(getPlayerStorageValue(cid,"Checkpoint"))) then
        setPlayerStorageValue(cid,"Checkpoint", "{x = "..cidpos.x..", y = "..cidpos.y..", z = "..cidpos.z..", stackpos = "..cidpos.stackpos.."}")
        doPlayerSendTextMessage(cid, 27, "You put a checkpoint here.")
        doSendMagicEffect(cidpos, 9)
    else
        local str = "return "..getPlayerStorageValue(cid, "Checkpoint")
        local pos = loadstring(str)()

        if not (tonumber(getPlayerStorageValue(cid,"Checkpoint"))) and getCreatureStorage(cid, 10001) - os.time() < 0 then
            setPlayerStorageValue(cid,10001, os.time() + tempo)
        else return doPlayerSendCancel(cid,"You can't do this, please wait " .. getCreatureStorage(cid, 10001) - os.time() .." seconds.") end

            doTeleportThing(cid, pos, TRUE)

            if "{x = "..cidpos.x..", y = "..cidpos.y..", z = "..cidpos.z..", stackpos = "..cidpos.stackpos.."}" == "{x = "..pos.x..", y = "..pos.y..", z = "..pos.z..", stackpos = "..pos.stackpos.."}" then    
                return doPlayerSendCancel(cid,"You can't do this, please choose another position to come back") and doSendMagicEffect(cidpos, 2)
            end

                if parceiro then
                    doCreateTeleport(1387, pos, cidpos)
                    doSendAnimatedText(cidpos, "Removing", 221)
        local t = { [500] = "in",
                    [1000] = "3",
                    [1500] = "2",
                    [2000] = "1",
                    }
                        for q, w in pairs(t) do
                            addEvent(doSendAnimatedText,q,cidpos, w, 221)
                        end
                addEvent(function()
                            doRemoveItem(getTileItemById(cidpos, 1387).uid)
                            doSendMagicEffect(cidpos, 2)
                        end,2700)
                end
                    doCreatureSay(cid, "You reached your destiny.", MESSAGE_EVENT_ORANGE)
                    doPlayerSendTextMessage(cid, 27, "You reached your destiny.")
                    setPlayerStorageValue(cid,"Checkpoint", 0)
                    doSendMagicEffect(cidpos, 67)
    end
end
return true
end

Créditos

@@Caronte

Editado Outubro 9 por Daniel

ScythePhantomS
16 de abril de 2015 às 16:53

Haha, muito legal, amigo, parabéns!

david0703D
17 de abril de 2015 às 02:32

Gostei do script, só tente dar uma explicada melhor no início ou colocar esses prints de explicação no inicio do tópico.

Reputado! button_ok.png

MudrockM
17 de abril de 2015 às 08:01

Obrigado, assim que tiver um tempinho arrumo rsrsr

FurabioF
20 de abril de 2015 às 11:40

Bom script, se o script não for de sua autoria, lembre-se de colocar os devidos créditos, pois já vi esse script em um outro fórum, criado por um colega meu.

david0703D
21 de abril de 2015 às 15:13

[error type=failure' code='404]

Editado Abril 21 por david0703

CaronteC
21 de abril de 2015 às 15:55

Bom script, se o script não for de sua autoria, lembre-se de colocar os devidos créditos, pois já vi esse script em um outro fórum, criado por um colega meu.

 

Foi eu quem fez...

Editado Abril 21 por Krhiegen

21 de abril de 2015 às 16:00

Créditos ao Caronte...

MudrockM
21 de abril de 2015 às 16:42

Créditos no tópico, caso alguem mais tenha ajudado por favor me passar o nome para ser adicionado

CaronteC
22 de abril de 2015 às 13:58

Créditos no tópico, caso alguem mais tenha ajudado por favor me passar o nome para ser adicionado

 

Não, foi só eu mesmo...out.gif

 

 

Obrigado por ter trazido o conteúdo...

Ahh...

esqueci de por talkaction log = "no"

fica mais bonita a talkaction, não aparece /checkpoint toda hora que fala...

FurabioF
26 de abril de 2015 às 20:01

 

Não, foi só eu mesmo...out.gif

 

 

Obrigado por ter trazido o conteúdo...

Ahh...

esqueci de por talkaction log = "no"

fica mais bonita a talkaction, não aparece /checkpoint toda hora que fala...

 

return false, tb faz isso :D

GordeliciousG
30 de abril de 2015 às 06:47

não entendi a para que tipo de coisa isso serve.

david0703D
03 de maio de 2015 às 16:18

não entendi a para que tipo de coisa isso serve.

Serve pra salvar um local... Aí, quando o player quiser voltar pra onde salvou, basta dizer /checkpoint

1 mês depois...
curruwilliamC
06 de junho de 2015 às 13:51

 

Como funciona: Bom, basicamente, é um comando sem parâmetros, que marca um lugar na zona de proteção e volta para esse lugar depois que usa o comando pela segunda vez,

Em caso de

local parceiro = true

deixando um portal que some em aproximadamente 3 segundos, para que possam seguir ele...

Caso não queira isso, coloque false.

Bom, o script é esse:

depois irei adicionar mais coisas

(talkactions/scripts/checkpoint.lua)

local parceiro = true -- false vai tirar o teleporte que o player deixa de rastro
 
function onSay(cid, words, param)
 
if param == "" then
    local cidpos = getThingPos(cid)
 
    if not getTileInfo(cidpos).protection then
        return doPlayerSendCancel(cid,"You need stay in a protect zone ( PZ ). ")
    end

if(tonumber(getPlayerStorageValue(cid,"Checkpoint"))) then
        
        setPlayerStorageValue(cid,"Checkpoint", "{x = "..cidpos.x..", y = "..cidpos.y..", z = "..cidpos.z..", stackpos = "..cidpos.stackpos.."}")
        doPlayerSendTextMessage(cid, 27, "You put a checkpoint here.")
        doSendMagicEffect(cidpos, 9)
    else
        local str = "return "..getPlayerStorageValue(cid, "Checkpoint")
        local pos = loadstring(str)()
        
        doTeleportThing(cid, pos, TRUE)
        if "{x = "..cidpos.x..", y = "..cidpos.y..", z = "..cidpos.z..", stackpos = "..cidpos.stackpos.."}" == "{x = "..pos.x..", y = "..pos.y..", z = "..pos.z..", stackpos = "..pos.stackpos.."}" then    
     return doPlayerSendCancel(cid,"You can't do this, please choose another position to come back") and doSendMagicEffect(cidpos, 2)
        end
        
        if parceiro then
        doCreateTeleport(1387, pos, cidpos)
        doSendAnimatedText(cidpos, "Removing", 221)
        local t = { [500] = "in",
                    [1000] = "3",
                    [1500] = "2",
                    [2000] = "1",
                }
            for q, w in pairs(t) do
                addEvent(doSendAnimatedText,q,cidpos, w, 221)
         end
                        addEvent(function()
                        doRemoveItem(getTileItemById(cidpos, 1387).uid)
                        doSendMagicEffect(cidpos, 2)
                        end,2700)
        end
        doCreatureSay(cid, "You reached your destiny.", MESSAGE_EVENT_ORANGE)
        doPlayerSendTextMessage(cid, 27, "You reached your destiny.")
setPlayerStorageValue(cid,"Checkpoint", 0)
        doSendMagicEffect(cidpos, 67)
    end
end
    return true
end

Em (talkactions.xml)

<talkaction log="yes" words="/checkpoint" event="script" value="Xcriptis/checkpoint.lua"/>

Ao usar o comando para fixar o checkpoint:

Jj5FJyf.png

wRCdXnA.png

Ao usar o mesmo comando para voltar ao checkpoint no mesmo lugar:

4Sev0RR.png

nRIFYRp.png

Escolhendo uma nova posição

Usando o comando na nova posição:

JyfyFnz.png

KGsxy4p.png

Sugestão: O jogador só pode usar o comando a cada 24 horas, e o tempo é sincronizado com o tempo real (horário real fora do jogo).

 

 

CASO QUEIRAM COM EXHAUST EM SEGUNDOS, CONFIGURÁVEL !!!, AQUI ESTÁ:

local parceiro = true -- false vai tirar o teleporte que o player deixa de rastro
local tempo = 24*60*60 -- 24 h em segundos

function onSay(cid, words, param)

    if param == "" then

local cidpos = getThingPos(cid)

if not getTileInfo(cidpos).protection then
    return doPlayerSendCancel(cid,"You need stay in a protect zone ( PZ ). ")
end

    if(tonumber(getPlayerStorageValue(cid,"Checkpoint"))) then
        setPlayerStorageValue(cid,"Checkpoint", "{x = "..cidpos.x..", y = "..cidpos.y..", z = "..cidpos.z..", stackpos = "..cidpos.stackpos.."}")
        doPlayerSendTextMessage(cid, 27, "You put a checkpoint here.")
        doSendMagicEffect(cidpos, 9)
    else
        local str = "return "..getPlayerStorageValue(cid, "Checkpoint")
        local pos = loadstring(str)()

        if not (tonumber(getPlayerStorageValue(cid,"Checkpoint"))) and getCreatureStorage(cid, 10001) - os.time() < 0 then
            setPlayerStorageValue(cid,10001, os.time() + tempo)
        else return doPlayerSendCancel(cid,"You can't do this, please wait " .. getCreatureStorage(cid, 10001) - os.time() .." seconds.") end

            doTeleportThing(cid, pos, TRUE)

            if "{x = "..cidpos.x..", y = "..cidpos.y..", z = "..cidpos.z..", stackpos = "..cidpos.stackpos.."}" == "{x = "..pos.x..", y = "..pos.y..", z = "..pos.z..", stackpos = "..pos.stackpos.."}" then    
                return doPlayerSendCancel(cid,"You can't do this, please choose another position to come back") and doSendMagicEffect(cidpos, 2)
            end

                if parceiro then
                    doCreateTeleport(1387, pos, cidpos)
                    doSendAnimatedText(cidpos, "Removing", 221)
        local t = { [500] = "in",
                    [1000] = "3",
                    [1500] = "2",
                    [2000] = "1",
                    }
                        for q, w in pairs(t) do
                            addEvent(doSendAnimatedText,q,cidpos, w, 221)
                        end
                addEvent(function()
                            doRemoveItem(getTileItemById(cidpos, 1387).uid)
                            doSendMagicEffect(cidpos, 2)
                        end,2700)
                end
                    doCreatureSay(cid, "You reached your destiny.", MESSAGE_EVENT_ORANGE)
                    doPlayerSendTextMessage(cid, 27, "You reached your destiny.")
                    setPlayerStorageValue(cid,"Checkpoint", 0)
                    doSendMagicEffect(cidpos, 67)
    end
end
return true
end

Créditos

 

Funfa em tfs 1.2 ?

10 meses depois...
CaronteC
11 de abril de 2016 às 09:53
Em 06/06/2015 at 13:51, curruwilliam disse:

Funfa em tfs 1.2 ?

 

Com uma devida tradução, se necessária.