Сохранение статистики в ini (по дням).

Mico

Активный
Автор темы
246
46
Версия MoonLoader
.026-beta
Привет! В общем, у меня допустим есть на сервере диалог со статистикой. Допустим 3 января к ночи у меня - 100 jail-ов, и 4 числа я набрал еще 50 jail-ов, как отобразить это количество (50)? Типо отобразить сколько jail-ов вчера набрал, потом в другом столбце сегодня ну и тд - а так же общее количество. Надеюсь поймёте :D

Так в словах объясню:
Есть окно, и 9 столбцов (действие, 7 дней недели и общая) и в действиях заполнено (джайл, мут, бан и т.д), мне надо чтобы к примеру в понедельник я выдал 10 мутов, так и записалось, потом в среду 40 мутов, так и записалось и т.д.

На сервере имеется диалог со статьей админа
 
Последнее редактирование:

qdIbp

Автор темы
Проверенный
1,386
1,141
Вот основа(для аризоны), дальше сам додумывай

Lua:
local on = require "lib.samp.events"
local inicfg = require 'inicfg'

local mxIni = inicfg.load(nil, "jailing")
if mxIni == nil then
    local mxIni = inicfg.load({
        stat = {['jailov'] = 0},
        jail = {}
    })
    inicfg.save(mxIni,"jailing")
    reloadScripts()
end

