Jump to content

Problemas Interpolate Between


Recommended Posts

Estou com um problema com a tentar fazer uma progress bar

Spoiler


local tick = getTickCount()
local temp = nil

function Hud()
    local progresso = interpolateBetween(x*0, 0, 0, x*100, 0, 0, (getTickCount()-tick)/temp, "Linear")

    dxDrawCircle(x*1317, y*862, 18, progresso/100, progresso/100*360, tocolor(128, 128, 128, 255))
end

function progress(temp)

    tick = getTickCount()
    addEventHandler("onClientRender", root, Hud)

	setTimer(function()
        removeEventHandler("onClientRender", root, Hud)
	end, temp, 1)

end
addEvent("Progress:bar", true)
addEventHandler("Progress:bar", root, progress)

 

No debugscript esta dizendo 16: attempt to perform arithmetic on upvalue 'temp' (a nil value) 

Queria fazer a exportação de time no triggerEvent para assim não precisar ficar recriando a progress bar

Edited by Tony Scripter
Link to comment

A variável temp declarada no começo do código com o valor nulo é diferente da passada por argumento que só vale dentro da função, então o que está passando como parâmetro no interpolate between tem o valor nulo. 

O temp é em ms né? 

Veja se funciona dessa forma:

local temp = nil

function Hud()
    local progresso = interpolateBetween(0, 0, 0, x*100, 0, 0, (getTickCount()-tick) / temp, "Linear")
    if temp + tick <= getTickCount() then
        removeEventHandler("onClientRender", root, Hud)
    end
    dxDrawCircle(x*1317, y*862, 18, progresso/100, progresso/100*360, tocolor(128, 128, 128, 255))
end

function progress(tempoms)
    temp = tempoms
    tick = getTickCount()
    addEventHandler("onClientRender", root, Hud)
end
addEvent("Progress:bar", true)
addEventHandler("Progress:bar", root, progress)

 

Edited by Boechat
Link to comment
Posted (edited)

 

15 minutes ago, Boechat said:

A variável temp declarada no começo do código com o valor nulo é diferente da passada por argumento que só vale dentro da função, então o que está passando como parâmetro no interpolate between tem o valor nulo. 

O temp é em ms né? 

Veja se funciona dessa forma:



local temp = nil

function Hud()
    local progresso = interpolateBetween(0, 0, 0, x*100, 0, 0, (getTickCount()-tick) / temp, "Linear")
    if temp + tick <= getTickCount() then
        removeEventHandler("onClientRender", root, Hud)
    end
    dxDrawCircle(x*1317, y*862, 18, progresso/100, progresso/100*360, tocolor(128, 128, 128, 255))
end

function progress(tempoms)
    temp = tempoms
    tick = getTickCount()
    addEventHandler("onClientRender", root, Hud)
end
addEvent("Progress:bar", true)
addEventHandler("Progress:bar", root, progress)

 

Sim o codigo e em ms, testei aqui porem ainda continuou dando o mesmo error será que tem mais alguma coisa errada ?

Edited by Tony Scripter
Link to comment
53 minutes ago, Tony Scripter said:

 

Sim o codigo e em ms, testei aqui porem ainda continuou dando o mesmo error será que tem mais alguma coisa errada ?

Me mostra a parte que vc da um trigger no evento  "Progress:bar", talvez você esteja passando um valor nulo como parâmetro.

Link to comment
4 hours ago, Boechat said:

Me mostra a parte que vc da um trigger no evento  "Progress:bar", talvez você esteja passando um valor nulo como parâmetro.

function Progress(sourceElement, tempoms)
    triggerClientEvent(sourceElement, "Progress:bar", sourceElement, tempoms)
end
addEvent("Progress:bar", true)
addEventHandler("Progress:bar", root, Progress)

function teste(source)
    triggerClientEvent(source, "Progress:bar", root, 5000)
end
addCommandHandler("teste", teste)

 

Link to comment

 E aonde está sendo chamado a função Progress? 

Testa com esse comando aqui para ver se funciona:

function Progress(playerSource, tempoms)
    triggerClientEvent(playerSource, "Progress:bar", playerSource, tempoms)
end
addEvent("Progress:bar", true)
addEventHandler("Progress:bar", root, Progress)

function teste(playerSource)
    Progress(playerSource, 5000)
end
addCommandHandler("teste", teste)

 

Edited by Boechat
  • Thanks 1
Link to comment
29 minutes ago, Boechat said:

 E aonde está sendo chamado a função Progress? 

Testa com esse comando aqui para ver se funciona:


function Progress(playerSource, tempoms)
    triggerClientEvent(playerSource, "Progress:bar", playerSource, tempoms)
end
addEvent("Progress:bar", true)
addEventHandler("Progress:bar", root, Progress)

function teste(playerSource)
    Progress(playerSource, 5000)
end
addCommandHandler("teste", teste)

 

Infelizmente ainda nao foi continua printando a mesma coisa no debug ERROR: 16: attempt to perform arithmetic on upvalue 'temp' (a nil value) 

 

Consegui fazer ir, obrigado pela ajuda amigo 😀

Link to comment
5 minutes ago, Tony Scripter said:

Infelizmente ainda nao foi continua printando a mesma coisa no debug ERROR: 16: attempt to perform arithmetic on upvalue 'temp' (a nil value) 

 

Consegui fazer ir, obrigado pela ajuda amigo 😀

Por nada, qualquer coisa posta aí no fórum :)

  • Thanks 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...