проблема с сохранением inicfg

$Mr.R1ch$

Активный
Автор темы
260
40
Версия MoonLoader
Другое
приветствую, столкнулся с рядом проблем при написании скрипта, сейчас расскажу.

1. Ошибки в сохранении:

Скрипт будет использовать несколько файлов сохранения (ini) и читать оттуда информацию, в коде я сделал так:

Lua:
local ini = inicfg.load({
   main = { -- основные настройки
      f_name = "",
      rang = "",
      phone = 0,
      frak = "",
   },
  commands = { --настройки для команд
     delay = 1.200,
     cmd_id_1 = true,
     cmd_id_2 = true,
     cmd_id_3 = true,
     cmd_id_4 = true,
     cmd_id_5 = true,
     cmd_id_6 = true,
     cmd_id_7 = true,
     cmd_id_8 = true,
     cmd_id_9 = true,
     cmd_id_10 = true,
     cmd_id_11 = true,
     cmd_id_12 = true,
     cmd_id_13 = true,
     cmd_id_14 = true,
     cmd_id_15 = true,
     cmd_id_16 = true,
     cmd_id_17 = true,
     cmd_id_18 = true,
     cmd_id_19 = true,
     cmd_id_20 = true,
     cmd_id_21 = true,
     cmd_id_22 = true,
     cmd_id_23 = true,
     cmd_id_24 = true,
     cmd_id_25 = true
   },
}, "Example/setting.ini") -- тут хз в какой основной файл сохранять, поэтому использую пока один

local del = new.float(ini.commands.delay) -- слайдер для задержки рп отыгровок

local Nickname = new.bool[256](u8(ini.main.f_name)) -- инпут текст


if imgui.InputText("##player_name", Nickname, 256) then
          ini.main.f_name = u8:decode(ffi.string(Nickname))
          inicfg.save(ini, "Example/setting.ini") -- сохранение идёт в первый файл "setting.ini"
end

if imgui.SliderFloat("##delay_cmd", del, 1.000, 5.000) then
              ini.commands.delay = del[0]
              inicfg.save(ini, "MVDHelp/commands.ini") -- сохранение слайдера идёт уже в другой файл "commands.ini"
           end
теперь сама суть проблемы в том, что во второй файл значения сохраняются, но не читается в дальнейшем, а выгядет это так :
setting.ini файл:
[main]
frak =
f_name = Test
rang =
phone = 0

[commands]
cmd_id_2 = true
cmd_id_3 = true
cmd_id_4 = true
cmd_id_5 = true
cmd_id_6 = true
cmd_id_7 = true
cmd_id_8 = true
cmd_id_9 = true
cmd_id_10 = true
cmd_id_11 = true
cmd_id_12 = true
cmd_id_13 = true
cmd_id_14 = true
cmd_id_15 = true
cmd_id_16 = true
cmd_id_17 = true
cmd_id_18 = true
cmd_id_19 = true
cmd_id_20 = true
cmd_id_21 = true
cmd_id_22 = true
cmd_id_23 = true
cmd_id_24 = true
cmd_id_25 = true
delay = 1.2
cmd_id_1 = true

commands.ini файл:
[commands]
cmd_id_21 = true
cmd_id_22 = true
cmd_id_23 = true
cmd_id_24 = true
cmd_id_25 = true
delay = 3.6459999084473
cmd_id_1 = true
cmd_id_2 = true
cmd_id_3 = true
cmd_id_4 = true
cmd_id_5 = true
cmd_id_6 = true
cmd_id_7 = true
cmd_id_8 = true
cmd_id_9 = true
cmd_id_10 = true
cmd_id_11 = true
cmd_id_12 = true
cmd_id_13 = true
cmd_id_14 = true
cmd_id_15 = true
cmd_id_16 = true
cmd_id_17 = true
cmd_id_18 = true
cmd_id_19 = true
cmd_id_20 = true

[main]
phone = 0
frak =
f_name =
rang =
в первой файле, секции "commands" быть не должно, что и во втором файле не должно быть "main", вероятно из за этого не сохраняется нормально, помогите пожалуйста


