Ir para conteúdo
  • 0

TransformItem com tempo


adrianokk

Pergunta

Esta é uma parte do Script que transforma um item em outro.

O jogador aperta no item e ele se transforma em outro..

mas quero deixar assim.

 

Ex: Jogador depois que aperta no item, o item depois de (5 Segundos) se transforma no outros.

 

ja esta setado um item como (ItemQuebrado), apenas quero Add um tempo antes dele se transformar

Editado por adrianokk
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 1
9 horas atrás, adrianokk disse:

Pronto coloquei ele todo. só faltava o tempo que ele demora para voltar ao item anteiros.
Deixa eu ver se consigo explicar.

Quando o jogador aperta (Exemplo: Em uma parede deitada --- id: 17256), a parede vira outro item (EX: Parede virada | id: 17257 ) e depois do time * 60000) (Time esta em 5 = 5 minutos)

Apos esses 5 minutos a parede volta para o ID: 17256.

o problema é que quanto o jogador aperta na parede 17256, ela se transforma na parede 17257 instantaneamente.
eu quero colocar um CD de ex:5 segundos. para que quando o jogador aperta na parede 17256 demore 5 segundos para ela virar a parede 17257  

 

Entendi, antes de function onUse adicione essa função:

---- FUNÇÃO QUE VOLTA O ITEM APÓS X SEGUNDOS ----
function contagemSegundosItem(cid, old_item, new_item, segundos)
local item_antigo = old_item.itemid
local old_position = getThingPos(old_item.uid)

doTransformItem(old_item.uid, new_item.itemid)

local item_tile = getTileItemById(old_position, new_item)

  if item_tile.uid then
    if segundos > 0 then
      addEvent(contagemSegundosItem, 60000, cid, old_item, new_item, segundos-1)
    else
      doTransformItem(item_tile.uid, item_antigo)	
    end
  end
end   

E na parte do function onUse onde estava seu código antigo, apague aquele bloco e chame a função:

contagemSegundosItem(cid, itemEx, ItemQuebrado, 5) -- CID, ITEM QUE VAI SER TRANSFORMADO, NOVO ITEM, E OS SEGUNDOS

Testa e me fala se der problema.

Editado por Yan18
Link para o comentário
Compartilhar em outros sites

  • 0
Em 21/04/2020 em 11:40, adrianokk disse:
Versão do Servidor: TFS - 0.3.5
Tipo de Script: actions
Código:
  Ocultar conteúdo


   local old_id, old_pos = itemEx.itemid, getThingPos(itemEx.uid)
    doTransformItem(itemEx.uid,  ItemQuebrado)
    addEvent(function()
    local stump = getTileItemById(old_pos, ItemQuebrado)
    if stump.uid then
    doTransformItem(stump.uid, old_id)

Esta é uma parte do Script que transforma um item em outro.

O jogador aperta no item e ele se transforma em outro..

mas quero deixar assim.

 

Ex: Jogador depois que aperta no item, o item depois de (5 Segundos) se transforma no outros.

 

ja esta setado um item como (ItemQuebrado), apenas quero Add um tempo antes dele se transformar

Seria melhor postar o script todo para entender melhor.

 

Só para entender, esse addEvent você colocou na tentativa de tentar criar os 5 segundos para transformar no item?

Link para o comentário
Compartilhar em outros sites

  • 0

Pronto coloquei ele todo. só faltava o tempo que ele demora para voltar ao item anteiros.
Deixa eu ver se consigo explicar.

Quando o jogador aperta (Exemplo: Em uma parede deitada --- id: 17256), a parede vira outro item (EX: Parede virada | id: 17257 ) e depois do time * 60000) (Time esta em 5 = 5 minutos)

Apos esses 5 minutos a parede volta para o ID: 17256.

o problema é que quanto o jogador aperta na parede 17256, ela se transforma na parede 17257 instantaneamente.
eu quero colocar um CD de ex:5 segundos. para que quando o jogador aperta na parede 17256 demore 5 segundos para ela virar a parede 17257  

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, adrianokk disse:

Pronto coloquei ele todo. só faltava o tempo que ele demora para voltar ao item anteiros.
Deixa eu ver se consigo explicar.

Quando o jogador aperta (Exemplo: Em uma parede deitada --- id: 17256), a parede vira outro item (EX: Parede virada | id: 17257 ) e depois do time * 60000) (Time esta em 5 = 5 minutos)

Apos esses 5 minutos a parede volta para o ID: 17256.

