Postado Dezembro 22, 2015 9 anos Substitui essa parte: elseif (store <= agora) then por esta: elseif (store > 0 and store <= agora) then Editado Dezembro 22, 2015 9 anos por dominus pergunta (veja o histórico de edições)
Postado Dezembro 22, 2015 9 anos Autor @dominus continua a mesma coisa, com o primeiro use o item ja se transforma sera que o erro n esta na ultima linha não? eu vi que vc mudou muita coisa mas essa parte continua do mesmo jeito mesmo que não esteja mais sendo citada em cima (actionid) (os.date ("%H:%M:%S", item.actionid))..".") Editado Dezembro 22, 2015 9 anos por wevertonvrb (veja o histórico de edições)
Postado Dezembro 23, 2015 9 anos Averiguei o sistema e descobrir o error que ocorrer; existe uma latência em Lua, devido a isso ele demora um tempo até atualizar o sistema provocando aquele "bug" de transformar os items sem o tempo. Então cheguei a duas formas de fazer o que tu queres: uma seria adicionar atributos no item: items/items.xml <item id="id do item" article="a" name="item"> <attribute key="decayTo" value="0000"/> <attribute key="duration" value="10"/> </item> adicionando esses dois atributos "decayto" e "duration", o item vai trocar de id quando terminar a duração. O problema desse sistema é que ao iniciar o servidor automaticamente todos os items ele vai decair com o tempo, apenas os items criados "in-game" é que não decaem. Pra eles decairem o player precisará dar "use" nele ativando esse scripts: function onUse(cid,item,pos) doDecayItem(item.uid) doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) return true end -----------//########################//------------------------- A segunda forma de fazer isso seria adicionando "actionid" diferentes em cada item para podermos diferenciar cada um deles. assim poderia usar o script abaixo sem necessitar por atributos no items.xml: <action itemid="0000" event="script" value="nome do arquivo.lua"/> local obj = {} function onUse(cid,item,pos) local agora,tempo = os.time(),10 if not(obj[item.actionid])then obj[item.actionid] = agora+tempo doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) elseif(obj[item.actionid] <= agora)then doTransformItem(item.uid,15143) doSendMagicEffect(pos, CONST_ME_MAGIC_RED) obj[item.actionid] = nil else doPlayerSendCancel(cid, "O item sera transformado as: "..(os.date("%H:%M:%S", obj[item.actionid] or 0))..".") end return true end Eu não sei se eu entendi bem, mas o que tu queres é que os items funcionem de forma independentes, tipo: se o item demora 10 minutos para mudar e eu clicar no primeiro item e cerca de 2 minutos depois clicar no segundo item, esse segundo item só poderá mudar 2 minutos depois do primeiro, pois tem que ser passado 10 minutos para cada item individualmente. foi isso que entendi.
Postado Dezembro 23, 2015 9 anos Autor @dominus eu ja tinha tentado o primeiro jeito com o atributo decay e duration, porem o tempo começa a contar apenas quando o player entra no jogo, e se por algum motivo ele remover o item da backpack para por na casa por exemplo o tempo para de contar e não continua de onde parou, se o item tiver na backpack e o jogador deslogar ou morrer o tempo recomeça também, ou seja, pro decay funcionar corretamente, não posso mover relogar ou morrer, no meu caso o item é 24h para se transformar eu botei tempo menor pra teste agora sobre a segunda opção esta perfeito rep + obrigado mt obrigado mesmo, mano vc me salvo te amo!!!
Postado Março 29, 2016 9 anos Autor Em 23/12/2015 em 11:38, dominus disse: Averiguei o sistema e descobrir o error que ocorrer; existe uma latência em Lua, devido a isso ele demora um tempo até atualizar o sistema provocando aquele "bug" de transformar os items sem o tempo. Então cheguei a duas formas de fazer o que tu queres: uma seria adicionar atributos no item: items/items.xml <item id="id do item" article="a" name="item"> <attribute key="decayTo" value="0000"/> <attribute key="duration" value="10"/> </item> adicionando esses dois atributos "decayto" e "duration", o item vai trocar de id quando terminar a duração. O problema desse sistema é que ao iniciar o servidor automaticamente todos os items ele vai decair com o tempo, apenas os items criados "in-game" é que não decaem. Pra eles decairem o player precisará dar "use" nele ativando esse scripts: function onUse(cid,item,pos) doDecayItem(item.uid) doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) return true end -----------//########################//------------------------- A segunda forma de fazer isso seria adicionando "actionid" diferentes em cada item para podermos diferenciar cada um deles. assim poderia usar o script abaixo sem necessitar por atributos no items.xml: <action itemid="0000" event="script" value="nome do arquivo.lua"/> local obj = {} function onUse(cid,item,pos) local agora,tempo = os.time(),10 if not(obj[item.actionid])then obj[item.actionid] = agora+tempo doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) elseif(obj[item.actionid] <= agora)then doTransformItem(item.uid,15143) doSendMagicEffect(pos, CONST_ME_MAGIC_RED) obj[item.actionid] = nil else doPlayerSendCancel(cid, "O item sera transformado as: "..(os.date("%H:%M:%S", obj[item.actionid] or 0))..".") end return true end Eu não sei se eu entendi bem, mas o que tu queres é que os items funcionem de forma independentes, tipo: se o item demora 10 minutos para mudar e eu clicar no primeiro item e cerca de 2 minutos depois clicar no segundo item, esse segundo item só poderá mudar 2 minutos depois do primeiro, pois tem que ser passado 10 minutos para cada item individualmente. foi isso que entendi. @dominus disse que ia te marcar, como eu disse a segunda opção esta perfeita e funcionando, porem se eu fexar o serve e abrir novamente o fica como se eu nunca tivesse dado o use nele, tenho que dar use novamente e ele fica marcado pra transformar em um horario diferente exemplo: se eu usar o item agora 14h ele fica programado pra transformar as 20h porem se eu fechar e reabrir o serve as 19h o item perde a contagem e eu tenho que usar ele dinovo se eu usar novamente as 19h ele é reprogramado para 1h da manhã , se eu n usar novamente ele não se transforma as 20h pois ele volta a ser o mesmo que era antes do plimeiro click em outras palavras preciso que a contagem continue mesmo que o serve seja fexado ou caia
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.