Помогите с 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
 

Hdjdhdhd

Новичок
18
0
Мы не экстрасенсы. Покажи свой код.

Вот:

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
local s = os.clock () wait(-1)
end

local s = 0

function imgui.OnDrawFrame()
imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
imgui.Begin('Online')
imgui.Text('Онлайн за сессию : '..os.date('%H:%M:%S', os.clock() - startTime))
imgui.End()
end
 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,142
Вот:

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
local s = os.clock () wait(-1)
end

local s = 0

function imgui.OnDrawFrame()
imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
imgui.Begin('Online')
imgui.Text('Онлайн за сессию : '..os.date('%H:%M:%S', os.clock() - startTime))
imgui.End()
end
Lua:
if (os.time() - start) < 60 then
print("00:00:"..os.time() - start)
elseif (os.time() - start) < 3600 then
local min = math.floor((os.time() - start) / 60)
local sec = math.fmod(os.time() - start, 60)
print("00:"..min..":"..sec)
else
local hour = math.floor((os.time() - start) / 60 / 60)
local min = math.floor((os.time() - start - (3600 * hour)) / 60)
local sec = math.fmod((os.time() - start), 60)
print(hour..":"..min..":"..sec)
end
Можешь, в целом, использовать этот код Богов, если не хочешь париться с часовыми поясами. Он очень костыльный, но за то работает. :thinking:
 

Hdjdhdhd

Новичок
18
0
Lua:
if (os.time() - start) < 60 then
print("00:00:"..os.time() - start)
elseif (os.time() - start) < 3600 then
local min = math.floor((os.time() - start) / 60)
local sec = math.fmod(os.time() - start, 60)
print("00:"..min..":"..sec)
else
local hour = math.floor((os.time() - start) / 60 / 60)
local min = math.floor((os.time() - start - (3600 * hour)) / 60)
local sec = math.fmod((os.time() - start), 60)
print(hour..":"..min..":"..sec)
end
Можешь, в целом, использовать этот код Богов, если не хочешь париться с часовыми поясами. Он очень костыльный, но за то работает. :thinking:
Жестко. Попробую его применить. Утром изменю скрипт и отпишу о работоспособности.
 

dsfsdfsdgfoasf

Новичок
Автор темы
12
0
Lua:
if (os.time() - start) < 60 then
print("00:00:"..os.time() - start)
elseif (os.time() - start) < 3600 then
local min = math.floor((os.time() - start) / 60)
local sec = math.fmod(os.time() - start, 60)
print("00:"..min..":"..sec)
else
local hour = math.floor((os.time() - start) / 60 / 60)
local min = math.floor((os.time() - start - (3600 * hour)) / 60)
local sec = math.fmod((os.time() - start), 60)
print(hour..":"..min..":"..sec)
end
Можешь, в целом, использовать этот код Богов, если не хочешь париться с часовыми поясами. Он очень костыльный, но за то работает. :thinking:
Почему-то не работает.

Вот код:

local inicfg = require "inicfg"
local imgui = require 'imgui'
local key = require 'vkeys'
local sampev = require 'lib.samp.events'
local encoding = require 'encoding'
require "lib.moonloader"
require "lib.sampfuncs"

encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
if not isSampLoaded() and not isSampfuncsLoaded then return end
while not isSampAvailable() do wait(0) end
imgui.Process = true
local start = os.time() wait(-1)
end


local start = 0

if (os.time() - start) < 60 then
print("00:00:"..os.time() - start)
elseif (os.time() - start) < 3600 then
local min = math.floor((os.time() - start) / 60)
local sec = math.fmod(os.time() - start, 60)
print("00:"..min..":"..sec)
else
local hour = math.floor((os.time() - start) / 60 / 60)
local min = math.floor((os.time() - start - (3600 * hour)) / 60)
local sec = math.fmod((os.time() - start), 60)
--print(hour..":"..min..":"..sec)
end

function imgui.OnDrawFrame()
imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
imgui.SetNextWindowPos(imgui.ImVec2(650, 300))
imgui.Begin('Online')
imgui.Text(u8'Онлайн за сессию : '..hour..':'..min..':'..sec)
imgui.End()
end

