Помогите с inputtext

турбодизельный унитаз2012

Участник
Автор темы
137
9
Версия MoonLoader
.026-beta
Приветос.
Короче, у меня случилась проблемка.
Если я ввожу любой символ в imputtext, то скрипт крашит или флудит символом "@", само по себе.
Все переменные есть.
Вот само окно:
1704802742396.png

Code:

Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local ffi = require 'ffi'
local str, sizeof = ffi.string, ffi.sizeof
local input_setleader = imgui.new.char(64)
local input_setsupport = imgui.new.char(64)
local new = imgui.new
local show = imgui.new.bool(false)


function main()
    sampAddChatMessage('Helper загуржен.', 0xffcc00)
    sampRegisterChatCommand('chelp', function() show[0] = not show[0] end) 
    wait(-1)
end

imgui.OnFrame(function() return show[0] and not isGamePaused() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(1, 1))
    imgui.SetNextWindowSize(imgui.ImVec2(370, 190), imgui.Cond.FirstUseEver)
    input_setleader = imgui.new.char(64)
    input_setsupport = imgui.new.char(64)
    imgui.Begin(u8'Выдача должности', show, imgui.WindowFlags.NoResize)
    imgui.Text(u8'ID игрока, ID организации, ID скина (1-311)')
    imgui.InputText(u8'Введите значение', input_setleader, sizeof(input_setleader))
    sampSendChat('/setleader '..u8:decode(str(input_setleader)))
    imgui.Button(u8'Назначить на должность')
    imgui.Text(u8'ID игрока')
    imgui.InputText(u8'Введите значение', input_setsupport, sizeof(input_setsupport))
    sampSendChat('/setsupport '..u8:decode(str(input_setsupport)))
    imgui.Button(u8'Назначить на должность')
    imgui.End()
end)
 
Последнее редактирование:
Решение
1. Ты флудишь каждый кадр в чат (Считай, что OnFrame - это почти беск. цикл, но вызывается каждый кадр. 100 FPS - 100 раз в сек. (или не в сек. хз.):
1704811354616.png

Тебе их надо перенести в соответствующие кнопки:
Lua:
if imgui.Button(u8"Назначить на должность##1") then -- Про "##1" объяснил ниже.
    sampSendChat('/setleader '..u8:decode(str(input_setleader)))
end

if imgui.Button(u8"Назначить на должность##2") then -- Про "##2" объяснил ниже.
    sampSendChat('/setsupport '..u8:decode(str(input_setsupport)))
end
2. У тебя переменные
Lua:
input_setleader = imgui.new.char(64)
input_setsupport = imgui.new.char(64)
объявляются каждый кадр. Перенеси их вверх, где-то под 10-й строчкой, где local show.

3. Кнопки с одинаковыми...

турбодизельный унитаз2012

Участник
Автор темы
137
9
Посмотреть вложение 227986
зачем ты объявил переменные во фрейме?они у тебя каждый фрейм вызываться будут, конечно будут приколы
Убрал переменные.
Всё imgui.OnFrame.
Теперь окно открыто, кнопка не работает, при вводе что-то в строку скрипт крашиться.
 

chromiusj

C Y N T H O N I
Модератор
5,049
3,317
Убрал переменные.
Всё imgui.OnFrame.
Теперь окно открыто, кнопка не работает, при вводе что-то в строку скрипт крашиться.
у тебя переменная должна быть такая
local input = imgui.new.char[64]()
а ещё для числовых значений лучше использовать imgui.new.int(0),как в твоём случае с айдишниками
 
Последнее редактирование:

minxty

Известный
1,035
882
у тебя когда открыто окно, постоянно будет флудить в чат /setsupport, /setleader, если ты их не засовываешь в саму кнопку
кстати, из за одинакового названия инпуттекста, текст в них будет одинаковый, поэтому меняй их названия, я не менял, то же с кнопками
а скрипт крашился потомучто нету проверки на загрузку сампа (или как там хз)
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local ffi = require 'ffi'
local str, sizeof = ffi.string, ffi.sizeof
local input_setleader = imgui.new.char[64]()
local input_setsupport = imgui.new.char[64]()
local new = imgui.new
local show = imgui.new.bool(false)


function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('Helper загуржен.', 0xffcc00)
    sampRegisterChatCommand('chelp', function() show[0] = not show[0] end)
    wait(-1)
end

imgui.OnFrame(function() return show[0] and not isGamePaused() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(1, 1))
    imgui.SetNextWindowSize(imgui.ImVec2(370, 190), imgui.Cond.FirstUseEver)
    imgui.Begin(u8'Выдача должности', show, imgui.WindowFlags.NoResize)
    imgui.Text(u8'ID игрока, ID организации, ID скина (1-311)')
    imgui.InputText(u8'Введите значение', input_setleader, sizeof(input_setleader))
    if imgui.Button(u8'Назначить на должность') then
        sampSendChat('/setleader '..u8:decode(str(input_setleader)))
    end
    imgui.Text(u8'ID игрока')
    imgui.InputText(u8'Введите значение', input_setsupport, sizeof(input_setsupport))
    if imgui.Button(u8'Назначить на должность') then
        sampSendChat('/setsupport '..u8:decode(str(input_setsupport)))
    end
    imgui.End()
end)
 
  • Нравится
