Как в imgui сделать так что б окно открывалось по нажатию клавиши.

leath0r

Новичок
Автор темы
2
0
Я только начал писать скрипты для сампа на lua , помогите пожалуйста.
 

Вложения

  • Leath0r's.lua
    1.3 KB · Просмотры: 5

fzzxhq

Активный
569
88
Lua:
local imgui = require('mimgui');
local ffi = require('ffi');
local keys = require "vkeys"
local encoding = require('encoding');
encoding.default =  'CP1251';
local u8 = encoding.UTF8;

local window = imgui.new.bool(false); -- Изменяем значение на false

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('Скрипт загружен! by LEATH0R', 0xFFff0000)   

    while true do
        wait(0)
        
        -- Обработка клавиши F5 для открытия/закрытия окна imgui
        if isKeyDown(keys.VK_F5) then
            window[0] = not window[0] -- Инвертируем значение окна (открываем/закрываем)
        end
    end
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil;   
end);

imgui.OnFrame(
    function() return true end,
     function(this)
        local size, res = imgui.ImVec2(250, 250), imgui.ImVec2(getScreenResolution());
        imgui.SetNextWindowSize(size, imgui.Cond.FirstUseEver)
        if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)) then
            if (imgui.Button(u8'Открыть/закрыть машину', imgui.ImVec2(200, 50))) then
                sampSendChat('/lock');
            end
            if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse)) then
                if (imgui.Button(u8'Завести двигатель', imgui.ImVec2(200, 50))) then
                    sampSendChat('/engine');
                end
            end
        end
        imgui.End();
    end
);
Не уверен что сработает, но все возможно, активация F5
 

MrDorlik

Известный
953
383
Lua:
local imgui = require('mimgui');
local ffi = require('ffi');
local keys = require "vkeys"
local encoding = require('encoding');
encoding.default =  'CP1251';
local u8 = encoding.UTF8;

local window = imgui.new.bool(false); -- Изменяем значение на false

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('Скрипт загружен! by LEATH0R', 0xFFff0000)  

    while true do
        wait(0)
       
        -- Обработка клавиши F5 для открытия/закрытия окна imgui
        if isKeyDown(keys.VK_F5) then
            window[0] = not window[0] -- Инвертируем значение окна (открываем/закрываем)
        end
    end
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil;  
end);

imgui.OnFrame(
    function() return true end,
     function(this)
        local size, res = imgui.ImVec2(250, 250), imgui.ImVec2(getScreenResolution());
        imgui.SetNextWindowSize(size, imgui.Cond.FirstUseEver)
        if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)) then
            if (imgui.Button(u8'Открыть/закрыть машину', imgui.ImVec2(200, 50))) then
                sampSendChat('/lock');
            end
            if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse)) then
                if (imgui.Button(u8'Завести двигатель', imgui.ImVec2(200, 50))) then
                    sampSendChat('/engine');
                end
            end
        end
        imgui.End();
    end
);
Не уверен что сработает, но все возможно, активация F5
не сработает, во-первых ты в onframe не передаешь переменную window, у тебя окно всегда открыто будет, во-вторых isKeyDown будет возвращать true каждый кадр, пока нажата клавиша и окно мигать будет, надо isKeyJustPressed юзать
 

fzzxhq

Активный
569
88
не сработает, во-первых ты в onframe не передаешь переменную window, у тебя окно всегда открыто будет, во-вторых isKeyDown будет возвращать true каждый кадр, пока нажата клавиша и окно мигать будет, надо isKeyJustPressed юзать
Lua:
local imgui = require('mimgui');
local ffi = require('ffi');
local keys = require "vkeys"
local encoding = require('encoding');
encoding.default =  'CP1251';
local u8 = encoding.UTF8;

local window = imgui.new.bool(false); -- Изначально окно закрыто

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('Скрипт загружен! by LEATH0R', 0xFFff0000)   

    local isWindowOpen = false -- Флаг, указывающий, открыто ли окно imgui

    while true do
        wait(0)
        
        -- Обработка клавиши F5 для открытия/закрытия окна imgui
        if isKeyJustPressed(keys.VK_F5) then
            isWindowOpen = not isWindowOpen -- Инвертируем флаг
        end

        if isWindowOpen then
            imgui.Process = true -- Включаем обработку imgui
        else
            imgui.Process = false -- Выключаем обработку imgui
        end
    end
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil;   
end);

imgui.OnFrame(
    function() return true end,
     function(this)
        local size, res = imgui.ImVec2(250, 250), imgui.ImVec2(getScreenResolution());
        imgui.SetNextWindowSize(size, imgui.Cond.FirstUseEver)
        if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)) then
            if (imgui.Button(u8'Открыть/закрыть машину', imgui.ImVec2(200, 50))) then
                sampSendChat('/lock');
            end
            if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse)) then
                if (imgui.Button(u8'Завести двигатель', imgui.ImVec2(200, 50))) then
                    sampSendChat('/engine');
                end
            end
        end
        imgui.End();
    end
);

Это вообще чат гпт пишет ахах
 
  • Нравится
Реакции: leath0r

XRLM

Против ветра рождённый
Модератор
1,571
1,160
Lua:
local imgui = require('mimgui');
local ffi = require('ffi');
local keys = require "vkeys"
local encoding = require('encoding');
encoding.default =  'CP1251';
local u8 = encoding.UTF8;

