Ir para conteúdo
  • 0

[Duvida] Bug Em Uma Função


drakylucas

Pergunta

Tipo eu estou fazendo um sistema para um servidor a ser aberto.

 

Nesse sistema, eu fiz umafunção que está dando alguns problemas.

 

Tipo, se eu deixo ela em outro script, o debugger não acusa erros, mas se deixo no meio da minha lib, ele acusa esse erro:

 

ERROR: untitled.lua:60: attempt to perform arithmetic on a nil value

 

Função:

function getEventTime()
if 0 > (getGlobalStorageValue(12000) - os.clock())then -- essa é a linha 60 do erro
  return false
end
  return(getGlobalStorageValue(12000) - os.clock())
end

Não cheguei a testa-la no ot ainda, pois sem o script terminado é meio dificil de testar =s

Alguem sabe o pq do problema? tipo se eu coloco essa função separada em outroarquivo n da nenhum problema =s

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

O problema é que ele reconhece a função getGlobalStorageValue como um valor nulo.

 

Quando executar no OT Server provavelmente não irá ocorrer erro.

 

Para confirmar isso, execute no script live, o seguinte código:

 

function teste()

return getGlobalStorageValue(30000) - os.clock()
end

teste()

 

Ai então, temos o seguinte erro:

 

ERROR: untitled.lua:3: attempt to perform arithmetic on a nil value

 

Você não tem um erro como esse quando usa em um outro script pois não executa a função. Se executar o seguinte código:

 

function getEventTime()
if 0 > (getGlobalStorageValue(12000) - os.clock())then -- essa é a linha 60 do erro
  return false
end
  return(getGlobalStorageValue(12000) - os.clock())
end

getEventTime()

 

Irá acusar erro.

 

--

 

Acho que é isso, abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

vlw rep+ =P

achu que é isso é que axei que ele testava a função msmo sem ternenhuma parte puxando xD

pelo - aprendi uma coisa nova hj xD

 

vc sabe como posso faze pa ele reconhecer o global como um numero inteiro e nao nulo? =s

Link para o comentário
Compartilhar em outros sites

  • 0

Da pra dar uma "burlada" na função. Setar o storage, mas dai fazer valer apenas no momento em que for executado o script, deste jeito:

 

t = {}

function setGlobalStorageValue(sto, val)

t[sto] = val
end

function getGlobalStorageValue(sto)

return t[sto] and t[sto] or -1
end

setGlobalStorageValue(3000, 'teste')
print(getGlobalStorageValue(3000))

 

Vai printar:

 

teste

 

Mas se depois de utilizar esse código, você apagar e executar, por exemplo, este script:

 

t = {}

function setGlobalStorageValue(sto, val)

t[sto] = val
end

function getGlobalStorageValue(sto)

return t[sto] and t[sto] or -1
end

print(getGlobalStorageValue(3000))

 

Vai printar -1

 

--

 

Abraços.

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

×
×
  • Criar Novo...