Lua- Выдача скина игроку в окне mimgui

Kirito Ackerman

Новичок
Автор темы
3
0
Доброго времени суток Уважаемые пользователи. Написал небольшой скрипт на mimgui на выдачу скина. Скрипт работает на выдачу скина себе, как подправить что бы скин мог выдавать другому игроку, т.е. при нажатии на скин выводилось диологовое окно с вводом id игрока которому хочу выдать скин. Спасибо за помощь заранее.
Lua:
 if imgui.InputText("##searchSkin", skin_search, sizeof(skin_search)) then
                    for _, i in pairs(skins_keys) do
                        imgui.SetCursorPos(imgui.ImVec2(posvehx, posvehy))
                        imgui.BeginChild("##skinZone" .. i, imgui.ImVec2(50, 80))
                        imgui.EndChild()

                        if imgui.IsItemClicked() then
                            local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
                            sampSendChat(string.format("/skin %d %d", id, i))
                            renderWindow[0] = true
                        end

                        imgui.SetCursorPos(imgui.ImVec2(posvehx, posvehy))
                        imgui.Image(tSkin[i], imgui.ImVec2(50, 80))

                        if imgui.IsItemHovered() then
                            imgui.SetCursorPos(imgui.ImVec2(posvehx, posvehy))
                            imgui.Image(tSkin[i], imgui.ImVec2(55, 85))
                            imgui.BeginTooltip()
                                imgui.TextUnformatted(string.format(u8"Название: %s | ID: %d", skins[i], i))
                            imgui.EndTooltip()
                        end

                        imgui.SetCursorPos(imgui.ImVec2(postextx, postexty))
                        imgui.Text(string.format("%s [%d]", skins[i], i))

                        postextx = postextx + 145
                        posvehx = posvehx + 145
                        kl = kl + 1

                        if kl > 2 then
                            kl = 0
                            posvehx = 5
                            postextx = 10
                            posvehy = posvehy + 110
                            postexty = posvehy + 90
                        end
                    end
                else
                    for _, i in pairs(skins_keys) do
                        if string.find(i, str(skin_search)) then
                            imgui.SetCursorPos(imgui.ImVec2(posvehx, posvehy))
                            imgui.BeginChild("##skinZone" .. i, imgui.ImVec2(50, 80))
                            imgui.EndChild()

                            if imgui.IsItemClicked() then
                                local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
                                sampSendChat(string.format("/skin %d %d", id, i))
                                renderWindow[0] = true
                            end

                            imgui.SetCursorPos(imgui.ImVec2(posvehx, posvehy))
                            imgui.Image(tSkin[i], imgui.ImVec2(50, 80))

                            if imgui.IsItemHovered() then
                                imgui.SetCursorPos(imgui.ImVec2(posvehx, posvehy))
                                imgui.Image(tSkin[i], imgui.ImVec2(55, 85))
                                imgui.BeginTooltip()
                                    imgui.TextUnformatted(string.format(u8"Название: %s | ID: %d", skins[i], i))
                                imgui.EndTooltip()
                            end

                            imgui.SetCursorPos(imgui.ImVec2(postextx, postexty))
                            imgui.Text(string.format("%s [%d]", skins[i], i))

                            postextx = postextx + 145
                            posvehx = posvehx + 145
                            kl = kl + 1

                            if kl > 2 then
                                kl = 0
                                posvehx = 5
                                postextx = 10
                                posvehy = posvehy + 110
                                postexty = posvehy + 90
                            end
                        end
                    end
                end
 
Решение
Внутри этого скилета?


В мыслях реализации было изменить строки с 7 по 11 на выдачу скина по id игрока, не могу сообразить на какой код поменять, соориентируй пожалуйста


Главный ответ, который волнует тебя и других. Что бы в игре не уходить в афк и смотреть скины и авто которые необходимы) для адм очень удобно когда репорт флудит
Lua:
local buff_id = imgui.ImInt(-1)
imgui.InputInt('Player id:', buff_id)

Lua:
if imgui.IsItemClicked() then
    local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    sampSendChat(string.format("/skin %d %d", buff_id >= 0 and buff_id or id, i))
    renderWindow[0] = true
end

Fott

Простреленный
3,461
2,378
Создай еще один инпут и вводи туда ид игрока и при нажатии проверяй введен ли ид, если нет - выдаешь себе, если да - содержимому инпута, это будет разумнее чем создавать диалог.
 

Kirito Ackerman

Новичок
Автор темы
3
0
Создай еще один инпут и вводи туда ид игрока и при нажатии проверяй введен ли ид, если нет - выдаешь себе, если да - содержимому инпута, это будет разумнее чем создавать диалог.
Внутри этого скилета?

Создай еще один инпут и вводи туда ид игрока и при нажатии проверяй введен ли ид, если нет - выдаешь себе, если да - содержимому инпута, это будет разумнее чем создавать диалог.
В мыслях реализации было изменить строки с 7 по 11 на выдачу скина по id игрока, не могу сообразить на какой код поменять, соориентируй пожалуйста

А теперь главный вопрос, который всех так волнует: а нахера, если есть уже сотни таких скриптов?
Если ты скажешь, что это только из-за имгуи, то я тебе скажу:
И другие сайт
Или я чего-то не пойму?
Главный ответ, который волнует тебя и других. Что бы в игре не уходить в афк и смотреть скины и авто которые необходимы) для адм очень удобно когда репорт флудит
 

Fott

Простреленный
3,461
2,378
Внутри этого скилета?


В мыслях реализации было изменить строки с 7 по 11 на выдачу скина по id игрока, не могу сообразить на какой код поменять, соориентируй пожалуйста


Главный ответ, который волнует тебя и других. Что бы в игре не уходить в афк и смотреть скины и авто которые необходимы) для адм очень удобно когда репорт флудит
Lua:
local buff_id = imgui.ImInt(-1)
imgui.InputInt('Player id:', buff_id)

Lua:
if imgui.IsItemClicked() then
    local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    sampSendChat(string.format("/skin %d %d", buff_id >= 0 and buff_id or id, i))
    renderWindow[0] = true
end
 

Kirito Ackerman

Новичок
Автор темы
3
0
Lua:
local buff_id = imgui.ImInt(-1)
imgui.InputInt('Player id:', buff_id)

Lua:
if imgui.IsItemClicked() then
    local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    sampSendChat(string.format("/skin %d %d", buff_id >= 0 and buff_id or id, i))
    renderWindow[0] = true
end
Хорошо, спасибо, попробую, открой со мной диалог пожалуйста, есть пару вопросов, пожалуйста.

Lua:
local buff_id = imgui.ImInt(-1)
imgui.InputInt('Player id:', buff_id)

Lua:
if imgui.IsItemClicked() then
    local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    sampSendChat(string.format("/skin %d %d", buff_id >= 0 and buff_id or id, i))
    renderWindow[0] = true
end
Ругается на локальную переменную, её вне процесса нужно записывать?

Закрыто, огромное спасибо @Fott за помощь и разжевывание деталей, огромный респект тебе!
 
Последнее редактирование: