Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Bom, eu estava cá fazendo uma talkaction para praticar, mas aí fui aprimorando e resolvi compartilhar, para ver se é útil para alguém...

 

 

 

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.

 

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:

lnxeTvS.png

 

 

Usando o comando na nova posição: 

JyfyFnz.png

KGsxy4p.png

 

 

 

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

 

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

Qualquer problema, resolver no tópico.

por favor, gostaria de feedbacks com sugestões ou qualquer coisa.

  • Respostas 20
  • Visualizações 2.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Bom, eu estava cá fazendo uma talkaction para praticar, mas aí fui aprimorando e resolvi compartilhar, para ver se é útil para alguém...       Como funciona: Bom, basicamente, é um comando sem par

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

  • Bom, esqueci de postar o 1.1    Coloquei em um novo TÓPICO

Postado
  • Autor

De nada, depois quando eu tiver tempo vou fazer com parâmetros, com configuração de posições com nomes e listagem.

 

Exemplo:

 

/checkpoint set Templo

/checkpoint set Hunt

/checkpoint  go Templo

/checkpoint list 

 

Your checkpoint list is: Templo, Hunt 

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