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

$Mr.R1ch$

Активный
Автор темы
260
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

Vintik

Через тернии к звёздам
Проверенный
1,536
1,016
поэтому поменять индексы не вариант.
Вариант. Две таблицы (в одной будет ID оружия, во второй в том же порядке true/false).
Вот такое:
Lua:
weapon_state =
{
    ...
    [18] = true,
    [22] = false,
    [23] = false,
    ...
}
Перейдёт в вот такое:
Lua:
weapon_state =
{
    ...
    true, -- индекс 18
    false, -- индекс 19
    false, -- индекс 20
    ...
}

weapon_id =
{
    ...
    18, -- индекс 18
    22, -- индекс 19
    23, -- индекс 20
    ...
}
И получать свой true/false будешь вот так:
Lua:
-- пытаемся найти состояние оружия GUN_ID (для примера)

local ind = -1
for i = 1, #weapon_id do
    if weapon_id == GUN_ID then -- находим поле с нашим оружием
        ind = i -- записываем его индекс
        break
    end
end

print(weapon_state[ind])
 
  • Нравится
Реакции: Vespan и stach