Реакции: Dmitriy Makarov

Dmitriy Makarov

25.05.2021
Проверенный
2,490
1,119
1. Ты флудишь каждый кадр в чат (Считай, что OnFrame - это почти беск. цикл, но вызывается каждый кадр. 100 FPS - 100 раз в сек. (или не в сек. хз.):
1704811354616.png

Тебе их надо перенести в соответствующие кнопки:
Lua:
if imgui.Button(u8"Назначить на должность##1") then -- Про "##1" объяснил ниже.
    sampSendChat('/setleader '..u8:decode(str(input_setleader)))
end

if imgui.Button(u8"Назначить на должность##2") then -- Про "##2" объяснил ниже.
    sampSendChat('/setsupport '..u8:decode(str(input_setsupport)))
end
2. У тебя переменные
Lua:
input_setleader = imgui.new.char(64)
input_setsupport = imgui.new.char(64)
объявляются каждый кадр. Перенеси их вверх, где-то под 10-й строчкой, где local show.

3. Кнопки с одинаковыми названиями. Это значит, что при нажатии на одну из кнопок, нажмётся и вторая. Измени на:
Lua:
imgui.Button(u8"Назначить на должность##1") -- "##1" не будет видно.
imgui.Button(u8"Назначить на должность##2") -- Аналогично.

4. С InputText такая же история, как и с кнопками - одинаковые названия. Вводишь текст в одно поле - этот же текст вводится и во второе.
Lua:
imgui.InputText(u8'Введите значение##1', input_setleader, sizeof(input_setleader))
imgui.InputText(u8'Введите значение##2', input_setsupport, sizeof(input_setsupport))
 

турбодизельный унитаз2012

Участник
Автор темы
137
9
1. Ты флудишь каждый кадр в чат (Считай, что OnFrame - это почти беск. цикл, но вызывается каждый кадр. 100 FPS - 100 раз в сек. (или не в сек. хз.):
Посмотреть вложение 228002
Тебе их надо перенести в соответствующие кнопки:
Lua:
if imgui.Button(u8"Назначить на должность##1") then -- Про "##1" объяснил ниже.
    sampSendChat('/setleader '..u8:decode(str(input_setleader)))
end

if imgui.Button(u8"Назначить на должность##2") then -- Про "##2" объяснил ниже.
    sampSendChat('/setsupport '..u8:decode(str(input_setsupport)))
end
2. У тебя переменные
Lua:
input_setleader = imgui.new.char(64)
input_setsupport = imgui.new.char(64)
объявляются каждый кадр. Перенеси их вверх, где-то под 10-й строчкой, где local show.

3. Кнопки с одинаковыми названиями. Это значит, что при нажатии на одну из кнопок, нажмётся и вторая. Измени на:
Lua:
imgui.Button(u8"Назначить на должность##1") -- "##1" не будет видно.
imgui.Button(u8"Назначить на должность##2") -- Аналогично.

4. С InputText такая же история, как и с кнопками - одинаковые названия. Вводишь текст в одно поле - этот же текст вводится и во второе.
Lua:
imgui.InputText(u8'Введите значение##1', input_setleader, sizeof(input_setleader))
imgui.InputText(u8'Введите значение##2', input_setsupport, sizeof(input_setsupport))
Теперь при перезапуске скрипта ничего не флудит, но нельзя ввести данные в строку, и там появляются рандомные символы.
 

Dmitriy Makarov

25.05.2021
Проверенный
2,490
1,119
Теперь при перезапуске скрипта ничего не флудит, но нельзя ввести данные в строку, и там появляются рандомные символы.
Не обратил внимания.
Lua:
-- Измени вот это:
input_setleader = imgui.new.char(64)
input_setsupport = imgui.new.char(64)

-- На это:
input_setleader = imgui.new.char[64]()
input_setsupport = imgui.new.char[64]()
1704813269480.png
 

турбодизельный унитаз2012

Участник
Автор темы
137
9
И ещё.
imgui.Combo.
Как сделать так, чтобы он брал информацию с таблицы?
Типо, у меня есть такая таблица:
Lua:
local item_list = {u8'Полиция ЛС', u8'ФБР', u8'Армия ЛС', u8'Больница ЛС', u8'La Cosa Nostra', u8'Yakuza', u8'Мэрия', u8'Полиция Пригород', u8'Полиция СФ', u8'Warlocks MC', u8'The Ballas', u8'Los Santos Vagos', u8'Russian Mafia', u8'Grove Street', u8'San News', u8'Varios Los Aztecas', u8'The Rifa', u8'Армия ЛВ', u8'Полиция ЛВ', u8'Hitmans Agency', u8'S.W.A.T', u8'Правительство'}

И ещё такая таблица:
Lua:
local setleaderlist = {
[1] = 'Полиция ЛС',
[2] = 'ФБР',
[3] = 'Армия ЛС',
[4] = 'Больница ЛС',
[5] = 'La Cosa Nostra',
[6] = 'Yakuza',
[7] = 'Мэрия',
[9] = 'Полиция Пригород',
[10] = 'Полиция СФ',
[11] = 'Warlocks MC',
[12] = 'The Ballas',
[13] = 'Los Santos Vagos',
[14] = 'Russian Mafia',
[15] = 'Grove Street',
[16] = 'San News',
[17] = 'Varios Los Aztecas',
[18] = 'The Rifa',
[19] = 'Армия ЛВ',
[21] = 'Полиция ЛВ',
[23] = 'Hitmans Agency',
[25] = 'S.W.A.T',
[26] = 'Правительство'
    }

Первая таблица отвечает за оповещение.
Пример: Кому выдать лидерку *здесь значение из талицы*, пишите + в чат.
Вторая таблица отвечает за выдачу.
Пример:
Выбираю например "ФБР", потом в нужной мне строке выбираю ID игрока, выбираю скин из ползнука и нажать на кнопку.
Как это примерно выглядит:
1704826587523.png


Как это реализовать?


Введите ID игрока 1.
Список организаций - ФБР (2).
Выберите скин - 311.
Выходит это так:
/setleader 1 2 311
 

kyrtion

Известный
683
254
1704830305224.png


Lua:
-- ПЕРЕД MAIN
local combos = {} do
    combos.fractions = {}
    combos.fractions.data = {
        {fk='Полиция ЛС',         id=1},
        {fk='ФБР',                id=2},
        {fk='Армия ЛС',           id=3},
        {fk='Больница ЛС',        id=4},
        {fk='La Cosa Nostra',     id=5},
        {fk='Yakuza',             id=6},
        {fk='Мэрия',              id=7},
        {fk='Полиция Пригород',   id=9},
        {fk='Полиция СФ',         id=10},
        {fk='Warlocks MC',        id=11},
        {fk='The Ballas',         id=12},
        {fk='Los Santos Vagos',   id=13},
        {fk='Russian Mafia',      id=14},
        {fk='Grove Street',       id=15},
        {fk='San News',           id=16},
        {fk='Varios Los Aztecas', id=17},
        {fk='The Rifa',           id=18},
        {fk='Армия ЛВ',           id=19},
        {fk='Полиция ЛВ',         id=21},
        {fk='Hitmans Agency',     id=23},
        {fk='S.W.A.T',            id=25},
        {fk='Правительство',      id=26},
    }
    combos.fractions.comboInt = imgui.new.int(0)
    local fks = {}
    for i=1, #combos.fractions.data do
        fks[#fks+1] = u8(combos.fractions.data[i].fk)
    end
    combos.fractions.imItems = imgui.new['const char*'][#fks](fks)
end

-- В ФРЕЙМ МИМГУИ
imgui.Combo(u8'Список', combos.fractions.comboInt, combos.fractions.imItems, #combos.fractions.data)
if imgui.Button(u8'Узнать результаты') then
    local chatLocal = function(text, ...)
        return sampAddChatMessage(string.format(text, ...), -1)
    end

    local result = {
        comboInt = combos.fractions.comboInt[0],
        fractionName = combos.fractions.data[combos.fractions.comboInt[0] + 1].fk,
        fractionId = combos.fractions.data[combos.fractions.comboInt[0] + 1].id
    }

    chatLocal('comboInt = %s | fractionName = %s | fractionId = %s', result.comboInt, result.fractionName, result.fractionId)
end

кто накинет реакции на баг, скинь, буду благодарен. написал чтобы убил время
 
Последнее редактирование:

турбодизельный унитаз2012

Участник
Автор темы
137
9
Посмотреть вложение 228055

Lua:
-- ПЕРЕД MAIN
local combos = {} do
    combos.fractions = {}
    combos.fractions.data = {
        {fk=u8'Полиция ЛС',         id=1},
        {fk=u8'ФБР',                id=2},
        {fk=u8'Армия ЛС',           id=3},
        {fk=u8'Больница ЛС',        id=4},
        {fk=u8'La Cosa Nostra',     id=5},
        {fk=u8'Yakuza',             id=6},
        {fk=u8'Мэрия',              id=7},
        {fk=u8'Полиция Пригород',   id=9},
        {fk=u8'Полиция СФ',         id=10},
        {fk=u8'Warlocks MC',        id=11},
        {fk=u8'The Ballas',         id=12},
        {fk=u8'Los Santos Vagos',   id=13},
        {fk=u8'Russian Mafia',      id=14},
        {fk=u8'Grove Street',       id=15},
        {fk=u8'San News',           id=16},
        {fk=u8'Varios Los Aztecas', id=17},
        {fk=u8'The Rifa',           id=18},
        {fk=u8'Армия ЛВ',           id=19},
        {fk=u8'Полиция ЛВ',         id=21},
        {fk=u8'Hitmans Agency',     id=23},
        {fk=u8'S.W.A.T',            id=25},
        {fk=u8'Правительство',      id=26},
    }
    combos.fractions.comboInt = imgui.new.int(0)
    local fks = {}
    for i=1, #combos.fractions.data do
        fks[#fks+1] = combos.fractions.data[i].fk
    end
    combos.fractions.imItems = imgui.new['const char*'][#fks](fks)
end

-- В ФРЕЙМ МИМГУИ
imgui.Combo(u8'Список', combos.fractions.comboInt, combos.fractions.imItems, #combos.fractions.data)
if imgui.Button(u8'Узнать результаты') then
    local chatLocal = function(text, ...)
        return sampAddChatMessage(string.format(text, ...), -1)
    end

    local result = {
        comboInt = combos.fractions.comboInt[0],
        fractionName = u8:decode(combos.fractions.data[combos.fractions.comboInt[0] + 1].fk),
        fractionId = combos.fractions.data[combos.fractions.comboInt[0] + 1].id
    }

    chatLocal('comboInt = %s | fractionName = %s | fractionId = %s', result.comboInt, result.fractionName, result.fractionId)
end

кто накинет реакции на баг, скинь, буду благодарен. написал чтобы убил время
Не, не так.
Это не должно быть всё в одной строке.
Типо, то что у меня на скриншоте (Список организаций) заменяет второе значение в команде /setleader.
 

kyrtion

Известный
683
254
Не, не так.
Это не должно быть всё в одной строке.
Типо, то что у меня на скриншоте (Список организаций) заменяет второе значение в команде /setleader.
научись читать код и редактировать, также и гуглить в поиске на этом форуме

чтобы стать полноценным скриптером на луа, нужно понять алгоритмы и структуры в луа. почему луа? ведь ты его пишешь и изучаешь.
также и уметь читать чужой код и понять как это работает в мыслю. допустим воображаешь как мультик, этот робот нарисовал структкура, засунул туда еще один массив и так далее (я это лишь привел пример, а не шиза)

массив это как коробка. в коробке лежат книги, в книгах содержит текст страницы (структуры значение)
 

kyrtion

Известный
683
254
@enthype

1704936726012.png

Lua:
-- перед main() и фрейм
local renderWindow = imgui.new.bool(false)
local inputFieldPlayerId = imgui.new.int(0)

local combos = {}
do
    combos.factions = {} do
        combos.factions.data = {
            { id=1,  title='Полиция ЛС',         skins={1001, 232, 243} },
            { id=2,  title='ФБР',                skins={1002, 232, 243} },
            { id=3,  title='Армия ЛС',           skins={1003, 232, 243} },
            { id=4,  title='Больница ЛС',        skins={1004, 232, 243} },
            { id=5,  title='La Cosa Nostra',     skins={1005, 232, 243} },
            { id=6,  title='Yakuza',             skins={1006, 232, 243} },
            { id=7,  title='Мэрия',              skins={1007, 232, 243} },
            { id=9,  title='Полиция Пригород',   skins={1009, 232, 243} },
            { id=10, title='Полиция СФ',         skins={1010, 232, 243} },
            { id=11, title='Warlocks MC',        skins={1011, 232, 243} },
            { id=12, title='The Ballas',         skins={1012, 232, 243} },
            { id=13, title='Los Santos Vagos',   skins={1013, 232, 243} },
            { id=14, title='Russian Mafia',      skins={1014, 232, 243} },
            { id=15, title='Grove Street',       skins={1015, 232, 243} },
            { id=16, title='San News',           skins={1016, 232, 243} },
            { id=17, title='Varios Los Aztecas', skins={1017, 232, 243} },
            { id=18, title='The Rifa',           skins={1018, 232, 243} },
            { id=19, title='Армия ЛВ',           skins={1019, 232, 243} },
            { id=21, title='Полиция ЛВ',         skins={1021, 232, 243} },
            { id=23, title='Hitmans Agency',     skins={1023, 232, 243} },
            { id=25, title='S.W.A.T',            skins={1025, 232, 243} },
            { id=26, title='Правительство',      skins={1026, 232, 243} },
        }
    end

    do
        local fks = {}
        for i=1, #combos.factions.data do
            fks[#fks+1] = u8(combos.factions.data[i].title)
        end
        combos.factions.ImItems = imgui.new['const char*'][#fks](fks)
        combos.factions.ImSelectedId = imgui.new.int(0)
    end

    combos.factions.selectedSkins = {}
    combos.factions.selectedSkins.data = {}
    combos.factions.selectedSkins.update = function(id)
        for i=1, #combos.factions.data do
            if combos.factions.data[i].id == id then
                -- local skins = combos.factions.data[i].skins
                -- выдаст ошибка "cannot convert 'number' to 'const char *'"
                -- обозначает что имгуи не любит числа, а ток строковое
                local skins = {} do
                    for n=1, #combos.factions.data[i].skins do
                        skins[#skins+1] = tostring(combos.factions.data[i].skins[n])
                    end
                end
                combos.factions.selectedSkins.data = skins
                combos.factions.selectedSkins.ImItems = imgui.new['const char*'][#skins](skins)
                combos.factions.selectedSkins.ImSelectedId = imgui.new.int(0)
                break
            end
        end
    end
    combos.factions.selectedSkins.update(1) -- Полиция ЛС
end

-- imgui frames
imgui.InputInt(u8'ID игрока', inputFieldPlayerId, 0, 0)
if imgui.Combo(u8'Фракция', combos.factions.ImSelectedId, combos.factions.ImItems, #combos.factions.data) then
    combos.factions.selectedSkins.update(combos.factions.data[combos.factions.ImSelectedId[0] + 1].id)
end
imgui.Combo(u8'ID скина', combos.factions.selectedSkins.ImSelectedId, combos.factions.selectedSkins.ImItems, #combos.factions.selectedSkins.data)

imgui.NewLine()
if imgui.Button(u8'Отправить', imgui.ImVec2(imgui.GetMiddleButtonX(2), 0)) then
    local chatLocal = function(text, ...)
        return sampAddChatMessage(string.format(text, ...), -1)
    end

    local result = {
        selectedId = combos.factions.ImSelectedId[0],
        fractionName = combos.factions.data[combos.factions.ImSelectedId[0] + 1].title,
        fractionId = combos.factions.data[combos.factions.ImSelectedId[0] + 1].id
    }

    chatLocal('selectedId = %s | fractionName = %s | fractionId = %s', result.ImSelectedId, result.fractionName, result.fractionId)
    chatLocal('/setleader ...')
end; imgui.SameLine()

if imgui.Button(u8'Закрыть', imgui.ImVec2(imgui.GetMiddleButtonX(2), 0)) then
    renderWindow[0] = false
end
Больше помогать не буду, я тебе дал код.
Когда меняешь комбо фраки, список скинов обновится.
 

турбодизельный унитаз2012

Участник
Автор темы
137
9
@enthype

Посмотреть вложение 228230
Lua:
-- перед main() и фрейм
local renderWindow = imgui.new.bool(false)
local inputFieldPlayerId = imgui.new.int(0)

local combos = {}
do
    combos.factions = {} do
        combos.factions.data = {
            { id=1,  title='Полиция ЛС',         skins={1001, 232, 243} },
            { id=2,  title='ФБР',                skins={1002, 232, 243} },
            { id=3,  title='Армия ЛС',           skins={1003, 232, 243} },
            { id=4,  title='Больница ЛС',        skins={1004, 232, 243} },
            { id=5,  title='La Cosa Nostra',     skins={1005, 232, 243} },
            { id=6,  title='Yakuza',             skins={1006, 232, 243} },
            { id=7,  title='Мэрия',              skins={1007, 232, 243} },
            { id=9,  title='Полиция Пригород',   skins={1009, 232, 243} },
            { id=10, title='Полиция СФ',         skins={1010, 232, 243} },
            { id=11, title='Warlocks MC',        skins={1011, 232, 243} },
            { id=12, title='The Ballas',         skins={1012, 232, 243} },
            { id=13, title='Los Santos Vagos',   skins={1013, 232, 243} },
            { id=14, title='Russian Mafia',      skins={1014, 232, 243} },
            { id=15, title='Grove Street',       skins={1015, 232, 243} },
            { id=16, title='San News',           skins={1016, 232, 243} },
            { id=17, title='Varios Los Aztecas', skins={1017, 232, 243} },
            { id=18, title='The Rifa',           skins={1018, 232, 243} },
            { id=19, title='Армия ЛВ',           skins={1019, 232, 243} },
            { id=21, title='Полиция ЛВ',         skins={1021, 232, 243} },
            { id=23, title='Hitmans Agency',     skins={1023, 232, 243} },
            { id=25, title='S.W.A.T',            skins={1025, 232, 243} },
            { id=26, title='Правительство',      skins={1026, 232, 243} },
        }
    end

    do
        local fks = {}
        for i=1, #combos.factions.data do
            fks[#fks+1] = u8(combos.factions.data[i].title)
        end
        combos.factions.ImItems = imgui.new['const char*'][#fks](fks)
        combos.factions.ImSelectedId = imgui.new.int(0)
    end

    combos.factions.selectedSkins = {}
    combos.factions.selectedSkins.data = {}
    combos.factions.selectedSkins.update = function(id)
        for i=1, #combos.factions.data do
            if combos.factions.data[i].id == id then
                -- local skins = combos.factions.data[i].skins
                -- выдаст ошибка "cannot convert 'number' to 'const char *'"
                -- обозначает что имгуи не любит числа, а ток строковое
                local skins = {} do
                    for n=1, #combos.factions.data[i].skins do
                        skins[#skins+1] = tostring(combos.factions.data[i].skins[n])
                    end
                end
                combos.factions.selectedSkins.data = skins
                combos.factions.selectedSkins.ImItems = imgui.new['const char*'][#skins](skins)
                combos.factions.selectedSkins.ImSelectedId = imgui.new.int(0)
                break
            end
        end
    end
    combos.factions.selectedSkins.update(1) -- Полиция ЛС
end

-- imgui frames
imgui.InputInt(u8'ID игрока', inputFieldPlayerId, 0, 0)
if imgui.Combo(u8'Фракция', combos.factions.ImSelectedId, combos.factions.ImItems, #combos.factions.data) then
    combos.factions.selectedSkins.update(combos.factions.data[combos.factions.ImSelectedId[0] + 1].id)
end
imgui.Combo(u8'ID скина', combos.factions.selectedSkins.ImSelectedId, combos.factions.selectedSkins.ImItems, #combos.factions.selectedSkins.data)

imgui.NewLine()
if imgui.Button(u8'Отправить', imgui.ImVec2(imgui.GetMiddleButtonX(2), 0)) then
    local chatLocal = function(text, ...)
        return sampAddChatMessage(string.format(text, ...), -1)
    end

    local result = {
        selectedId = combos.factions.ImSelectedId[0],
        fractionName = combos.factions.data[combos.factions.ImSelectedId[0] + 1].title,
        fractionId = combos.factions.data[combos.factions.ImSelectedId[0] + 1].id
    }

    chatLocal('selectedId = %s | fractionName = %s | fractionId = %s', result.ImSelectedId, result.fractionName, result.fractionId)
    chatLocal('/setleader ...')
end; imgui.SameLine()

if imgui.Button(u8'Закрыть', imgui.ImVec2(imgui.GetMiddleButtonX(2), 0)) then
    renderWindow[0] = false
end
Больше помогать не буду, я тебе дал код.
Когда меняешь комбо фраки, список скинов обновится.
Спасибо, но трудился ты зря.
 
  • Нравится
Реакции: kyrtion