Гайд Mimgui для чайников. Описание, пояснения, шаблоны

Tony Spatulata

Новичок
6
1
@Tony Spatulata ты не подключил ffi, а ещё в начале куча лишнего
Lua:
require 'lib.moonloader'
local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local new = imgui.new
local WinState = new.bool() -- создаём буффер для открытия окна
local exampleBuf = new.char[256]()

imgui.OnFrame(function() return WinState[0] end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- отвечает за положение окна на экране
        imgui.SetNextWindowSize(imgui.ImVec2(900, 680), imgui.Cond.Always) -- отвечает за размер окна
        imgui.Begin(u8'Основное', WinState, imgui.WindowFlags.NoResize) -- отвечает за отображение окна, его заголовок и флаги
        if imgui.CollapsingHeader(u8'Гайд по использованию') then
            imgui.TextWrapped(u8'Гайд потом')
            imgui.Separator()
           
        end
        local w = {
            first = 120,
            second = 120,
        }
        -- == Первая строка
        imgui.Columns(3) -- 3 количество столбцов
        imgui.Text(u8'Семья') imgui.SetColumnWidth(1, w.first) -- первый столбик
        imgui.NextColumn()
        imgui.Text(u8'Номер бизнеса') imgui.SetColumnWidth(-1, 100) -- второй столбик
        imgui.NextColumn()
        imgui.Text(u8'Выдача') imgui.SetColumnWidth(-1, 110)
        imgui.Columns(1)
        imgui.Separator()
        -- == Вторая строка
        imgui.Columns(3)
        imgui.Text (u8'Континенталь') imgui.SetColumnWidth(-1, w.first)
        imgui.NextColumn()
        if imgui.InputText('Example',exampleBuf,256) then
            peremenaya = u8:decode(ffi.string(exampleBuf))
        end
        imgui.NextColumn()
        if imgui.Button('send') then
            sampAddChatMessage(peremenaya,-1)
        end
        end
)
function main()
    sampRegisterChatCommand('cmid', function() WinState[0] = not WinState[0] end)
    wait(-1)
end
Cпасибо огромное!
 
  • Нравится
Реакции: MLycoris

Tony Spatulata

Новичок
6
1
Привет друг, как сделать задержку между сообщениями при нажатии на кнопку, чтобы цифра 3 вылетала спустя 3 секунды
if imgui.Button('1') then
sampAddChatMessage('1')
sampAddChatMessage('3' )
end
 

chromiusj

R&B-baby-queen
Модератор
5,583
3,887
  • Нравится
Реакции: Tony Spatulata и MLycoris

Feykomet

Участник
149
11
Тема классаня но есть проблема когда делаю инпут текст делаб локальную крч все как у тебя и потом вывожу ее в сампсенд чат вот так

йцухъпщдхц:
local inputField = new.char[256]()



function certificate(id_driver)
    lua_thread.create(function()
        sampSendChat('Здраствуйте вас беспокоит Сотрудник' ..inputField.. 'Пожалуйста покажите ваш паспорт')
        wait(500)
        sampSendChat('/showbadre' ..id_driver.. '')
    end)
end


imgui.OnFrame(function() return WinState[0] end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.Always)
        imgui.Begin(u8'Основное', WinState, imgui.WindowFlags.NoResize)
        if imgui.CollapsingHeader(u8'Пример списка') then
            if imgui.Button('Button') then
                sampAddChatMessage('Вы нажали кнопку    ',-1)
            end
            imgui.Separator()
        end
        

imgui.InputText(u8"Ваш текст", inputField, 256)
      
        imgui.End()
    end)


это не весь код а та часть в которой возникает ошибка именно когда я вожу команду что бы функция сертификейт включилась скрипт крашится хз почему все работало пока я не сделал что бы имя назначалось через инпут текст
 

MLycoris

На вид оружие массового семяизвержения
Автор темы
Проверенный
1,993
2,185
Тема классаня но есть проблема когда делаю инпут текст делаб локальную крч все как у тебя и потом вывожу ее в сампсенд чат вот так

йцухъпщдхц:
local inputField = new.char[256]()



function certificate(id_driver)
    lua_thread.create(function()
        sampSendChat('Здраствуйте вас беспокоит Сотрудник' ..inputField.. 'Пожалуйста покажите ваш паспорт')
        wait(500)
        sampSendChat('/showbadre' ..id_driver.. '')
    end)
end


imgui.OnFrame(function() return WinState[0] end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.Always)
        imgui.Begin(u8'Основное', WinState, imgui.WindowFlags.NoResize)
        if imgui.CollapsingHeader(u8'Пример списка') then
            if imgui.Button('Button') then
                sampAddChatMessage('Вы нажали кнопку    ',-1)
            end
            imgui.Separator()
        end
       

imgui.InputText(u8"Ваш текст", inputField, 256)
     
        imgui.End()
    end)