function on.onServerMessage(color, text)
    if text:find('Администратор (%w+_%w+)%[(%d+)%] посадил игрока (%w+_%w+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)') then
        anick, aid, nick, id, time, pri = text:match('(%w+_%w+)%[(%d+)%] посадил игрока (%w+_%w+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)')
        if tonumber(id) == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and nick == sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) then
            sampAddChatMessage(string.format("Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri),0xFFFF00)
            mxIni.stat['jailov'] = mxIni.stat['jailov'] + 1
            mxIni.jail[mxIni.stat['jailov']] = string.format('['..os.date('%d/%m/%y - %X').."] Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri)
            inicfg.save(mxIni,"jailing")
            --return false -- чтобы не отображалось сообщение
        end
    end
end



1641399815109.png


Можешь 20 строку заменить на эту, НО там месяц/день/год
Lua:
            mxIni.jail[mxIni.stat['jailov']] = string.format('['..os.date('%x - %X').."] Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri)
 

Mico

Активный
Автор темы
246
46
Вот основа(для аризоны), дальше сам додумывай

Lua:
local on = require "lib.samp.events"
local inicfg = require 'inicfg'

local mxIni = inicfg.load(nil, "jailing")
if mxIni == nil then
    local mxIni = inicfg.load({
        stat = {['jailov'] = 0},
        jail = {}
    })
    inicfg.save(mxIni,"jailing")
    reloadScripts()
end

function on.onServerMessage(color, text)
    if text:find('Администратор (%w+_%w+)%[(%d+)%] посадил игрока (%w+_%w+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)') then
        anick, aid, nick, id, time, pri = text:match('(%w+_%w+)%[(%d+)%] посадил игрока (%w+_%w+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)')
        if tonumber(id) == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and nick == sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) then
            sampAddChatMessage(string.format("Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri),0xFFFF00)
            mxIni.stat['jailov'] = mxIni.stat['jailov'] + 1
            mxIni.jail[mxIni.stat['jailov']] = string.format('['..os.date('%d/%m/%y - %X').."] Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri)
            inicfg.save(mxIni,"jailing")
            --return false -- чтобы не отображалось сообщение
        end
    end
end



Посмотреть вложение 130111

Можешь 20 строку заменить на эту, НО там месяц/день/год
Lua:
            mxIni.jail[mxIni.stat['jailov']] = string.format('['..os.date('%x - %X').."] Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri)
Мне немного не так надо) я на Ютубе увидел тулс, там была такая система в тулсе (скрин, качество желает лучшего)

Так в словах объясню:
Есть окно, и 9 столбцов (действие, 7 дней недели и общая) и в действиях заполнено (джайл, мут, бан и т.д), мне надо чтобы к примеру в понедельник я выдал 10 мутов, так и записалось, потом в среду 40 мутов, так и записалось и т.д.

На сервере имеется диалог со статьей админа
 

Вложения

  • IMG_20220106_002425.jpg
    IMG_20220106_002425.jpg
    80.8 KB · Просмотры: 169

qdIbp

Автор темы
Проверенный
1,386
1,141
А раньше сказать? Я тебя тапками закидаю

Lua:
local on = require "lib.samp.events"
local inicfg = require 'inicfg'
local imgui = require 'imgui'

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

local mxIni = inicfg.load(nil, "jailing")
if mxIni == nil then
    local mxIni = inicfg.load({
        stat = {
        ['jailov'] = 0,
        ['day'] = math.floor(os.date('%w') + 1),
        ['ob'] = false
        },
        jail = {
        [1] = 0, -- Воскресение
        [2] = 0,
        [3] = 0, -- Вторник
        [4] = 0,
        [5] = 0, -- Четверг
        [6] = 0,
        [7] = 0 -- Суббота
        }
    })
    inicfg.save(mxIni,"jailing")
    reloadScripts()
end

local main_window_state = imgui.ImBool(true)
function main()

    while true do wait(0)
        if mxIni.stat.day ~= math.floor(os.date('%w') + 1) then  mxIni.stat.day = math.floor(os.date('%w') + 1) inicfg.save(mxIni,"jailing")  end
        if mxIni.stat.day == 1 and not mxIni.stat.ob then mxIni.stat.ob = true inicfg.save(mxIni,"jailing") end
        if mxIni.stat.day == 2 and mxIni.stat.ob then mxIni.stat.ob = false for i = 1, 7 do mxIni.jail[i] = 0 end inicfg.save(mxIni,"jailing")  end
        imgui.ShowCursor = false
        imgui.Process = main_window_state.v
    end
end

function imgui.OnDrawFrame()
    local resX, resY = getScreenResolution()
    if main_window_state.v then
        imgui.SetNextWindowPos(imgui.ImVec2(resX-155,resY/2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(150, 185), imgui.Cond.FirstUseEver)
        imgui.Begin(' ', main_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
            imgui.PushStyleColor(imgui.Col.Border, imgui.ImVec4(0.0, 0.0, 0.0, 0.0))
            imgui.Columns(2,'xz',true)
                imgui.TextColored(imgui.ImVec4(0.0, 1.0, 0.0, 1.0 ), u8'     Дни')
                imgui.NextColumn()
                imgui.TextColored(imgui.ImVec4(0.0, 1.0, 0.0, 1.0 ), u8'  Кол-во')
                imgui.Separator()
                imgui.NextColumn()
                
                imgui.Text(u8'Воск')imgui.NextColumn()imgui.Text(tostring(mxIni.jail[1]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Пон')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[2]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Вт')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[3]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Ср')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[4]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Четв')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[5]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Пят')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[6]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Суб')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[7]))   
                
            imgui.PopStyleColor(1)
        imgui.End()
    end
end

function on.onServerMessage(color, text)
    if text:find('Администратор (%w+_%w+)%[(%d+)%] посадил игрока (%w+_%w+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)') then
        anick, aid, nick, id, time, pri = text:match('(%w+_%w+)%[(%d+)%] посадил игрока (%w+_%w+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)')
        if tonumber(id) == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and nick == sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) then
            sampAddChatMessage(string.format("Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri),0xFFFF00)
            inicfg.save(mxIni,"jailing")
            --return false -- чтобы не отображалось сообщение
        end
    end
end
 
Последнее редактирование:
  • Ха-ха
Реакции: Mico

Mico

Активный
Автор темы
246
46
А раньше сказать? Я тебя тапками закидаю

Lua:
local on = require "lib.samp.events"
local inicfg = require 'inicfg'
local imgui = require 'imgui'

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

local mxIni = inicfg.load(nil, "jailing")
if mxIni == nil then
    local mxIni = inicfg.load({
        stat = {
        ['jailov'] = 0,
        ['day'] = math.floor(os.date('%w') + 1),
        ['ob'] = false
        },
        jail = {
        [1] = 0, -- Воскресение
        [2] = 0,
        [3] = 0, -- Вторник
        [4] = 0,
        [5] = 0, -- Четверг
        [6] = 0,
        [7] = 0 -- Суббота
        }
    })
    inicfg.save(mxIni,"jailing")
    reloadScripts()
end

local main_window_state = imgui.ImBool(true)
function main()

    while true do wait(0)
        if mxIni.stat.day ~= math.floor(os.date('%w') + 1) then  mxIni.stat.day = math.floor(os.date('%w') + 1) inicfg.save(mxIni,"jailing")  end
        if mxIni.stat.day == 1 and not mxIni.stat.ob then mxIni.stat.ob = true inicfg.save(mxIni,"jailing") end
        if mxIni.stat.day == 2 and mxIni.stat.ob then mxIni.stat.ob = false for i = 1, 7 do mxIni.jail[i] = 0 end inicfg.save(mxIni,"jailing")  end
        imgui.ShowCursor = false
        imgui.Process = main_window_state.v
    end
end

function imgui.OnDrawFrame()
    local resX, resY = getScreenResolution()
    if main_window_state.v then
        imgui.SetNextWindowPos(imgui.ImVec2(resX-155,resY/2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(150, 185), imgui.Cond.FirstUseEver)
        imgui.Begin(' ', main_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
            imgui.PushStyleColor(imgui.Col.Border, imgui.ImVec4(0.0, 0.0, 0.0, 0.0))
            imgui.Columns(2,'xz',true)
                imgui.TextColored(imgui.ImVec4(0.0, 1.0, 0.0, 1.0 ), u8'     Дни')
                imgui.NextColumn()
                imgui.TextColored(imgui.ImVec4(0.0, 1.0, 0.0, 1.0 ), u8'  Кол-во')
                imgui.Separator()
                imgui.NextColumn()
             
                imgui.Text(u8'Воск')imgui.NextColumn()imgui.Text(tostring(mxIni.jail[1]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Пон')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[2]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Вт')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[3]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Ср')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[4]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Четв')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[5]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Пят')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[6]))imgui.NextColumn()
                imgui.Separator()
                imgui.Text(u8'Суб')imgui.NextColumn() imgui.Text(tostring(mxIni.jail[7]))
             
            imgui.PopStyleColor(1)
        imgui.End()
    end
end

function on.onServerMessage(color, text)
    if text:find('Администратор (%w+_%w+)%[(%d+)%] посадил игрока (%w+_%w+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)') then
        anick, aid, nick, id, time, pri = text:match('(%w+_%w+)%[(%d+)%] посадил игрока (%w+_%w+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)')
        if tonumber(id) == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and nick == sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) then
            sampAddChatMessage(string.format("Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri),0xFFFF00)
            inicfg.save(mxIni,"jailing")
            --return false -- чтобы не отображалось сообщение
        end
    end
end
Попробую, потом отпишу! Спасибо <3 <3 <3

upd, не работает - 0 пишет
1641483153345.png

Lua:
function on.onServerMessage(color, text)
    if text:find('%[A%] (%w+_%w+) посадил игрока (%w+_%w+) в деморган на (%d+) минут%(ы%). Причина: (.+)') then
        anick,  nick,  time, pri = text:match('%[A%] (%w+_%w+) посадил игрока (%w+_%w+) в деморган на (%d+) минут%(ы%). Причина: (.+)')
        if tonumber(id) == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and nick == sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) then
            sampAddChatMessage(string.format("Вас посадил Администратор %s[%d] в деморган на %d минут. Причина: %s",anick,aid,time,pri),0xFFFF00)
            inicfg.save(mxIni,"jailing")
            --return false -- чтобы не отображалось сообщение
        end
    end
end
 
Последнее редактирование: