Ir para conteúdo
  • Cadastre-se

(Resolvido)Alavanca para Teleport


Ir para solução Resolvido por MaXwEllDeN,

Posts Recomendados

Oi, gostaria de uma pequena ajuda com um script, vou explicar!

 

O Teleport tem 2 destino, um deles é quando todas as alavanca estão posicionadas corretamentes, para o lado esquerdo, nisso vai para X=1884 Y=1034 Z=11, se estiver uma alavanca fora vai para X=1834 Y=1017 Z=11, e tem como colocar para quando o player entrar no teleport, as alavanca mudarem ? com ordem aleatória ? se não tiver como, não tem problema, obrigado ! Dou 3 REP +

Link para o post
Compartilhar em outros sites

O tópico foi movido para a área correta, preste mais atenção da próxima vez!

Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680

Este tópico foi movido:

De: "OTServScriptingActions e TalkActions"

Para: "OTServSuporte OTServSuporte de Scripts"

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Deixa eu ver se entendi, se as alavancas tiverem todas pra esquerda, o player vai pra posição UM.

Se tiverem todas pra direita OU não estiverem todas pra esquerda (faltando um ou dois), então ele vai pra posição DOIS.

 

Quantas alavancas tem?

Precisa de storage pra passar pelo Portal?

 

Eu poderia fazer, mas preciso de detalhes, pois não entendi muito bem.

 

DICA: Você poderia fazer algo tipo, cinco alavancas (todas pro lado esquerdo), você deve posiciona-las em uma ordem certa, tipo:

 

  • Alavanca 1: esquerda
  • Alavanca 2: direita
  • Alavanca 3: esquerda
  • Alavanca 4: direita
  • Alavanca 5: direita

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites

É, tenho cinco alavanca, e não precisa de storage para entrar, apenas precisa que as alavanca esteja todas para o lado esquerda. e quando o player entrar as alavanca fica tudo aleatoria de novo. qualquer dúvida posta aqui que eu respondo.

Link para o post
Compartilhar em outros sites

Amigo eu fiz pra ti testa ae...

 

alavanca01.lua

 

-- Script By llucas75 --

local idesquerda = 1945
local iddireita = 1946
local aleatorio = {
[6001] = {esquerda = 1, direita = 2},
[6002] = {esquerda = 1, direita = 2},
[6003] = {esquerda = 1, direita = 2},
[6004] = {esquerda = 1, direita = 2},
[6005] = {esquerda = 1, direita = 2},
}
local ale = aleatorio[item.uid]
local chance = math.random(1,2)
local teleport1 = {x=1884, y=1034, z=11} --onde sera telado se tiver tudo a esquerda...
local teleport2 = {x=1834, y=1017, z=11} -- onde sera telado se não estiver tudo a esquerda


function onStepIn(cid, item, pos)
if isPlayer(cid) then
if idesquerda.uid == ale then
doTeleportThing(cid, teleport1)
if chance == ale.esquerda then
doTransformItem(ale, iddireita)
elseif chance == ale.direita then
doTransformItem(ale, idesquerda)
end
else
doTeleportThing(cid, teleport2)
if chance == ale.esquerda then
doTransformItem(ale, iddireita)
elseif chance == ale.direita then
doTransformItem(ale, idesquerda)
end
end
end
return true
end

 

movements.xml

 

<movevent type="StepIn" actionid="50002" event="script" value="alavanca01.lua"/>

 

Só coloque o actionid 50002 no teleport desejado...  e teste... Se funcionar , ou não... me da um retorno :).

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites
local pos_certa = {x = 1884, y = 1034, z = 11} -- Quando as alavancas estiverem na posição correta
local pos_errada = {x = 1834, y = 1017, z = 11} -- Quando as alavancas não estiverem na posição correta

local alavancas = {
	[1] = {x = 160, y = 54, z = 7},
	[2] = {x = 160, y = 54, z = 7},
	[3] = {x = 160, y = 54, z = 7},
	[4] = {x = 160, y = 54, z = 7},
	[5] = {x = 160, y = 54, z = 7},
}

function onStepIn(cid)
	for _, pos in ipairs(alavancas) do
		if not getTileItemById(pos, math.random(1945, 1946)).uid > 0 then
			doSendMagicEffect(getThingPos(cid), 10)
			doTeleportThing(cid, pos_errada)
			doSendMagicEffect(getThingPos(cid), 10)
			return true
		end
	end

	doSendMagicEffect(getThingPos(cid), 10)
	doTeleportThing(cid, pos_certa, true)
	doSendMagicEffect(getThingPos(cid), 10)
	return true
end

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

@ MaXwEllDeN, da esse erro quando eu fico em cima do teleport =// mexo nas alavanca não da nenhum erro.10352789_245908248932501_356261045426427

 