2. Конвертация SliderFloat в секунды (уже решил, просто в использовании переменной добавил *1000)

Мне нужно сделать так, чтобы SliderFloat был в секундах, то есть:

На слайдере написано что, задержка рп отыгровок 1.500 (полторы секунды), но на деле это 1 миллисекунда, и мне нужно перевести это в секунды (сверху есть под слайдера)

3. Кривые столбы в мимгуи

Делал в мимгуи таблицу команд и добавлял к ним описания, но когда я пишу что то во второй колонке, то все получается очень криво, а сделать ровно никак не могу, хелп

Lua:
imgui.Columns(3)
           imgui.Text(u8'КОМАНДА') imgui.SetColumnWidth(-1, 315)
           imgui.NextColumn()
           imgui.Text(u8'ОПИСАНИЕ') imgui.SetColumnWidth(-1, 970)
           imgui.NextColumn()
           imgui.Text('') imgui.SetColumnWidth(-1, 100)
           imgui.Columns(1)
           imgui.Separator()
           imgui.Columns(3)
           for _, cmd_button in ipairs({'/mm', '/stats', '/su'}) do
              if imgui.Button(cmd_button, imgui.ImVec2(300, 50)) and imgui.SetColumnWidth(100, 200) then
                 setClipboardText(cmd_button)
              end
              --imgui.Separator()
           end
           imgui.NextColumn()
           for _, cmd_text in ipairs({'Команда для тестирования.', 'Команда для ещё одного тестирования', 'И ещё одна команда для тестирования.'}) do
              imgui.Text(u8(cmd_text)) imgui.SetColumnWidth(-1, 970)
             imgui.Separator()
           end
 

Вложения

  • IMG_20241012_084720.jpg
    IMG_20241012_084720.jpg
    156.4 KB · Просмотры: 28
Последнее редактирование:
  • Грустно
Реакции: Howau

Tectrex

Известный
128
136
1. Ты пытаешься сохранять разные секции конфигурации (main и commands) в разные INI файлы, но юзаешь одну общую таблицу при загрузке и сохранении. Это приводит к тому, что все секции сохраняются в оба файла, что неправильно.
Надо сделать разные кфг на отдельные таблицы для каждого файла:

Lua:
local mainConfig = inicfg.load({
    main = {
        f_name = "",
        rang = "",
        phone = 0,
        frak = "",
    }
}, "Example/setting.ini")

local commandsConfig = inicfg.load({
    commands = {
        delay = 1.200,
        cmd_id_1 = true,
        cmd_id_2 = true,
        -- ... остальные команды
    }
}, "MVDHelp/commands.ini")

2.

Lua:
local delaySeconds = del[0]
local delayMilliseconds = delaySeconds * 1000

3.
хз
 

$Mr.R1ch$

Активный
Автор темы
260
40
1. Ты пытаешься сохранять разные секции конфигурации (main и commands) в разные INI файлы, но юзаешь одну общую таблицу при загрузке и сохранении. Это приводит к тому, что все секции сохраняются в оба файла, что неправильно.
Надо сделать разные кфг на отдельные таблицы для каждого файла:

Lua:
local mainConfig = inicfg.load({
    main = {
        f_name = "",
        rang = "",
        phone = 0,
        frak = "",
    }
}, "Example/setting.ini")

local commandsConfig = inicfg.load({
    commands = {
        delay = 1.200,
        cmd_id_1 = true,
        cmd_id_2 = true,
        -- ... остальные команды
    }
}, "MVDHelp/commands.ini")

2.

Lua:
local delaySeconds = del[0]
local delayMilliseconds = delaySeconds * 1000

3.
хз
с ини не получилось, дублируется 2 секции в main в два файла, притом в commands больше ничего не сохраняется

 
Последнее редактирование:

Howau

Участник
45
8
Дружище, ну я же учил тебя в другой теме!

