Редактирование массива через имгуи.

Gat

Участник
Автор темы
52
6
Версия MoonLoader
.026-beta
Привет!

Я создал команду, которая собирает в массив ники и айдишники игроков в определенном радиусе, а далее активируется имгуи окно и выводится этот список. Код:
Lua:
-- main()
sampRegisterChatCommand('rtp', function(arg)
            if arg ~= nil and #arg > 0 and arg ~= '' and arg:match('%d+') then
                tplist = {}
                local tp_id
                local tp_nick
                local ptp_X, ptp_Y, ptp_Z
                local tp_x, tp_y, tp_z
                lua_thread.create(function()
                    for k, char in pairs(getAllChars()) do
                        if doesCharExist(char) and char ~= PLAYER_PED then
                            _, tp_id = sampGetPlayerIdByCharHandle(char)
                            if tp_id ~= -1 then
                                tp_nick = sampGetPlayerNickname(tp_id)
                                ptp_X, ptp_Y, ptp_Z = getCharCoordinates(PLAYER_PED)
                                tp_x, tp_y, tp_z = getCharCoordinates(char)
                                local bwtp_dist = getDistanceBetweenCoords3d(ptp_X, ptp_Y, ptp_Z, tp_x, tp_y, tp_z)
                                if bwtp_dist <= tonumber(arg) then
                                    table.insert(tplist, {tp_id, tp_nick})
                                end
                            end
                        end
                    end
                    if #tplist > 0 then
                        tp_window.v = true
                        imgui.Process = true
                    else
                        sampAddChatMessage(tag..'{ffffff}В радиусе нет ни одного игрока!', color1)
                    end
                end)
            else
                sampAddChatMessage(tag..'{ffffff}Введи /rtp <радиус в метрах>', color1)
            end
        end)
        
        -- imgui.OnDrawFrame()
        
        if tp_window.v then
            imgui.Begin('tp list', tp_window, imgui.WindowFlags.AlwaysAutoResize)
            for i = 1, #tplist do
                local remove_pos = i
                imgui.Text(string.format( "%s[%s]",tplist[i][2], tplist[i][1]))
                imgui.SameLine()
                if imgui.Button(u8'Удалить') then
                --    table.remove( tplist, remove_pos)
                    sampAddChatMessage(string.format( "%s[%s]", tplist[i][2], tplist[i][1]), -1)
                end
            end
            imgui.End()
        end

Само окно:
dVO83Yp.png


Рядом с текстом рисуется кнопка, которая по идее должна удалять соответствующую строчку. Но нажимается только кнопка с первой строчки, на остальные имгуи не реагирует. Также хочу решить проблему с удалением соответствующего элемента из массива при нажатии по кнопке.
Буду благодарен за помощь)
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,806
  • Нравится
Реакции: Gat