Помогите с mimgui lua

SamuelGoldie

Участник
Автор темы
72
7
Версия MoonLoader
.026-beta
Подскажите пожалуйста как исправить эту ошибку
[ML] (error) Admin Tools: ...n Andreas MultiPlayer v0.3.7\moonloader\EventsHelper.lua:1795: bad argument #3 to '?' (cannot convert 'table' to 'const char *const *')
stack traceback:
[C]: in ?
...n Andreas MultiPlayer v0.3.7\moonloader\EventsHelper.lua:1795: in function '_draw'
...ndreas MultiPlayer v0.3.7\moonloader\lib\mimgui\init.lua:107: in function <...ndreas MultiPlayer v0.3.7\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Admin Tools: Script died due to an error. (053B4F0C)
Вот код:

lua:
if imgui.BeginTabItem(u8'Фракции') then
                imgui.Combo(u8'Фракции LS', fractlscombo, arrs.arr_fractls, #arrs.arr_fractls)
                if imgui.Button(u8'Вступить в фракцию##1') then
                    lsfract = arrs.arr_fractls[fractlscombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..lsfract)
                end
                imgui.SameLine()
                if imgui.Button(u8'Следить за игроками фракции##1') then
                    lsfract = arrs.arr_fractls[fractlscombo.v+1]
                    arrs.idfractspec = {}
                    fractspec = true
                    sampSendChat('/fract '..lsfract)
                    win.mainwin.v = false
                end
                imgui.Combo(u8'Фракции SF', fractsfcombo, arrs.arr_fractsf, #arrs.arr_fractsf)
                if imgui.Button(u8'Вступить в фракцию##2') then
                    sffract = arrs.arr.fractsf[fractsfcombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..sffract)
                end
                imgui.SameLine()
                if imgui.Button(u8'Следить за игроками фракции##2') then
                    sffract = arrs.arr_fractsf[fractsfcombo.v+1]
                    arrs.idfractspec = {}
                    fractspec = true
                    sampSendChat('/fract '..sffract)
                    win.mainwin.v = false
                end
                imgui.Combo(u8'Фракции LV', fractlvcombo, arrs.arr_fractlv, #arrs.arr_fractlv)
                if imgui.Button(u8'Вступить в фракцию##3') then
                    lvfract = arrs.arr_fractlv[fractlvcombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..lvfract)
                end
                imgui.SameLine()
                if imgui.Button(u8'Следить за игроками фракции##3') then
                    lvfract = arrs.arr_lvfract[fractlvcombo.v+1]
                    arrs.idfractspec = {}
                    fractspec = true
                    sampSendChat('/fract '..lvfract)
                    win.mainwin.v = false
                end
                if imgui.Button(u8'Статистика фракций по наборам', imgui.ImVec2(570, 25)) then
                    sampSendChat('/invstat')
                    win.main2.v = false
                    imgui.Process = false
                    mainwindow = false
                end
                if imgui.Button(u8'Статистика фракций по онлайну', imgui.ImVec2(570, 25)) then
                    sampSendChat('/fstat')
                    win.main2.v = false
                    imgui.Process = false
                    mainwindow = false
                end
                if imgui.Button(u8'Выдать самый высокий ранг во фракции', imgui.ImVec2(570, 25)) then
                    rang = 15
                    rangg = true
                    sampSendChat('/fractrank '..rang)
                end
                if imgui.Button(u8'Уволится', imgui.ImVec2(570, 25)) then
                    local result, my3id = sampGetPlayerIdByCharHandle(PLAYER_PED)
                    sampSendChat('/fkick '..my3id)
                end
                imgui.EndTabItem()
            end
            imgui.EndTabBar()
        end
        imgui.End()
    end
 

Andrinall

Известный
680
532
Подскажите пожалуйста как исправить эту ошибку
[ML] (error) Admin Tools: ...n Andreas MultiPlayer v0.3.7\moonloader\EventsHelper.lua:1795: bad argument #3 to '?' (cannot convert 'table' to 'const char *const *')
stack traceback:
[C]: in ?
...n Andreas MultiPlayer v0.3.7\moonloader\EventsHelper.lua:1795: in function '_draw'
...ndreas MultiPlayer v0.3.7\moonloader\lib\mimgui\init.lua:107: in function <...ndreas MultiPlayer v0.3.7\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Admin Tools: Script died due to an error. (053B4F0C)
Вот код:

lua:
if imgui.BeginTabItem(u8'Фракции') then
                imgui.Combo(u8'Фракции LS', fractlscombo, arrs.arr_fractls, #arrs.arr_fractls)
                if imgui.Button(u8'Вступить в фракцию##1') then
                    lsfract = arrs.arr_fractls[fractlscombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..lsfract)
                end
                imgui.SameLine()
                if imgui.Button(u8'Следить за игроками фракции##1') then
                    lsfract = arrs.arr_fractls[fractlscombo.v+1]
                    arrs.idfractspec = {}
                    fractspec = true
                    sampSendChat('/fract '..lsfract)
                    win.mainwin.v = false
                end
                imgui.Combo(u8'Фракции SF', fractsfcombo, arrs.arr_fractsf, #arrs.arr_fractsf)
                if imgui.Button(u8'Вступить в фракцию##2') then
                    sffract = arrs.arr.fractsf[fractsfcombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..sffract)
                end
                imgui.SameLine()
                if imgui.Button(u8'Следить за игроками фракции##2') then
                    sffract = arrs.arr_fractsf[fractsfcombo.v+1]
                    arrs.idfractspec = {}
                    fractspec = true
                    sampSendChat('/fract '..sffract)
                    win.mainwin.v = false
                end
                imgui.Combo(u8'Фракции LV', fractlvcombo, arrs.arr_fractlv, #arrs.arr_fractlv)
                if imgui.Button(u8'Вступить в фракцию##3') then
                    lvfract = arrs.arr_fractlv[fractlvcombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..lvfract)
                end
                imgui.SameLine()
                if imgui.Button(u8'Следить за игроками фракции##3') then
                    lvfract = arrs.arr_lvfract[fractlvcombo.v+1]
                    arrs.idfractspec = {}
                    fractspec = true
                    sampSendChat('/fract '..lvfract)
                    win.mainwin.v = false
                end
                if imgui.Button(u8'Статистика фракций по наборам', imgui.ImVec2(570, 25)) then
                    sampSendChat('/invstat')
                    win.main2.v = false
                    imgui.Process = false
                    mainwindow = false
                end
                if imgui.Button(u8'Статистика фракций по онлайну', imgui.ImVec2(570, 25)) then
                    sampSendChat('/fstat')
                    win.main2.v = false
                    imgui.Process = false
                    mainwindow = false
                end
                if imgui.Button(u8'Выдать самый высокий ранг во фракции', imgui.ImVec2(570, 25)) then
                    rang = 15
                    rangg = true
                    sampSendChat('/fractrank '..rang)
                end
                if imgui.Button(u8'Уволится', imgui.ImVec2(570, 25)) then
                    local result, my3id = sampGetPlayerIdByCharHandle(PLAYER_PED)
                    sampSendChat('/fkick '..my3id)
                end
                imgui.EndTabItem()
            end
            imgui.EndTabBar()
        end
        imgui.End()
    end
Как объявлены arrs.arr_fractls, arrs.arr_fractsf и arrs.arr_fractlv ?

Пример использования imgui.Combo
 

SamuelGoldie

Участник
Автор темы
72
7
Как объявлены arrs.arr_fractls, arrs.arr_fractsf и arrs.arr_fractlv ?

Пример использования imgui.Combo
lua:
local arrs = {
    arr_fractls = {'1 PD', '2 ARMY', '3 EMS', '4 NEWS', '6 TAXI', '7 FBI'},
    arr_fractsf = {'8 PD', '9 ARMY', '10 EMS', '11 NEWS', '13 TAXI', '14 FBI'},
    arr_fractlv = {'15 PD', '16 ARMY', '17 EMS', '18 NEWS', '20 TAXI', '21 FBI'},
    idfractspec = {},
}

на строке 1795 ищи ошибку
Да ты чёртов гений...
 
  • Нравится
Реакции: arpix

Andrinall

Известный
680
532
Lua:
local arrs = {
    arr_fractls = {'1 PD', '2 ARMY', '3 EMS', '4 NEWS', '6 TAXI', '7 FBI'},
    arr_fractsf = {'8 PD', '9 ARMY', '10 EMS', '11 NEWS', '13 TAXI', '14 FBI'},
    arr_fractlv = {'15 PD', '16 ARMY', '17 EMS', '18 NEWS', '20 TAXI', '21 FBI'},
    idfractspec = {},
}

Lua:
local arrs = {
    fractls = {'1 PD', '2 ARMY', '3 EMS', '4 NEWS', '6 TAXI', '7 FBI'},
    fractsf = {'8 PD', '9 ARMY', '10 EMS', '11 NEWS', '13 TAXI', '14 FBI'},
    fractlv = {'15 PD', '16 ARMY', '17 EMS', '18 NEWS', '20 TAXI', '21 FBI'},
    idfractspec = {},
}
-- инициализация переменных, необходимых для использования в imgui.Combo
arrs["arr_fractls"] = imgui.new["const char*"][#arrs.fractls](arrs.fractls)
arrs["arr_fractsf"] = imgui.new["const char*"][#arrs.fractsf](arrs.fractsf)
arrs["arr_fractlv"] = imgui.new["const char*"][#arrs.fractlv](arrs.fractlv)

-- в frame на своих местах
imgui.Combo(u8'Фракции LS', fractlscombo, arrs.arr_fractls, #arrs.fractls)
imgui.Combo(u8'Фракции SF', fractsfcombo, arrs.arr_fractsf, #arrs.fractsf)
imgui.Combo(u8'Фракции LV', fractlvcombo, arrs.arr_fractlv, #arrs.fractlv)
Остальное как было оставь. (upd в условиях к button поменяй arrs.arr_fract** на arrs.fract**, где звёздочки это город)
1687707435591.png
 

SamuelGoldie

Участник
Автор темы
72
7
Lua:
local arrs = {
    fractls = {'1 PD', '2 ARMY', '3 EMS', '4 NEWS', '6 TAXI', '7 FBI'},
    fractsf = {'8 PD', '9 ARMY', '10 EMS', '11 NEWS', '13 TAXI', '14 FBI'},
    fractlv = {'15 PD', '16 ARMY', '17 EMS', '18 NEWS', '20 TAXI', '21 FBI'},
    idfractspec = {},
}
-- инициализация переменных, необходимых для использования в imgui.Combo
arrs["arr_fractls"] = imgui.new["const char*"][#arrs.fractls](arrs.fractls)
arrs["arr_fractsf"] = imgui.new["const char*"][#arrs.fractsf](arrs.fractsf)
arrs["arr_fractlv"] = imgui.new["const char*"][#arrs.fractlv](arrs.fractlv)

-- в frame на своих местах
imgui.Combo(u8'Фракции LS', fractlscombo, arrs.arr_fractls, #arrs.fractls)
imgui.Combo(u8'Фракции SF', fractsfcombo, arrs.arr_fractsf, #arrs.fractsf)
imgui.Combo(u8'Фракции LV', fractlvcombo, arrs.arr_fractlv, #arrs.fractlv)
Остальное как было оставь. (upd в условиях к button поменяй arrs.arr_fract** на arrs.fract**, где звёздочки это город)
Посмотреть вложение 205630
Сделал вот так:
Lua:
 if imgui.BeginTabItem(u8'Фракции') then
                imgui.Combo(u8'Фракции LS', fractlscombo, arrs.fractls, #arrs.fractls)
                if imgui.Button(u8'Вступить в фракцию##1') then
                    lsfract = arrs.arr_fractls[fractlscombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..lsfract)
                end
lua:
local arrs = {
    fractls = {'1 PD', '2 ARMY', '3 EMS', '4 NEWS', '6 TAXI', '7 FBI'},
    fractsf = {'8 PD', '9 ARMY', '10 EMS', '11 NEWS', '13 TAXI', '14 FBI'},
    fractlv = {'15 PD', '16 ARMY', '17 EMS', '18 NEWS', '20 TAXI', '21 FBI'},
    idfractspec = {},
}


arrs["arr_fractls"] = imgui.new["const char*"][#arrs.fractls](arrs.fractls)
arrs["arr_fractsf"] = imgui.new["const char*"][#arrs.fractsf](arrs.fractsf)
arrs["arr_fractlv"] = imgui.new["const char*"][#arrs.fractlv](arrs.fractlv)
Вот ошибка:
[ML] (error) Admin Tools: ...n Andreas MultiPlayer v0.3.7\moonloader\EventsHelper.lua:1801: bad argument #3 to '?' (cannot convert 'table' to 'const char *const *')
stack traceback:
[C]: in ?
...n Andreas MultiPlayer v0.3.7\moonloader\EventsHelper.lua:1801: in function '_draw'
...ndreas MultiPlayer v0.3.7\moonloader\lib\mimgui\init.lua:107: in function <...ndreas MultiPlayer v0.3.7\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Admin Tools: Script died due to an error. (0D5AC2CC)
 

Andrinall

Известный
680
532
Сделал вот так:
Lua:
 if imgui.BeginTabItem(u8'Фракции') then
                imgui.Combo(u8'Фракции LS', fractlscombo, arrs.fractls, #arrs.fractls)
                if imgui.Button(u8'Вступить в фракцию##1') then
                    lsfract = arrs.arr_fractls[fractlscombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..lsfract)
                end
lua:
local arrs = {
    fractls = {'1 PD', '2 ARMY', '3 EMS', '4 NEWS', '6 TAXI', '7 FBI'},
    fractsf = {'8 PD', '9 ARMY', '10 EMS', '11 NEWS', '13 TAXI', '14 FBI'},
    fractlv = {'15 PD', '16 ARMY', '17 EMS', '18 NEWS', '20 TAXI', '21 FBI'},
    idfractspec = {},
}


arrs["arr_fractls"] = imgui.new["const char*"][#arrs.fractls](arrs.fractls)
arrs["arr_fractsf"] = imgui.new["const char*"][#arrs.fractsf](arrs.fractsf)
arrs["arr_fractlv"] = imgui.new["const char*"][#arrs.fractlv](arrs.fractlv)
Вот ошибка:
[ML] (error) Admin Tools: ...n Andreas MultiPlayer v0.3.7\moonloader\EventsHelper.lua:1801: bad argument #3 to '?' (cannot convert 'table' to 'const char *const *')
stack traceback:
[C]: in ?
...n Andreas MultiPlayer v0.3.7\moonloader\EventsHelper.lua:1801: in function '_draw'
...ndreas MultiPlayer v0.3.7\moonloader\lib\mimgui\init.lua:107: in function <...ndreas MultiPlayer v0.3.7\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Admin Tools: Script died due to an error. (0D5AC2CC)
Ну как минимум ты сделал Combo не так, как указано)
Перепроверь, у тебя в combo аргументы "Фракции LS", fractlscombo, arrs.fractls, #arr.fractls,
а должно быть "Фракции LS", fractlscombo, arrs.arr_fractls, #arr.fractls

Lua:
 if imgui.BeginTabItem(u8'Фракции') then
                imgui.Combo(u8'Фракции LS', fractlscombo, arrs.arr_fractls, #arrs.fractls)
                if imgui.Button(u8'Вступить в фракцию##1') then
                    lsfract = arrs.fractls[fractlscombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..lsfract)
                end
 

SamuelGoldie

Участник
Автор темы
72
7
Ну как минимум ты сделал Combo не так, как указано)
Перепроверь, у тебя в combo аргументы "Фракции LS", fractlscombo, arrs.fractls, #arr.fractls,
а должно быть "Фракции LS", fractlscombo, arrs.arr_fractls, #arr.fractls

Lua:
 if imgui.BeginTabItem(u8'Фракции') then
                imgui.Combo(u8'Фракции LS', fractlscombo, arrs.arr_fractls, #arrs.fractls)
                if imgui.Button(u8'Вступить в фракцию##1') then
                    lsfract = arrs.fractls[fractlscombo.v+1]
                    sampSendChat('/fkick '..clientName)
                    sampSendChat('/infract '..lsfract)
                end
Взял твой код, при нажатии на вкладку крашит тупо игру
 

Andrinall

Известный
680
532
Взял твой код, при нажатии на вкладку крашит тупо игру
Кинь код полный, можно под хайд. Попробую всунуть как надо.
Я когда кидал код - приложил скриншот, что код работоспособен.
Если что-то не встаёт у тебя в код - значит ты, возможно, что-то не так делаешь. (скорее всего то, что fractlscombo у тебя не imgui.new.int(), а какая-то шляпа)
 

SamuelGoldie

Участник
Автор темы
72
7
Кинь код полный, можно под хайд. Попробую всунуть как надо.
Я когда кидал код - приложил скриншот, что код работоспособен.
Если что-то не встаёт у тебя в код - значит ты, возможно, что-то не так делаешь. (скорее всего то, что fractlscombo у тебя не imgui.new.int(), а какая-то шляпа)
В лс скину тебе скрипт этот, там 5к строк не влезет
 
  • Нравится
Реакции: Andrinall