Khost 0 Postado Setembro 11, 2009 Share Postado Setembro 11, 2009 (editado) 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 Setembro 11, 2009 por Khost Link para o comentário https://xtibia.com/forum/topic/120101-script-de-tile/ Compartilhar em outros sites More sharing options...
joaohd 200 Postado Setembro 11, 2009 Share Postado Setembro 11, 2009 desafio?? eu que nem sou profissional consegui 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790268 Compartilhar em outros sites More sharing options...
Khost 0 Postado Setembro 11, 2009 Autor Share Postado Setembro 11, 2009 (editado) Apocarai eu acho que falta uma função ifisplayer == TRUE pq eu vo botar monstros pra passar em cima desses tiles .... obrigado... Editado Setembro 11, 2009 por Khost Link para o comentário https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790279 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Setembro 11, 2009 Share Postado Setembro 11, 2009 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790298 Compartilhar em outros sites More sharing options...
Khost 0 Postado Setembro 11, 2009 Autor Share Postado Setembro 11, 2009 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790302 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Setembro 11, 2009 Share Postado Setembro 11, 2009 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790306 Compartilhar em outros sites More sharing options...
Khost 0 Postado Setembro 11, 2009 Autor Share Postado Setembro 11, 2009 Bota ae com o script certo com o ifIsPlayer == TRUE e oque faltou eu configurar... Obrigado! Link para o comentário https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790373 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Setembro 11, 2009 Share Postado Setembro 11, 2009 é 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790393 Compartilhar em outros sites More sharing options...
Khost 0 Postado Setembro 12, 2009 Autor Share Postado Setembro 12, 2009 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790447 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Setembro 12, 2009 Share Postado Setembro 12, 2009 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790572 Compartilhar em outros sites More sharing options...
Khost 0 Postado Setembro 12, 2009 Autor Share Postado Setembro 12, 2009 (editado) 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 Setembro 12, 2009 por Khost Link para o comentário https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790579 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Setembro 12, 2009 Share Postado Setembro 12, 2009 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790597 Compartilhar em outros sites More sharing options...
Khost 0 Postado Setembro 12, 2009 Autor Share Postado Setembro 12, 2009 (editado) è 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... qualquer pessoa consegue entrar , se ja estiver uma pessoa usando... tipo a area é assim: vo posta uma foto : erro2.bmp Editado Setembro 12, 2009 por Khost Link para o comentário https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790599 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Setembro 12, 2009 Share Postado Setembro 12, 2009 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 dofor 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 tile9YyY1 -> coordenada Y do tile1 YyY2 -> coordenada Y do tile9 ZzZ -> coordenada Z de todos os tiles deveria ficar assim: for arenax = 220, 305 dofor arenay = 1567, 1569 do ve se o seu erro foi esse. flw Link para o comentário https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790644 Compartilhar em outros sites More sharing options...
Khost 0 Postado Setembro 12, 2009 Autor Share Postado Setembro 12, 2009 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 https://xtibia.com/forum/topic/120101-script-de-tile/#findComment-790649 Compartilhar em outros sites More sharing options...
Posts Recomendados