Ir para conteúdo

[script De Tile ]


Khost

Posts Recomendados

um Movement em um item 1397 aonde tipo uma pessoa entre nesse teleport só que necessite de um item para poder entrar e remova 5 dias de premium account e também só uma pessoa entrar nesse teleport por vez, tipo depois que outra pessoa entrar só depois que ela sair que outro player poderá entrar...

Só sendo permitido a entrada de um por vez...

 

Obrigado!

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

desafio?? eu que nem sou profissional consegui :party: ve se da certim ae:

 

local newpos = {x=XXX, y=YYY, z=Z}

local diaspa = 5

local requitem = ID DO ITEM

 

function onStepIn(cid, item, position, fromPosition)

 

if item.itemid == 1397 and getPlayerItemCount(cid,requitem) >= 1 then

if doPlayerRemovePremiumDays(cid, diaspa) then

for arenax = XxX1, XxX2 do

for arenay = YyY1, YyY2 do

arenapos = {x=arenax, y=arenay, z=ZzZ, stackpos=253}

arenacreature = getThingfromPos(arenapos)

 

if arenacreature.itemid > 0 then

doPlayerSendCancel(cid,"Wait for current people exit the room.")

return 1

end

end

end

 

doTeleportThing(cid, newpos)

doSendMagicEffect(newpos,10)

else

doPlayerSendTextMessage(cid,22,"You do not have the required premium days.")

end

else

doPlayerSendTextMessage(cid,22,"You do not have the required item.")

end

return TRUE

end

 

legenda:

newpos é onde o player vai ser teleportado

diaspa são os dias que vai tirar

requitem é onde c por o id do item que precisa

e onde tem XxX1, XxX2 e tal é os tiles que vai checar se tem alguem.

 

testei em TFS (do darkness) e deu certim.

 

a tag xml é

<movement type="StepIn" itemid="1397" event="script" value="NOME.lua"/>

 

acho que é isso.

flw

Link para o comentário
Compartilhar em outros sites

Apocarai eu acho que falta uma função ifisplayer == TRUE pq eu vo botar monstros pra passar em cima desses tiles ....

 

obrigado...

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

sabe por ela ou quer que eu coloque??

 

acho q eh soh trocar as linhas de comando ae:

 

 

if item.itemid == 1397 and getPlayerItemCount(cid,requitem) >= 1 then

 

por

 

if item.itemid == 1397 and getPlayerItemCount(cid,requitem) >= 1 and isPlayer(cid) == TRUE then

 

e

 

if arenacreature.itemid > 0 then

 

por

 

if arenacreature.itemid > 0 and isPlayer(arenacreature) == TRUE then

 

se n funcionar tenta tirar os == TRUE

 

flw

Link para o comentário
Compartilhar em outros sites

deu erro e eu não botei a parada do ifisplayer == TRUE ....

 

 

deu esse erro ::

 

 

[11/09/2009 16:33:08] Lua Script Error: [MoveEvents Interface] 
[11/09/2009 16:33:08] data/movements/scripts/corredor.lua:onStepIn

[11/09/2009 16:33:08] data/movements/scripts/corredor.lua:9: 'for' initial value must be a number
[11/09/2009 16:33:08] stack traceback:
[11/09/2009 16:33:08] 	data/movements/scripts/corredor.lua:9: in function <data/movements/scripts/corredor.lua:5>

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

voce trocou os valores que eu falei? eu testei aki sem e com o isPlayer e funcionou sem erro nenhum. esse erro que deu ae foi no 1º FOR onde XxX1 é a pos.x do tile1 e XxX2 é do tile2. exemplo:

 

 

Tile1 vazio vazio

vazio vazio vazio

vazio vazio Tile2

 

formando um quadrado com as posições. caso continue o erro, mande o script do jeito que esta no seu ot e vejo o que tem de errado

 

flw

Link para o comentário
Compartilhar em outros sites

é esse ae:

 

local newpos = {x=XXX, y=YYY, z=Z}

local diaspa = 5

local requitem = ID DO ITEM

 

function onStepIn(cid, item, position, fromPosition)

 

if item.itemid == 1397 and getPlayerItemCount(cid,requitem) >= 1 and isPlayer(cid) == TRUE then

if doPlayerRemovePremiumDays(cid, diaspa) then

for arenax = XxX1, XxX2 do

for arenay = YyY1, YyY2 do

arenapos = {x=arenax, y=arenay, z=ZzZ, stackpos=253}

arenacreature = getThingfromPos(arenapos)

 

if arenacreature.itemid > 0 and isPlayer(arenacreature) == TRUE then

doPlayerSendCancel(cid,"Wait for current people exit the room.")

return 1

end

end

end

 

doTeleportThing(cid, newpos)

doSendMagicEffect(newpos,10)

else

doPlayerSendTextMessage(cid,22,"You do not have the required premium days.")

end

else

doPlayerSendTextMessage(cid,22,"You do not have the required item.")

end

return TRUE

end

 

segue a legenda la de cima.

 

flw

Link para o comentário
Compartilhar em outros sites

Oque eu boto aqui ???

 

for arenax = XxX1, XxX2 do
for arenay = YyY1, YyY2 do
arenapos = {x=arenax, y=arenay, z=ZzZ, stackpos=253}

 

oque eu boto no

 

for arenax ??

e no y

da um exemplo ae ...

 

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

são as coordenadas da sua "arena". Se a arena tiver 9 sqm por exemplo:

 

Tile1 Tile2 Tile3

Tile4 Tile5 Tile6

Tile7 Tile8 Tile9

 

