Вопросы по 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
 
Последнее редактирование:

Wei Huang

Участник
21
0
Готовых топиков, посвящённых именно диалогам не знаю, поищи на бх по названиям функций, либо же задай тут конкретный вопрос по поводу определённой функции.
Понял Окей, мне просто нужно работать с статистикой персонажа, там материалы например.
 

Neon3333

Известный
181
71
Понял Окей, мне просто нужно работать с статистикой персонажа, там материалы например.
Есть событие
Lua:
onShowDialog(id, style, title, btn1, btn2, text)

Если тебе, допустим, необходимо получить какие-то данные, то:
1. Узнаешь ид нужного тебе диалога.
2. Проверяешь, тот ли диалог сейчас открыт.
3. Парсишь с помощью
Lua:
text:match("шаблон") (или же string.match(text, "шаблон"))
необходимые тебе данные
 

Иллидан

Новичок
4
0
я думаю лучше хранить список в таблице и перебирать её for`ом
это код функции)
просто без function Button1_OnClick() и end в начале и конце.

GetNumWhoResults() - это результаты запроса игроков в сети(любых) который отображается в виде списка, в котором у каждого игрока есть имя.

А цикл перебирает этот список имён по порядку, через
c,g=GetWhoInfo(i); где с это переменная в которую помещается 1 имя за шаг цикла, а i это порядковый номер имени в списке.
myMacro - как временный динамический контейнер, в который мне нужно помещать этот список имён игроков через цикл, через строку и перед именем в начале каждой строки добавить текст "/пригласить", тоесть что бы цикл создавал список, в котором каждая строка начинается на "/пригласить" и заканчивается именем получаемым из переменной c

список игроков из GetNumWhoResults() при выполнении этой функции, каждый раз меняется, т.к. это список онлайн-игроков

это всё находится на 1 кнопке, а после нажатия по ней создаётся текстовый список, который помещается в myMacro и далее, по нижнему коду, создаётся фрейм отдельной кнопки(макрос) при нажатии которой, текст из myMacro обрабатывается и выполняется движком игры, на защищённом уровне, как если бы это была не модификация а родная часть клиента
+, лучше хранить в txt файле, а в коде записать его в таблицу и перебирать for`om.
можно пример, как это сделать?
Просто список имён игроков берётся сразу в игре из её же интерфейса и всё время обновляется, т.к. онлайн игроки меняются.
 

KashMar

Новичок
22
1
Ребят, есть какой-то сервер, чде модно выводить сообщения в чат? Мне нужно проверить работоспособность в sampev.onServerMessage. Или как это можно сделать? Просто на том сервере куда я это делаю, событие происходит очень редко.
 

ufdhbi

Известный
Проверенный
1,460
866
Ребят, есть какой-то сервер, чде модно выводить сообщения в чат? Мне нужно проверить работоспособность в sampev.onServerMessage. Или как это можно сделать? Просто на том сервере куда я это делаю, событие происходит очень редко.
Сам посылай искомую строчку в чат
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,809
Ребят, есть какой-то сервер, чде модно выводить сообщения в чат? Мне нужно проверить работоспособность в sampev.onServerMessage. Или как это можно сделать? Просто на том сервере куда я это делаю, событие происходит очень редко.
Эмулируй приходящее рпц
 

NoName_001

Участник
152
21
1. Можно ли сделать imgui.CollapsingHeader сразу развернутым(ну или как то воздействовать на него, чтобы можно было через ини сохранять его активность/пассивность)?

2. Как в printstring использовать русские символы?

3. Как сделать в данном коде
Lua:
imgui.OnFrame(function() return ckWallhack[0] and not isGamePaused() and isSampAvailable() and #getAllChars() > 1 end, function()
    theme()
    size = #getAllChars()
    imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0, 0, 0, 0.25))
    imgui.SetNextWindowSize(imgui.ImVec2(200,size))
    imgui.Begin(u8'Список игроков в зоне стрима:')
    local peds = getAllChars()
    for z, v in pairs(peds) do
        local result2, idmwh = sampGetPlayerIdByCharHandle(v)
        if result2 and idmwh ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then
            local exists, handle = sampGetCharHandleBySampPlayerId(idmwh)
            if doesCharExist(handle) then
                local color = sampGetPlayerColor(idmwh)
                if color == 5.53648127e8 then color = 0x99FDFDFD end -- white
                if color == 8025703 then color = 0xFF3333 end -- mask
                if color == 33554432 or color == 419430400 or color == 385875968 then color = 0x90000000 end -- spy-fbi
                local name = sampGetPlayerNickname(idmwh)
                local X, Y, Z = getCharCoordinates(handle)
                local x, y = convert3DCoordsToScreen(X, Y, Z)
                if not sampIsPlayerPaused(idmwh) then
                    imgui.Text(name..'['..idmwh..']')
                else
                    imgui.Text(name..'['..idmwh..'] (AFK)')
                end
            end
        end
    end
    imgui.End()