это не весь код а та часть в которой возникает ошибка именно когда я вожу команду что бы функция сертификейт включилась скрипт крашится хз почему все работало пока я не сделал что бы имя назначалось через инпут текст
скинь что пишет при краше, яж хз что тут может быть, тем более в кусочке кода
 

Hinаta

Известный
778
360
local inputField = new.char[256]()
sampSendChat('Здраствуйте вас беспокоит Сотрудник' ..inputField.. 'Пожалуйста покажите ваш паспорт')
Мне кажется, выводить в чат такое не обязательно)
Используй для отправки в чат
Lua:
u8:decode(ffi.string(inputField))

Ну и команду хочу подметить, она /showbadge называется
 
  • Нравится
Реакции: MLycoris
14
4
А как работать с ползунком, например:
надо сделать авторекламу на MonetLoader (Мобильный мунлоадер и там запускаеться не все т.к. разрабы разные) и мне нужна кнопка которая 1 раз отправляет в чат сообщение которое вводиться в спец. поле, и галочка которой нужен ползунок который будет по кд отправлять в чат то что было в поле а для /vr и /ad чтобы автоматом кидало на станцию (сффм лсфм лвфм) и так чтоы это было все отдельно тип для рекламы в ад 1 строка и для вип чата ниже

обьясняю я конечно как бог
 
14
4
jVW8hr0.png


тип такого

скрин не мой если что

KVWA6Dk.png


даже так
 
  • Bug
Реакции: Hinаta

MLycoris

На вид оружие массового семяизвержения
Автор темы
Проверенный
1,993
2,185

тип такого

скрин не мой если что
Полузнок в котором настраиваются секунды это imgui.SliderInt
Поле в котором вписывается текст это imgui.InputText
Ещё слева от поля ввода есть чекбокс imgui.Checkbox
о них можешь в теме почитать, вот простой пример авторекламы

Lua:
local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local WinState = imgui.new.bool(true)
local bufStatus = imgui.new.bool() -- чекбокс
local bufTextAd = imgui.new.char[512]('') -- inputText
local bufSeconds = imgui.new.int(0) -- sliderInt

imgui.OnFrame(function() return WinState[0] end, function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(245, 270), imgui.Cond.Always)
    imgui.Begin('##Window', WinState, imgui.WindowFlags.NoResize)
    imgui.Checkbox('##Checkbox',bufStatus)
    imgui.SameLine()
    imgui.InputText('##Text',bufTextAd,512)
    imgui.SliderInt(u8'Сек',bufSeconds,5,60)
    imgui.End()
end)

function main()
    sampRegisterChatCommand('autoad', function() WinState[0] = not WinState[0] end)
    while true do wait(0)
        if bufStatus[0] then
            sampSendChat(u8:decode(ffi.string(bufTextAd)))
            wait(bufSeconds[0]*1000)
        end
    end
end
 
  • Вау
Реакции: minxty
14
4
Полузнок в котором настраиваются секунды это imgui.SliderInt
Поле в котором вписывается текст это imgui.InputText
Ещё слева от поля ввода есть чекбокс imgui.Checkbox
о них можешь в теме почитать, вот простой пример авторекламы

Lua:
local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local WinState = imgui.new.bool(true)
local bufStatus = imgui.new.bool() -- чекбокс
local bufTextAd = imgui.new.char[512]('') -- inputText
local bufSeconds = imgui.new.int(0) -- inputInt

imgui.OnFrame(function() return WinState[0] end, function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(245, 270), imgui.Cond.Always)
    imgui.Begin('##Window', WinState, imgui.WindowFlags.NoResize)
    imgui.Checkbox('##Checkbox',bufStatus)
    imgui.SameLine()
    imgui.InputText('##Text',bufTextAd,512)
    imgui.SliderInt(u8'Сек',bufSeconds,5,60)
    imgui.End()
end)

function main()
    sampRegisterChatCommand('autoad', function() WinState[0] = not WinState[0] end)
    while true do wait(0)
        if bufStatus[0] then
            sampSendChat(u8:decode(ffi.string(bufTextAd)))
            wait(bufSeconds[0]*1000)
        end
    end
end
спасибо

UFHALzm.jpg
 
Последнее редактирование:
  • Нравится
Реакции: MLycoris

MLycoris

На вид оружие массового семяизвержения
Автор темы
Проверенный
1,993
2,185
Немного обновил гайд, поэтому ап
1. Добавлена инфа по следующим функциям:
  • imgui.VSliderInt & imgui.VSliderFloat
  • imgui.SliderInt2-4 & imgui.SliderFloat2-4
  • imgui.ProgressBar
  • imgui.Dummy
  • imgui.NewLine
  • imgui.Indent
2. Добавлен пункт 3.3 с цветной кнопкой и цветным сепаратором
 
  • Нравится
Реакции: MrDorlik