[imgui] Создание/Удаление биндов

sVor

Активный
Автор темы
187
102
Версия MoonLoader
.026-beta
Делаю создание и удаление биндов на кнопку, но не доходит, как удалить только выбранный бинд?
code:
local bind = {}
for i = 0, 10 do
    bind[i] = imgui.ImBuffer(256)
end

local num = 0

function imgui.OnDrawFrame()
    local sx, sy = getScreenResolution()

    imgui.SetNextWindowPos(imgui.ImVec2(sx / 2, sy / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver)

    imgui.Begin("bind", window['bind'], imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
        imgui.SetCursorPosX((300-22)/2)
        imgui.PushStyleVar(imgui.StyleVar.ButtonTextAlign , imgui.ImVec2(0.5, 0.5))
            if imgui.Button(fa.ICON_FA_PLUS, imgui.ImVec2(22,22)) then
                if num == 10 then systemMessage("Нельзя создавать больше 10 биндов!")
                else num = num + 1 end
            end
        imgui.PopStyleVar()
        for i = 1, num do
            imgui.InputText(u8"##"..i, bind[i])
            imgui.SameLine()
            imgui.PushStyleVar(imgui.StyleVar.ButtonTextAlign , imgui.ImVec2(0.5, 0.5))
                if imgui.Button(fa.ICON_FA_TRASH.."##"..i, imgui.ImVec2(22,22)) then
                      -- Как удалять только выбранный бинд?
                end
            imgui.PopStyleVar()
        end
    imgui.End()
end
 
Решение
попробуй
Делаю создание и удаление биндов на кнопку, но не доходит, как удалить только выбранный бинд?
code:
local bind = {}
for i = 0, 10 do
    bind[i] = imgui.ImBuffer(256)
end

local num = 0

function imgui.OnDrawFrame()
    local sx, sy = getScreenResolution()

    imgui.SetNextWindowPos(imgui.ImVec2(sx / 2, sy / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver)

    imgui.Begin("bind", window['bind'], imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
        imgui.SetCursorPosX((300-22)/2)
        imgui.PushStyleVar(imgui.StyleVar.ButtonTextAlign , imgui.ImVec2(0.5, 0.5))
            if imgui.Button(fa.ICON_FA_PLUS, imgui.ImVec2(22,22)) then...

Vespan

loneliness
Проверенный
2,137
1,859
Lua:
test = {}
for i = 1,10 do
    table.insert(test,imgui.ImBuffer('>'..i,256))
end
--
for k,v in ipairs(test) do
    imgui.InputText('>>'..k,v)
    imgui.SameLine()
    if imgui.Button('text in chat##'..k) then
        sampAddChatMessage(u8:decode(v.v),-1)
    end
    imgui.SameLine()
    if imgui.Button('delete##'..k) then
        table.remove(test,k)
    end
end
на этом примере попробуй
 

вайега52

Налуашил состояние
Модератор
2,991
3,113
попробуй
Делаю создание и удаление биндов на кнопку, но не доходит, как удалить только выбранный бинд?
code:
local bind = {}
for i = 0, 10 do
    bind[i] = imgui.ImBuffer(256)
end

local num = 0

function imgui.OnDrawFrame()
    local sx, sy = getScreenResolution()

    imgui.SetNextWindowPos(imgui.ImVec2(sx / 2, sy / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver)

    imgui.Begin("bind", window['bind'], imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
        imgui.SetCursorPosX((300-22)/2)
        imgui.PushStyleVar(imgui.StyleVar.ButtonTextAlign , imgui.ImVec2(0.5, 0.5))
            if imgui.Button(fa.ICON_FA_PLUS, imgui.ImVec2(22,22)) then
                if num == 10 then systemMessage("Нельзя создавать больше 10 биндов!")
                else num = num + 1 end
            end
        imgui.PopStyleVar()
        for i = 1, num do
            imgui.InputText(u8"##"..i, bind[i])
            imgui.SameLine()
            imgui.PushStyleVar(imgui.StyleVar.ButtonTextAlign , imgui.ImVec2(0.5, 0.5))
                if imgui.Button(fa.ICON_FA_TRASH.."##"..i, imgui.ImVec2(22,22)) then
                      -- Как удалять только выбранный бинд?
                end
            imgui.PopStyleVar()
        end
    imgui.End()
end
Lua:
local bind = {}
local dell = imgui.ImInt(0)

function imgui.OnDrawFrame()
    local sx, sy = getScreenResolution()

    imgui.SetNextWindowPos(imgui.ImVec2(sx / 2, sy / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver)

    imgui.Begin("bind", window['bind'], imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
        imgui.SetCursorPosX((300-22)/2)
        imgui.PushStyleVar(imgui.StyleVar.ButtonTextAlign , imgui.ImVec2(0.5, 0.5))
            if imgui.Button(fa.ICON_FA_PLUS, imgui.ImVec2(22,22)) then
                if #bind >= 10 then
                    systemMessage("Нельзя создавать больше 10 биндов!")
                else
                     bind[#bind+1] = imgui.ImBuffer(256)
                end
            end
        imgui.PopStyleVar()
        imgui.InputInt(u8"Удалить: ", dell)
        for k, v in ipairs(bind) do
            imgui.InputText(u8"##"..k, v)
            imgui.SameLine()
            imgui.PushStyleVar(imgui.StyleVar.ButtonTextAlign , imgui.ImVec2(0.5, 0.5))
                if imgui.Button(fa.ICON_FA_TRASH.."##"..k, imgui.ImVec2(22,22)) then
                    if bind[dell.v] then
                        table.remove(bind, dell.v)
                    end
                end
            imgui.PopStyleVar()
        end
    imgui.End()
end
 
  • Нравится
Реакции: sVor