Постоянный курсор на экране

Sergey_Turner

Участник
Автор темы
102
7
Версия MoonLoader
.026-beta
Доброго дня. Химичу уже 2-ой день, но никак немогу решить проблему с курсором. Вообщем, у меня есть окно imgui которое активно всё время, соответственно в бесконечном цикле у меня постоянно включён имгуи процесс, а значит и курсор будет на экране. Конечно если закрыть одно из окон имгуи или открыть, а затем закрыть чат он уберётся, но можно ли как-то отключить его при работе этого "Постоянного" окна? Из бесконечного цикла убрать немогу, т.к. подвязана кнопка. И да, у меня стоит отключение курсора (ShowCursor) при спавне игрока и всё отлично, курсора нет. Но как можно догадаться, при перезагрузке скрипта курсор вновь появится
 
Решение
Пример:
Им я и пользовался, но не сразу дошло куда впихнуть
lua:
require("moonloader")
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local window = imgui.ImBool(false)

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

    sampRegisterChatCommand('imgui', function()
        window.v = not window.v
        imgui.Process = window.v
    end)

    wait(-1)
end

function imgui.OnDrawFrame()
    if window.v then
        imgui.ShowCursor = false
        imgui.SetNextWindowPos(imgui.ImVec2(350.0, 250.0), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(280.0, 70.0)...

sat0ry

Известный
1,092
293
Доброго дня. Химичу уже 2-ой день, но никак немогу решить проблему с курсором. Вообщем, у меня есть окно imgui которое активно всё время, соответственно в бесконечном цикле у меня постоянно включён имгуи процесс, а значит и курсор будет на экране. Конечно если закрыть одно из окон имгуи или открыть, а затем закрыть чат он уберётся, но можно ли как-то отключить его при работе этого "Постоянного" окна? Из бесконечного цикла убрать немогу, т.к. подвязана кнопка. И да, у меня стоит отключение курсора (ShowCursor) при спавне игрока и всё отлично, курсора нет. Но как можно догадаться, при перезагрузке скрипта курсор вновь появится
код
 

Sergey_Turner

Участник
Автор темы
102
7
@Renni.

Код:
function sampev.onSendSpawn() -- Отключение курсора при спавне
    showCursor(false)
end

if ToggleButton_InfoWindow.v then -- Активация информационного окна в бесконечном цикле
    InfoWindow.v = true
    imgui.Process = true
else
    InfoWindow.v = false
end

UPD:

Проблему решил добавив в блок активации окна проверки на активные окна и отключение курсора при их неактивности.
 
Последнее редактирование:

sat0ry

Известный
1,092
293
@Renni.

Код:
function sampev.onSendSpawn() -- Отключение курсора при спавне
    showCursor(false)
end

if ToggleButton_InfoWindow.v then -- Активация информационного окна в бесконечном цикле
    InfoWindow.v = true
    imgui.Process = true
else
    InfoWindow.v = false
end

UPD:

Проблему решил добавив в блок активации окна проверки на активные окна и отключение курсора при их неактивности.
собственно говоря:
lua:
imgui.ShowCursor = false/true
 
  • Нравится
Реакции: Sergey_Turner

sat0ry

Известный
1,092
293
Пример:
Им я и пользовался, но не сразу дошло куда впихнуть
lua:
require("moonloader")
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local window = imgui.ImBool(false)

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

    sampRegisterChatCommand('imgui', function()
        window.v = not window.v
        imgui.Process = window.v
    end)

    wait(-1)
end

function imgui.OnDrawFrame()
    if window.v then
        imgui.ShowCursor = false
        imgui.SetNextWindowPos(imgui.ImVec2(350.0, 250.0), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(280.0, 70.0), imgui.Cond.FirstUseEver)
        imgui.Begin('Window Title', window)

        imgui.Text('Jopa')

        imgui.End()
    end
end
 
  • Нравится
Реакции: Sergey_Turner

Sergey_Turner

Участник
Автор темы
102
7
Пример:

lua:
require("moonloader")
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local window = imgui.ImBool(false)

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

    sampRegisterChatCommand('imgui', function()
        window.v = not window.v
        imgui.Process = window.v
    end)

    wait(-1)
end

function imgui.OnDrawFrame()
    if window.v then
        imgui.ShowCursor = false
        imgui.SetNextWindowPos(imgui.ImVec2(350.0, 250.0), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(280.0, 70.0), imgui.Cond.FirstUseEver)
        imgui.Begin('Window Title', window)

        imgui.Text('Jopa')

        imgui.End()
    end
end
Я понял, только ты не учёл что у меня это окно активируется не по команде, а в бесконечном цикле
 

Macintosh

Известный
19
4
Пример:

lua:
require("moonloader")
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local window = imgui.ImBool(false)

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

    sampRegisterChatCommand('imgui', function()
        window.v = not window.v
        imgui.Process = window.v
    end)

    wait(-1)
end

function imgui.OnDrawFrame()
    if window.v then
        imgui.ShowCursor = false
        imgui.SetNextWindowPos(imgui.ImVec2(350.0, 250.0), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(280.0, 70.0), imgui.Cond.FirstUseEver)
        imgui.Begin('Window Title', window)

        imgui.Text('Jopa')

        imgui.End()
    end
end
Обьясни пожалуйста, куда все эти коды вводить? Какой файл найти чтобы это всё вставить с заменой?