zezzok7 Posted January 20 Share Posted January 20 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now