Ir para conteúdo

Featured Replies

Postado

Boa noite pessoal do TK, meu pedido é algo que aparentemente é simples, (para um praticamente leigo em lua) porém não impossível.

 

Consiste em uma scroll, que utilizada com o "USE WITH" no chão, vai salvar a posição que o player selecionoi (pode salvar em uma txt sei lá.). Quando o player estiver lá na pqp, ele usa a scroll e abre-se um portal de uns 15 segundos somente, para a posição que ele salvou. Após isto o portal some, porém ele pode usar isso quantas vezes quiser.

 

O que não pode:

 

-Portal para casas

-Portal para PZ

-Portal para cima de casas ou pedras. (nada que dê uma vantagem para o player)

-Portal para lugares onde ele não tenha acesso. (tipo um outro lado de parede)

 

O Que pode:

 

-Portal para diferentes floor's, desde que ele marque a runa neste floor.

-Amigos entrarem no portal

-Amigos pegarem o scroll e utilizarem para a posição que ele salvou. (amigos abrirem o portal)

 

 

 

Fico no aguardo, obrigado!

Postado

Bom dia. Comecei a fazer o script e a primeira parte deu certo, porém a segunda parte eu consigo fazer o portal aparecer, exceto sumir. Para fazer ele sumir, tem como fazer por database, ou por globalStorage, mas ultimamente estou com a cabeça fraca para isso, então estou postando o que eu fiz:

 

em actions, cria o arquivo scroll teleport.lua

local function v_msg1(cid)
	if isPlayer(cid) == true then
		if getPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna1) >= 1 then
			return '['.. getItemNameById(SCROLLTELEPORT_.idDaRuna_1) ..'] - Ok'
		else
			return '[Slot vazio]'
		end
	end
end

local function v_msg2(cid)
	if isPlayer(cid) == true then
		if getPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna2) >= 1 then
			return '['.. getItemNameById(SCROLLTELEPORT_.idDaRuna_2) ..'] - Ok'
		else
			return '[Slot vazio]'
		end
	end
end

local function v_msg3(cid)
	if isPlayer(cid) == true then
		if getPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna3) >= 1 then
			return '['.. getItemNameById(SCROLLTELEPORT_.idDaRuna_3) ..'] - Ok'
		else
			return '[Slot vazio]'
		end
	end
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if item.itemid == SCROLLTELEPORT_.idDaRuna_1 then
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria1.valorX, SCROLLTELEPORT_obter.x)
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria1.valorY, SCROLLTELEPORT_obter.y)
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria1.valorZ, SCROLLTELEPORT_obter.z)
		setPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna1, 1)
		doRemoveItem(item.uid, 1)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Marcou as coordenadas: ".. SCROLLTELEPORT_obter.x ..", ".. SCROLLTELEPORT_obter.y ..", ".. SCROLLTELEPORT_obter.z .." na runa: ".. getItemNameById(SCROLLTELEPORT_.idDaRuna_1) ..".")
	end
	if item.itemid == SCROLLTELEPORT_.idDaRuna_2 then
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria2.valorX, SCROLLTELEPORT_obter.x)
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria2.valorY, SCROLLTELEPORT_obter.y)
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria2.valorZ, SCROLLTELEPORT_obter.z)
		setPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna2, 1)
		doRemoveItem(item.uid, 1)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Marcou as coordenadas: ".. SCROLLTELEPORT_obter.x ..", ".. SCROLLTELEPORT_obter.y ..", ".. SCROLLTELEPORT_obter.z .." na runa: ".. getItemNameById(SCROLLTELEPORT_.idDaRuna_2) ..".")
	end
	if item.itemid == SCROLLTELEPORT_.idDaRuna_3 then
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria3.valorX, SCROLLTELEPORT_obter.x)
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria3.valorY, SCROLLTELEPORT_obter.y)
		setPlayerStorageValue(cid, SCROLLTELEPORT_memoria3.valorZ, SCROLLTELEPORT_obter.z)
		setPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna3, 1)
		doRemoveItem(item.uid, 1)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Marcou as coordenadas: ".. SCROLLTELEPORT_obter.x ..", ".. SCROLLTELEPORT_obter.y ..", ".. SCROLLTELEPORT_obter.z .." na runa: ".. getItemNameById(SCROLLTELEPORT_.idDaRuna_3) ..".")
	end
	if item.itemid == SCROLLTELEPORT_.idDoLivro then
		if ((getPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna1) <= 0) and (getPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna2) <= 0) and (getPlayerStorageValue(cid, SCROLLTELEPORT_.storageRuna3) <= 0)) then
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sem coordenadas marcadas.")
		else
			doShowTextDialog(cid, SCROLLTELEPORT_.idDoLivro, 'Para criar um portal no destino que voce salvou usando a runa.\nBasta usar o comando: !nomeDaRuna\nExemplo: !runaVermelha\n\n'.. v_msg1(cid) ..'.\n'.. v_msg2(cid) ..'.\n'.. v_msg3(cid) ..'')
		end	
	end

	if ((getCreatureCondition(cid, CONDITION_INFIGHT) == true) or (isPlayerPzLocked(cid) == true)) then
		doPlayerSendCancel(cid, "Nao pode usar em batalha.")
		return false
	end

	if getTilePzInfo(getThingPos(cid)) == true then
		doPlayerSendCancel(cid, "Nao pode usar em area protegida.")
		return false
	end

	return true
