Jump to content

Ajuda para salvar tempo.


Recommended Posts

to tentando fazer um script de menor tempo que pretendo reutilizar para muitos outros como corridas, trabalhos e etc consegui fazer praticamente tudo mas estou com um pequeno problema na hora de salvar o tempo na conta do usuário que o erro é o seguinte. Optei por usar accountData para salvar o melhor tempo e pensei em uma logica seguinte para salvar o tempo: ao jogador passar pelo ultimo marker o server-side chama a função de comparação de tempo e essa comparação de tempo funcionaria da seguinte maneira, ao passar pelo ultimo marker o tempo atual é salvo por uma elementData e essa elementData é comparada com a accountData e se a elementData for menor ela vira a accountData subistituindo a anterior porém o erro é que quando o jogador finaliza esses markers o tempo dele não é salvo mas o elementData sim exemplo: accountData não é salva mas o elementData é salvo em 3 minutos, ai quando o jogador realiza novamente esse processo seu accountData vira 3 minutos e se o cara fizer 2 minutos nessa tarefa atual ele não vai subistituir. 

não sei se deu pra entender mas oque eu esperava com isso era ambos salvarem em tempo real e efetuar a comparação, tipo o cara fez a primeira tarefa na conta dele em 2 minutos ambos devem ser setados em 2 minutos o accountData e o elementData e após isso o accountData só deve ser subistituido caso ele consiga um elementData menor.

server-side:
 

function compare()
	dataTime = getElementData(source, "LastTime") or false
    account = getPlayerAccount(source)
	accountTime = getAccountData(account, "bestTimeData") or false
    
	if accountTime == false then 
	    setAccountData(account, "bestTimeData", dataTime)
		outputChatBox("conta sem registro, melhor tempo setado", source, 255, 255, 0)
		outputChatBox("tempo agora: "..accountTime, source, 255, 255, 0)
	else
		outputChatBox("ja tem", source, 255, 255, 255)
		if dataTime < accountTime then 
			setAccountData(account, "bestTimeData", dataTime)
			outputChatBox("novo tempo registrado!", source, 0, 255, 0)
		else
			outputChatBox("seu tempo não foi melhor!", source, 255, 0, 0)
		end
    end 
end

compare() é a função que eu chamo no ultimo marker para realizar a comparação do tempo. 

client-side: 

function startTimer()
    local screenX, screenY = guiGetScreenSize()
    local currentCount = 0
    local startTime = 0
    local timerVisible = true


function onClientRenderClock()
    local playerTick = getElementData(localPlayer, "startTick") or 0
    currentCount = getTickCount()
    elapsedTime = currentCount - startTime
    dxDrawText(formatTime(elapsedTime), screenW * 0.8099, screenH * 0.0868, screenW * 0.9826, screenH * 0.1400, tocolor(0, 0, 0, 124), 3.50, "default-bold", "left", "top", false, false, false, false, false)

end
addEventHandler("onClientRender", root, onClientRenderClock)


function formatTime(milliseconds)
    local totalSeconds = math.floor(milliseconds / 1000)
    local minutes = math.floor(totalSeconds / 60)
    local seconds = totalSeconds % 60
    local remainingMilliseconds = milliseconds % 1000
    return string.format("%02d:%02d.%03d", minutes, seconds, remainingMilliseconds)
end


startTime = getTickCount()
elapsedTime = 0 -- Zera o tempo decorrido


function markersave()
    setElementData(source, "LastTime", elapsedTime)
    outputChatBox("tempo formatado agora: "..formatTime(elapsedTime), 255, 255, 255)
end
addEvent("saveTiming1", true)
addEventHandler("saveTiming1", root, markersave)
    
function stopTimerF()
    if currentCount > 0 then
        currentCount = 0
    else
        outputChatBox("erro.")
    end
    if timerVisible == true then
        timerVisible = false
        removeEventHandler("onClientRender", getRootElement(), onClientRenderClock)
    end
end
addEvent("stopTimer", true)
addEventHandler("stopTimer", localPlayer, stopTimerF)

se alguem puder me ajudar ficarei grato.

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...