Lua:
local ini = inicfg.load({
   main = { -- основные настройки
      f_name = "",
      rang = "",
      phone = 0,
      frak = "",
   },
  commands = { --настройки для команд
     delay = 1.200,
     cmd_id_1 = true,
     cmd_id_2 = true,
     cmd_id_3 = true,
     cmd_id_4 = true,
     cmd_id_5 = true,
     cmd_id_6 = true,
     cmd_id_7 = true,
     cmd_id_8 = true,
     cmd_id_9 = true,
     cmd_id_10 = true,
     cmd_id_11 = true,
     cmd_id_12 = true,
     cmd_id_13 = true,
     cmd_id_14 = true,
     cmd_id_15 = true,
     cmd_id_16 = true,
     cmd_id_17 = true,
     cmd_id_18 = true,
     cmd_id_19 = true,
     cmd_id_20 = true,
     cmd_id_21 = true,
     cmd_id_22 = true,
     cmd_id_23 = true,
     cmd_id_24 = true,
     cmd_id_25 = true
   },
}, "Example/setting.ini")
inicfg.save(ini,"Example/setting.ini") -- сохранять не забывааааееммммммм!!!!!!!!!!!!!!!!!!!
 

$Mr.R1ch$

Активный
Автор темы
260
40
Дружище, ну я же учил тебя в другой теме!

Lua:
local ini = inicfg.load({
   main = { -- основные настройки
      f_name = "",
      rang = "",
      phone = 0,
      frak = "",
   },
  commands = { --настройки для команд
     delay = 1.200,
     cmd_id_1 = true,
     cmd_id_2 = true,
     cmd_id_3 = true,
     cmd_id_4 = true,
     cmd_id_5 = true,
     cmd_id_6 = true,
     cmd_id_7 = true,
     cmd_id_8 = true,
     cmd_id_9 = true,
     cmd_id_10 = true,
     cmd_id_11 = true,
     cmd_id_12 = true,
     cmd_id_13 = true,
     cmd_id_14 = true,
     cmd_id_15 = true,
     cmd_id_16 = true,
     cmd_id_17 = true,
     cmd_id_18 = true,
     cmd_id_19 = true,
     cmd_id_20 = true,
     cmd_id_21 = true,
     cmd_id_22 = true,
     cmd_id_23 = true,
     cmd_id_24 = true,
     cmd_id_25 = true
   },
}, "Example/setting.ini")
inicfg.save(ini,"Example/setting.ini") -- сохранять не забывааааееммммммм!!!!!!!!!!!!!!!!!!!
бро, я даже пробовал сохранять так как ты написал, но ничего не сработало вообще
 

Дядя Энрик.

Активный
337
81
приветствую, столкнулся с рядом проблем при написании скрипта, сейчас расскажу.

1. Ошибки в сохранении:

Скрипт будет использовать несколько файлов сохранения (ini) и читать оттуда информацию, в коде я сделал так:

Lua:
local ini = inicfg.load({
   main = { -- основные настройки
      f_name = "",
      rang = "",
      phone = 0,
      frak = "",
   },
  commands = { --настройки для команд
     delay = 1.200,
     cmd_id_1 = true,
     cmd_id_2 = true,
     cmd_id_3 = true,
     cmd_id_4 = true,
     cmd_id_5 = true,
     cmd_id_6 = true,
     cmd_id_7 = true,
     cmd_id_8 = true,
     cmd_id_9 = true,
     cmd_id_10 = true,
     cmd_id_11 = true,
     cmd_id_12 = true,
     cmd_id_13 = true,
     cmd_id_14 = true,
     cmd_id_15 = true,
     cmd_id_16 = true,
     cmd_id_17 = true,
     cmd_id_18 = true,
     cmd_id_19 = true,
     cmd_id_20 = true,
     cmd_id_21 = true,
     cmd_id_22 = true,
     cmd_id_23 = true,
     cmd_id_24 = true,
     cmd_id_25 = true
   },
}, "Example/setting.ini") -- тут хз в какой основной файл сохранять, поэтому использую пока один

local del = new.float(ini.commands.delay) -- слайдер для задержки рп отыгровок

