- 16
- 8
- Версия MoonLoader
- Другое
У меня есть ИмГуи окно, которое должно отображать цифру определенной строки из конфига, как это собственно сделать?
Нужно чтобы в окне отображалась цифра
[config]
zakupka=0
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