end

 

Em actions.xml

<action itemid="2276" event="script" value="scroll teleport.lua"/><!-- runaAzul -->
<action itemid="2306" event="script" value="scroll teleport.lua"/><!-- runaVermelha -->
<action itemid="2299" event="script" value="scroll teleport.lua"/><!-- runaAmarela -->
<action itemid="6124" event="script" value="scroll teleport.lua"/><!-- livro -->

 

Em items.xml

<item id="2276" article="uma" name="runaAzul">
	<attribute key="weight" value="50" />
</item>
<item id="2306" article="uma" name="runaVermelha">
	<attribute key="weight" value="50" />
</item>
<item id="2299" article="uma" name="runaAmarela">
	<attribute key="weight" value="50" />
</item>

 

Em uma lib qualquer

SCROLLTELEPORT_ = {
idDaRuna_1 = 2276,
storageRuna1 = 971701,

idDaRuna_2 = 2306,
storageRuna2 = 971702,

idDaRuna_3 = 2299,
storageRuna3 = 971703,

idDoLivro = 6124,
}

SCROLLTELEPORT_memoria1 = {valorX = 97170101, valorY = 97170102, valorZ = 97170103}
SCROLLTELEPORT_memoria2 = {valorX = 97170201, valorY = 97170202, valorZ = 97170203}
SCROLLTELEPORT_memoria3 = {valorX = 97170301, valorY = 97170302, valorZ = 97170303}

SCROLLTELEPORT_obter = {x = getCreaturePosition(cid).x, y = getCreaturePosition(cid).y, z = getCreaturePosition(cid).z}

 

Para criar um teleport, por exemplo, por talkactions, deve-se usar:

-- Runa 1
doCreateTeleport(1387, {x=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria1.valorX), y=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria1.valorY)}, z=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria1.valorZ)}, getCreaturePosition(cid))

-- Runa 2
doCreateTeleport(1387, {x=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria2.valorX), y=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria2.valorY)}, z=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria2.valorZ)}, getCreaturePosition(cid))

-- Runa 3
doCreateTeleport(1387, {x=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria3.valorX), y=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria3.valorY)}, z=getPlayerStorageValue(cid, SCROLLTELEPORT_memoria3.valorZ)}, getCreaturePosition(cid))

 

Eternera Tibia Server - RPG

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.7k

Informação Importante

Confirmação de Termo