Исходник [ImGui] Pie

Anton Nixon

Известный
474
48
появляется курсор меню не видно но кликаю по воздуху отправляется Пока. Привет. и так далее

Lua:
local pie = require 'imgui_piemenu'
local imgui = require 'imgui'
local key = require 'vkeys'
local encoding = require 'encoding'
imgui.BufferingBar = require('imgui_addons').BufferingBar
encoding.default = 'CP1251'
u8 = encoding.UTF8

local pie_mode = imgui.ImBool(false) -- режим PieMenu
local pie_keyid = 0 -- 0 ЛКМ, 1 ПКМ, 2 СКМ
local pie_elements =
{
  {name = 'Сказать привет', action = function() sampSendChat('Привет.') end, next = nil},
  {name = 'Сказать пока', action = function() sampSendChat('Пока.') end, next = nil},
  {name = 'Сказать что-то', action = function() end, next = {
    {name = 'Сказать как дела', action = function() sampSendChat('Как дела.') end, next = nil},
    {name = 'Сказать ку-ку', action = function() sampSendChat('Ку-ку.') end, next = nil},
    {name = 'Сказать дароу', action = function() sampSendChat('Дароу.') end, next = nil}
  }}
}

function main()
    imgui.Process = true
    while true do
        wait(0)
        pie_mode.v = isKeyDown(key.VK_Z) and true or false
        imgui.ShowCursor = pie_mode.v
    end
end

function imgui.OnDrawFrame()
    if pie_mode.v then
        imgui.OpenPopup('PieMenu')
        if pie.BeginPiePopup('PieMenu', pie_keyid) then
          for k, v in ipairs(pie_elements) do
            if v.next == nil then if pie.PieMenuItem(u8(v.name)) then v.action() end
            elseif type(v.next) == 'table' then drawPieSub(v) end
          end
          pie.EndPiePopup()
        end
    end
end

function drawPieSub(v)
  if pie.BeginPieMenu(u8(v.name)) then
    for i, l in ipairs(v.next) do
      if l.next == nil then
        if pie.PieMenuItem(u8(l.name)) then l.action() end
      elseif type(l.next) == 'table' then
        drawPieSub(l)
      end
    end
    pie.EndPieMenu()
  end
end

код выше, ниже то что в lib'е
У меня такое было на встроенной графике, если у тебя такая же, то ничем не помочь.
 

b1no

Участник
69
22
скрипт:
local pie = require 'imgui_piemenu'
local imgui = require 'imgui'
local key = require 'vkeys'
local encoding = require 'encoding'
imgui.BufferingBar = require('imgui_addons').BufferingBar
encoding.default = 'CP1251'
u8 = encoding.UTF8

local pie_mode = imgui.ImBool(false) -- режим PieMenu
local pie_keyid = 0 -- 0 ЛКМ, 1 ПКМ, 2 СКМ
local pie_elements =
{
  {name = 'Начало', action = function() end, next = {
    {name = 'lock', action = function() sampSendChat('/lock') end, next = nil},
    {name = 'key', action = function() sampSendChat('/key') end, next = nil},
  }}
}

function main()
    imgui.Process = true
    while true do
        wait(0)
        pie_mode.v = isKeyDown(key.VK_MBUTTON) and true or false
        imgui.ShowCursor = pie_mode.v
    end
end

function imgui.OnDrawFrame()
    if pie_mode.v then
        imgui.OpenPopup('PieMenu')
        if pie.BeginPiePopup('PieMenu', pie_keyid) then
          for k, v in ipairs(pie_elements) do
            if v.next == nil then if pie.PieMenuItem(u8(v.name)) then v.action() end
            elseif type(v.next) == 'table' then drawPieSub(v) end
          end
          pie.EndPiePopup()
        end
    end
end

function drawPieSub(v)
  if pie.BeginPieMenu(u8(v.name)) then
    for i, l in ipairs(v.next) do
      if l.next == nil then
        if pie.PieMenuItem(u8(l.name)) then l.action() end
      elseif type(l.next) == 'table' then
        drawPieSub(l)
      end
    end
    pie.EndPieMenu()
  end
end
помогите, зажимаю скм - селектор появляется как и нужно, отпускаю - не пропадает
 

Nightcoffee Prod.

Участник
51
12
Как сделать что бы эта менюшка всегда появлялась вцентре экрана? Я просто в луа ваще -1/10
 

NotFound

Участник
77
23
Портировал на mimgui

Использование по тому же принципу.
Попытался сделать pie. По итогу меню отрисовывается в левом верхнем углу. Привязки к курсору нет. Курсор находится в центре экрана при его появлении. Антиафк или что-то влияющие на курсор я не использую. В чём моя ошибка?
Grand Theft Auto  San Andreas Screenshot 2024.06.11 - 16.16.20.23.png
 

Fasz fiatal

Известный
321
68
У меня вопрос, какая кнопка для запуска меню?
для поиска ответа на этот вопрос была создана специальная комиссия, которая пришла к следующему выводу: "Кнопку запуска меню ТЫ ДОЛЖЕН ВЫБРАТЬ САМ В СВОЕМ СКРИПТЕ".
 

djc1380

Новичок
4
0
Ported to mimgui

Use on the same principle.

Thanks for the conversion, but the menu is still being rendered in the top-left corner.

Preview:
Can you send a explation of use or something?

Bug:
local imgui = require 'mimgui'
local pie = require 'imgui_piemenu'
local new = imgui.new

local activ_menu = imgui.new.bool(false)

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(1000) end
    
    sampAddChatMessage("{FFC800}[Clue] {ffffff}Menu loaded...", 0xffffff)
    sampRegisterChatCommand('xmenu', function() activ_menu[0] = not activ_menu[0] end)
    
    while true do
        wait(0)
    end
end

imgui.OnFrame(function() return activ_menu[0] end, function()
    local cursorPosX, cursorPosY = getCursorPos()

    imgui.SetNextWindowPos(imgui.ImVec2(cursorPosX, cursorPosY), imgui.Cond.Always, imgui.ImVec2(0.5, 0.5))
    
    imgui.OpenPopup('PieMenu')

    if pie.BeginPiePopup('PieMenu', 1) then
        if pie.PieMenuItem('Test1') then
            sampAddChatMessage('Test1 clicked', -1)
        end
        if pie.PieMenuItem('Test2') then
            sampAddChatMessage('Test2 clicked', -1)
        end
        if pie.PieMenuItem('Test3', false) then end
        if pie.BeginPieMenu('Sub') then
            if pie.BeginPieMenu('Sub sub\nmenu') then
                if pie.PieMenuItem('SubSub') then end
                if pie.PieMenuItem('SubSub2') then end
                pie.EndPieMenu()
            end
            if pie.PieMenuItem('TestSub') then end
            if pie.PieMenuItem('TestSub2') then end
            pie.EndPieMenu()
        end
        pie.EndPiePopup()
    end
    
    imgui.EndPopup()
    imgui.End()
end)