Postado Janeiro 9, 2015 10 anos Autor Zipter, ficou perfeito. Só uma dúvida, tem como fazer a pedra voltar? -> No caso dos players, se um sair do pizo a pedra já volta. -> No caso da alavanca, depois de 60 segudos a pedra volta.
Postado Janeiro 9, 2015 10 anos Vê se isso resolve: function onStepIn(cid, item, position, fromPosition) local cfg = { positions = { {x = x, y = y, z = z}, --Posições dos jogadores. {x = x, y = y, z = z}, }, rock_id = xxx, --ID da pedra. rock_position = {x = x, y = y, z = z}, --Posição da pedra. } if not isPlayer(cid) then return true end for _, posis in pairs(cfg.positions) do local creature = getTopCreature(posis).uid if not isCreature(creature) or not isPlayer(creature) then return true end end if not getPlayerPosition(cid) == cfg.postions then doCreateItem(cfg.rock_id, 1, cfg.rock_position) end local rock = getTileItemById(cfg.rock_position, cfg.rock_id).uid if rock > 0 then doRemoveItem(rock, 1) end return true end Depois vejo a da alavanca... se eu estiver errado, só colocar de volta o script do zipter98. function onUse(cid, item, fromPosition, item2, toPosition) local rock_id = xxx --ID da pedra. local rock_position = {x = x, y = y, z = z} --Posição da pedra. local rock = getTileItemById(rock_position, rock_id).uid if rock > 0 then doRemoveItem(rock, 1) addEvent(doCreateItem, 60 * 1000,cfg.rock_id,1,cfg.rock_position) end return true end Ps: Não sei muito bem mexer com o addevent, nunca usei... mas qualquer coisa tem o backup no post do zipter.. 919894 quando você entrar, vê se algum que eu pus presta... Editado Janeiro 9, 2015 10 anos por Caronte (veja o histórico de edições) Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado). Tópicos: [FAQ] BBCODE [LIB] Constant [RME] Administrando bordas. [TALK] Broadcast Editável. [TALK] Sugest. [TALK] Checkpoint. [MOVE] Pântano pegajoso. [ACTION] Piggy Bank. (Cassino). [GLOBAL] Uptime Ad. [C0DE] Consertando 'Invalid Password' [PROGRAM] Quest Maker
Postado Janeiro 9, 2015 10 anos -> No caso dos players, se um sair do pizo a pedra já volta. function onStepOut(cid, item, position, fromPosition) local rock_id = xxx --ID da pedra. local rock_position = {x = x, y = y, z = z} --Posição da pedra. local rock = getTileItemById(rock_position, rock_id).uid if rock < 1 then doCreateItem(rock_id, 1, rock_position) end return true end Editado Janeiro 9, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Janeiro 9, 2015 10 anos zipter98 A da alavanca que eu fiz ta certo ? Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado). Tópicos: [FAQ] BBCODE [LIB] Constant [RME] Administrando bordas. [TALK] Broadcast Editável. [TALK] Sugest. [TALK] Checkpoint. [MOVE] Pântano pegajoso. [ACTION] Piggy Bank. (Cassino). [GLOBAL] Uptime Ad. [C0DE] Consertando 'Invalid Password' [PROGRAM] Quest Maker
Postado Janeiro 10, 2015 10 anos A ideia do addEvent está certa, porém os parâmetros, não exatamente. addEvent(doCreateItem, 60 * 1000,cfg.rock_id,1,cfg.rock_position) Como pode-se notar, você chamou por cfg.rock_id e cfg.rock_position. Isso estaria certo se rock_id e rock_position estivessem numa tabela de nome cfg. Nesse caso, porém, elas são variáveis locais. Há duas alternativas de correção para seu código. A primeira, criando a tabela cfg e colocando rock_id e rock_position nela: function onUse(cid, item, fromPosition, item2, toPosition) local cfg = { rock_id = xxx, --ID da pedra. rock_position = {x = x, y = y, z = z}, --Posição da pedra. } local rock = getTileItemById(cfg.rock_position, cfg.rock_id).uid if rock > 0 then doRemoveItem(rock, 1) addEvent(function() doCreateItem(cfg.rock_id, 1, cfg.rock_position) end, 60 * 1000) end return true end A segunda, apenas alterando os parâmetros de doCreateItem: function onUse(cid, item, fromPosition, item2, toPosition) local rock_id = xxx --ID da pedra. local rock_position = {x = x, y = y, z = z} --Posição da pedra. local rock = getTileItemById(rock_position, rock_id).uid if rock > 0 then doRemoveItem(rock, 1) addEvent(function() doCreateItem(rock_id, 1, rock_position) end, 60 * 1000) end return true end Se você olhar bem, perceberá que alterei o addEvent. Esta função pode ser escrita de duas formas: a primeira, que você já conhece, e esta outra. A que utilizei, pessoalmente, acho melhor e mais segura. Uma vantagem que ela apresenta, demonstrarei em códigos. addEvent(doPlayerSendCancel, 30 * 1000, cid, "Hi.") Se, no momento que o doPlayerSendCancel for executado, o jogador estiver offline, ocorrerá o erro de player not found. Para evitar isso, faria-se: local function sendMessage(cid) if isPlayer(cid) then doPlayerSendCancel(cid, "Hi.") end end addEvent(sendMessage, 30 * 1000, cid) Para evitar o trabalho de fazer uma função, e depois executá-la em um addEvent, você poderia, simplesmente: addEvent(function() if isPlayer(cid) then doPlayerSendCancel(cid, "Hi.") end end, 30 * 1000) Basicamente, você "cria" uma função dentro do addEvent. Essa maneira é mais prática e segura do que a que normalmente vemos (minha opinião, claro). ps: não sou bom com explicações, mas espero que você entenda. O melhor jeito de entender isso é na prática mesmo. Editado Janeiro 10, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
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.