local window = imgui.new.bool(false); -- Изначально окно закрыто

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('Скрипт загружен! by LEATH0R', 0xFFff0000)  

    local isWindowOpen = false -- Флаг, указывающий, открыто ли окно imgui

    while true do
        wait(0)
       
        -- Обработка клавиши F5 для открытия/закрытия окна imgui
        if isKeyJustPressed(keys.VK_F5) then
            isWindowOpen = not isWindowOpen -- Инвертируем флаг
        end

        if isWindowOpen then
            imgui.Process = true -- Включаем обработку imgui
        else
            imgui.Process = false -- Выключаем обработку imgui
        end
    end
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil;  
end);

imgui.OnFrame(
    function() return true end,
     function(this)
        local size, res = imgui.ImVec2(250, 250), imgui.ImVec2(getScreenResolution());
        imgui.SetNextWindowSize(size, imgui.Cond.FirstUseEver)
        if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)) then
            if (imgui.Button(u8'Открыть/закрыть машину', imgui.ImVec2(200, 50))) then
                sampSendChat('/lock');
            end
            if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse)) then
                if (imgui.Button(u8'Завести двигатель', imgui.ImVec2(200, 50))) then
                    sampSendChat('/engine');
                end
            end
        end
        imgui.End();
    end
);

Это вообще чат гпт пишет ахах
чат гпт не может писать полностью рабочий код
 
  • Клоун
Реакции: Air_Official

MrDorlik

Известный
953
383
Lua:
local imgui = require('mimgui');
local ffi = require('ffi');
local keys = require "vkeys"
local encoding = require('encoding');
encoding.default =  'CP1251';
local u8 = encoding.UTF8;

local window = imgui.new.bool(false); -- Изначально окно закрыто

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('Скрипт загружен! by LEATH0R', 0xFFff0000)  

    local isWindowOpen = false -- Флаг, указывающий, открыто ли окно imgui

    while true do
        wait(0)
       
        -- Обработка клавиши F5 для открытия/закрытия окна imgui
        if isKeyJustPressed(keys.VK_F5) then
            isWindowOpen = not isWindowOpen -- Инвертируем флаг
        end

        if isWindowOpen then
            imgui.Process = true -- Включаем обработку imgui
        else
            imgui.Process = false -- Выключаем обработку imgui
        end
    end
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil;  
end);

imgui.OnFrame(
    function() return true end,
     function(this)
        local size, res = imgui.ImVec2(250, 250), imgui.ImVec2(getScreenResolution());
        imgui.SetNextWindowSize(size, imgui.Cond.FirstUseEver)
        if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)) then
            if (imgui.Button(u8'Открыть/закрыть машину', imgui.ImVec2(200, 50))) then
                sampSendChat('/lock');
            end
            if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse)) then
                if (imgui.Button(u8'Завести двигатель', imgui.ImVec2(200, 50))) then
                    sampSendChat('/engine');
                end
            end
        end
        imgui.End();
    end
);

Это вообще чат гпт пишет ахах
нахуя ты пишешь тогда если не знаешь, и ты сделал только хуже, у тебя есть уже переменная window, зачем ты isWindowOpen создаешь
 

Hinаta

Известный
777
363
Lua:
local imgui = require('mimgui');
local ffi = require('ffi');
local keys = require "vkeys"
local encoding = require('encoding');
encoding.default =  'CP1251';
local u8 = encoding.UTF8;

local window = imgui.new.bool(false); -- Изначально окно закрыто

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('Скрипт загружен! by LEATH0R', 0xFFff0000)  

    local isWindowOpen = false -- Флаг, указывающий, открыто ли окно imgui

    while true do
        wait(0)
       
        -- Обработка клавиши F5 для открытия/закрытия окна imgui
        if isKeyJustPressed(keys.VK_F5) then
            isWindowOpen = not isWindowOpen -- Инвертируем флаг
        end

        if isWindowOpen then
            imgui.Process = true -- Включаем обработку imgui
        else
            imgui.Process = false -- Выключаем обработку imgui
        end
    end
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil;  
end);

imgui.OnFrame(
    function() return true end,
     function(this)
        local size, res = imgui.ImVec2(250, 250), imgui.ImVec2(getScreenResolution());
        imgui.SetNextWindowSize(size, imgui.Cond.FirstUseEver)
        if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)) then
            if (imgui.Button(u8'Открыть/закрыть машину', imgui.ImVec2(200, 50))) then
                sampSendChat('/lock');
            end
            if (imgui.Begin('leath0r screapt', window, imgui.WindowFlags.NoCollapse)) then
                if (imgui.Button(u8'Завести двигатель', imgui.ImVec2(200, 50))) then
                    sampSendChat('/engine');
                end
            end
        end
        imgui.End();
    end
);

Это вообще чат гпт пишет ахах
Чел вообще для imgui просил... И никто ему не скажет, что imgui залупа, про которую уже давно пора забыть

Автору для психического благополучия:
 
Последнее редактирование:

leath0r

Новичок
Автор темы
2
0
Чел вообще для imgui просил... И никто ему не скажет, что imgui залупа, про которую уже давно пора забыть

Автору для психического благополучия:
Я по этому тутору и писал но чаппо не показал как на клавишу биндить
 
  • Грустно
Реакции: XRLM

Hinаta

Известный
777
363
Я по этому тутору и писал но чаппо не показал как на клавишу биндить
В интернете же нет гайдов по проверке на клавишу...
Lua:
if isKeyJustPressed(клавиша) then
  переменная окна = not переменная окна
end