aí voce vai pegar as coordenadas do Tile1 e do Tile9 e colocar nos XxX e YyY.

supondo que as coordenadas dos tiles sejam:

tile1 = {x=123, y=321, z=7}

tile9 = {x=456, y=654, z=7}

 

ficaria assim:

 

 

for arenax = 123, 456 do

for arenay = 321, 654 do

arenapos = {x=arenax, y=arenay, z=7, stackpos=253}

 

entendeu? XxX1 -> coordenada X do tile1 XxX2 -> coordenada X do tile9

YyY1 -> coordenada Y do tile1 YyY2 -> coordenada Y do tile9

ZzZ -> coordenada Z de todos os tiles

 

meio complicado mas da pra entender.

 

flw

Link para o comentário
Compartilhar em outros sites

kra no meu ot quando eu entro no tp da uma travada , eu tenho que fechar o tibia e abrir de novo ae eu encontro o char na cordena que eu botei pro tp teleportar...

 

oque pode ser isso??

 

 

olha como está o script :

 

local newpos = {x=262, y=1568, z=7}
local diaspa = 5
local requitem = 2210

function onStepIn(cid, item, pos, position, fromPosition)

if item.itemid == 1397 and getPlayerItemCount(cid,requitem) >= 1 and isPlayer(cid) == TRUE then
if doPlayerRemovePremiumDays(cid, diaspa) then
for arenax = 220, 1567 do
for arenay = 305, 1569 do
arenapos = {x=arenax, y=arenay, z=7, stackpos=253}
arenacreature = getThingfromPos(arenapos)

if arenacreature.itemid > 0 and isPlayer(arenacreature) == TRUE then
doPlayerSendCancel(cid,"Wait for current people exit the room.")
doSendMagicEffect(pos, 2)
pos.y = pos.y-1
doTeleportThing(cid, pos)
return 1
end
end
end

doTeleportThing(cid, newpos)
doSendMagicEffect(newpos,10)
else
doPlayerSendTextMessage(cid,22,"Voce nao tem dias suficientes,volte quando os tiver.")
doSendMagicEffect(pos, 2)
pos.y = pos.y-1
doTeleportThing(cid, pos)
end
else
doPlayerSendTextMessage(cid,22,"Precisa ter xp ring para entrar no corredor.")
doSendMagicEffect(pos, 2)
pos.y = pos.y-1
doTeleportThing(cid, pos)
end
return TRUE
end

 

 

 

Obrigado!

 

EDITED :

 

Olha o erro que ta dando ,sinistro!

erro.bmp

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

que variavel é essa que c pos ae? 'pos'. n precisa colocar o script pra mandar o player pra tras jah que se ele n tiver as coisas ele n passa. ele fica onde está.

local newpos = {x=262, y=1568, z=7}

local diaspa = 5

local requitem = 2210

 

function onStepIn(cid, item, position, fromPosition)

 

if item.itemid == 1397 and getPlayerItemCount(cid,requitem) >= 1 and isPlayer(cid) == TRUE then

if doPlayerRemovePremiumDays(cid, diaspa) then

for arenax = 220, 1567 do

for arenay = 305, 1569 do

arenapos = {x=arenax, y=arenay, z=7, stackpos=253}

arenacreature = getThingfromPos(arenapos)

 

if arenacreature.itemid > 0 and isPlayer(arenacreature) == TRUE then

doPlayerSendCancel(cid,"Wait for current people exit the room.")

doSendMagicEffect(getPlayerPosition(cid), 2)

return 1

end

end

end

 

doTeleportThing(cid, newpos)

doSendMagicEffect(newpos,10)

else

doPlayerSendTextMessage(cid,22,"Voce nao tem dias suficientes,volte quando os tiver.")

doSendMagicEffect(getPlayerPosition(cid), 2)

end

else

doPlayerSendTextMessage(cid,22,"Precisa ter xp ring para entrar no corredor.")

doSendMagicEffect(getPlayerPosition(cid), 2)

end

return TRUE

end

 

flw

Link para o comentário
Compartilhar em outros sites

è que eu quero que jogue ele para traz...

eu puz essa variavel pra do o efeito...

vo testa agora , posto se houver algum erro...

 

 

 

Obrigado!

 

ele não ta dizendo que esta ocupado...

:cry:

qualquer pessoa consegue entrar , se ja estiver uma pessoa usando...

 

tipo a area é assim:

vo posta uma foto :

erro2.bmp

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

agora não sei mais o que eh não. eu testei aqui e deu td certo. botei npc na area e deu pra teleportar, botei outro player e não deu. apareceu a mensagem que tava ocupado e tal e n deu erro nenhum no console... o jeito agora é postar em dúvidas de scripts e ver se alguem acha algo errado. eu acho que seu erro ta em :

 

for arenax = 220, 1567 do

for arenay = 305, 1569 do

 

pq onde tem 1567 era pra estar a coordenada "X" e onde tem 305 era a coordenada "Y". eu expliquei td la em cima pra vc:

XxX1 -> coordenada X do tile1 XxX2 -> coordenada X do tile9

YyY1 -> coordenada Y do tile1 YyY2 -> coordenada Y do tile9

ZzZ -> coordenada Z de todos os tiles

 

deveria ficar assim:

for arenax = 220, 305 do

for arenay = 1567, 1569 do

 

ve se o seu erro foi esse.

 

flw

Link para o comentário
Compartilhar em outros sites

kra , que cordenadas eu tenho que pega ??? o respawn não é quadrado não....

se viu a foto do respawn???

eu ja olhei tudo e eu ainda consigo entrar no respawn com um player dentro dele....

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...