@llucas75, deu esse erro, nem mexi nas alavanca, nem nada.

10414497_245908235599169_469401193196559

 

 

Dei REP+ para os dois, por tentarem, se me ajudarem, ganhão mais, rs <3

Editado por AlekysRocha. (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Wtf? ta uma treta imensa... e max vc poderia me explicar como usar a função in pairs?

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites
function onStepIn(cid)
--==================================================================--
ItemPos = {x=416, y=513, z=14, stackpos= 1} -- Local Alavanca 1
ItemPos2 = {x=418, y=513, z=14, stackpos= 1} -- Local Alavanca 2
ItemPos3 = {x=420, y=513, z=14, stackpos= 1} -- Local Alavanca 3
ItemPos4 = {x=422, y=513, z=14, stackpos= 1} -- Local Alavanca 4
ItemPos5 = {x=422, y=513, z=14, stackpos= 1} -- Local Alavanca 5


ItemUm = getThingfromPos(ItemPos)
ItemDois = getThingfromPos(ItemPos2)
ItemTres = getThingfromPos(ItemPos3)
ItemQuatro = getThingfromPos(ItemPos4)
ItemCinco = getThingfromPos(ItemPos5)


posUm = {x=000,y=000,z=00} -- Position Certa
posDois = {x=000,y=000,z=00} -- Position Errada
--==================================================================--


if ItemUm.itemid == 1945 and ItemDois.itemid == 1945 and ItemTres.itemid == 1945 and ItemQuatro.itemid == 1945 and ItemCinco.itemid == 1945 then


doTeleportThing(cid, posUm) -- se tiver tudo pra esquerda, teleporta pra k.
doSendMagicEffect(posUm, 10)


doTransformItem(ItemUm.uid, 1946) -- Nao sei colocar aleatoria. Deixei tudo direita 
doTransformItem(ItemDois.uid, 1946)
doTransformItem(ItemTres.uid, 1946)
doTransformItem(ItemQuatro.uid, 1946)
doTransformItem(ItemCinco.uid, 1946)


else


doTeleportThing(cid, posDois) -- Se nao tiver tudo esquerda, teleporta pra k.
doSendMagicEffect(posDois, 10)


doTransformItem(ItemUm.uid, 1946) -- Nao sei colocar aleatoria. Deixei tudo direita 
doTransformItem(ItemDois.uid, 1946)
doTransformItem(ItemTres.uid, 1946)
doTransformItem(ItemQuatro.uid, 1946)
doTransformItem(ItemCinco.uid, 1946)


return TRUE
end

Não sei como colocar as alavancas pra ficarem em posições aleatórias. Você pode coloca-las em posições diferentes pelo Map Editor ou pode pedir pro pessoal aí em cima da um jeitinho pra você. Eles são fera!

 

Abraços !!

Editado por Frenesy (veja o histórico de edições)

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites

@Frenesy, Deu +/- certo KKK, tipo se eu abro o oT e coloco todas as alavanca para o lado esquerdo, ele vai para o lugar das alavanca errada, mais ai eu volto para a sala, me deparo com isso, rs 10350614_245920862264573_569936326907596

Porem, se eu coloco todos para a esquerda, ( como está na foto porem tudo para esquerda ) ele funfa '-' estranho né ?

Editado por AlekysRocha. (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local pos_certa = {x = 1884, y = 1034, z = 11} -- Quando as alavancas estiverem na posição correta
local pos_errada = {x = 1834, y = 1017, z = 11} -- Quando as alavancas não estiverem na posição correta

local alavancas = {
	[1] = {x = 160, y = 54, z = 7},
	[2] = {x = 160, y = 54, z = 7},
	[3] = {x = 160, y = 54, z = 7},
	[4] = {x = 160, y = 54, z = 7},
	[5] = {x = 160, y = 54, z = 7},
}

function onStepIn(cid)
	for _, pos in ipairs(alavancas) do
		if getTileItemById(pos, math.random(1945, 1946)).uid < 100 then
			doSendMagicEffect(getThingPos(cid), 10)
			doTeleportThing(cid, pos_errada)
			doSendMagicEffect(getThingPos(cid), 10)
			return true
		end
	end

	doSendMagicEffect(getThingPos(cid), 10)
	doTeleportThing(cid, pos_certa, true)
	doSendMagicEffect(getThingPos(cid), 10)
	return true
end

Wtf? ta uma treta imensa... e max vc poderia me explicar como usar a função in pairs?

 

http://www.tibiaking.com/forum/topic/18196-aulas-de-scripting-lua/

 

Aula 10, o comando For. Dá uma olhada lá.

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Vc configurou a pos das alavancas?

 

[1] = {x = 160, y = 54, z = 7},


[2] = {x = 160, y = 54, z = 7},
[3] = {x = 160, y = 54, z = 7},
[4] = {x = 160, y = 54, z = 7},
[5] = {x = 160, y = 54, z = 7},

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

Sim,

 

[1] = {x = 1861, y = 1028, z = 11},
[2] = {x = 1860, y = 1032, z = 11},
[3] = {x = 1867, y = 1028, z = 11},
[4] = {x = 1868, y = 1032, z = 11},
[5] = {x = 1861, y = 1037, z = 11},
Link para o post
Compartilhar em outros sites

 

Sim,

[1] = {x = 1861, y = 1028, z = 11},
[2] = {x = 1860, y = 1032, z = 11},
[3] = {x = 1867, y = 1028, z = 11},
[4] = {x = 1868, y = 1032, z = 11},
[5] = {x = 1861, y = 1037, z = 11},
local pos_certa = {x = 1884, y = 1034, z = 11} -- Quando as alavancas estiverem na posição correta
local pos_errada = {x = 1834, y = 1017, z = 11} -- Quando as alavancas não estiverem na posição correta

local alavancas = {
	[1] = {x = 160, y = 54, z = 7},
	[2] = {x = 160, y = 54, z = 7},
	[3] = {x = 160, y = 54, z = 7},
	[4] = {x = 160, y = 54, z = 7},
	[5] = {x = 160, y = 54, z = 7},
}

_GLOBAL_LEVERS = { -- Estado inicial
	[1] = "e",
	[2] = "e",
	[3] = "e",
	[4] = "e",
	[5] = "e",
}

local aux = {"e", "d"}

function onStepIn(cid)
	for id, pos in ipairs(alavancas) do
		local itemid = _GLOBAL_LEVERS[id] == "e" and 1945 or 1946
		if getTileItemById(pos, itemid).uid < 100 then
			doSendMagicEffect(getThingPos(cid), 10)
			doTeleportThing(cid, pos_errada)
			doSendMagicEffect(getThingPos(cid), 10)
			return true
		end
	end


	doSendMagicEffect(getThingPos(cid), 10)
	doTeleportThing(cid, pos_certa, true)
	doSendMagicEffect(getThingPos(cid), 10)

	for id =  1, #alavancas do
		_GLOBAL_LEVERS[id] = aux[math.random(2)]
	end
	return true
end

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Funcionou, porem quando entro no teleport as alavanca, não se altera fica tudo para a esquerda, Tem como arrumar? '-'

 

Amanhã te do dou os REP

Editado por AlekysRocha. (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Funcionou, porem quando entro no teleport as alavanca, não se altera fica tudo para a esquerda, Tem como arrumar? '-'

 

Amanhã te do dou os REP

 

HM, pera. Então as alavancas vão SEMPRE ter que ser puxadas todas pra esquerda, só que quando entra no teleport ele reseta e elas ficam mudadas(só o item) pra um lado aleatório?

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites
  • Solução
local pos_certa = {x = 1884, y = 1034, z = 11} -- Quando as alavancas estiverem na posição correta
local pos_errada = {x = 1834, y = 1017, z = 11} -- Quando as alavancas não estiverem na posição correta

local alavancas = {
	[1] = {x = 160, y = 54, z = 7},
	[2] = {x = 160, y = 54, z = 7},
	[3] = {x = 160, y = 54, z = 7},
	[4] = {x = 160, y = 54, z = 7},
	[5] = {x = 160, y = 54, z = 7},
}

local levers = { -- Estado inicial
	[1] = "e",
	[2] = "e",
	[3] = "e",
	[4] = "e",
	[5] = "e",
}

local aux = {"e", "d"}

function onStepIn(cid)
	for id, pos in ipairs(alavancas) do
		local itemid = levers[id] == "e" and 1945 or 1946
		if getTileItemById(pos, itemid).uid < 100 then
			doSendMagicEffect(getThingPos(cid), 10)
			doTeleportThing(cid, pos_errada)
			doSendMagicEffect(getThingPos(cid), 10)
			return true
		end
	end


	doSendMagicEffect(getThingPos(cid), 10)
	doTeleportThing(cid, pos_certa, true)
	doSendMagicEffect(getThingPos(cid), 10)

	for id, pos in ipairs(alavancas) do
		local itemid = levers[id] == "e" and 1945 or 1946
		local lv = getTileItemById(pos, itemid).uid
		if lv > 100 then
			doTransformItem(lv, math.random(1945, 1946))
		end
	end
	return true
end

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Velho, tu é muito foda o.O PQP KKKK Depois te do uns REP + , tu merece, alias todos merece por ter me ajudado, mais ainda falta um monte de scripts ainda =// . mais obrigado <3 pode trancar.

 

Deu certinho =)

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo