как это исправить?

$Mr.R1ch$

Активный
Автор темы
288
41
Версия MoonLoader
Другое
Приветствую, столкнулся с очень интересной проблемой. Есть у меня INI таблица в которой содержатся индексы, которые равны булевым значениям (true/false), и есть кнопка mimgui которая переключает состояние этих переменных.
Проблема: так как индексы у меня идут не по порядку (не 18, 19, 20 с 18, 22, 23 и ТД) то соответственно переменные переключаются неправильно, а эти индексы приравниваются к id оружию, поэтому поменять индексы не вариант.

Lua:
local guncfg = inicfg.load({
weapon_state = {
       [1] = true,
       [2] = false,
       [3] = true,
       [4] = false,
       [5] = true,
       [6] = false,
       [7] = false,
       [8] = false,
       [9] = false,
       [10] = false,
       [11] = false,
       [12] = false,
       [13] = false,
       [14] = true,
       [15] = true,
       [16] = false,
       [17] = true,
       [18] = false,
       [22] = false,
       [23] = true,
       [24] = true,
       [25] = true,
       [26] = false,
       [27] = false,
       [28] = false,
       [29] = true,
       [30] = true,
       [31] = true,
       [32] = false,
       [33] = true,
       [34] = true,
       [35] = false,
       [36] = false,
       [37] = false,
       [38] = false,
       [39] = false,
       [41] = false,
       [42] = false,
       [43] = true,
       [46] = true
    }
}, "Example/test.ini")
inicfg.save(guncfg, "Example/test.ini")

if imgui.Button(guncfg.weapon_state[index] and u8'Отключить' or u8'Включить', imgui.ImVec2(990, 40)) then
   guncfg.weapon_state[index] = not           guncfg.weapon_state[index]
 
 inicfg.save(guncfg, "Example/test.ini")
                 end
 
  • Клоун
Реакции: Vespan, XRLM и Corenale

$Mr.R1ch$

Активный
Автор темы
288
41
Ты хочешь нажатием одной кнопки переключить все значения из конфига или что? Чтобы все true стали false, а все false стали true?
нет. У меня есть в mimgui окне таблица оружий, где можно выбрать конкретное оружие, а затем откроется доп. окно с его настройками, где есть кнопка, которая переключает состояние переменной выбранного оружия
 

James Fenrir

Участник
28
6
up, снова актуально
Попробуй этот код
Lua:
local imgui = require 'imgui'
local inicfg = require 'inicfg'

-- Загружаем конфигурацию оружий из INI-файла
local guncfg = inicfg.load({
    weapon_state = {
        [1] = true, [2] = false, [3] = true, [4] = false,
        [5] = true, [6] = false, [7] = false, [8] = false,
        [9] = false, [10] = false, [11] = false, [12] = false,
        [13] = false, [14] = true, [15] = true, [16] = false,
        [17] = true, [18] = false, [22] = false, [23] = true,
        [24] = true, [25] = true, [26] = false, [27] = false,
        [28] = false, [29] = true, [30] = true, [31] = true,
        [32] = false, [33] = true, [34] = true, [35] = false,
        [36] = false, [37] = false, [38] = false, [39] = false,
        [41] = false, [42] = false, [43] = true, [46] = true
    }
}, "Example/test.ini")

inicfg.save(guncfg, "Example/test.ini") -- Сохраняем конфигурацию при запуске

local selected_weapon = nil -- Выбранное оружие

-- Основное окно с таблицей оружий
function renderWeaponList()
    imgui.Text("Список оружий:")
    for weapon_id, state in pairs(guncfg.weapon_state) do
        if imgui.Button("Оружие " .. weapon_id .. (state and " [Включено]" or " [Отключено]"), imgui.ImVec2(300, 30)) then
            selected_weapon = weapon_id -- Запоминаем выбранное оружие
        end
    end
end

-- Дополнительное окно с настройками выбранного оружия
function renderWeaponSettings()
    if selected_weapon then
        imgui.Text("Настройки для оружия " .. selected_weapon)
        local state = guncfg.weapon_state[selected_weapon]
        if imgui.Button(state and "Отключить" or "Включить", imgui.ImVec2(150, 30)) then
            -- Переключаем состояние выбранного оружия
            guncfg.weapon_state[selected_weapon] = not state
            inicfg.save(guncfg, "Example/test.ini") -- Сохраняем изменения
        end
        imgui.Text("Текущее состояние: " .. (guncfg.weapon_state[selected_weapon] and "Включено" or "Отключено"))
    else
        imgui.Text("Выберите оружие из списка.")
    end
end

-- Основной рендеринг ImGui
function imgui.OnDrawFrame()
    if imgui.Begin("Настройки оружий", _, imgui.WindowFlags.AlwaysAutoResize) then
        renderWeaponList()
        imgui.End()
    end

    if selected_weapon then
        if imgui.Begin("Настройки выбранного оружия", _, imgui.WindowFlags.AlwaysAutoResize) then
            renderWeaponSettings()
            imgui.End()
        end
    end
end
Не против с имгуи если будет?
p.s долго печатал