end).HideCursor = true
автоматический выбор размера(т.е чем больше imgui.Text(), тем больше окно)?
 

ufdhbi

Известный
Проверенный
1,460
866
Это как, можно пример?
Lua:
function emul_server_message(color, msg)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt32(bs, color)
    raknetBitStreamWriteInt32(bs, msg:len())
    raknetBitStreamWriteString(bs, msg)
    raknetEmulRpcReceiveBitStream(93, bs)
end
1. Можно ли сделать imgui.CollapsingHeader сразу развернутым(ну или как то воздействовать на него, чтобы можно было через ини сохранять его активность/пассивность)?

2. Как в printstring использовать русские символы?

3. Как сделать в данном коде
Lua:
imgui.OnFrame(function() return ckWallhack[0] and not isGamePaused() and isSampAvailable() and #getAllChars() > 1 end, function()
    theme()
    size = #getAllChars()
    imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0, 0, 0, 0.25))
    imgui.SetNextWindowSize(imgui.ImVec2(200,size))
    imgui.Begin(u8'Список игроков в зоне стрима:')
    local peds = getAllChars()
    for z, v in pairs(peds) do
        local result2, idmwh = sampGetPlayerIdByCharHandle(v)
        if result2 and idmwh ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then
            local exists, handle = sampGetCharHandleBySampPlayerId(idmwh)
            if doesCharExist(handle) then
                local color = sampGetPlayerColor(idmwh)
                if color == 5.53648127e8 then color = 0x99FDFDFD end -- white
                if color == 8025703 then color = 0xFF3333 end -- mask
                if color == 33554432 or color == 419430400 or color == 385875968 then color = 0x90000000 end -- spy-fbi
                local name = sampGetPlayerNickname(idmwh)
                local X, Y, Z = getCharCoordinates(handle)
                local x, y = convert3DCoordsToScreen(X, Y, Z)
                if not sampIsPlayerPaused(idmwh) then
                    imgui.Text(name..'['..idmwh..']')
                else
                    imgui.Text(name..'['..idmwh..'] (AFK)')
                end
            end
        end
    end
    imgui.End()
end).HideCursor = true
автоматический выбор размера(т.е чем больше imgui.Text(), тем больше окно)?
1. imgui.CollapsingHeader("Test", true)
2. В полезных сниппетах выкладывали функцию для конвертации
3. imgui.Begin(u8'Список игроков в зоне стрима:', ckWallhack, imgui.WindowFlags.AlwaysAutoResize)
 
  • Нравится
Реакции: NoName_001

Neon3333

Известный
181
71
1. Можно ли сделать imgui.CollapsingHeader сразу развернутым(ну или как то воздействовать на него, чтобы можно было через ини сохранять его активность/пассивность)?

2. Как в printstring использовать русские символы?

3. Как сделать в данном коде
Lua:
imgui.OnFrame(function() return ckWallhack[0] and not isGamePaused() and isSampAvailable() and #getAllChars() > 1 end, function()
    theme()
    size = #getAllChars()
    imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0, 0, 0, 0.25))
    imgui.SetNextWindowSize(imgui.ImVec2(200,size))
    imgui.Begin(u8'Список игроков в зоне стрима:')
    local peds = getAllChars()
    for z, v in pairs(peds) do
        local result2, idmwh = sampGetPlayerIdByCharHandle(v)
        if result2 and idmwh ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then
            local exists, handle = sampGetCharHandleBySampPlayerId(idmwh)
            if doesCharExist(handle) then
                local color = sampGetPlayerColor(idmwh)
                if color == 5.53648127e8 then color = 0x99FDFDFD end -- white
                if color == 8025703 then color = 0xFF3333 end -- mask
                if color == 33554432 or color == 419430400 or color == 385875968 then color = 0x90000000 end -- spy-fbi
                local name = sampGetPlayerNickname(idmwh)
                local X, Y, Z = getCharCoordinates(handle)
                local x, y = convert3DCoordsToScreen(X, Y, Z)
                if not sampIsPlayerPaused(idmwh) then
                    imgui.Text(name..'['..idmwh..']')
                else
                    imgui.Text(name..'['..idmwh..'] (AFK)')
                end
            end
        end
    end
    imgui.End()
