Ir para conteúdo
  • 0

Teleport que muda outfit


Elias Palermo

Pergunta

Bom dia.

Procurei pelo fórum mas não achei nada do tipo.

Estou precisando de um sistema de teleport que mude a outifit do player e outro que remova e volte como estava antes sendo male e female. Alguém tem um sistema desse ai?

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
22 minutos atrás, danihcv disse:

 

Pelo script q eu mandei aí... sahsahuahus

Olha, se não tiver um tile já pronto assim no seu map editor, utilize um editor .dat pra criar um novo item walkable. E aí, utilizando um .spr editor, vc coloca a(s) sprite(s) de tp neste novo item. E aí utilizando um map editor, vc adiciona uma action id qualquer, q ñ esteja sendo usado por mais nenhum item, a ele.

Mas ai teria que ter uma função no script pra por o id desse item não?

Link para o comentário
Compartilhar em outros sites

  • 0

Pra especificar o id do item e associá-lo ao script e ao action id, vc utiliza a tag em movements.xml:

<movevent type="StepIn" actionid="ACTION-ID-X" event="script" value="SCRIPT.lua"/>

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, danihcv disse:

Pra especificar o id do item e associá-lo ao script e ao action id, vc utiliza a tag em movements.xml:

<movevent type="StepIn" actionid="ACTION-ID-X" event="script" value="SCRIPT.lua"/>

 

Cara vou ser sincero contigo, acabei me perdendo em tantos comentários. Não querendo te dar trabalho você poderia fazer um post sobre esse sistema?

Link para o comentário
Compartilhar em outros sites

  • 0
7 minutos atrás, Elias Palermo disse:

Cara vou ser sincero contigo, acabei me perdendo em tantos comentários. Não querendo te dar trabalho você poderia fazer um post sobre esse sistema?

Fica tranquilo cara. Sobre o que vc quer que eu fale, exatamente?

Link para o comentário
Compartilhar em outros sites

  • 0
Agora, danihcv disse:

Fica tranquilo cara. Sobre o que vc quer que eu fale, exatamente?

O tutorial passo a passo de como devo fazer, porquê eu me perdi por completo kkkk

tem 3 scripts no post, não sei qual usar

Link para o comentário
Compartilhar em outros sites

  • 0

sahusahuas, td bem. Vamos lá.

Primeiro vc deve fazer um novo tp. Para isso será necessário editar o arquivo .dat do client, a sua intenção nessa etapa é criar um novo item com a mesma aparencia de um tp normal. (eu só estou com duvida se pra deixar o novo item com aparencia de tp será necessário mexer no seu arquivo .spr do client)

na hora de criar esse novo item pelo .dat editor, não esqueça de colocar o item como walkable para que seja possível pisar em cima do item. E também não esqueça de colocar para usar a msm sprite do portal já existente. (acho que isso já basta, ñ acho q seja necessário usar um .spr editor não)

 

Agora com o novo item criado, utilize seu map editor para botar o seu novo tp no mapa. Coloque 2 tps (um para ser a saida e o outro para ser a entrada) e adicione o msm action id para os 2 (utilize o action id 738969, se quiser).

 

Agora vá na pasta data\movements e adicione essa tag ao arquivo movements.xml:

<movevent type="StepIn" actionid="738969" event="script" value="tpoutfit.lua"/>

Agora vá na pasta data\movements\scripts e crie um arquivo chamado tpoutfit.lua e coloque isso dentro:

local posEntrada = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao entrar no 1 portallocal posSaida = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao sair pelo 2 portallocal outfitfemale = 136 --outfit que o player recebera ao entrar no portal, se for femealocal outfitmale = 128 --outfit que o player recebera ao entrar no portal, se for macholocal info = {} --deixe isso da forma como estalocal str = "dentroDoTp" --deixe da forma que estafunction onStepIn(cid, position)	if getPlayerStorageValue(cid, str) < 1 then	setPlayerStorageValue(cid, str, 1)	doTeleportThing(cid, posEntrada)	table.insert(info, getCreatureOutfit(cid), cid)		if getPlayerSex(cid) == 0 then		doCreatureChangeOutfit(cid, outfitfemale)		doSendMagicEffect(getPlayerPosition(cid), 12)		else		doCreatureChangeOutfit(cid, outfitmale)		doSendMagicEffect(getPlayerPosition(cid), 12)		end	else	setPlayerStorageValue(cid, str, 0)	doTeleportThing(cid, posSaida)	doSendMagicEffect(getPlayerPosition(cid), 12)	outfitOld = info[cid]	doCreatureChangeOutfit(cid, outfitOld)	table.remove(info, cid)	endreturn trueend

Agora não esquece de configurar direitinho aí o script, com as posições corretas pra ele teleportar e com a outfit q ele vai botar.

 

 

EDIT: Lembrando que eu ñ sei nada de derivados, e por isso fiz a explicação de como seria em um ot de tibia normal. Caso os nomes dos arquivos/locais que eu falei não sejam exatamente assim, tente encontrar os equivalentes e seguir o passo a passo.

Link para o comentário
Compartilhar em outros sites

  • 0
3 minutos atrás, danihcv disse:

sahusahuas, td bem. Vamos lá.

Primeiro vc deve fazer um novo tp. Para isso será necessário editar o arquivo .dat do client, a sua intenção nessa etapa é criar um novo item com a mesma aparencia de um tp normal. (eu só estou com duvida se pra deixar o novo item com aparencia de tp será necessário mexer no seu arquivo .spr do client)

na hora de criar esse novo item pelo .dat editor, não esqueça de colocar o item como walkable para que seja possível pisar em cima do item. E também não esqueça de colocar para usar a msm sprite do portal já existente. (acho que isso já basta, ñ acho q seja necessário usar um .spr editor não)

 

Agora com o novo item criado, utilize seu map editor para botar o seu novo tp no mapa. Coloque 2 tps (um para ser a saida e o outro para ser a entrada) e adicione o msm action id para os 2 (utilize o action id 738969, se quiser).

 

Agora vá na pasta data\movements e adicione essa tag ao arquivo movements.xml:

<movevent type="StepIn" actionid="738969" event="script" value="tpoutfit.lua"/>

Agora vá na pasta data\movements\scripts e crie um arquivo chamado tpoutfit.lua e coloque isso dentro:

local posEntrada = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao entrar no 1 portallocal posSaida = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao sair pelo 2 portallocal outfitfemale = 136 --outfit que o player recebera ao entrar no portal, se for femealocal outfitmale = 128 --outfit que o player recebera ao entrar no portal, se for macholocal info = {} --deixe isso da forma como estalocal str = "dentroDoTp" --deixe da forma que estafunction onStepIn(cid, position)	if getPlayerStorageValue(cid, str) < 1 then	setPlayerStorageValue(cid, str, 1)	doTeleportThing(cid, posEntrada)	table.insert(info, getCreatureOutfit(cid), cid)		if getPlayerSex(cid) == 0 then		doCreatureChangeOutfit(cid, outfitfemale)		doSendMagicEffect(getPlayerPosition(cid), 12)		else		doCreatureChangeOutfit(cid, outfitmale)		doSendMagicEffect(getPlayerPosition(cid), 12)		end	else	setPlayerStorageValue(cid, str, 0)	doTeleportThing(cid, posSaida)	doSendMagicEffect(getPlayerPosition(cid), 12)	outfitOld = info[cid]	doCreatureChangeOutfit(cid, outfitOld)	table.remove(info, cid)	endreturn trueend

Agora não esquece de configurar direitinho aí o script, com as posições corretas pra ele teleportar e com a outfit q ele vai botar.

Beleza vou tentar aqui e já te dou a resposta, da pra criar esse item de boa pelo ObjectBuilder/Item Editor?