Lua:
if (os.time() - start) < 60 then
print("00:00:"..os.time() - start)
elseif (os.time() - start) < 3600 then
local min = math.floor((os.time() - start) / 60)
local sec = math.fmod(os.time() - start, 60)
print("00:"..min..":"..sec)
else
local hour = math.floor((os.time() - start) / 60 / 60)
local min = math.floor((os.time() - start - (3600 * hour)) / 60)
local sec = math.fmod((os.time() - start), 60)
print(hour..":"..min..":"..sec)
end
Можешь, в целом, использовать этот код Богов, если не хочешь париться с часовыми поясами. Он очень костыльный, но за то работает. :thinking:
Я решил эту проблему! Просто стоило заменить time на clock

Как теперь сделать онлайн за сутки?? Тоесть чтобы к 1 сессии прибавлялся онлайн за другие сессии за день.
 

wD.D159

Известный
Друг
446
480
Почему-то не работает.

Вот код:

local inicfg = require "inicfg"
local imgui = require 'imgui'
local key = require 'vkeys'
local sampev = require 'lib.samp.events'
local encoding = require 'encoding'
require "lib.moonloader"
require "lib.sampfuncs"

encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
if not isSampLoaded() and not isSampfuncsLoaded then return end
while not isSampAvailable() do wait(0) end
imgui.Process = true
local start = os.time() wait(-1)
end


local start = 0

if (os.time() - start) < 60 then
print("00:00:"..os.time() - start)
elseif (os.time() - start) < 3600 then
local min = math.floor((os.time() - start) / 60)
local sec = math.fmod(os.time() - start, 60)
print("00:"..min..":"..sec)
else
local hour = math.floor((os.time() - start) / 60 / 60)
local min = math.floor((os.time() - start - (3600 * hour)) / 60)
local sec = math.fmod((os.time() - start), 60)
--print(hour..":"..min..":"..sec)
end

function imgui.OnDrawFrame()
imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
imgui.SetNextWindowPos(imgui.ImVec2(650, 300))
imgui.Begin('Online')
imgui.Text(u8'Онлайн за сессию : '..hour..':'..min..':'..sec)
imgui.End()
end


Я решил эту проблему! Просто стоило заменить time на clock

Как теперь сделать онлайн за сутки?? Тоесть чтобы к 1 сессии прибавлялся онлайн за другие сессии за день.

Записывай их в файл и складывай
 

wD.D159

Известный
Друг
446
480
Тоесть это только через подключение доп. файла? А без него никак? Или есть всё же вариант?
ну а как ты еще хотел? скрипты же выгрузятся если ты из игры выйдешь, вместе с их информацией о работе. Только через запись в файл, и последующей его подгрузкой!
 

Hdjdhdhd

Новичок
18
0
ну а как ты еще хотел? скрипты же выгрузятся если ты из игры выйдешь, вместе с их информацией о работе. Только через запись в файл, и последующей его подгрузкой!
А можно это как-то реализовать чтением moonloader.log файла? Тоесть брать инфу как-то оттуда и записывать туда же?
 

Hdjdhdhd

Новичок
18
0
зачем тебе делать запись в лог мунлоадера?)))
Я хочу просто реализовать включение и выключение логирования в дополнительные файлы. Но без подключения этого сделать нельзя, поэтому я и хочу забирать значение из лога мунлоанера. Тоесть я хочу сделать такую систему : если значение чекбокса равно true, то подключаем файл и логируем (копируем из мун лоадера значения) в этот файл данные

:wall:
Нет, он перезаписывается.
Ну это то я знаю, но я видел на просторах иностранных интернет форумов раньше один луа скрипт, в котором было это реализовано, но я не понял как. :thinking:

Хотя может быть я зря парюсь и всё таки придётся делать логирование :sneaky:

А да. И еще кое что. Мне нужно сделать счетчик суточного онлайна? Кто-нибудь может мне написать наглядный код для примера, чтобы я мог понять как это делается?
 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,142
есть пример РП часов для адванса? чтобы выводила в /do сколько времени сейчс и сколько до зарплаты
Есть, но чтобы найти этот пример, нужно выполнить квест. Этот квест называется "Google - решение всех проблем".
Суть квеста: Открыть сайт "google.com", после чего ввести свой запрос, затем полистать результаты и найти то, что тебе нужно.
А если серьезно, то где-то у меня был пример. Если найду - скину.