local Nickname = new.bool[256](u8(ini.main.f_name)) -- инпут текст


if imgui.InputText("##player_name", Nickname, 256) then
          ini.main.f_name = u8:decode(ffi.string(Nickname))
          inicfg.save(ini, "Example/setting.ini") -- сохранение идёт в первый файл "setting.ini"
end

if imgui.SliderFloat("##delay_cmd", del, 1.000, 5.000) then
              ini.commands.delay = del[0]
              inicfg.save(ini, "MVDHelp/commands.ini") -- сохранение слайдера идёт уже в другой файл "commands.ini"
           end
теперь сама суть проблемы в том, что во второй файл значения сохраняются, но не читается в дальнейшем, а выгядет это так :
setting.ini файл:
[main]
frak =
f_name = Test
rang =
phone = 0

[commands]
cmd_id_2 = true
cmd_id_3 = true
cmd_id_4 = true
cmd_id_5 = true
cmd_id_6 = true
cmd_id_7 = true
cmd_id_8 = true
cmd_id_9 = true
cmd_id_10 = true
cmd_id_11 = true
cmd_id_12 = true
cmd_id_13 = true
cmd_id_14 = true
cmd_id_15 = true
cmd_id_16 = true
cmd_id_17 = true
cmd_id_18 = true
cmd_id_19 = true
cmd_id_20 = true
cmd_id_21 = true
cmd_id_22 = true
cmd_id_23 = true
cmd_id_24 = true
cmd_id_25 = true
delay = 1.2
cmd_id_1 = true

commands.ini файл:
[commands]
cmd_id_21 = true
cmd_id_22 = true
cmd_id_23 = true
cmd_id_24 = true
cmd_id_25 = true
delay = 3.6459999084473
cmd_id_1 = true
cmd_id_2 = true
cmd_id_3 = true
cmd_id_4 = true
cmd_id_5 = true
cmd_id_6 = true
cmd_id_7 = true
cmd_id_8 = true
cmd_id_9 = true
cmd_id_10 = true
cmd_id_11 = true
cmd_id_12 = true
cmd_id_13 = true
cmd_id_14 = true
cmd_id_15 = true
cmd_id_16 = true
cmd_id_17 = true
cmd_id_18 = true
cmd_id_19 = true
cmd_id_20 = true

[main]
phone = 0
frak =
f_name =
rang =
в первой файле, секции "commands" быть не должно, что и во втором файле не должно быть "main", вероятно из за этого не сохраняется нормально, помогите пожалуйста


2. Конвертация SliderFloat в секунды (уже решил, просто в использовании переменной добавил *1000)

Мне нужно сделать так, чтобы SliderFloat был в секундах, то есть:

На слайдере написано что, задержка рп отыгровок 1.500 (полторы секунды), но на деле это 1 миллисекунда, и мне нужно перевести это в секунды (сверху есть под слайдера)

3. Кривые столбы в мимгуи

Делал в мимгуи таблицу команд и добавлял к ним описания, но когда я пишу что то во второй колонке, то все получается очень криво, а сделать ровно никак не могу, хелп

Lua:
imgui.Columns(3)
           imgui.Text(u8'КОМАНДА') imgui.SetColumnWidth(-1, 315)
           imgui.NextColumn()
           imgui.Text(u8'ОПИСАНИЕ') imgui.SetColumnWidth(-1, 970)
           imgui.NextColumn()
           imgui.Text('') imgui.SetColumnWidth(-1, 100)
           imgui.Columns(1)
           imgui.Separator()
           imgui.Columns(3)
           for _, cmd_button in ipairs({'/mm', '/stats', '/su'}) do
              if imgui.Button(cmd_button, imgui.ImVec2(300, 50)) and imgui.SetColumnWidth(100, 200) then
                 setClipboardText(cmd_button)
              end
              --imgui.Separator()
           end
           imgui.NextColumn()
           for _, cmd_text in ipairs({'Команда для тестирования.', 'Команда для ещё одного тестирования', 'И ещё одна команда для тестирования.'}) do
              imgui.Text(u8(cmd_text)) imgui.SetColumnWidth(-1, 970)
             imgui.Separator()
           end