Editado por Elias Palermo
Link para o comentário
Compartilhar em outros sites

  • 0
43 minutos atrás, danihcv disse:

Dá ss. Faça logo pelo qual vc tiver maior facilidade.

Mano a função de teleportar funcionou, mas não mudou a outfit e deu este erro na distro.

Citar

[23/04/2016 23:27:44] [Error - MoveEvents Interface] 

[23/04/2016 23:27:44] data/movements/scripts/tpoutfit.lua:onStepIn

[23/04/2016 23:27:44] Description: 

[23/04/2016 23:27:44] data/movements/scripts/tpoutfit.lua:12: bad argument #2 to 'insert' (number expected, got table)

[23/04/2016 23:27:44] stack traceback:

[23/04/2016 23:27:44]     [C]: in function 'insert'

[23/04/2016 23:27:44]     data/movements/scripts/tpoutfit.lua:12: in function <data/movements/scripts/tpoutfit.lua:8>

 

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta agr:

local posEntrada = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao entrar no 1 portallocal posSaida = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao sair pelo 2 portallocal outfitfemale = 136 --outfit que o player recebera ao entrar no portal, se for femealocal outfitmale = 128 --outfit que o player recebera ao entrar no portal, se for macholocal info = {} --deixe isso da forma como estalocal str = "dentroDoTp" --deixe da forma que estafunction onStepIn(cid, position)	if getPlayerStorageValue(cid, str) < 1 then	setPlayerStorageValue(cid, str, 1)	doTeleportThing(cid, posEntrada)	table.insert(info, getCreatureOutfit(cid), getPlayerGUID(cid))		if getPlayerSex(cid) == 0 then		doCreatureChangeOutfit(cid, outfitfemale)		doSendMagicEffect(getPlayerPosition(cid), 12)		else		doCreatureChangeOutfit(cid, outfitmale)		doSendMagicEffect(getPlayerPosition(cid), 12)		end	else	setPlayerStorageValue(cid, str, 0)	doTeleportThing(cid, posSaida)	doSendMagicEffect(getPlayerPosition(cid), 12)	outfitOld = info[getPlayerGUID(cid)]	doCreatureChangeOutfit(cid, outfitOld)	table.remove(info, getPlayerGUID(cid))	endreturn trueend

 

 

EDIT: Não esquece de smp fzr o teste com um player que tenha a storage "dentroDoTp" menor que 1 (ou seja, que nem um player novato, ou um player que nunca tenha pisado no tp), isso é para evitar erros nos players que vc tá usando pra fzr o teste.

Link para o comentário
Compartilhar em outros sites

  • 0
9 horas atrás, danihcv disse:

Tenta agr:

local posEntrada = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao entrar no 1 portallocal posSaida = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao sair pelo 2 portallocal outfitfemale = 136 --outfit que o player recebera ao entrar no portal, se for femealocal outfitmale = 128 --outfit que o player recebera ao entrar no portal, se for macholocal info = {} --deixe isso da forma como estalocal str = "dentroDoTp" --deixe da forma que estafunction onStepIn(cid, position)	if getPlayerStorageValue(cid, str) < 1 then	setPlayerStorageValue(cid, str, 1)	doTeleportThing(cid, posEntrada)	table.insert(info, getCreatureOutfit(cid), getPlayerGUID(cid))		if getPlayerSex(cid) == 0 then		doCreatureChangeOutfit(cid, outfitfemale)		doSendMagicEffect(getPlayerPosition(cid), 12)		else		doCreatureChangeOutfit(cid, outfitmale)		doSendMagicEffect(getPlayerPosition(cid), 12)		end	else	setPlayerStorageValue(cid, str, 0)	doTeleportThing(cid, posSaida)	doSendMagicEffect(getPlayerPosition(cid), 12)	outfitOld = info[getPlayerGUID(cid)]	doCreatureChangeOutfit(cid, outfitOld)	table.remove(info, getPlayerGUID(cid))	endreturn trueend

 

 

