Как сделать счет определенной информации из конфига?

berryww

Известный
Автор темы
17
8
Версия MoonLoader
Другое
У меня есть ИмГуи окно, которое должно отображать цифру определенной строки из конфига, как это собственно сделать?

Lua:
local name = "[CRCounter]" -- Тэг
local white = "{f0f0f0}" -- Серо-белый цвет
local purple = "{9966ff}" -- Фиолетовый цвет для тэга
local tag = purple .. name  .. white -- Готовый тэг

local encoding = require ("encoding")
local inicfg = require("inicfg")
local sampev = require('lib.samp.events')
local imgui = require 'imgui'
local key = require 'vkeys'
encoding.default = "CP1251"
u8 = encoding.UTF8
local main_window_state = imgui.ImBool(false)
local mainIni = inicfg.load({ -- CFG
    config = {
        zakupka = 0
    }
}, "z")

if not doesFileExist('moonloader/config/z.ini') then inicfg.save(mainIni, 'z.ini') end

function sampev.onServerMessage(color, text)
    if text:find('Вы купили .+ %(%d+ шт%.%) у игрока .+ за %$(%d+)') then
        buy = text:match('Вы купили .+ %(%d+ шт%.%) у игрока .+ за %$(%d+)')
        mainIni.config.zakupka = mainIni.config.zakupka - buy
        inicfg.save(mainIni, "z.ini")
    elseif text:find('.+ купил у вас .+ %(%d+ шт%.%), вы получили %$(%d+) от продажи') then
        sell = text:match('.+ купил у вас .+ %(%d+ шт%.%), вы получили %$(%d+) от продажи')
        mainIni.config.zakupka = mainIni.config.zakupka + sell
        inicfg.save(mainIni, "z.ini")
    end
end

function imgui.OnDrawFrame()
  if main_window_state.v then -- чтение и запись значения такой переменной осуществляется через поле v (или Value)
    imgui.SetNextWindowSize(imgui.ImVec2(150, 200), imgui.Cond.FirstUseEver) -- меняем размер
    -- но для передачи значения по указателю - обязательно напрямую
    -- тут main_window_state передаётся функции imgui.Begin, чтобы можно было отследить закрытие окна нажатием на крестик
    imgui.Begin('Your profit', main_window_state)
    imgui.Text(tostring(mainIni.config.z))
    if imgui.Button('Reset profit') then -- а вот и кнопка с действием
      -- условие будет выполнено при нажатии на неё
    mainIni.config.zakupka = 0
    inicfg.save(mainIni, "z.ini")
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}Статистика обнулена!', -1)
    end
    imgui.End()
  end
end

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('myprofit', myprofit)
    sampRegisterChatCommand('profito', profito)
    sampRegisterChatCommand('profith', profith)
    sampAddChatMessage(tag .. "Скрипт успешно загружен! Автор: b3rry", -1)
    sampAddChatMessage(tag .. "Список команд: /profith", -1)
    sampAddChatMessage(tag .. "Огромное спасибо CaJlaT'y за его работу", -1)
    print('https://vk.com/bb3ry')
    while true do
        wait(0)
    if wasKeyPressed(key.VK_Z) then -- активация по нажатию клавиши Z
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
  end
end

function myprofit()
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}Твой профит составляет: '..mainIni.config.zakupka, -1)
end

function profith()
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff} {FF00FF}/profito - {FFFFFF}Обнуление статистики профита', -1)
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}{FF00FF}/myprofit - {FFFFFF}Твой профит', -1)
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}{FF00FF}/profith - {FFFFFF}Команды', -1)
end

function profito()
    mainIni.config.zakupka = 0
    inicfg.save(mainIni, "z.ini")
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}Статистика обнулена!', -1)
end



-----------------------------------------------
Нужно чтобы в окне отображалась цифра

[config]
zakupka=0
 

Kolbasa241

Известный
213
57
Lua:
local name = "[CRCounter]" -- Тэг
local white = "{f0f0f0}" -- Серо-белый цвет
local purple = "{9966ff}" -- Фиолетовый цвет для тэга
local tag = purple .. name  .. white -- Готовый тэг

local encoding = require ("encoding")
local inicfg = require("inicfg")
local sampev = require('lib.samp.events')
local imgui = require 'imgui'
local key = require 'vkeys'
encoding.default = "CP1251"
u8 = encoding.UTF8
local main_window_state = imgui.ImBool(false)
local mainIni = inicfg.load({ -- CFG
    config = {
        zakupka = 0
    }
}, "z")

if not doesFileExist('moonloader/config/z.ini') then inicfg.save(mainIni, 'z.ini') end

function sampev.onServerMessage(color, text)
    if text:find('Вы купили .+ %(%d+ шт%.%) у игрока .+ за %$(%d+)') then
        buy = text:match('Вы купили .+ %(%d+ шт%.%) у игрока .+ за %$(%d+)')
        mainIni.config.zakupka = mainIni.config.zakupka - buy
        inicfg.save(mainIni, "z.ini")
    elseif text:find('.+ купил у вас .+ %(%d+ шт%.%), вы получили %$(%d+) от продажи') then
        sell = text:match('.+ купил у вас .+ %(%d+ шт%.%), вы получили %$(%d+) от продажи')
        mainIni.config.zakupka = mainIni.config.zakupka + sell
        inicfg.save(mainIni, "z.ini")
    end
end

function imgui.OnDrawFrame()
  if main_window_state.v then -- чтение и запись значения такой переменной осуществляется через поле v (или Value)
    imgui.SetNextWindowSize(imgui.ImVec2(150, 200), imgui.Cond.FirstUseEver) -- меняем размер
    -- но для передачи значения по указателю - обязательно напрямую
    -- тут main_window_state передаётся функции imgui.Begin, чтобы можно было отследить закрытие окна нажатием на крестик
    imgui.Begin('Your profit', main_window_state)
    imgui.Text(tostring(mainIni.config.z))
    if imgui.Button('Reset profit') then -- а вот и кнопка с действием
      -- условие будет выполнено при нажатии на неё
    mainIni.config.zakupka = 0
    inicfg.save(mainIni, "z.ini")
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}Статистика обнулена!', -1)
    end
    imgui.End()
  end
end

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('myprofit', myprofit)
    sampRegisterChatCommand('profito', profito)
    sampRegisterChatCommand('profith', profith)
    sampAddChatMessage(tag .. "Скрипт успешно загружен! Автор: b3rry", -1)
    sampAddChatMessage(tag .. "Список команд: /profith", -1)
    sampAddChatMessage(tag .. "Огромное спасибо CaJlaT'y за его работу", -1)
    print('https://vk.com/bb3ry')
    while true do
        wait(0)
    if wasKeyPressed(key.VK_Z) then -- активация по нажатию клавиши Z
        mainIni = inicfg.load(nil, "z.ini") -- Добавил подгрузку результатов ИНИ Файла
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
  end
end

function myprofit()
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}Твой профит составляет: '..mainIni.config.zakupka, -1)
end

function profith()
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff} {FF00FF}/profito - {FFFFFF}Обнуление статистики профита', -1)
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}{FF00FF}/myprofit - {FFFFFF}Твой профит', -1)
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}{FF00FF}/profith - {FFFFFF}Команды', -1)
end

function profito()
    mainIni.config.zakupka = 0
    inicfg.save(mainIni, "z.ini")
    sampAddChatMessage('{1E90FF}[CRCounter] {ffffff}Статистика обнулена!', -1)
end



-----------------------------------------------
 
  • Нравится
Реакции: berryww