Помогите с циклом на имгуи

Vasia_Popin

Новичок
Автор темы
5
1
Добрый день, у меня не выходит в имгуи меню цикл засунуть, скрипт просто не раниться
задача просто по чекбоксу запустить цикл. Если поможете я был бы очень признателен. код оставлю ниже
Lua:
local imgui = require 'imgui'
local key = require 'vkeys'
local ffi = require "ffi"
local Checkbox = imgui.ImBool(false)
local i = 1

ffi.cdef[[
     void keybd_event(int keycode, int scancode, int flags, int extra);
]]


function EmulateKey(key, isDown)
    if not isDown then
        ffi.C.keybd_event(key, 0, 2, 0)
    else
        ffi.C.keybd_event(key, 0, 0, 0)
    end
end

-- одно из основных отличий от оригинального апи
-- все переменные, значения которых записываются в ImGui по указателю, могут использоваться только через специальные типы
local main_window_state = imgui.ImBool(false)
function imgui.OnDrawFrame()
  if main_window_state.v then -- чтение и запись значения такой переменной осуществляется через поле v (или Value)
    imgui.SetNextWindowSize(imgui.ImVec2(150, 200), imgui.Cond.FirstUseEver) -- меняем размер
    -- но для передачи значения по указателю - обязательно напрямую
    -- тут main_window_state передаётся функции imgui.Begin, чтобы можно было отследить закрытие окна нажатием на крестик
    imgui.Begin('My window', main_window_state)
    imgui.Text('Hello world')
     imgui.Checkbox("Checkbox 1",Checkbox)

    if imgui.Button('on') then -- а вот и кнопка с действием
      -- условие будет выполнено при нажатии на неё
        sampSendChat("/bibi")
       
    end
    if imgui.Button('off') then -- а вот и кнопка с действием
      -- условие будет выполнено при нажатии на неё
        sampSendChat("/stop")
       
    end
    imgui.End()
  end
end

function main()








  while true do
    wait(0)
    if wasKeyPressed(key.VK_X) then -- активация по нажатию клавиши X
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
   
   
   
   
  end
 
 
 
  while true do wait(500)
        if Checkbox.v then
        sampAddChatMessage("Klans", 0xc0c24e)
        end
    end
   
end
 
Последнее редактирование модератором:

Masayuki

Участник
79
31
Lua:
require 'lib.moonloader'
local imgui = require 'imgui'

local main_window_state = imgui.ImBool(false)
local checkbox = imgui.ImBool(false)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do wait(0)
        if main_window_state.v == false then
            imgui.Process = false
        end
        if isKeyJustPressed(VK_X) then --открыть / закрыть имгуи окно - X
            main_window_state.v = not main_window_state.v
            imgui.Process = main_window_state.v
        end
        if checkbox.v then --действие при включённом чекбоксе
            sampAddChatMessage('klans', 0xc0c24e)
        end
    end
end

function imgui.OnDrawFrame()
    local sw, sh = getScreenResolution() -- разрешение экрана
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- расположение имгуи окна
    imgui.SetNextWindowSize(imgui.ImVec2(0, 0), imgui.Cond.FirstUseEver) -- размер имгуи окна, ширина высота
    imgui.Begin("My window", main_window_state) --заголовок имгуи окна
    imgui.Text('Hello world') --обычный текст
    imgui.Checkbox('Checkbox 1', checkbox) --чекбокс, при включении которого будет флудиться кланс
    if imgui.Button('on', imgui.ImVec2(100, 20)) then -- кнопка, 100 - ширина кнопки, 20 - высота
        sampSendChat('/bibi') --действие данной кнопки
    end
    if imgui.Button('off', imgui.ImVec2(100, 20)) then -- кнопка, 100 - ширина кнопки, 20 - высота
        sampSendChat('/stop') --действие данной кнопки
    end
    imgui.End()
end
 

Vasia_Popin

Новичок
Автор темы
5
1
Lua:
require 'lib.moonloader'
local imgui = require 'imgui'

local main_window_state = imgui.ImBool(false)
local checkbox = imgui.ImBool(false)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do wait(0)
        if main_window_state.v == false then
            imgui.Process = false
        end
        if isKeyJustPressed(VK_X) then --открыть / закрыть имгуи окно - X
            main_window_state.v = not main_window_state.v
            imgui.Process = main_window_state.v
        end
        if checkbox.v then --действие при включённом чекбоксе
            sampAddChatMessage('klans', 0xc0c24e)
        end
    end
end

function imgui.OnDrawFrame()
    local sw, sh = getScreenResolution() -- разрешение экрана
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- расположение имгуи окна
    imgui.SetNextWindowSize(imgui.ImVec2(0, 0), imgui.Cond.FirstUseEver) -- размер имгуи окна, ширина высота
    imgui.Begin("My window", main_window_state) --заголовок имгуи окна
    imgui.Text('Hello world') --обычный текст
    imgui.Checkbox('Checkbox 1', checkbox) --чекбокс, при включении которого будет флудиться кланс
    if imgui.Button('on', imgui.ImVec2(100, 20)) then -- кнопка, 100 - ширина кнопки, 20 - высота
        sampSendChat('/bibi') --действие данной кнопки
    end
    if imgui.Button('off', imgui.ImVec2(100, 20)) then -- кнопка, 100 - ширина кнопки, 20 - высота
        sampSendChat('/stop') --действие данной кнопки
    end
    imgui.End()
end
у меня почему то этот код вообще не воркает