EDIT: Não esquece de smp fzr o teste com um player que tenha a storage "dentroDoTp" menor que 1 (ou seja, que nem um player novato, ou um player que nunca tenha pisado no tp), isso é para evitar erros nos players que vc tá usando pra fzr o teste.

 

Continua a dar erro :(

Citar

[24/04/2016 09:22:45] [Error - MoveEvents Interface] 

[24/04/2016 09:22:45] data/movements/scripts/tpoutfit.lua:onStepIn

[24/04/2016 09:22:45] Description: 

[24/04/2016 09:22:45] data/movements/scripts/tpoutfit.lua:12: bad argument #2 to 'insert' (number expected, got table)

[24/04/2016 09:22:45] stack traceback:

[24/04/2016 09:22:46]     [C]: in function 'insert'

[24/04/2016 09:22:46]     data/movements/scripts/tpoutfit.lua:12: in function <data/movements/scripts/tpoutfit.lua:8>

 

Link para o comentário
Compartilhar em outros sites

  • 0

My bad... Agr deve ir sem problema:

local posEntrada = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao entrar no 1 portallocal posSaida = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao sair pelo 2 portallocal outfitfemale = 136 --outfit que o player recebera ao entrar no portal, se for femealocal outfitmale = 128 --outfit que o player recebera ao entrar no portal, se for macholocal info = {} --deixe isso da forma como estalocal str = "dentroDoTp" --deixe da forma que estafunction onStepIn(cid, position)	if getPlayerStorageValue(cid, str) < 1 then	setPlayerStorageValue(cid, str, 1)	doTeleportThing(cid, posEntrada)	table.insert(info, getPlayerGUID(cid), getCreatureOutfit(cid))		if getPlayerSex(cid) == 0 then		doCreatureChangeOutfit(cid, outfitfemale)		doSendMagicEffect(getPlayerPosition(cid), 12)		else		doCreatureChangeOutfit(cid, outfitmale)		doSendMagicEffect(getPlayerPosition(cid), 12)		end	else	setPlayerStorageValue(cid, str, 0)	doTeleportThing(cid, posSaida)	doSendMagicEffect(getPlayerPosition(cid), 12)	outfitOld = info[getPlayerGUID(cid)]	doCreatureChangeOutfit(cid, outfitOld)	table.remove(info, getPlayerGUID(cid))	endreturn trueend

 

Link para o comentário
Compartilhar em outros sites

  • 0
34 minutos atrás, danihcv disse:

My bad... Agr deve ir sem problema:

local posEntrada = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao entrar no 1 portallocal posSaida = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao sair pelo 2 portallocal outfitfemale = 136 --outfit que o player recebera ao entrar no portal, se for femealocal outfitmale = 128 --outfit que o player recebera ao entrar no portal, se for macholocal info = {} --deixe isso da forma como estalocal str = "dentroDoTp" --deixe da forma que estafunction onStepIn(cid, position)	if getPlayerStorageValue(cid, str) < 1 then	setPlayerStorageValue(cid, str, 1)	doTeleportThing(cid, posEntrada)	table.insert(info, getPlayerGUID(cid), getCreatureOutfit(cid))		if getPlayerSex(cid) == 0 then		doCreatureChangeOutfit(cid, outfitfemale)		doSendMagicEffect(getPlayerPosition(cid), 12)		else		doCreatureChangeOutfit(cid, outfitmale)		doSendMagicEffect(getPlayerPosition(cid), 12)		end	else	setPlayerStorageValue(cid, str, 0)	doTeleportThing(cid, posSaida)	doSendMagicEffect(getPlayerPosition(cid), 12)	outfitOld = info[getPlayerGUID(cid)]	doCreatureChangeOutfit(cid, outfitOld)	table.remove(info, getPlayerGUID(cid))	endreturn trueend

 

Ainda não kk

Citar

[24/04/2016 16:27:49] [Error - MoveEvents Interface] 

[24/04/2016 16:27:49] data/movements/scripts/tpoutfit.lua:onStepIn

[24/04/2016 16:27:49] Description: 

[24/04/2016 16:27:49] attempt to index a number value

[24/04/2016 16:27:49] stack traceback:

[24/04/2016 16:27:49]     [C]: in function 'doCreatureChangeOutfit'

[24/04/2016 16:27:49]     data/movements/scripts/tpoutfit.lua:17: in function <data/movements/scripts/tpoutfit.lua:8>

 

Link para o comentário
Compartilhar em outros sites

  • 0

Vê qual erro dá agr.. sauhsahusahusa

 

local posEntrada = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao entrar no 1 portallocal posSaida = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao sair pelo 2 portallocal outfitfemale = 136 --outfit que o player recebera ao entrar no portal, se for femealocal outfitmale = 128 --outfit que o player recebera ao entrar no portal, se for macholocal info = {} --deixe isso da forma como estalocal str = "dentroDoTp" --deixe da forma que estafunction onStepIn(cid, position)	if getPlayerStorageValue(cid, str) < 1 then	setPlayerStorageValue(cid, str, 1)	doTeleportThing(cid, posEntrada)	table.insert(info, getPlayerGUID(cid), getCreatureOutfit(cid))		if getPlayerSex(cid) == 0 then		doCreatureChangeOutfit(cid, {lookType=outfitfemale})		doSendMagicEffect(getPlayerPosition(cid), 12)		else		doCreatureChangeOutfit(cid, {lookType=outfitmale})		doSendMagicEffect(getPlayerPosition(cid), 12)		end	else	setPlayerStorageValue(cid, str, 0)	doTeleportThing(cid, posSaida)	doSendMagicEffect(getPlayerPosition(cid), 12)	outfitOld = info[getPlayerGUID(cid)]	doCreatureChangeOutfit(cid, outfitOld)	table.remove(info, getPlayerGUID(cid))	endreturn trueend

 

Link para o comentário
Compartilhar em outros sites

  • 0
8 minutos atrás, danihcv disse:

Vê qual erro dá agr.. sauhsahusahusa

 

local posEntrada = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao entrar no 1 portallocal posSaida = {x = 69691, y= 73731, z= 7} --posicao para onde o player será levado ao sair pelo 2 portallocal outfitfemale = 136 --outfit que o player recebera ao entrar no portal, se for femealocal outfitmale = 128 --outfit que o player recebera ao entrar no portal, se for macholocal info = {} --deixe isso da forma como estalocal str = "dentroDoTp" --deixe da forma que estafunction onStepIn(cid, position)	if getPlayerStorageValue(cid, str) < 1 then	setPlayerStorageValue(cid, str, 1)	doTeleportThing(cid, posEntrada)	table.insert(info, getPlayerGUID(cid), getCreatureOutfit(cid))		if getPlayerSex(cid) == 0 then		doCreatureChangeOutfit(cid, {lookType=outfitfemale})		doSendMagicEffect(getPlayerPosition(cid), 12)		else		doCreatureChangeOutfit(cid, {lookType=outfitmale})		doSendMagicEffect(getPlayerPosition(cid), 12)		end	else	setPlayerStorageValue(cid, str, 0)	doTeleportThing(cid, posSaida)	doSendMagicEffect(getPlayerPosition(cid), 12)	outfitOld = info[getPlayerGUID(cid)]	doCreatureChangeOutfit(cid, outfitOld)	table.remove(info, getPlayerGUID(cid))	endreturn trueend

 

Funcionou! Perfeito sem nenhum erro. Muito obrigado, principalmente pela paciência.

Dúvida: Se eu quiser fazer o mesmo sistema em outro lugar devo apenas mudar o action id?

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...