Ir para conteúdo

Featured Replies

  • Respostas 31
  • Visualizações 4.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Modifiquei o script.   function onUse (cid, item) -- valor do intervalo local tempo = 2*60*60 -- 2 horas local agora = os.time () local newitem = 0000 -- ponha  o id do item que e

  • O erro se deu por culpa do teclado do android que põe as palavras em minúsculas.  Era para ficar assim: doTransformItem()   Modifiquei o script adicionando stores globais.   func

  • Substitui essa parte: elseif (store <= agora) then por esta: elseif (store > 0 and store <= agora) then

Postado
  • 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 por wevertonvrb (veja o histórico de edições)

Postado

 

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
  • 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!!!

  • 3 months later...
Postado
  • 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo