Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

D3AMWYT

Участник
72
12
PlayerNick, PlayerId, PlayerText = text:match('Жалоба от (.*)%[(%d*)%]: (.*)') -- то что в скобках ты записываешь в сейв %[ -это ты экранируешь
Должно работать, а дальше уж создаешь общую переменную local PlayerNick, PlayerId, PlayerText = '', '', '' при загрузке становятся пустыми и юзаешь каждая жб будет обновлять их. можно заюзать table.insert что бы запомнить все и записать в таб
 

Dmitriy Makarov

25.05.2021
Проверенный
2,478
1,113
Какой код на ImGui, чтобы вот в окне ИмГуи было окошечко, куда нужно нажать комбинацию. Ну типо:
----------
|Alt + F | - /taxilist
----------
И вот получается когда нажимаешь другую комбинацию, то эта комбинация менялась в этом окне
 

Double Tap Inside

Известный
Проверенный
1,898
1,253
Как в imgui адекватно сделать шоб окно имгуя закрывалось по Эскейпу?
 

D3AMWYT

Участник
72
12
Как в imgui адекватно сделать шоб окно имгуя закрывалось по Эскейпу?
Lua:
function onWindowMessage(msg, wparam, lparam)
    if msg == 0x100 or msg == 0x101 then
        if (wparam == 0x1B and main_window_state.v) and not isPauseMenuActive() then -- и тут не забудь переменную поменять, 0x1B это VK_ESCAPE
            consumeWindowMessage(true, false)
            if msg == 0x101 then
                main_window_state.v = false -- тут переменнаяя твоего окна
                                imgui.Process = false
            end
        end
    end
end
 
  • Влюблен
Реакции: Double Tap Inside

sanders

Потрачен
253
126
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как юзать imgui.CheckBox(u8'Штука', php) - сворачивается имГуи
Code:
local php = imgui.ImBool(false) -- false выключен, true включен (по дефолтку)
imgui.CheckBox('Checkbox', php)
Если тебе нужны какие-то действия, то...
Lua:
if php == true then -- если активен(стоит галочка, то действие)
-- body
end
 

MyRaXa229229

Участник
90
0
Код:
if weapon == 0 then
            lua_thread.create(function()
                wait(0)
                sampSendChat("/mn")
                sampSendDialogResponse(27, 1, 5, 0)
                wait(100)
                sampSetCurrentDialogEditboxText(string.format("%d дм", dmgid), -1)
                sampCloseCurrentDialogWithButton(1)
                wait(30000)
                return false
            end)
        end
Написал код на дм кулаком, как сделать что б скрипт писал только один раз и не повторял это каждые 30 секунд
Получается у меня щас меня чел ударил 3 раза оно и повторяет 3 раза, хочу что бы было меня чел ударил прошел репорт след разы как он меня бьёт ничего не происходит но после 30 сек если он опять ударит репорт
 
Последнее редактирование:

sanders

Потрачен
253
126
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
if weapon == 0 then
            lua_thread.create(function()
                wait(0)
                sampSendChat("/mn")
                sampSendDialogResponse(27, 1, 5, 0)
                wait(100)
                sampSetCurrentDialogEditboxText(string.format("%d дм", dmgid), -1)
                sampCloseCurrentDialogWithButton(1)
                wait(30000)
                return false
            end)
        end
Написал код на дм кулаком, как сделать что б скрипт писал только один раз и не повторял это каждые 30 секунд
Получается у меня щас меня чел ударил 3 раза оно и повторяет 3 раза, хочу что бы было меня чел ударил прошел репорт след разы как он меня бьёт ничего не происходит но после 30 сек если он опять ударит репорт
Используешь поток не правильно
Поток = беск цикл
Lua:
if weapon == 0 then
                sampSendChat("/mn")
                sampSendDialogResponse(27, 1, 5, 0)
              lua_thread.create(function()
                wait(100)
                sampSetCurrentDialogEditboxText(string.format("%d дм", dmgid), -1)
                sampCloseCurrentDialogWithButton(1)
                wait(30000)
                 end)
                return false
        end
За табуляцию сорри, с телефона
 

MyRaXa229229

Участник
90
0
Используешь поток не правильно
Поток = беск цикл
Lua:
if weapon == 0 then
                sampSendChat("/mn")
                sampSendDialogResponse(27, 1, 5, 0)
              lua_thread.create(function()
                wait(100)
                sampSetCurrentDialogEditboxText(string.format("%d дм", dmgid), -1)
                sampCloseCurrentDialogWithButton(1)
                wait(30000)
                 end)
                return false
        end
За табуляцию сорри, с телефона
Все равно после каждого удара кулаком отпраялется репорт, нужно что б на 1 удар репорт и в протяжении 30 сек уже не отправляло, прошло 30 сек и удар отправило и потом опять не отправляет в течении 30 сек
 

[SA ARZ]

Известный
390
8
как сделать чтоб это imgui окно делалось больше - если человек в финде 10 и выше?

codeFind:
function callNewFind()
    btn_size = imgui.ImVec2(-0.1, 20)
    allcols = (colWork-1)
    sw, sh = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(750, 300), imgui.Cond.FirstUseEver)
    imgui.Begin(u8"Сотрудников "..mArmy..u8" в штате сейчас "..allcols..u8" чел.", newFind, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoSavedSettings)
    imgui.Columns(5)
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Игровой ник[ID]') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Название ранга') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 130) imgui.Text(u8'Номер телефона') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 190) imgui.Text(u8'Дополнительное') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Управление') imgui.NextColumn()
    imgui.Columns(1)
    imgui.Separator()
    if #logTextFind > 0 then
        for k, TextFind in ipairs(logTextFind) do
            nick, zrang, nrang, phone, afk = TextFind:match('(.*)|(.*)|(.*)|(.*)|(.*)')
            imgui.Columns(5)
            NickName, ID = string.match(nick, "(.*)%[(.+)%]")
            imgui.SetColumnWidth(-1, 150) imgui.Text(NickName..'['..ID..']') imgui.NextColumn()
            if zrang:find("]:") then
                tag, NewRangFind = string.match(zrang, "%[(.+)%]: (.+)")
            elseif zrang:find("]") then
                tag, NewRangFind = string.match(zrang, "%[(.+)%] (.+)")
            else
                NewRangFind = zrang
            end
            imgui.SetColumnWidth(-1, 150) imgui.Text(u8(NewRangFind).."("..nrang..")") imgui.NextColumn()
            imgui.SetColumnWidth(-1, 130) if imgui.Selectable(phone..'##'..phone) then
                imgui.OpenPopup(fa.ICON_USER..u8' '..phone..'##'..phone)
            end
            imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2 - 100, sh - 600), imgui.ImVec2(0.5, 0.5))
            if imgui.BeginPopupModal(fa.ICON_USER..u8' '..phone..'##'..phone, _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove) then
                if imgui.Button(u8' Позвонить', btn_size) then
                    sampSendChat("/call "..phone)
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(u8' Написать SMS', btn_size) then
                    sampSetChatInputEnabled(true)
                    sampSetChatInputText("/sms "..phone.." ")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(fa.ICON_WINDOW_CLOSE..u8' Закрыть меню', btn_size) then
                    imgui.CloseCurrentPopup()
                end
                imgui.EndPopup()
            end imgui.NextColumn()
            imgui.SetColumnWidth(-1, 190) imgui.Text(u8(afk)) imgui.NextColumn()
            imgui.SetColumnWidth(-1, 130) if imgui.Selectable(u8'Действие##'..phone) then
                if NumRangPlayer >= 8 then
                    imgui.OpenPopup(fa.ICON_USER..u8' '..NickName..'##'..phone)
                else
                    sampAddChatMessage("[{FF8800}MultiAHK{F5FFFA}]: У Вас нет доступа к данному разделу. Ваш текущий уровень доступа: {"..colororgs.."}"..NumRangPlayer, 0xF5FFFA)
                    sampAddChatMessage("[{FF8800}MultiAHK{F5FFFA}]: Для данного раздела требуется уровень доступа: {"..colororgs.."}8 и Выше.", 0xF5FFFA)
                    SoundDENIED()
                end
            end
            imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2 + 350, sh - 600), imgui.ImVec2(0.5, 0.5))
            if imgui.BeginPopupModal(fa.ICON_USER..u8' '..NickName..'##'..phone, _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove) then
                if imgui.Button(u8' Позвать в рацию', btn_size) then
                    sampSendChat("/r "..zrang.." "..string.gsub(NickName, '_', ' ')..", приём...")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(u8' Уволить сотрудника', btn_size) then
                    sampSetChatInputEnabled(true)
                    sampSetChatInputText("/uninvite "..ID.." ")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(fa.ICON_WINDOW_CLOSE..u8' Закрыть меню', btn_size) then
                    imgui.CloseCurrentPopup()
                end
                imgui.EndPopup()
            end
            imgui.NextColumn()
            imgui.Columns(1)
            imgui.Separator()
        end
        if imgui.Button(u8" Закрыть список сотрудников", btn_size) then
            newFind.v = false
        end
    else
        imgui.Text(u8"Журнал сотрудников пустой ...")
    end
    imgui.End()
