Jump to content

Ajuda para salvar tempo.


Recommended Posts

Posted

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.

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