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:


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


Escolhendo uma nova posição
Usando o comando na nova posição:


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