end
 

Janessic

Новичок
1
0
как сделать чтоб это imgui окно делалось больше - если человек в финде 10 и выше?

codeFind:
function callNewFind()
    btn_size = imgui.ImVec2(-0.1, 20)
    allcols = (colWork-1)
    sw, sh = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(750, 300), imgui.Cond.FirstUseEver)
    imgui.Begin(u8"Сотрудников "..mArmy..u8" в штате сейчас "..allcols..u8" чел.", newFind, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoSavedSettings)
    imgui.Columns(5)
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Игровой ник[ID]') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Название ранга') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 130) imgui.Text(u8'Номер телефона') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 190) imgui.Text(u8'Дополнительное') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Управление') imgui.NextColumn()
    imgui.Columns(1)
    imgui.Separator()
    if #logTextFind > 0 then
        for k, TextFind in ipairs(logTextFind) do
            nick, zrang, nrang, phone, afk = TextFind:match('(.*)|(.*)|(.*)|(.*)|(.*)')
            imgui.Columns(5)
            NickName, ID = string.match(nick, "(.*)%[(.+)%]")
            imgui.SetColumnWidth(-1, 150) imgui.Text(NickName..'['..ID..']') imgui.NextColumn()
            if zrang:find("]:") then
                tag, NewRangFind = string.match(zrang, "%[(.+)%]: (.+)")
            elseif zrang:find("]") then
                tag, NewRangFind = string.match(zrang, "%[(.+)%] (.+)")
            else
                NewRangFind = zrang
            end
            imgui.SetColumnWidth(-1, 150) imgui.Text(u8(NewRangFind).."("..nrang..")") imgui.NextColumn()
            imgui.SetColumnWidth(-1, 130) if imgui.Selectable(phone..'##'..phone) then
                imgui.OpenPopup(fa.ICON_USER..u8' '..phone..'##'..phone)
            end
            imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2 - 100, sh - 600), imgui.ImVec2(0.5, 0.5))
            if imgui.BeginPopupModal(fa.ICON_USER..u8' '..phone..'##'..phone, _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove) then
                if imgui.Button(u8' Позвонить', btn_size) then
                    sampSendChat("/call "..phone)
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(u8' Написать SMS', btn_size) then
                    sampSetChatInputEnabled(true)
                    sampSetChatInputText("/sms "..phone.." ")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(fa.ICON_WINDOW_CLOSE..u8' Закрыть меню', btn_size) then
                    imgui.CloseCurrentPopup()
                end
                imgui.EndPopup()
            end imgui.NextColumn()
            imgui.SetColumnWidth(-1, 190) imgui.Text(u8(afk)) imgui.NextColumn()
            imgui.SetColumnWidth(-1, 130) if imgui.Selectable(u8'Действие##'..phone) then
                if NumRangPlayer >= 8 then
                    imgui.OpenPopup(fa.ICON_USER..u8' '..NickName..'##'..phone)
                else
                    sampAddChatMessage("[{FF8800}MultiAHK{F5FFFA}]: У Вас нет доступа к данному разделу. Ваш текущий уровень доступа: {"..colororgs.."}"..NumRangPlayer, 0xF5FFFA)
                    sampAddChatMessage("[{FF8800}MultiAHK{F5FFFA}]: Для данного раздела требуется уровень доступа: {"..colororgs.."}8 и Выше.", 0xF5FFFA)
                    SoundDENIED()
                end
            end
            imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2 + 350, sh - 600), imgui.ImVec2(0.5, 0.5))
            if imgui.BeginPopupModal(fa.ICON_USER..u8' '..NickName..'##'..phone, _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove) then
                if imgui.Button(u8' Позвать в рацию', btn_size) then
                    sampSendChat("/r "..zrang.." "..string.gsub(NickName, '_', ' ')..", приём...")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(u8' Уволить сотрудника', btn_size) then
                    sampSetChatInputEnabled(true)
                    sampSetChatInputText("/uninvite "..ID.." ")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(fa.ICON_WINDOW_CLOSE..u8' Закрыть меню', btn_size) then
                    imgui.CloseCurrentPopup()
                end
                imgui.EndPopup()
            end
            imgui.NextColumn()
            imgui.Columns(1)
            imgui.Separator()
        end
        if imgui.Button(u8" Закрыть список сотрудников", btn_size) then
            newFind.v = false
        end
    else
        imgui.Text(u8"Журнал сотрудников пустой ...")
    end
    imgui.End()