end).HideCursor = true
автоматический выбор размера(т.е чем больше imgui.Text(), тем больше окно)?
Тебе нужно
1. Можно ли сделать imgui.CollapsingHeader сразу развернутым(ну или как то воздействовать на него, чтобы можно было через ини сохранять его активность/пассивность)?

2. Как в printstring использовать русские символы?

3. Как сделать в данном коде
Lua:
imgui.OnFrame(function() return ckWallhack[0] and not isGamePaused() and isSampAvailable() and #getAllChars() > 1 end, function()
    theme()
    size = #getAllChars()
    imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0, 0, 0, 0.25))
    imgui.SetNextWindowSize(imgui.ImVec2(200,size))
    imgui.Begin(u8'Список игроков в зоне стрима:')
    local peds = getAllChars()
    for z, v in pairs(peds) do
        local result2, idmwh = sampGetPlayerIdByCharHandle(v)
        if result2 and idmwh ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then
            local exists, handle = sampGetCharHandleBySampPlayerId(idmwh)
            if doesCharExist(handle) then
                local color = sampGetPlayerColor(idmwh)
                if color == 5.53648127e8 then color = 0x99FDFDFD end -- white
                if color == 8025703 then color = 0xFF3333 end -- mask
                if color == 33554432 or color == 419430400 or color == 385875968 then color = 0x90000000 end -- spy-fbi
                local name = sampGetPlayerNickname(idmwh)
                local X, Y, Z = getCharCoordinates(handle)
                local x, y = convert3DCoordsToScreen(X, Y, Z)
                if not sampIsPlayerPaused(idmwh) then
                    imgui.Text(name..'['..idmwh..']')
                else
                    imgui.Text(name..'['..idmwh..'] (AFK)')
                end
            end
        end
    end
    imgui.End()
end).HideCursor = true
автоматический выбор размера(т.е чем больше imgui.Text(), тем больше окно)?
Lua:
imgui.OnFrame(function() return ckWallhack[0] and not isGamePaused() and isSampAvailable() and #getAllChars() > 1 end, function()
    theme()
    size = #getAllChars()
    imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0, 0, 0, 0.25))
    imgui.SetNextWindowSize(imgui.ImVec2(width,height))
    imgui.Begin(u8'Список игроков в зоне стрима:')
    local peds = getAllChars()
    for z, v in pairs(peds) do
        local result2, idmwh = sampGetPlayerIdByCharHandle(v)
        if result2 and idmwh ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then
            local exists, handle = sampGetCharHandleBySampPlayerId(idmwh)
            if doesCharExist(handle) then
                local color = sampGetPlayerColor(idmwh)
                if color == 5.53648127e8 then color = 0x99FDFDFD end -- white
                if color == 8025703 then color = 0xFF3333 end -- mask
                if color == 33554432 or color == 419430400 or color == 385875968 then color = 0x90000000 end -- spy-fbi
                local name = sampGetPlayerNickname(idmwh)
                local X, Y, Z = getCharCoordinates(handle)
                local x, y = convert3DCoordsToScreen(X, Y, Z)
                if sampIsPlayerPaused(idmwh) then status = "(AFK)" else status = "" end
                    local text = name..'['..idmwh..'] '..status
                    imgui.Text(text)
                    width = imgui.CalcTextSize(text).x -- переменную width объяви где-то и корректируй как тебе нужно, с учетом CalcTextSize(text).x
                end
            end
        end
    end
    imgui.End()
end).HideCursor = true
 

D.Makarov

