Помогите с LUA скриптом.

dsfsdfsdgfoasf

Новичок
Автор темы
12
0
Вообщем я хочу сделать скрипт на ImGui для подсчета моего онлайна за сессию и за сутки (Именно на IMGUI ! ), но я не знаю как делать его логирование и как перевести секунды os.clock в формат времени HH:MM:SS . Я хочу сделать для логгирование в 2 файла: 1 - логирует время за сессии ( [День/Месяц/Год][Время входа в игру - Время выхода из игры] Онлайн за сессию ) ; 2 - логирует время за сутки ( [День/Месяц/Год] Онлайн за сутки ). Я скину мой код. Я остановился и застрял на моменте с переводом времени. Прошу помочь знающих людей.

require "lib.moonloader"
local imgui = require 'imgui'

function main()
if not isSampLoaded() and not isSampfuncsLoaded then return end
while not isSampAvailable() do wait(0) end
imgui.Process = true
end

local x = os.clock ()
local s = 0
for i = 1,100000 do s = s + i end
--print (string.format ("Истекшее время:% .2f \ n", os.clock () - x))
--local dt = {};
--dt.hour,dt.min,dt.sec = string.match("(%d*):(%d*):(%d*)");
--for key, value in pairs(dt) do dt[key] = tonumber(value) end

function imgui.OnDrawFrame()
--function imgui.BeginPopupContextItem()
imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
imgui.Begin('Online')
imgui.Text('Онлайн за сессию : '..--[[x/3600..':'..x/60..':'..]]os.clock () - x)
--imgui.EndPopup()
imgui.End()
end
 

wD.D159

Известный
Друг
446
480
А подробнее немного хотя бы можно, а то я тупенький )
к примеру используешь код WriteMessageToFile(os.date('[%H:%M:%S]')..' текст.',path, 'newtextdoc.txt'), то получишь запись в txt документе [22:31:42] текст.
 

dsfsdfsdgfoasf

Новичок
Автор темы
12
0
к примеру используешь код WriteMessageToFile(os.date('[%H:%M:%S]')..' текст.',path, 'newtextdoc.txt'), то получишь запись в txt документе [22:31:42] текст.
Хорошо. А как например мне начать подсчет времени, допустим со входа в игру?
 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141
Чтобы подсчитать время за сессию можно сделать следующее: при запуске записываешь время в переменную
Lua:
local start = os.time()
потом из текущего времени вычитаешь стартовое, а уже потом переводишь это в нормальный формат с помощью os.date() и выводишь в окно ImGUI. При выходе из игры сохраняешь текущую сессию в новый файл, а если это не первая сессия, то прибавляешь текущую сессию к прошлой. В итоге получаешь perfect.
 

dsfsdfsdgfoasf

Новичок
Автор темы
12
0
Чтобы подсчитать время за сессию можно сделать следующее: при запуске записываешь время в переменную
Lua:
local start = os.time()
потом из текущего времени вычитаешь стартовое, а уже потом переводишь это в нормальный формат с помощью os.date() и выводишь в окно ImGUI. При выходе из игры сохраняешь текущую сессию в новый файл, а если это не первая сессия, то прибавляешь текущую сессию к прошлой. В итоге получаешь perfect.
Можно небольшой пример?
 
1,417
1,032
Не могли бы показать пример? Хотя бы простенький
Lua:
local startTime = 0

function main()
    repeat wait(0) until isSampAvailable()
    startTime = os.clock() wait(-1)
end

function onScriptTerminate(s, quitGame)
    if s == thisScript() then sampfuncsLog('Вы были в игре '..os.date('%M минут %S секунд.', os.clock() - startTime)) end
end
 

dsfsdfsdgfoasf

Новичок
Автор темы
12
0
Lua:
local startTime = 0

function main()
    repeat wait(0) until isSampAvailable()
    startTime = os.clock() wait(-1)
end

function onScriptTerminate(s, quitGame)
    if s == thisScript() then sampfuncsLog('Вы были в игре '..os.date('%M минут %S секунд.', os.clock() - startTime)) end
end
На этом примере я сделал что-то. Но появились свои баги ) . Но уже лучше. У меня отображается окно ImGui и в нем онлайн за сессию в таком формате ЧЧ:ММ:СС

Lua:
local startTime = 0

function main()
    repeat wait(0) until isSampAvailable()
    startTime = os.clock() wait(-1)
end

function onScriptTerminate(s, quitGame)
    if s == thisScript() then sampfuncsLog('Вы были в игре '..os.date('%M минут %S секунд.', os.clock() - startTime)) end
end
1 баг : Отсчет начинается почему-то с 3 часов.
2 баг : У меня показывается с ImGui не курсор SAMP, а стрелочка мыши. Какая команда чтобы это исправить?

Как исправить эти баги?
 

Вложения

  • sa-mp-113.png
    sa-mp-113.png
    2 KB · Просмотры: 311

trefa

3d print
Всефорумный модератор
2,107
1,264
На этом примере я сделал что-то. Но появились свои баги ) . Но уже лучше. У меня отображается окно ImGui и в нем онлайн за сессию в таком формате ЧЧ:ММ:СС


1 баг : Отсчет начинается почему-то с 3 часов.
2 баг : У меня показывается с ImGui не курсор SAMP, а стрелочка мыши. Какая команда чтобы это исправить?

Как исправить эти баги?
1 - не баг
2 - так и должно.
 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141