PI
pedido

Pedido: Tp Para Mais De 1 Lugar

Por piikiller, 04 de ago. de 2012 em Scripts

script
15
1.5k
piikillerP
04 de agosto de 2012 às 22:00

Ae galero eu to precisando de algo mais ou menos assim:

 

Todas as cidades do meu mapa tem um tp para o mesmo shop, mas para players nao teleportarem de cidade para cidade de graça nao criearei mais de 1 teleport para voltar. Por isso preciso de um script que volte para a cidade que o player entrou no tp anteriormente. Tudo isso precisa ser feito em um unico magic forcefield. Ex.: entrei no shop pela cidade 3 saio do shop na cidade 3. Nao sei se me expressei bem mas é isso ae :s. Agradeço desde já. Rep + pra quem conseguir me ajudar ^^

LuckOakeL
04 de agosto de 2012 às 22:07

Primeiro coloque um action id no teleport.

 

Movements.xml:

 

<movevent type="StepIn" actionid="xxxx" event="script" value="tp.lua"/>
<movevent type="StepIn" actionid="yyyy" event="script" value="tp.lua"/>

 

No xxxx você coloca o action id do teleport.

 

tp.lua:

 

-- Script by Luck Oake

function onStepIn(cid, item, position)

shop = {x=166, y=77, z=5} -- Coordenadas da loja

p = getCreaturePosition(cid)

local b = {

[0] = {x=p.x, y=p.y+1, z=p.z},

[1] = {x=p.x-1, y=p.y, z=p.z},

[2] = {x=p.x, y=p.y-1, z=p.z},

[3] = {x=p.x+1, y=p.y, z=p.z}

}

pos = b[getCreatureLookDirection(cid)]

if item.actionid == xxxx then

setPlayerStorageValue(cid, 4455, pos.x)

setPlayerStorageValue(cid, 4456, pos.y)

setPlayerStorageValue(cid, 4457, pos.z)

doTeleportThing(cid,shop)

end

s1 = getPlayerStorageValue(cid, 4455)

s2 = getPlayerStorageValue(cid, 4456)

s3 = getPlayerStorageValue(cid, 4457)

bpos = {x=s1, y=s2, z=s3}

if item.actionid == yyyy then

doTeleportThing(cid,bpos)

end

return true

end

 

 

PS: Nem precisa ser teleport. Se quiser, pode colocar um tile ou um item qualquer no mapa com o action id do script que funciona do mesmo jeito.

Editado Agosto 5 por LuckOake

NewtonnotwenN
04 de agosto de 2012 às 22:24

Esse script ira retornar para a cidade do player não?

 

Tipo:

 

Player mora em cidade 1 e esta na cidade 2, ele entra no teleporte (que se localiza na cidade 2), ele não vai retornar a cidade 2 mas sim a cidade 1, que é onde ele mora.

 

------------------------------------

 

@LuckOake pode transformar aquela minha talkaction em spell?

 

A do dragão e a do orc que tem efeito.

Editado Agosto 4 por Newtonnotwen

LuckOakeL
04 de agosto de 2012 às 22:27

@Newtonnotwen

 

Realmente, não pensei nisso. Vou ver se dou um jeito.

 

E quanto à sua talk, eu não sei se consigo fazer isso. Se você me falar para quê você quer que a talk vire spell, eu poderia ajudar melhor.

Editado Agosto 4 por LuckOake

NewtonnotwenN
04 de agosto de 2012 às 22:39

Só pelo exausted que quero que vire spell.

LuckOakeL
04 de agosto de 2012 às 22:40

Consegui ajustar o spell.

 

tp.lua:

 

-- Script by Luck Oake

function onStepIn(cid, item, position)

shop = {x=166, y=77, z=5} -- Coordenadas da loja

p = getCreaturePosition(cid)

local b = {

[0] = {x=p.x, y=p.y+1, z=p.z},

[1] = {x=p.x-1, y=p.y, z=p.z},

[2] = {x=p.x, y=p.y-1, z=p.z},

[3] = {x=p.x+1, y=p.y, z=p.z}

}

pos = b[getCreatureLookDirection(cid)]

if item.actionid == xxxx then

setPlayerStorageValue(cid, 4455, pos.x)

setPlayerStorageValue(cid, 4456, pos.y)

setPlayerStorageValue(cid, 4457, pos.z)

doTeleportThing(cid,shop)

end

s1 = getPlayerStorageValue(cid, 4455)

s2 = getPlayerStorageValue(cid, 4456)

s3 = getPlayerStorageValue(cid, 4457)

bpos = {x=s1, y=s2, z=s3}

if item.actionid == yyyy then

doTeleportThing(cid,bpos)

end

return true

end

 

Editado Agosto 5 por LuckOake

NewtonnotwenN
04 de agosto de 2012 às 22:46

Aqui funcionou.

 

Aprovado!

SkymagnumS
04 de agosto de 2012 às 23:02

by LuckOake? então porque você copiu parcialmente a parte do script do Zmovir(minha antiga conta) ?

LuckOakeL
04 de agosto de 2012 às 23:05

Copiar o que e de onde? A única parte que não fui eu que fiz nesse script foi essa, que eu dei CTRL + C e V de um outro script, pra não ter que escrever tudo na mão, e que eu nem sem quem fez e tenho certeza de que não foi você.

 

local b = {
[0] = {x=p.x, y=p.y+1, z=p.z},
[1] = {x=p.x-1, y=p.y, z=p.z},
[2] = {x=p.x, y=p.y-1, z=p.z},
[3] = {x=p.x+1, y=p.y, z=p.z}]
}

 

Se você já fez algum script parecido com esse, só lamento, mas esse ai eu que fiz.

Editado Agosto 4 por LuckOake

SkymagnumS
05 de agosto de 2012 às 19:11

Foi o ZMovir era minha antiga conta

LuckOakeL
05 de agosto de 2012 às 19:15

Na verdade, fui pesquisar esse trecho e o script era do Vodkart. E na sua conta antiga não vi nenhum script com isso. Não fique tentando roubar créditos, cara. Não é só porque umas poucas linhas de um script que você pode ter feito há um tempo foram usadas em outro script que significa que você também tem que levar crédito. Se fosse assim, teria que por crédito do criador da função doPlayerAddItem em todo script que ela fosse usada.

NewtonnotwenN
05 de agosto de 2012 às 19:19

@Skymagnum

 

Já é a segunda vez que vejo você falando "esse script foi eu que fiz".

 

Fez isso comigo em outro tópico sendo que o script estava em meu ot.

 

Obs: é a segunda vez que VEJO, não sei se é a segunda...

SkymagnumS
05 de agosto de 2012 às 23:57

LINK

http://www.xtibia.com/forum/topic/185281-talkaction-create-teleport/

NewtonnotwenN
06 de agosto de 2012 às 00:00

Os scripts não estão iguais.

 

Assim sendo, Script by LockOake.

LuckOakeL
06 de agosto de 2012 às 18:03

Além de não estar igual, eu não peguei esse trecho script de você, e sim de um outro do Vodkart. Mas só porque UM TRECHO está igual, não significa que o script foi feito por você ou que você mereça créditos. Como eu já disse, se fosse assim, teria que por crédito do criador da função doPlayerAddItem em todo script que ela fosse usada.

 

@Topic

 

Bom, o assunto tá fugindo, então cadê o dono do tópico?