Как сделать кликабельную кнопку с инфой (внутри подробнее)

sweet candy

Новичок
Автор темы
22
0
Версия MoonLoader
.026-beta
Привет ребят! Я начинающий "скриптер" на луа, и хочу попытаться написать скрипт атулс на луа.Посмотрел несколько уроков более мене понял, но все никак не могу понять как сделать подобное:
открыв меню /atools есть кнопочка подобия "команды", нажав на нее вылезет доп.окно с сокращенными командами и их значенение (например : /fa id - /mute id flood) объяснение команды сокращенной.


function imgui.OnDrawFrame()

if not main_window_state.v and not second_window_state.v then
imgui.Process = false
end

local screenX, screenY = getScreenResolution()

if main_window_state.v then

imgui.SetNextWindowPos(imgui.ImVec2(screenX / 2, screenY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(500, 300), imgui.Cond.FirstUseEver)
imgui.Begin("Atools for Revon Project", main_window_state)

imgui.InputText("Version 0.0.3")

imgui.Separator()


imgui.PushItemWidth(120)
imgui.SetCursorPosY(250)
imgui.SetCursorPosX(200)

imgui.Combo(u8"Выбор профиля", combo_select, arr_str, #arr_str)

imgui.End()
end
 

Mico

Активный
246
46
Привет ребят! Я начинающий "скриптер" на луа, и хочу попытаться написать скрипт атулс на луа.Посмотрел несколько уроков более мене понял, но все никак не могу понять как сделать подобное:
открыв меню /atools есть кнопочка подобия "команды", нажав на нее вылезет доп.окно с сокращенными командами и их значенение (например : /fa id - /mute id flood) объяснение команды сокращенной.
Привет, я обычно всё делаю так:

Код:
local main_window_one = imgui.ImBool(false) -- первое окно
local main_window_two = imgui.ImBool(false) -- второе окно

function main()
    if not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
   
    sampRegisterChatCommand('atools', atools) -- команда с вызовом окна 1
    while true do
        imgui.ShowCursor = main_window_one.v or main_window_two.v
        imgui.Process = main_window_one.v or main_window_two.v
        wait(0)
        if main_window_one.v == false then
            imgui.Process = false
        end
        if main_window_two.v == false then
            imgui.Process = false
        end
    end
end

function atools(arg)
    main_window_one.v = not main_window_one.v
    imgui.Process = main_window_one.v
end

function imgui.OnDrawFrame( ... )
    if main_window_one.v then
        imgui.SetNextWindowSize(imgui.ImVec2(670,345), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin(u8'##main_one', main_window_one, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoMove)
       
        if imgui.Button(u8'Название кнопки') then -- размеры не стану указывать)
            main_window_two = true
        end
imgui.End()
    end
    if main_window_two.v then
        imgui.SetNextWindowSize(imgui.ImVec2(670,345), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin(u8'##main_two', main_window_two, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoMove)
       
        imgui.Text(u8'Ну тут текст)')
imgui.End()
    end
end

Буду надеется, что помог) можно еще сделать через BeginPopup
 
Последнее редактирование:

Rice.

https://t.me/riceoff
Модератор
1,690
1,443
Привет, я обычно всё делаю так:

Код:
local main_window_one = imgui.ImBool(false) -- первое окно
local main_window_two = imgui.ImBool(false) -- второе окно

function main()
    if not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
   
    sampRegisterChatCommand('atools', atools) -- команда с вызовом окна 1
    while true do
        imgui.ShowCursor = main_window_one.v or main_window_two.v
        imgui.Process = main_window_one.v or main_window_two.v
        wait(0)
        if main_window_one.v == false then
            imgui.Process = false
        end
        if main_window_two.v == false then
            imgui.Process = false
        end
    end
end

function atools(arg)
    main_window_one.v = not main_window_one.v
    imgui.Process = main_window_one.v
end

function imgui.OnDrawFrame( ... )
    if main_window_one.v then
        imgui.SetNextWindowSize(imgui.ImVec2(670,345), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin(u8'##main_one', main_window_one, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoMove)
       
        if imgui.Button(u8'Название кнопки') then -- размеры не стану указывать)
            main_window_two = true
        end
    end
    if main_window_two.v then
        imgui.SetNextWindowSize(imgui.ImVec2(670,345), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin(u8'##main_two', main_window_two, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoMove)
       
        imgui.Text(u8'Ну тут текст)')
    end
end

Буду надеется, что помог) можно еще сделать через BeginPopup
imgui.End() забыл в двух окнах, исправь
 
  • Влюблен
Реакции: Mico