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

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,778
11,223
нихуя захотел я сколько времени его писал, скинуть тебе что бы ты под себя сделал?
даа, создать окно, вставить в код сниппет и добавить в onDrawFrame пару строк занимает очень много времени(((
 
  • Влюблен
  • Нравится
Реакции: ARMOR и YarikVL

Ononimus

Потрачен
60
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Anti...

Участник
245
19
даа, создать окно, вставить в код сниппет и добавить в onDrawFrame пару строк занимает очень много времени(((
лучше ответь как сделать активную кнопку имгуи после нажатия, нажал на 1 она загорелась, нажал на вторую - потухла, вторая загорелась(

даа, создать окно, вставить в код сниппет и добавить в onDrawFrame пару строк занимает очень много времени(((
всё с 0 всё сам, а не, 1 сниппет
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,778
11,223
можешь ответить гна мой прошлый комент
лучше ответь как сделать активную кнопку имгуи после нажатия, нажал на 1 она загорелась, нажал на вторую - потухла, вторая загорелась(
это для мимгуи, в имгуи вроде цвета немного по дпугому называются (надо imgui.Col на что то заменить)
Lua:
local Active = false

-- imgui
imgui.PushStyleColor(imgui.Col.Button, Active and imgui.ImVec4(0, 1, 0, 1) or imgui.ImVec4(1, 0, 0, 1))
if imgui.Button('hello world') then
    Active = not Active
end
imgui.PopStyleColor()
 

Anti...

Участник
245
19

это для мимгуи, в имгуи вроде цвета немного по дпугому называются (надо imgui.Col на что то заменить)
Lua:
local Active = false

-- imgui
imgui.PushStyleColor(imgui.Col.Button, Active and imgui.ImVec4(0, 1, 0, 1) or imgui.ImVec4(1, 0, 0, 1))
if imgui.Button('hello world') then
    Active = not Active
end
imgui.PopStyleColor()

Проблема в том что imgui.PushStyleColor красит мне все кнопки, а мне нужно только 1.
 

Anti...

Участник
245
19
если ты закроешь пуш стайл колор сразу после кнопки то он будет красить только одну кнопку
Если закрывать после кнопки то ошибка. pushstylecolor вроде до бегина пишется
Код:
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.00, 0.00, 0.00, 1.00))
        imgui.Begin(u8'Вещи на сервере', main_window_state11, imgui.WindowFlags.NoResize)  
        ----------------------------------------------------------------------------  
            if imgui.Button(u8'Огнестрельное оружие') then
                -- что-то
            end
        imgui.PopStyleColor()

Если закрывать после кнопки то ошибка. pushstylecolor вроде до бегина пишется
Код:
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.00, 0.00, 0.00, 1.00))
        imgui.Begin(u8'Вещи на сервере', main_window_state11, imgui.WindowFlags.NoResize) 
        ---------------------------------------------------------------------------- 
            if imgui.Button(u8'Огнестрельное оружие') then
                -- что-то
            end
        imgui.PopStyleColor()
а не, разобрался.
 

Вложения

  • jhgf.png
    jhgf.png
    33.3 KB · Просмотры: 9

KOLBASKA@

Участник
35
0
помогите найти ошибку, исправить


Lua:
require'lib.moonloader'
local colr = 0xfc05cf
function main()
    if not isSampLoaded() or not  isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    sampRegisterChatCommand("text", cmd_text) 
    
end
function cmd_text(arg)
    i = 1
    repeat
        sampAddChatMessage(i, colr)
        i = i+1
    until i >= 10
end
 

Sadow

Известный
1,439
587
Я столкнулся с проблемой. Когда я нажимаю на один буффер, выделяются все и делается одинаковое число. Хотя так быть не должно. Код ниже.
Lua:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local inicfg = require 'inicfg'
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local directIni = 'moonloader\\settings-edit-object.ini'
local mainIni = inicfg.load(nil, directIni)
local object_one = imgui.ImInt(mainIni.config.ObjectOne)
local object_oneZ = imgui.ImInt(mainIni.config.ObjectOneZ)
local object_two = imgui.ImInt(mainIni.config.ObjectTwo)
local object_twoZ = imgui.ImInt(mainIni.config.ObjectTwoZ)
local object_three = imgui.ImInt(mainIni.config.ObjectThree)
local object_threeZ = imgui.ImInt(mainIni.config.ObjectThreeZ)
local main_window_state = imgui.ImBool(false)
local sw, sh = getScreenResolution()
function apply_custom_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4
  
    style.WindowRounding = 2.0
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0
  
    colors[clr.Text] = ImVec4(0.80, 0.80, 0.83, 1.00)
    colors[clr.TextDisabled] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.WindowBg] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ChildWindowBg] = ImVec4(0.07, 0.07, 0.09, 1.00)
    colors[clr.PopupBg] = ImVec4(0.07, 0.07, 0.09, 1.00)
    colors[clr.Border] = ImVec4(0.80, 0.80, 0.83, 0.88)
    colors[clr.BorderShadow] = ImVec4(0.92, 0.91, 0.88, 0.00)
    colors[clr.FrameBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.FrameBgHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.FrameBgActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.TitleBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.TitleBgCollapsed] = ImVec4(1.00, 0.98, 0.95, 0.75)
    colors[clr.TitleBgActive] = ImVec4(0.07, 0.07, 0.09, 1.00)
    colors[clr.MenuBarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ScrollbarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ScrollbarGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
    colors[clr.ScrollbarGrabHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.ScrollbarGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ComboBg] = ImVec4(0.19, 0.18, 0.21, 1.00)
    colors[clr.CheckMark] = ImVec4(0.80, 0.80, 0.83, 0.31)
    colors[clr.SliderGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
    colors[clr.SliderGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.Button] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ButtonHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.ButtonActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.Header] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.HeaderHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.HeaderActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ResizeGrip] = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.ResizeGripHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.ResizeGripActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.CloseButton] = ImVec4(0.40, 0.39, 0.38, 0.16)
    colors[clr.CloseButtonHovered] = ImVec4(0.40, 0.39, 0.38, 0.39)
    colors[clr.CloseButtonActive] = ImVec4(0.40, 0.39, 0.38, 1.00)
    colors[clr.PlotLines] = ImVec4(0.40, 0.39, 0.38, 0.63)
    colors[clr.PlotLinesHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
    colors[clr.PlotHistogram] = ImVec4(0.40, 0.39, 0.38, 0.63)
    colors[clr.PlotHistogramHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
    colors[clr.TextSelectedBg] = ImVec4(0.25, 1.00, 0.00, 0.43)
    colors[clr.ModalWindowDarkening] = ImVec4(1.00, 0.98, 0.95, 0.73)
  end
  apply_custom_style()
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage('{5A90CE}[Edit Object] {FFFFFF}Скрипт успешно загружен!', -1)
    sampAddChatMessage('{5A90CE}[Edit Object] {FFFFFF}Активация: /editobject', -1)
    sampAddChatMessage('{5A90CE}[Edit Object] {FFFFFF}Автор: Sadow', -1)
    sampRegisterChatCommand('editobject', cmd_editobject)
    imgui.Process = false

    while true do
        wait(0)
        if main_window_state.v == false then
            imgui.Process = false
        end
    end
end
function cmd_editobject(arg)
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end
function imgui.Ques(text)
    imgui.SameLine()
    imgui.TextDisabled("(?)")
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.TextUnformatted(u8(text))
        imgui.EndTooltip()
    end
end
function imgui.OnDrawFrame()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(930, 195), imgui.Cond.FirstUseEver)
    imgui.Begin(u8'Редактирование объектов', main_window_state, imgui.WindowFlags.NoResize)
    if imgui.InputInt(u8'Айди заменяемого объекта', object_one, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectOne = object_one.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта который нужно заменить\nАйди объектов можно увидеть написав в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди объекта на кoторый необходимо заменить', object_oneZ, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectOneZ = object_oneZ.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта на который необхoдимо заменить\nАйди объектов можно увидеть написав в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди заменяемого объекта', object_two, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectTwo = object_two.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта который нужнo заменить\nАйди объектов можно увидеть написав в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди объекта на который необходимо заменить', object_twoZ, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectTwoZ = object_twoZ.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта на который необходимо заменить\nАйди объектoв можно увидеть написав в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди заменяемого объекта', object_three, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectThree = object_three.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта который нужно заменить\nАйди объектов можно увидеть написaв в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди объекта на который необходимо заменить', object_threeZ, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectThreeZ = object_threeZ.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объeкта на который необходимо заменить\nАйди объектов можно увидеть написав в поиске\n'Айди объектов самп'")
    imgui.Text(u8"Автор: Sadow")
    imgui.End()
end
function sampev.onCreateObject(objectId, data)
    if data.modelId == mainIni.config.ObjectOne then
        data.modelId = mainIni.config.ObjectOneZ
        return { objectId, data }
    end
    if data.modelId == mainIni.config.ObjectTwo then
        data.modelId = mainIni.config.ObjectTwoZ
        return { objectId, data }
    end
    if data.modelId == mainIni.config.ObjectThree then
        data.modelId = mainIni.config.ObjectThreeZ
        return { objectId, data }
    end
end
 

Uzkon

Участник
23
14
Я столкнулся с проблемой. Когда я нажимаю на один буффер, выделяются все и делается одинаковое число. Хотя так быть не должно. Код ниже.
Lua:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local inicfg = require 'inicfg'
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local directIni = 'moonloader\\settings-edit-object.ini'
local mainIni = inicfg.load(nil, directIni)
local object_one = imgui.ImInt(mainIni.config.ObjectOne)
local object_oneZ = imgui.ImInt(mainIni.config.ObjectOneZ)
local object_two = imgui.ImInt(mainIni.config.ObjectTwo)
local object_twoZ = imgui.ImInt(mainIni.config.ObjectTwoZ)
local object_three = imgui.ImInt(mainIni.config.ObjectThree)
local object_threeZ = imgui.ImInt(mainIni.config.ObjectThreeZ)
local main_window_state = imgui.ImBool(false)
local sw, sh = getScreenResolution()
function apply_custom_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4
 
    style.WindowRounding = 2.0
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0
 
    colors[clr.Text] = ImVec4(0.80, 0.80, 0.83, 1.00)
    colors[clr.TextDisabled] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.WindowBg] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ChildWindowBg] = ImVec4(0.07, 0.07, 0.09, 1.00)
    colors[clr.PopupBg] = ImVec4(0.07, 0.07, 0.09, 1.00)
    colors[clr.Border] = ImVec4(0.80, 0.80, 0.83, 0.88)
    colors[clr.BorderShadow] = ImVec4(0.92, 0.91, 0.88, 0.00)
    colors[clr.FrameBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.FrameBgHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.FrameBgActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.TitleBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.TitleBgCollapsed] = ImVec4(1.00, 0.98, 0.95, 0.75)
    colors[clr.TitleBgActive] = ImVec4(0.07, 0.07, 0.09, 1.00)
    colors[clr.MenuBarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ScrollbarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ScrollbarGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
    colors[clr.ScrollbarGrabHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.ScrollbarGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ComboBg] = ImVec4(0.19, 0.18, 0.21, 1.00)
    colors[clr.CheckMark] = ImVec4(0.80, 0.80, 0.83, 0.31)
    colors[clr.SliderGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
    colors[clr.SliderGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.Button] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ButtonHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.ButtonActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.Header] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.HeaderHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.HeaderActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ResizeGrip] = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.ResizeGripHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.ResizeGripActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.CloseButton] = ImVec4(0.40, 0.39, 0.38, 0.16)
    colors[clr.CloseButtonHovered] = ImVec4(0.40, 0.39, 0.38, 0.39)
    colors[clr.CloseButtonActive] = ImVec4(0.40, 0.39, 0.38, 1.00)
    colors[clr.PlotLines] = ImVec4(0.40, 0.39, 0.38, 0.63)
    colors[clr.PlotLinesHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
    colors[clr.PlotHistogram] = ImVec4(0.40, 0.39, 0.38, 0.63)
    colors[clr.PlotHistogramHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
    colors[clr.TextSelectedBg] = ImVec4(0.25, 1.00, 0.00, 0.43)
    colors[clr.ModalWindowDarkening] = ImVec4(1.00, 0.98, 0.95, 0.73)
  end
  apply_custom_style()
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage('{5A90CE}[Edit Object] {FFFFFF}Скрипт успешно загружен!', -1)
    sampAddChatMessage('{5A90CE}[Edit Object] {FFFFFF}Активация: /editobject', -1)
    sampAddChatMessage('{5A90CE}[Edit Object] {FFFFFF}Автор: Sadow', -1)
    sampRegisterChatCommand('editobject', cmd_editobject)
    imgui.Process = false

    while true do
        wait(0)
        if main_window_state.v == false then
            imgui.Process = false
        end
    end
end
function cmd_editobject(arg)
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end
function imgui.Ques(text)
    imgui.SameLine()
    imgui.TextDisabled("(?)")
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.TextUnformatted(u8(text))
        imgui.EndTooltip()
    end
end
function imgui.OnDrawFrame()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(930, 195), imgui.Cond.FirstUseEver)
    imgui.Begin(u8'Редактирование объектов', main_window_state, imgui.WindowFlags.NoResize)
    if imgui.InputInt(u8'Айди заменяемого объекта', object_one, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectOne = object_one.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта который нужно заменить\nАйди объектов можно увидеть написав в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди объекта на кoторый необходимо заменить', object_oneZ, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectOneZ = object_oneZ.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта на который необхoдимо заменить\nАйди объектов можно увидеть написав в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди заменяемого объекта', object_two, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectTwo = object_two.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта который нужнo заменить\nАйди объектов можно увидеть написав в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди объекта на который необходимо заменить', object_twoZ, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectTwoZ = object_twoZ.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта на который необходимо заменить\nАйди объектoв можно увидеть написав в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди заменяемого объекта', object_three, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectThree = object_three.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объекта который нужно заменить\nАйди объектов можно увидеть написaв в поиске\n'Айди объектов самп'")
    if imgui.InputInt(u8'Айди объекта на который необходимо заменить', object_threeZ, 0, 0, imgui.InputTextFlags.CharsDecimal) then
        mainIni.config.ObjectThreeZ = object_threeZ.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine(30)
    imgui.Ques("Айди объeкта на который необходимо заменить\nАйди объектов можно увидеть написав в поиске\n'Айди объектов самп'")
    imgui.Text(u8"Автор: Sadow")
    imgui.End()
end
function sampev.onCreateObject(objectId, data)
    if data.modelId == mainIni.config.ObjectOne then
        data.modelId = mainIni.config.ObjectOneZ
        return { objectId, data }
    end
    if data.modelId == mainIni.config.ObjectTwo then
        data.modelId = mainIni.config.ObjectTwoZ
        return { objectId, data }
    end
    if data.modelId == mainIni.config.ObjectThree then
        data.modelId = mainIni.config.ObjectThreeZ
        return { objectId, data }
    end
end
Названия одинаковые, используй ##, последующий текст не отображается в имгуи, т.е
imgui.InputInt(u8'Айди объекта на который необходимо заменить##1', object_twoZ, 0, 0)
и да, флаг не нужен здесь, у тебя ведь числовой инпут
 
  • Нравится
Реакции: Sadow

Ononimus

Потрачен
60
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ребят как сделать что бы остался стандартный имгуи интерфейс но при этом другого цвета некоторые функции внизу скину код измените если не сложно
код:
local imgui = require 'mimgui'
local wm = require 'windows.message'
local vkeys = require 'vkeys'
local ev = require 'lib.samp.events'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local sw, sh = 500, 300
local active = imgui.new.bool(false)
local checkbox = imgui.new.bool(false)

function onWindowMessage(msg, wparam, lparam)
    if msg == wm.WM_KEYUP and wparam == vkeys.VK_M and not sampIsCursorActive() then
        active[0] = not active[0]
    end
end

local mainFrame = imgui.OnFrame(function() return active[0] end, function(self)
    imgui.SetNextWindowSize(imgui.ImVec2(sw, sh), imgui.Cond.FirstUseEver)
    imgui.Begin('Online RP: Mafia Helper V - 0.1', active, imgui.WindowFlags.NoResize)
    if imgui.BeginTabBar(u8'оо') then
        if imgui.BeginTabItem(u8'О хелпере') then
            imgui.Text(u8'Здравствуйте, вас приветствует команда разработчиков')
            imgui.Text(u8'Mafia Helper.') -- Красный
            imgui.Text(u8'Данный хелпер создан для того, чтобы упростить игру')
            imgui.Text(u8'участникам преступных синдикатов, а так же их лидерам и')
            imgui.Text(u8'заместителям.')
            imgui.Text(u8'Команда которая создала данный хелпер, не несёт')
            imgui.Text(u8'ответственности за ваши аккаунты. Качайте хелпер только с')
            imgui.Text(u8'официального форума Online Role Play и') -- ORP ЖОЛТЫМ
            imgui.Text(u8'официального сообщества во ВКонтакте"') -- ВК СИНИМ
            imgui.Separator()
            imgui.Text(u8'Кодер - Wayne Martini.')
            imgui.Text(u8'Оформление - Angel Blanco')
            imgui.Separator()
            imgui.Text(u8' ')
            if imgui.CollapsingHeader(u8'Mafia Helper - обратная связь') then
            end
            imgui.EndTabItem()
        end
        if imgui.BeginTabItem(u8'Для лидеров') then
                        if imgui.Button(u8"Отыграть выдачу формы.") then
                                lua_thread.create(function()
                                sampSendChat("/do sdsd")
                                wait(1200)
                                sampSendChat("/me вава")
                                wait(1234)
                                sampSendChat("/do вава")
                                wait(1234)
                                sampSendChat("вава")
                                end)
                        end
                        if imgui.Button(u8"Отыграть КПК.                  ") then
                                lua_thread.create(function()
                                sampSendChat("/do КПК в кармане.")
                                wait(1233)
                                sampSendChat("/me достал кпк, затем включил его")
                                wait(1233)
                                sampSendChat("/do КПК в руке.")
                                wait(1233)
                                sampSendChat("/me нашол базу данных сотрудника")
                                wait(1233)
                                sampSendChat("/me нажал на нужную кнопку, затем выключил КПК")
                                wait(1000)
                                sampSendChat('/me убрал КПК в левый карман')
                                wait(1000)
                                end)
                        end
                        if imgui.Button(u8"Начать собеседование.   ") then
                                lua_thread.create(function()
                                sampSendChat("/f Начинаем собеседование.")
                                end)
                        end
                        imgui.SameLine()
                        if imgui.Button(u8"Закончить собеседование.") then
                                lua_thread.create(function()
                                sampSendChat("/f Заканчиваем собеседование.")
                                end)
                        end
                        imgui.EndTabItem()
                end
        if imgui.BeginTabItem(u8'Чат') then
                        imgui.Checkbox(u8'Японский акцент.', checkbox)
        end
        if imgui.BeginTabItem(u8'Оружие') then
                        imgui.Checkbox(u8'Авто-отыгровка оружия.', checkbx)
        end
    end
    imgui.End()
end)

function ev.onSendChat(msg)
    return {checkbox[0] and "[Японский акцент]: "..msg or msg}
end

если что нужно изменить верхнию панель imgui.begin на синий
 
Последнее редактирование:

KOLBASKA@

Участник
35
0
Помогите найти ошибку

Lua:
require'lib.moonloader'
local colr = 0xfc05cf
function main()
    if not isSampLoaded() or not  isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    sampRegisterChatCommand("text", cmd_text) 
    
end
function cmd_text(arg)
    i = 1
    repeat
        sampAddChatMessage(i, colr)
        i = i+1
    until i >= 10
end
 

Gorskin

{Reverse Developer} ✓
Проверенный
1,249
1,047
Помогите найти ошибку

Lua:
require'lib.moonloader'
local colr = 0xfc05cf
function main()
    if not isSampLoaded() or not  isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
   
    sampRegisterChatCommand("text", cmd_text)
   
end
function cmd_text(arg)
    i = 1
    repeat
        sampAddChatMessage(i, colr)
        i = i+1
    until i >= 10
end
Lua:
require'lib.moonloader'
local colr = 0xfc05cf
function main()
    if not isSampLoaded() or not  isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    sampRegisterChatCommand("text", cmd_text)
    wait(-1)
end

function cmd_text(arg)
    i = 1
    repeat
        sampAddChatMessage(i, colr)
        i = i+1
    until i >= 10
end
ты wait забыл в main()