Участник
146
3
как сделать активацию командой а не кнопкой помогите пожалуйста ребят
Lua:
result, button, list, input = sampHasDialogRespond(229)
        if result and button == 1 then
            if list == 0 then -- Если выбран 1 пункт то..
                sampSendChat('Здравствуйте, Младший Специалист г. San-Fiero Conor McGregor.')
                wait(1000)
                sampSendChat('Могу я увидеть вашу мед.карту?')
            elseif list == 1 then
                sampSendChat("/me взял мед.карту от человека напротив")
                wait(1000)
                sampSendChat("/anim 21")
                wait(3000)
                sampSendChat('/me осмотрел мед.карту на наличие болезней')
                wait(3000)
                sampSendChat('Прошу вас пройти на весы.')
            elseif list == 2 then
                sampSendChat("/do Какой вес у человека стоящего на весах?")
                wait(1000)
                sampSendChat('/n /do У "Ваше Имя и Фамилия" масса тела "Количество" кг.')
            elseif list == 3 then
                sampSendChat("Теперь измерим рост.")
                wait(1000)
                sampSendChat("/do Какой рост у человека?")
                wait(1000)
                sampSendChat('/n /do У "Ваше Имя и Фамилия" рост "Ваш рост" см.')
            elseif list == 4 then
                sampSendChat("Проведём психологическую проверку.")
                wait(1000)
                sampSendChat("Вы когда-то умирали?")
            elseif list == 5 then
                sampSendChat("Вы будете стрелять во врага который находится в толпе мирных жителей?")
            elseif list == 6 then
                sampSendChat('/me поставил(а) в медицинской карте печать "Годен"')
                wait(1000)
                sampSendChat("Поздравляю, Вы прошли мед. комиссию, проходите дальше.")
            elseif list == 7 then
                sampSendChat("К сожалению, Вы не являетесь годным к службе в армии.")
                wait(1000)
                sampSendChat('/me поставил(а) в медицинской карте печать "Не годен"')
            end
        end

        if isKeyDown(0x02) and isKeyJustPressed(VK_P) then
            sampShowDialog(229, "Мед.Проверка", 'Приветствие \nВзять мед. карту \nВес \nРост \nПроверка на МГ - 1 \nПроверка на МГ - 2 \nГоден \nНе годен \0', "Выбрать", "Закрыть", 2)
        end
 

ufdhbi

Известный
Проверенный
1,460
866
Тебе нужно

Lua:
imgui.OnFrame(function() return ckWallhack[0] and not isGamePaused() and isSampAvailable() and #getAllChars() > 1 end, function()
    theme()
    size = #getAllChars()
    imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0, 0, 0, 0.25))
    imgui.SetNextWindowSize(imgui.ImVec2(width,height))
    imgui.Begin(u8'Список игроков в зоне стрима:')
    local peds = getAllChars()
    for z, v in pairs(peds) do
        local result2, idmwh = sampGetPlayerIdByCharHandle(v)
        if result2 and idmwh ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then
            local exists, handle = sampGetCharHandleBySampPlayerId(idmwh)
            if doesCharExist(handle) then
                local color = sampGetPlayerColor(idmwh)
                if color == 5.53648127e8 then color = 0x99FDFDFD end -- white
                if color == 8025703 then color = 0xFF3333 end -- mask
                if color == 33554432 or color == 419430400 or color == 385875968 then color = 0x90000000 end -- spy-fbi
                local name = sampGetPlayerNickname(idmwh)
                local X, Y, Z = getCharCoordinates(handle)
                local x, y = convert3DCoordsToScreen(X, Y, Z)
                if sampIsPlayerPaused(idmwh) then status = "(AFK)" else status = "" end
                    local text = name..'['..idmwh..'] '..status
                    imgui.Text(text)
                    width = imgui.CalcTextSize(text).x -- переменную width объяви где-то и корректируй как тебе нужно, с учетом CalcTextSize(text).x
                end
            end
        end
    end
    imgui.End()
