Redes 0 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 Olá galera do Xtibia. Recentemente vi um script para criar uma 'porta' que quando você puxasse certa alavanca ela era liberada, e logo em seguida ela voltava ao normal, para o próximo. Script exatamente deste tópico. http://www.xtibia.co...89348-alavanca/ ____________________________________________ Utilizei o script disponibilizado pelo colega Leoxtibia. pedra = {x=1,y=1,z=1, stackpos = 1} --- a posição da pedra // nao mexa no stackpos idpedra = 1111 -- coloque o id da pedra time = 20 -- tempo em segundos para a pedra aparecer function onUse(cid, item, fromPosition, itemEx, toPosition) doRemoveItem(getThingfromPos(pedra).uid, 1) doPlayerSendTextMessage(cid, 18, "Você tem ".. time .." segundos para passar antes que a pedra volte!") addEvent(createPedra, time*1000) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) return true end function createPedra(pos) pos = {x=1,y=1,z=1,stackpos=1} --- posicao da pedra idpedra = 1111 --- id da pedra doCreateItem(idpedra, 1, pos) end _________________________ Ele funciona como o determinado, entretanto quando eu clico mais de um vez na alavanca, antes que a 'porta' volte, gera uma mensagem de erro: [6/8/2012 18:59:54] [Error - Action Interface] [6/8/2012 18:59:54] data/actions/scripts/Sacrificio Tomb.lua:onUse [6/8/2012 18:59:54] Description: [6/8/2012 18:59:54] (luaDoRemoveItem) Item not found E então, por mais que eu puxe a alavanca, a 'porta' não abre mais. __________________________ Gostaria de saber como faço para a alavanca travar, enquanto a 'porta' está livre. Obrigado Redes Link para o comentário Compartilhar em outros sites More sharing options...
0 Newtonnotwen 79 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 (editado) Actions.xml: <action actionid="7779" script="removewall.lua"/> data/actions/scripts crie um arquivo chamado removewall.lua e adicione: function onUse(cid, item, fromPosition, itemEx, toPosition) function Wall() local x = true local B = { {1056,{x=1041, y=1051, z=15, stackpos = 1}}, -- id da parede e pos da parede {1056,{x=1041, y=1052, z=15, stackpos = 1}}, {1056,{x=1041, y=1053, z=15, stackpos = 1}}, {1056,{x=1041, y=1054, z=15, stackpos = 1}} } for i = 1, #B do if getTileItemById(B[2], B[1]).uid == 0 then x = false end if x == true then doRemoveItem(getThingfromPos(B[2]).uid,1) else doCreateItem(B[1], 1, B[2]) end end end Wall() addEvent(Wall, 5000) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) return true end -Vermelho: Unica variável Obs: Adicione e remova de acorda com o numero de paredes. {1056,{x=1041, y=1053, z=15, stackpos = 1}}, ----------------------- Editando no RME: Editado Agosto 6, 2012 por Newtonnotwen Link para o comentário Compartilhar em outros sites More sharing options...
0 Redes 0 Postado Agosto 6, 2012 Autor Share Postado Agosto 6, 2012 Newtonnotwen Fiz o que voce sugeriu, mas não deu certo. function onUse(cid, item, fromPosition, itemEx, toPosition) function Wall() local x = true local B = { {12902,{x=1511, y=559, z=8, stackpos = 1}}, -- id da parede e pos da parede } for i = 1, #B do if getTileItemById(B[2], B[1]).uid == 0 then x = false end if x == true then doRemoveItem(getThingfromPos(B[2]).uid,1) else doCreateItem(B[1], 1, B[2]) end end end Wall() addEvent(Wall, 5000) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) return true end Utilizei o seu script, mas não deu resultado. Mesmo assim obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
0 Newtonnotwen 79 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 Qual a versão de seu ot server? Link para o comentário Compartilhar em outros sites More sharing options...
0 Redes 0 Postado Agosto 6, 2012 Autor Share Postado Agosto 6, 2012 Versão 9.44. Utilizo, também, o remeres 3.0 beta... não sei se isso influencia. Link para o comentário Compartilhar em outros sites More sharing options...
0 Newtonnotwen 79 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 (editado) Acho que pode ser o seguinte erro: O script está com alavanca de ID 1945 e 1946. Pode me dizer o ID da alavanca que você usa? Editado Agosto 6, 2012 por Newtonnotwen Link para o comentário Compartilhar em outros sites More sharing options...
0 Redes 0 Postado Agosto 6, 2012 Autor Share Postado Agosto 6, 2012 Sim, eu uso a 1945 e a 1946. Link para o comentário Compartilhar em outros sites More sharing options...
0 Newtonnotwen 79 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 Da algum erro no distro? Link para o comentário Compartilhar em outros sites More sharing options...
0 Redes 0 Postado Agosto 6, 2012 Autor Share Postado Agosto 6, 2012 Simplesmente não acontece nada, como se fosse apenas uma alavanca colocada no mapa sem qualquer action. Grato. Link para o comentário Compartilhar em outros sites More sharing options...
0 Eskylo 175 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 pedra = {x=1,y=1,z=1, stackpos = 1} --- a posição da pedra // nao mexa no stackpos idpedra = 1111 -- coloque o id da pedra time = 20 -- tempo em segundos para a pedra aparecer local storage = 5931 local time_now = os.time() function onUse(cid, item, fromPosition, itemEx, toPosition) if getGlobalStorageValue(storage) - time_now >= 0 then doPlayerSendTextMessage(cid, 18, "A passagem já está liberada!") else doRemoveItem(getThingfromPos(pedra).uid, 1) doPlayerSendTextMessage(cid, 18, "Você tem ".. time .." segundos para passar antes que a pedra volte!") addEvent(createPedra, time*1000) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) setGlobalStorageValue(storage, time_now+time) end return true end function createPedra(pos) pos = {x=1,y=1,z=1,stackpos=1} --- posicao da pedra idpedra = 1111 --- id da pedra doCreateItem(idpedra, 1, pos) end Link para o comentário Compartilhar em outros sites More sharing options...
0 Newtonnotwen 79 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 Então ela não esta ligada a nenhum script. Você adicionou como o arquivo xml? Link para o comentário Compartilhar em outros sites More sharing options...
0 LuckOake 400 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 @Redes Você por acaso alterou as coordenadas da parede no script? Link para o comentário Compartilhar em outros sites More sharing options...
0 Redes 0 Postado Agosto 6, 2012 Autor Share Postado Agosto 6, 2012 Eskylo e Newtonnotwen, obrigado pela paciência. Infelizmente só poderei testar amanha, agora preciso sair. Mas uma vez obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
0 Eskylo 175 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 OK. Testei aqui, e pegou Link para o comentário Compartilhar em outros sites More sharing options...
0 Newtonnotwen 79 Postado Agosto 6, 2012 Share Postado Agosto 6, 2012 Amanhã você me fala como ficou seu arquivo xml. Flws! Link para o comentário Compartilhar em outros sites More sharing options...
0 Redes 0 Postado Agosto 7, 2012 Autor Share Postado Agosto 7, 2012 Consegui voltar a tempo Eskylo O seu script realmente funcionou em partes. Eu puxo a alavanca e a parede abre. Caso eu puxe a alavanca novamente nada acontece, ótimo. Mas quando o tempo passa e a parede volta, a alavanca fica travada, impossibilitando o uso novamente. Newtonnotwen Meu arquivo .xml está como o código do Eskylo: pedra = {x=1511,y=559,z=8, stackpos = 1} --- a posição da pedra // nao mexa no stackpos idpedra = 12902 -- coloque o id da pedra time = 25 -- tempo em segundos para a pedra aparecer local storage = 5931 local time_now = os.time() function onUse(cid, item, fromPosition, itemEx, toPosition) if getGlobalStorageValue(storage) - time_now >= 0 then else doRemoveItem(getThingfromPos(pedra).uid, 1) doPlayerSendTextMessage(cid, 18, "You can hear something moving!") addEvent(createPedra, time*1000) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) setGlobalStorageValue(storage, time_now+time) end return true end function createPedra(pos) pos = {x=1511,y=559,z=8,stackpos=1} --- posicao da pedra idpedra = 12902 --- id da pedra doCreateItem(idpedra, 1, pos) end Agradeço a paciência desde já. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Redes 0
Olá galera do Xtibia.
Recentemente vi um script para criar uma 'porta' que quando você puxasse certa alavanca ela era liberada, e logo em seguida ela voltava ao normal, para o próximo.
Script exatamente deste tópico.
http://www.xtibia.co...89348-alavanca/
____________________________________________
Utilizei o script disponibilizado pelo colega Leoxtibia.
_________________________
Ele funciona como o determinado, entretanto quando eu clico mais de um vez na alavanca, antes que a 'porta' volte, gera uma mensagem de erro:
E então, por mais que eu puxe a alavanca, a 'porta' não abre mais.
__________________________
Gostaria de saber como faço para a alavanca travar, enquanto a 'porta' está livre.
Obrigado
Redes
Link para o comentário
Compartilhar em outros sites
23 respostass a esta questão
Posts Recomendados