Ir para conteúdo
Entre para seguir isso  
Nord

[8.10+][Do concurso] Adv. Teleport Quest

Recommended Posts

Nord    2
Nord

Teleport Quest

Um teleport diferente.

 

Nome: Advanced Teleport Quest

Versão: A partir da 8.10

Tipo do script: Action

Servidor Testado: The Forgotten Server 0.3 rev 949

Autor: Nord

 

Requisitos:

Ter a função doSendDistanceShoot

Fazer todos os passos corretamente

 

Você coloca uma wooden stake em cada coal basin e da use numa alavanca então alguns efeitos aparecerão e você será teleportado perto de um baú que quando aberto te da uma blessed wooden stake e você é teleportado para uma posição definida depois de 5 segundos.

 

Crie um arquivo na pasta "data/actions/scripts" com o nome de "teleport_quest.lua" contendo o script abaixo:

local coalpos1 = {x=500, y=442, z=6, stackpos=1}
local coalpos2 = {x=502, y=442, z=6, stackpos=1}
local otherpos = {x=501, y=501, z=7}
local newpos = {x=504, y=440, z=6}

function doDelayTeleport(cid, pos, delay, effect)
if pos ~= nil then
	local function teleport(p)
		doTeleportThing(cid, pos, FALSE)
		if effect ~= nil then
			doSendMagicEffect(pos, effect)
		else
			doSendMagicEffect(pos, 10)
		end
	end
	if delay ~= nil then
		addEvent(teleport, delay, p)
	else
		addEvent(teleport, 0, p)
	end
	return LUA_NO_ERROR
else
	print("Error: doDelayTeleport.")
	return LUA_ERROR
end
end

function doDelayShoot(frompos, topos, effect, delay)
if frompos ~= nil and topos ~= nil and effect ~= nil then
	local function shoot(p)
		doSendDistanceShoot(frompos, topos, effect)
	end
	if delay ~= nil then
		addEvent(shoot, delay, p)
	else
		addEvent(shoot, 0, p)
	end
	return LUA_NO_ERROR
else
	print("Error: doDelayShoot.")
	return LUA_ERROR
end
end

function onUse(cid, item, frompos, itemEx, topos)
playerpos = getCreaturePosition(cid)
coal1 = getThingfromPos(coalpos1)
coal2 = getThingfromPos(coalpos2) 
if item.itemid == 1945 then
	if getPlayerStorageValue(cid, 6000) == -1 then
		if coal1.itemid == 5941 and coal2.itemid == 5941 then
			doRemoveItem(coal1.uid, 1)
			doRemoveItem(coal2.uid, 1)
			doSendMagicEffect(coalpos1, 10)
			doSendMagicEffect(coalpos2, 10)
			doTransformItem(item.uid, item.itemid + 1)
			for i = 1, 20 do
				doDelayShoot(coalpos1, newpos, 37, i * 100)
				doDelayShoot(coalpos2, newpos, 37, i * 100)
			end
			doDelayTeleport(cid, newpos, 2000, 39)
			doSendMagicEffect(playerpos, 2)
			doSendAnimatedText(playerpos, "Teleport!", TEXTCOLOR_YELLOW)
		else
			doSendMagicEffect(topos, 2)
			doPlayerSendCancel(cid, "Coloque um wooden stake sobre cada coal basin.")
		end
	else
		doPlayerSendCancel(cid, "Você já fez essa quest.")
		doSendMagicEffect(playerpos, 2)
	end
elseif item.itemid == 1946 then
	if math.random(1, 5) >= 4 then
		doTransformItem(item.uid, item.itemid - 1)
		doSendMagicEffect(topos, 12)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A alavanca voltou ao seu estado normal.")
	else
		doSendMagicEffect(topos, 2)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A alavanca está emperrada, tente puxá-la novamente.")
	end
elseif item.itemid == 1746 then
	if getPlayerStorageValue(cid, 6000) == -1 then
		doDelayTeleport(cid, otherpos, 5000, 12)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Teleportando em 5 segundos...")
		doPlayerAddItem(cid, 5942, 1)
		setPlayerStorageValue(cid, 6000, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já pegou um blessed wooden stake.")
		doDelayTeleport(cid, otherpos, 5000, 12)
	end
end
return TRUE
end

 

Adicione esta tag no "actions.xml" que se encontra na pasta "data/actions":

<action actionid="6000" script="teleport_quest.lua"/>

 

No seu MapEditor coloque actionID 6000 na alavanca e actionID 6000 no baú de ID 1746 que virá a recompensa, mas coloque alguma uniqueID nesse mesmo baú para ninguém sair com ele :P

 

As configurações necessárias são mudar as posições contidas em:

local coalpos1 = {x=500, y=442, z=6, stackpos=1} -- Posição do 1º coal basin.

local coalpos2 = {x=502, y=442, z=6, stackpos=1} -- Posição do 2º coal basin.

local otherpos = {x=501, y=501, z=7} -- Posição para onde o jogador será teleportado ao dar use no baú.

local newpos = {x=504, y=440, z=6} -- Posição para onde o jogador será teleportado ao dar use na alavanca se tiver os determinados itens.

 

É importante que a newpos esteja perto da coalpos1 e coalpos2 para que os efeitos se tornem mais bonitos.

O andar de newpos, coalpos1 e coalpos2 tem que ser o mesmo, pois não é possível enviar projétils para andares diferentes.

 

Postem, tirem dúvidas, dêem sugestões para novos script, doem OT$, enfim, façam algo que eu possa saber que você leu meu tópico. :bye:

Editado por Nord

Compartilhar este post


Link para o post
Dark    3
Dark

Aprovado (Y)

Compartilhar este post


Link para o post
Nord    2
Nord

Vlw por ter se disponibilizado a mover o meu tópico Dark, ultimamente o Fadi anda muito ocupado e vc nem sabe como isso foi importante para mim.

Eu usei o script pro concurso e por isso acho que vai ajudar muitas pessoas, vlw.

Compartilhar este post


Link para o post
Mock    32
Mock

Seria bom se meu server tivesse aquela função la =X

eu queria por o seu script no meu ot xD

Compartilhar este post


Link para o post
Sago    0
Sago

Muito massa segue assim manoww...

você é muito criativo adorei

Aprovado

Compartilhar este post


Link para o post
Undead Slayer    0
Undead Slayer

Pareceu a Desert Quest, pelo metodo de colocar item em certo local, puxar a alavanca e ser teleportado. Eu ja fiz um script assim mas era da propia desert quest, e depois de abrir o bau você não era teleportado apos 5 segundos, so apos pegar o teleport e sair por você mesmo da sala. APROVADISSIMO

Compartilhar este post


Link para o post
PuMa    0
PuMa

esse script so funfa em tfs?

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×