end
Добавить флаг imgui.AlwaysAutoResize или поместить нужную информацию в imgui.BeginChild, чтобы использовать ScrollBar.
 

Raymond

Известный
206
86
как сделать чтоб это imgui окно делалось больше - если человек в финде 10 и выше?

codeFind:
function callNewFind()
    btn_size = imgui.ImVec2(-0.1, 20)
    allcols = (colWork-1)
    sw, sh = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(750, 300), imgui.Cond.FirstUseEver)
    imgui.Begin(u8"Сотрудников "..mArmy..u8" в штате сейчас "..allcols..u8" чел.", newFind, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoSavedSettings)
    imgui.Columns(5)
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Игровой ник[ID]') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Название ранга') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 130) imgui.Text(u8'Номер телефона') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 190) imgui.Text(u8'Дополнительное') imgui.NextColumn()
    imgui.SetColumnWidth(-1, 150) imgui.Text(u8'Управление') imgui.NextColumn()
    imgui.Columns(1)
    imgui.Separator()
    if #logTextFind > 0 then
        for k, TextFind in ipairs(logTextFind) do
            nick, zrang, nrang, phone, afk = TextFind:match('(.*)|(.*)|(.*)|(.*)|(.*)')
            imgui.Columns(5)
            NickName, ID = string.match(nick, "(.*)%[(.+)%]")
            imgui.SetColumnWidth(-1, 150) imgui.Text(NickName..'['..ID..']') imgui.NextColumn()
            if zrang:find("]:") then
                tag, NewRangFind = string.match(zrang, "%[(.+)%]: (.+)")
            elseif zrang:find("]") then
                tag, NewRangFind = string.match(zrang, "%[(.+)%] (.+)")
            else
                NewRangFind = zrang
            end
            imgui.SetColumnWidth(-1, 150) imgui.Text(u8(NewRangFind).."("..nrang..")") imgui.NextColumn()
            imgui.SetColumnWidth(-1, 130) if imgui.Selectable(phone..'##'..phone) then
                imgui.OpenPopup(fa.ICON_USER..u8' '..phone..'##'..phone)
            end
            imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2 - 100, sh - 600), imgui.ImVec2(0.5, 0.5))
            if imgui.BeginPopupModal(fa.ICON_USER..u8' '..phone..'##'..phone, _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove) then
                if imgui.Button(u8' Позвонить', btn_size) then
                    sampSendChat("/call "..phone)
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(u8' Написать SMS', btn_size) then
                    sampSetChatInputEnabled(true)
                    sampSetChatInputText("/sms "..phone.." ")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(fa.ICON_WINDOW_CLOSE..u8' Закрыть меню', btn_size) then
                    imgui.CloseCurrentPopup()
                end
                imgui.EndPopup()
            end imgui.NextColumn()
            imgui.SetColumnWidth(-1, 190) imgui.Text(u8(afk)) imgui.NextColumn()
            imgui.SetColumnWidth(-1, 130) if imgui.Selectable(u8'Действие##'..phone) then
                if NumRangPlayer >= 8 then
                    imgui.OpenPopup(fa.ICON_USER..u8' '..NickName..'##'..phone)
                else
                    sampAddChatMessage("[{FF8800}MultiAHK{F5FFFA}]: У Вас нет доступа к данному разделу. Ваш текущий уровень доступа: {"..colororgs.."}"..NumRangPlayer, 0xF5FFFA)
                    sampAddChatMessage("[{FF8800}MultiAHK{F5FFFA}]: Для данного раздела требуется уровень доступа: {"..colororgs.."}8 и Выше.", 0xF5FFFA)
                    SoundDENIED()
                end
            end
            imgui.SetNextWindowSize(imgui.ImVec2(200, 100), imgui.Cond.FirstUseEver)
            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2 + 350, sh - 600), imgui.ImVec2(0.5, 0.5))
            if imgui.BeginPopupModal(fa.ICON_USER..u8' '..NickName..'##'..phone, _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove) then
                if imgui.Button(u8' Позвать в рацию', btn_size) then
                    sampSendChat("/r "..zrang.." "..string.gsub(NickName, '_', ' ')..", приём...")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(u8' Уволить сотрудника', btn_size) then
                    sampSetChatInputEnabled(true)
                    sampSetChatInputText("/uninvite "..ID.." ")
                    imgui.CloseCurrentPopup()
                end
                if imgui.Button(fa.ICON_WINDOW_CLOSE..u8' Закрыть меню', btn_size) then
                    imgui.CloseCurrentPopup()
                end
                imgui.EndPopup()
            end
            imgui.NextColumn()
            imgui.Columns(1)
            imgui.Separator()
        end
        if imgui.Button(u8" Закрыть список сотрудников", btn_size) then
            newFind.v = false
        end
    else
        imgui.Text(u8"Журнал сотрудников пустой ...")
    end
    imgui.End()
end
imgui.Begin(u8"Сотрудников "..mArmy..u8" в штате сейчас "..allcols..u8" чел.", newFind, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoSavedSettings + imgui.WindowFlags.AlwaysAutoResize)
 
  • Нравится
Реакции: sanders

|DEVIL|

Известный
359
273
Как можно имитировать нажатие мышкой по определённому месту?