Postado Março 28, 2016 9 anos Olá amigos, Estou com um grande problema e não achei nada parecido aqui no TK. Segue o exemplo da imagem, o player vai ter um tp no templo e outro na quest, quando ele passar pelo tp1 ele vai ser teleportado para o X na direita do player salvando a sua posição de checkpoint, ao passar pelo tp2 ele irá ser teleportado para o X que será sua posição de checkpoint, o tp2 se encontrará no templo. Consistência: *só pode salvar uma vez, se ele entrar em outro checkpoint ele resetará sua posição para a ultima; *se não houver checkpoint, o player receberá uma mensagem de que não há checkpoint; *em cada tp ao teleportar o player recebe uma mensagem, com qualquer efeito, só pra saber como é o código do efeito; Editado Março 28, 2016 9 anos por Shabba (veja o histórico de edições)
Postado Março 29, 2016 9 anos "Data/movements/scripts", checkTeleport.lua: local t = { mainTP = 20000, -- Aqui é o uniqueID do teleport que levará ao check point. resetTP = 20001, -- Caso queira resetar o checkPoint, coloque esse uniqueID e edite a position normalmente pelo RME. storage = 40945, -- Storage para salvar a position, só mexa se necessário! checks = { -- [uniqueid] = {pos = {position do checkPoint}} [20002] = {pos = {x = 162, y = 55, z = 7}}, [20003] = {pos = {x = 163, y = 55, z = 7}}, [20004] = {pos = {x = 164, y = 55, z = 7}}, }, } function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end local checkPos = t.checks[item.uid] if checkPos then doTeleportThing(cid, checkPos.pos) setPlayerStorageValue(cid, t.storage, "{x = ".. checkPos.pos.x ..", y = ".. checkPos.pos.y ..", z = ".. checkPos.pos.z .."}") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Check point! Agora você pode voltar a esse local pelo teleport localizado no templo.') doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) elseif item.uid == t.mainTP then if getPlayerStorageValue(cid, t.storage) == -1 then doTeleportThing(cid, fromPosition) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você não chegou a nenhum check point ainda.') doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) else local nPos = "return ".. getPlayerStorageValue(cid, t.storage) doTeleportThing(cid, loadstring(nPos)()) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end elseif item.uid == t.resetTP then setPlayerStorageValue(cid, t.storage, -1) end return true end "Data/movements", movements.xml: <movevent type="StepIn" uniqueid="20000-20004" event="script" value="checkTeleport.lua"/> Não esqueça de aumentar o valor na tag caso adicione mais checks! Se tiver alguma dúvida ou der algum problema, me avise. Editado Março 29, 2016 9 anos por Wakon (veja o histórico de edições) ➥ Regras | Seções OTServ | Seções BOT
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.