Postado Janeiro 7, 2015 10 anos Olá, bem essa é minha primeira postagem e não sei se estou na área correta. Sempre me virei com scripts pegando "um pouco ali, um pouco aqui", mas dessa vez estou precisando de ajuda com esse script é o seguinte: Coloquei um mecanismo tipo alavanca, ao clicar, o player abrir os portões, e depois de 5min os portões se fecham(aparecem) automaticamente. O problema é que qualquer player pode ir la e abrir depois dos 5min Eu queria que tive-se um intervalo de tempo para clicar na alavanca Ex: Um Player clica-se e abri-se os portões, depois de 5min os portões se fecharem automaticamente (como está no script), mas que só pude-se abrir(usar a alavanca) novamente depois de 1h. Portao.LUA function onUse(cid, item, frompos, item2, topos) item1pos = {x=470, y=243, z=7, stackpos=1} -- Posição do Portão 1 item2pos = {x=471, y=243, z=7, stackpos=1} -- Posição do Portão 2 getitem1 = getThingfromPos(item1pos) getitem2 = getThingfromPos(item2pos) UniID = 2330 -- UniqueID que vai ser adicionado na alavanca item1ID = 9485 -- id do Portão 1 item2ID = 9485 -- id do Portão 2 if item.uid == UniID and item.itemid == 9531 and getitem1.itemid == item1ID then doRemoveItem(getitem1.uid, 1) doTransformItem(item.uid, item.itemid) doSendMagicEffect(item1pos, 2) broadcastMessage('Os Portões da ponte the Castle of Titans foi aberto, e se fechará em 5 minutos', MESSAGE_EVENT_ADVANCE) addEvent(doCreateItem, 300000, 9485, 1, item1pos) end if item.uid == UniID and item.itemid == 9531 and getitem2.itemid == item2ID then doRemoveItem(getitem2.uid, 1) doTransformItem(item.uid, item.itemid) doSendMagicEffect(item2pos, 2) addEvent(doCreateItem, 300000, 9485, 1, item2pos) end return TRUE end Agradeço desde já Editado Janeiro 8, 2015 10 anos por shadowfall (veja o histórico de edições) F3lip3
Postado Janeiro 7, 2015 10 anos Se você colocar o uniqueid na tag desta action, não vai ser necessário checá-lo no código. Se não se importa, removi esta linha, que, ao meu ver, era inútil: doTransformItem(item.uid, item.itemid) Do jeito que fiz, na minha opinião, a configuração é mais fácil (se quiser adicionar um novo portão, basta colocar a posição na tabela gates). Enfim, aqui o código: ps: o tempo começa a ser contado depois de 5 minutos, no momento em que os portões são criados. function onUse(cid, item, frompos, item2, topos) local gates = { {x = 470, y = 243, z = 7}, --Posições dos portões. {x = 471, y = 243, z = 7}, } local id = 9485 --ID do portão. if getGlobalStorageValue(91801) > os.time() then return doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.") end for _, b in pairs(gates) do local gate = getTileItemById(b, id).uid if gate > 0 then doRemoveItem(gate, 1) doSendMagicEffect(b, 2) addEvent(function() doCreateItem(id, 1, b) end, 5 * 60 * 1000) else return doPlayerSendCancel(cid, "Someone already opened the gates.") end end broadcastMessage('Os Portões da ponte the Castle of Titans foram abertos, e se fecharão em 5 minutos', MESSAGE_EVENT_ADVANCE) addEvent(function() setGlobalStorageValue(91801, os.time() + 3600) end, 5 * 60 * 1000) return true end Editado Janeiro 8, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Janeiro 8, 2015 10 anos Autor Cara funfo direitinho obrigado! Só tinha um probleminha: quando o player clica na alavanca ficava mandando o "broadcastMessage" direto até que depois de 5min os portões aparece-se, ai parava com o "doPlayerSendCancel", mas arrumei, eu removi o addevent do "setGlobalStorageValue", agora ta perfect! Queria mais uma coisa se possível! (Que somente players com guild possam usar a alavanca) Agradeço se poder ajuda e se não poder também agradeço pela ajuda. F3lip3
Postado Janeiro 8, 2015 10 anos Opa, nesse exato momento estou almoçando. Estava pensando neste código, e então lembrei que não tinha feito nenhuma proteção contra esse bug. Editei meu comentário anterior com a correção. Sobre seu outro pedido, vou só terminar de comer e faço. EDIT: Pronto, aqui: function onUse(cid, item, frompos, item2, topos) local gates = { {x = 470, y = 243, z = 7}, --Posições dos portões. {x = 471, y = 243, z = 7}, } local id = 9485 --ID do portão. if getGlobalStorageValue(91801) > os.time() then return doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.") elseif getPlayerGuildId(cid) < 1 then return doPlayerSendCancel(cid, "You aren't member of any guild.") end for _, b in pairs(gates) do local gate = getTileItemById(b, id).uid if gate > 0 then doRemoveItem(gate, 1) doSendMagicEffect(b, 2) addEvent(function() doCreateItem(id, 1, b) end, 5 * 60 * 1000) else return doPlayerSendCancel(cid, "Someone already opened the gates.") end end broadcastMessage('Os Portões da ponte the Castle of Titans foram abertos, e se fecharão em 5 minutos', MESSAGE_EVENT_ADVANCE) addEvent(function() setGlobalStorageValue(91801, os.time() + 3600) end, 5 * 60 * 1000) return true end Editado Janeiro 8, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Janeiro 8, 2015 10 anos Autor Cara vlw, Você é foda Rsrsrs posso pedir só mais uma coisa? Juro que é a ultima coisa Tem como coloca o tempo que falta para pega a alavanca EX: retirar esse return doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.") E coloca um assim return doPlayerSendCancel(cid, "[Castle of Titans] Você deve aguardar 60 minuto(s) para usar a alavanca.") Só que fique contando regressivamente: 60 minuto(s) / 59 minuto(s) / 58 minuto(s). F3lip3
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.