дай фулл исходник, а-то огрызками накидал чёт
 

Howau

Участник
45
8
1) ini
Lua:
local inicfg = require 'inicfg'
local settings = inicfg.load({
commands = { --настройки для команд
      delay = 1200,
      cmd_id_1 = true,
      cmd_id_2 = true,
      cmd_id_3 = true,
      cmd_id_4 = true,
      cmd_id_5 = true,
      cmd_id_6 = true,
      cmd_id_7 = true,
      cmd_id_8 = true,
      cmd_id_9 = true,
      cmd_id_10 = true,
      cmd_id_11 = true,
      cmd_id_12 = true,
      cmd_id_13 = true,
      cmd_id_14 = true,
      cmd_id_15 = true,
      cmd_id_16 = true,
      cmd_id_17 = true,
      cmd_id_18 = true,
      cmd_id_19 = true,
      cmd_id_20 = true,
      cmd_id_21 = true,
      cmd_id_22 = true,
      cmd_id_23 = true,
      cmd_id_24 = true,
      cmd_id_25 = true
    },
 }, "Example/setting.ini")
inicfg.save(settings,"Example/setting.ini")
local main = inicfg.load({
    main = { -- основные настройки
       f_name = "",
       rang = "",
       phone = 0,
       frak = "",
    },
 }, "Example/main.ini")
inicfg.save(main,"Example/main.ini")

2) slider ( обычно вместо ini использую json, так что на счет работы сохранения не уверен (лень проверять)
Lua:
local delay = new.int(settings.commands.delay) -- задержку достаём из ini файла
if imgui.SliderInt(u8'Задержка (мс)', delay, 1000, 5000) then -- да, именно инт, не пугаемся
    settings.commands.delay = delay[0] -- обновляем delay в ini
    inicfg.save(settings,"Example/setting.ini") -- сохраняем изменение
end

3)
Lua:
-- в любое место в коде
function imgui.CText(text)
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX((imgui.GetWindowWidth() - calc.x) / 2)
    imgui.Text(text)
end

for _, cmd_text in ipairs({'Команда для тестирования.', 'Команда для ещё одного тестирования', 'И ещё одна команда для тестирования.'}) do
              imgui.СText(u8(cmd_text)) imgui.SetColumnWidth(-1, 970)
             imgui.Separator()
           end
 
  • Нравится
Реакции: $Mr.R1ch$

$Mr.R1ch$

Активный
Автор темы
260
40
1) ini
Lua:
local inicfg = require 'inicfg'
local settings = inicfg.load({
commands = { --настройки для команд
      delay = 1200,
      cmd_id_1 = true,
      cmd_id_2 = true,
      cmd_id_3 = true,
      cmd_id_4 = true,
      cmd_id_5 = true,
      cmd_id_6 = true,
      cmd_id_7 = true,
      cmd_id_8 = true,
      cmd_id_9 = true,
      cmd_id_10 = true,
      cmd_id_11 = true,
      cmd_id_12 = true,
      cmd_id_13 = true,
      cmd_id_14 = true,
      cmd_id_15 = true,
      cmd_id_16 = true,
      cmd_id_17 = true,
      cmd_id_18 = true,
      cmd_id_19 = true,
      cmd_id_20 = true,
      cmd_id_21 = true,
      cmd_id_22 = true,
      cmd_id_23 = true,
      cmd_id_24 = true,
      cmd_id_25 = true
    },
 }, "Example/setting.ini")
inicfg.save(settings,"Example/setting.ini")
local main = inicfg.load({
    main = { -- основные настройки
       f_name = "",
       rang = "",
       phone = 0,
       frak = "",
    },
 }, "Example/main.ini")
inicfg.save(main,"Example/main.ini")

2) slider ( обычно вместо ini использую json, так что на счет работы сохранения не уверен (лень проверять)
Lua:
local delay = new.int(settings.commands.delay) -- задержку достаём из ini файла
if imgui.SliderInt(u8'Задержка (мс)', delay, 1000, 5000) then -- да, именно инт, не пугаемся
    settings.commands.delay = delay[0] -- обновляем delay в ini
    inicfg.save(settings,"Example/setting.ini") -- сохраняем изменение
end

3)
Lua:
-- в любое место в коде
function imgui.CText(text)
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX((imgui.GetWindowWidth() - calc.x) / 2)
    imgui.Text(text)
end

for _, cmd_text in ipairs({'Команда для тестирования.', 'Команда для ещё одного тестирования', 'И ещё одна команда для тестирования.'}) do
              imgui.СText(u8(cmd_text)) imgui.SetColumnWidth(-1, 970)
             imgui.Separator()
           end
колонки все равно не ровные, imgui.Separator пересекается на кнопках самих, с слайдером давно решил проблему
 

Howau

Участник
45
8
колонки все равно не ровные, imgui.Separator пересекается на кнопках самих, с слайдером давно решил проблему
Lua:
function imgui.CenterColumnText(text)
    imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
    imgui.Text(text)
end

for _, cmd_text in ipairs({'Команда для тестирования.', 'Команда для ещё одного тестирования', 'И ещё одна команда для тестирования.'}) do
             imgui.CenterColumnText(u8(cmd_text)) imgui.SetColumnWidth(-1, 970)
             imgui.Separator()
end
 

$Mr.R1ch$

Активный
Автор темы
260
40
Lua:
function imgui.CenterColumnText(text)
    imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
    imgui.Text(text)
end

for _, cmd_text in ipairs({'Команда для тестирования.', 'Команда для ещё одного тестирования', 'И ещё одна команда для тестирования.'}) do
             imgui.CenterColumnText(u8(cmd_text)) imgui.SetColumnWidth(-1, 970)
             imgui.Separator()
end
тут я пробовал наложить текст на колонки (imgui.SetCursorPos), и даже пробовал сделать твой код, и вот что получилось (первый скрин). Сам imgui.Separator должен быть таким (второй скрин)
 

Вложения

  • IMG_20241015_211849.jpg
    IMG_20241015_211849.jpg
    612.1 KB · Просмотры: 17
  • Screenshot_2024_1015_212357.jpg
    Screenshot_2024_1015_212357.jpg
    48.3 KB · Просмотры: 16

Howau

Участник
45
8
Lua:
imgui.Columns(2)
 
         imgui.Text(u8'КОМАНДА') imgui.SetColumnWidth(-1, 315) 
         imgui.NextColumn()
         imgui.Text(u8'ОПИСАНИЕ') imgui.SetColumnWidth(-1, 970)
         imgui.Columns(1)
 
         imgui.Columns(2)
         local cmd_descriptions = {
             'Команда для тестирования.',
             'Команда для ещё одного тестирования.',
             'И ещё одна команда для тестирования.'
         }
 
         for i, cmd_button in ipairs({'/mm', '/stats', '/su'}) do
            imgui.Separator()
             if imgui.Button(cmd_button, imgui.ImVec2(100, 30)) then
                 setClipboardText(cmd_button)
             end
             
             imgui.NextColumn()
             imgui.CenterColumnText(u8(cmd_descriptions[i])) 
 
             imgui.NextColumn()
         end
 
         imgui.Columns(1)
         imgui.Separator()
 
  • Нравится
Реакции: $Mr.R1ch$

$Mr.R1ch$

Активный
Автор темы
260
40
Lua:
imgui.Columns(2)
 
         imgui.Text(u8'КОМАНДА') imgui.SetColumnWidth(-1, 315)
         imgui.NextColumn()
         imgui.Text(u8'ОПИСАНИЕ') imgui.SetColumnWidth(-1, 970)
         imgui.Columns(1)
 
         imgui.Columns(2)
         local cmd_descriptions = {
             'Команда для тестирования.',
             'Команда для ещё одного тестирования.',
             'И ещё одна команда для тестирования.'
         }
 
         for i, cmd_button in ipairs({'/mm', '/stats', '/su'}) do
            imgui.Separator()
             if imgui.Button(cmd_button, imgui.ImVec2(100, 30)) then
                 setClipboardText(cmd_button)
             end
            
             imgui.NextColumn()
             imgui.CenterColumnText(u8(cmd_descriptions[i]))
 
             imgui.NextColumn()
         end
 
         imgui.Columns(1)
         imgui.Separator()
с колонками все ок, но когда я пытаюсь добавить третью колонку (их 3 было), то получается фигня какая то

с колонками все ок, но когда я пытаюсь добавить третью колонку (их 3 было), то получается фигня какая то
Ещё проблема одна есть. Используя мета таблицы, я паршу чекбоксы, так как проставлять по 25 штук такая себе идея. Но вот при попытке это сделать, выдает такую ошибку: bool [1]' has no member named 'cmd_id_1 (до этого выдавало ошибку что, string не может конвертироваться в bool)

Lua:
local active_cmd = setmetatable({'cmd_id_1', 'cmd_id_2', 'cmd_id_3', 'cmd_id_4', 'cmd_id_5', 'cmd_id_6', 'cmd_id_7', 'cmd_id_8', 'cmd_id_9', 'cmd_id_10', 'cmd_id_11', 'cmd_id_12', 'cmd_id_13', 'cmd_id_14', 'cmd_id_15', 'cmd_id_16', 'cmd_id_17', 'cmd_id_18', 'cmd_id_19', 'cmd_id_20', 'cmd_id_21', 'cmd_id_22', 'cmd_id_23', 'cmd_id_24', 'cmd_id_25'},
{ -- мета таблица
  __index = function(self, key)
     if not defaultcmd.cmd[key] then
        defaultcmd.cmd[key] = true
     end
     self = imgui.new.bool(defaultcmd.cmd[key])
     return self[key]
  end
})

for index, value in ipairs(active_cmd) do
              if imgui.Checkbox("list_cmd" .. index, active_cmd[value]) then
                 defaultcmd.cmd[value] = active_cmd[value]
                 inicfg.save(defaultcmd, "Example/stand_comand_setting.ini")
              end
           end
 

Вложения

  • IMG_20241016_163221.jpg
    IMG_20241016_163221.jpg
    379.7 KB · Просмотры: 12
Последнее редактирование:

Howau

Участник
45
8
юзай лучше json, меньше мороки

с колонками все ок, но когда я пытаюсь добавить третью колонку (их 3 было), то получается фигня какая то


Ещё проблема одна есть. Используя мета таблицы, я паршу чекбоксы, так как проставлять по 25 штук такая себе идея. Но вот при попытке это сделать, выдает такую ошибку: bool [1]' has no member named 'cmd_id_1 (до этого выдавало ошибку что, string не может конвертироваться в bool)

Lua:
local active_cmd = setmetatable({'cmd_id_1', 'cmd_id_2', 'cmd_id_3', 'cmd_id_4', 'cmd_id_5', 'cmd_id_6', 'cmd_id_7', 'cmd_id_8', 'cmd_id_9', 'cmd_id_10', 'cmd_id_11', 'cmd_id_12', 'cmd_id_13', 'cmd_id_14', 'cmd_id_15', 'cmd_id_16', 'cmd_id_17', 'cmd_id_18', 'cmd_id_19', 'cmd_id_20', 'cmd_id_21', 'cmd_id_22', 'cmd_id_23', 'cmd_id_24', 'cmd_id_25'},
{ -- мета таблица
  __index = function(self, key)
     if not defaultcmd.cmd[key] then
        defaultcmd.cmd[key] = true
     end
     self = imgui.new.bool(defaultcmd.cmd[key])
     return self[key]
  end
})

for index, value in ipairs(active_cmd) do
              if imgui.Checkbox("list_cmd" .. index, active_cmd[value]) then
                 defaultcmd.cmd[value] = active_cmd[value]
                 inicfg.save(defaultcmd, "Example/stand_comand_setting.ini")
              end
           end