o problema é que quanto o jogador aperta na parede 17256, ela se transforma na parede 17257 instantaneamente.
eu quero colocar um CD de ex:5 segundos. para que quando o jogador aperta na parede 17256 demore 5 segundos para ela virar a parede 17257  

 

vai la no actions/scripts e cria um arquivo.lua e cola isso dentro

Spoiler

function onUse(cid, item)
          doTransformItem(item.uid,?????) ----- nas interrogação coloca o id da parede 2 no caso parede virada

            doDecayItem(item.uid)
                return true
end

no item.xml procura a parede 2 e coloca esses atributos no item
      <attribute key="decayTo" value="??????"/> nas interrogação coloca o id da parede 1
        <attribute key="duration" value="?????"/> nas interrogação vc coloca o tempo acredito que conte em segundos

n esquece de registrar no actions.xml 

<action actionid="5555" event="script" value="NOMEDOSCRIPT.lua"/>

pra fazer funcionar em apenas 1 parede determinada no local x,y,z recomendo registrar usando uma actionid EU BOTEI ALI 5555 é so registrar ela na parede pelo map editor não esquesse de editar o NOMEDOSCRIPT
caso seja uma arvore espalhada pelo mapa ou varias paredes espalhadas por exemplo vc pode trocar o action id por itemid e colocar o id da parede 1 que todas elas vai funcionar

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

  • 0
13 minutos atrás, adrianokk disse:

ty man

 

Funcionou certinho?

 

16 horas atrás, wevertonvrb disse:

 

vai la no actions/scripts e cria um arquivo.lua e cola isso dentro

  Mostrar conteúdo oculto

function onUse(cid, item)
          doTransformItem(item.uid,?????) ----- nas interrogação coloca o id da parede 2 no caso parede virada

            doDecayItem(item.uid)
                return true
end

no item.xml procura a parede 2 e coloca esses atributos no item
      <attribute key="decayTo" value="??????"/> nas interrogação coloca o id da parede 1
        <attribute key="duration" value="?????"/> nas interrogação vc coloca o tempo acredito que conte em segundos

n esquece de registrar no actions.xml 

<action actionid="5555" event="script" value="NOMEDOSCRIPT.lua"/>

pra fazer funcionar em apenas 1 parede determinada no local x,y,z recomendo registrar usando uma actionid EU BOTEI ALI 5555 é so registrar ela na parede pelo map editor não esquesse de editar o NOMEDOSCRIPT
caso seja uma arvore espalhada pelo mapa ou varias paredes espalhadas por exemplo vc pode trocar o action id por itemid e colocar o id da parede 1 que todas elas vai funcionar

Seu script não sentido, ele queria apenas que colocasse um tempo para que transformasse o item novamente, já estava funcionando a transformação, só precisava do tempo. Já o seu script usa a função Decay que seria "apodrecer" o item, que é usado mais para árvores, bush ou buracos (mais coisas que envolvem natureza ou ambiente, e tendo definido para o item "novo" no items.xml). Mas não é o caso do pedido do colega. E no seu script não tem um tempo definido para transformar o item.

Link para o comentário
Compartilhar em outros sites

  • 0

tinha dado um erro mas foi só um nome que coloquei errado na função, troquei e foi

você acredita que meu pc acabou de queimar a fonte ??

sorte que tenho um notebook reservar ¬¬''

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, adrianokk disse:

tinha dado um erro mas foi só um nome que coloquei errado na função, troquei e foi

você acredita que meu pc acabou de queimar a fonte ??

sorte que tenho um notebook reservar ¬¬''

 

Sobre o post, que bom que funcionou ?. Haha é assim mesmo, um nome errado, qualquer caractere errado já buga tudo,

 

Sobre seu pc, que chato cara, mas pelo menos foi só a fonte, semana retrasada perdi meu HD, tinha feito várias coisas em várias bases, tinha migrado uma base mysql para sqlite e perdi. Mas fonte é só comprar outra, se fosse HD ai seria complicado, perder suas coisas pessoal. Mas não esquece também de trocar a pasta térmica do processador para não correr risco de perder haha, ainda mais se mora em uma região quente.

 

Coloque por gentileza a resposta com o código como a melhor resposta, para caso outra pessoa queira ela encontre, e também como resolvido o tópico ?

 

Abraços.

Editado por Yan18
Link para o comentário
Compartilhar em outros sites

  • 0
Em 24/04/2020 em 16:42, adrianokk disse:

onde bota como melhor tópico e como resolvido ? xD

Haha, faz muitos anos que eu não crio um post, mas acho que é clicando no troféu.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...