end).HideCursor = true
Не нужно, окно будет менять размер постоянно
как сделать активацию командой а не кнопкой помогите пожалуйста ребят
Lua:
result, button, list, input = sampHasDialogRespond(229)
        if result and button == 1 then
            if list == 0 then -- Если выбран 1 пункт то..
                sampSendChat('Здравствуйте, Младший Специалист г. San-Fiero Conor McGregor.')
                wait(1000)
                sampSendChat('Могу я увидеть вашу мед.карту?')
            elseif list == 1 then
                sampSendChat("/me взял мед.карту от человека напротив")
                wait(1000)
                sampSendChat("/anim 21")
                wait(3000)
                sampSendChat('/me осмотрел мед.карту на наличие болезней')
                wait(3000)
                sampSendChat('Прошу вас пройти на весы.')
            elseif list == 2 then
                sampSendChat("/do Какой вес у человека стоящего на весах?")
                wait(1000)
                sampSendChat('/n /do У "Ваше Имя и Фамилия" масса тела "Количество" кг.')
            elseif list == 3 then
                sampSendChat("Теперь измерим рост.")
                wait(1000)
                sampSendChat("/do Какой рост у человека?")
                wait(1000)
                sampSendChat('/n /do У "Ваше Имя и Фамилия" рост "Ваш рост" см.')
            elseif list == 4 then
                sampSendChat("Проведём психологическую проверку.")
                wait(1000)
                sampSendChat("Вы когда-то умирали?")
            elseif list == 5 then
                sampSendChat("Вы будете стрелять во врага который находится в толпе мирных жителей?")
            elseif list == 6 then
                sampSendChat('/me поставил(а) в медицинской карте печать "Годен"')
                wait(1000)
                sampSendChat("Поздравляю, Вы прошли мед. комиссию, проходите дальше.")
            elseif list == 7 then
                sampSendChat("К сожалению, Вы не являетесь годным к службе в армии.")
                wait(1000)
                sampSendChat('/me поставил(а) в медицинской карте печать "Не годен"')
            end
        end

        if isKeyDown(0x02) and isKeyJustPressed(VK_P) then
            sampShowDialog(229, "Мед.Проверка", 'Приветствие \nВзять мед. карту \nВес \nРост \nПроверка на МГ - 1 \nПроверка на МГ - 2 \nГоден \nНе годен \0', "Выбрать", "Закрыть", 2)
        end
Lua:
-- пихать в main, до "while true do"
sampRegisterChatCommand("cmd", function() -- cmd - команда, без "/"
    sampShowDialog(229, "Мед.Проверка", 'Приветствие \nВзять мед. карту \nВес \nРост \nПроверка на МГ - 1 \nПроверка на МГ - 2 \nГоден \nНе годен \0', "Выбрать", "Закрыть", 2)
end)
 

Neon3333

Известный
181
71
result, button, list, input = sampHasDialogRespond(229) if result and button == 1 then if list == 0 then -- Если выбран 1 пункт то.. sampSendChat('Здравствуйте, Младший Специалист г. San-Fiero Conor McGregor.') wait(1000) sampSendChat('Могу я увидеть вашу мед.карту?') elseif list == 1 then sampSendChat("/me взял мед.карту от человека напротив") wait(1000) sampSendChat("/anim 21") wait(3000) sampSendChat('/me осмотрел мед.карту на наличие болезней') wait(3000) sampSendChat('Прошу вас пройти на весы.') elseif list == 2 then sampSendChat("/do Какой вес у человека стоящего на весах?") wait(1000) sampSendChat('/n /do У "Ваше Имя и Фамилия" масса тела "Количество" кг.') elseif list == 3 then sampSendChat("Теперь измерим рост.") wait(1000) sampSendChat("/do Какой рост у человека?") wait(1000) sampSendChat('/n /do У "Ваше Имя и Фамилия" рост "Ваш рост" см.') elseif list == 4 then sampSendChat("Проведём психологическую проверку.") wait(1000) sampSendChat("Вы когда-то умирали?") elseif list == 5 then sampSendChat("Вы будете стрелять во врага который находится в толпе мирных жителей?") elseif list == 6 then sampSendChat('/me поставил(а) в медицинской карте печать "Годен"') wait(1000) sampSendChat("Поздравляю, Вы прошли мед. комиссию, проходите дальше.") elseif list == 7 then sampSendChat("К сожалению, Вы не являетесь годным к службе в армии.") wait(1000) sampSendChat('/me поставил(а) в медицинской карте печать "Не годен"') end end if isKeyDown(0x02) and isKeyJustPressed(VK_P) then sampShowDialog(229, "Мед.Проверка", 'Приветствие \nВзять мед. карту \nВес \nРост \nПроверка на МГ - 1 \nПроверка на МГ - 2 \nГоден \nНе годен \0', "Выбрать", "Закрыть", 2) end
Lua:
sampRegisterChatCommand('название команды', название вызываемой командой функции)
 

NoName_001

Участник
152
21
Lua:
function emul_server_message(color, msg)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt32(bs, color)
    raknetBitStreamWriteInt32(bs, msg:len())
    raknetBitStreamWriteString(bs, msg)
    raknetEmulRpcReceiveBitStream(93, bs)
end

1. imgui.CollapsingHeader("Test", true)
2. В полезных сниппетах выкладывали функцию для конвертации
3. imgui.Begin(u8'Список игроков в зоне стрима:', ckWallhack, imgui.WindowFlags.AlwaysAutoResize)
при imgui.WindowFlags.AlwaysAutoResize можно выставить минимальный размер по x?