Мимгуи че каво

Lance_Sterling

Известный
Автор темы
977
341
Версия MoonLoader
.026-beta
Начал потихоньку переходить на мимгуи, и появилось несколько вопросов
Чо за третий аргумент у инпута
Чо за player аргумент в функции и как с ним работать
Lua:
local imgui = require 'mimgui'
local ffi = require 'ffi'
local vkeys = require 'vkeys'
local encoding = require 'encoding' --[[Подключаем библиотеку для чтения/записи данных с кодировкой,
                                        отличающейся от кодировки нашего скрипта.]]

encoding.default = 'CP1251'         --[[Указываем кодировку по умолчанию. Обратите внимание,
                                        что она должна совпадать с кодировкой вашего скрипта.]]
local u8 = encoding.UTF8            -- И создаём короткий псевдоним для кодировщика UTF-8

local wm = require 'windows.message'
local new, str, sizeof = imgui.new, ffi.string, ffi.sizeof

local renderWindow, freezePlayer, removeCursor = new.bool(), new.bool(), new.bool()
local inputField = new.char[256](--[[Здесь также следует кодировать информацию!]])
local sizeX, sizeY = getScreenResolution()

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

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(220, 200), imgui.Cond.FirstUseEver)
        imgui.Begin("Main Window", renderWindow)
        imgui.Text("Hello")
        imgui.Text(string.format("Current render mode: %s", renderWindow[0]))
        if imgui.InputText(u8"Привет", inputField, sizeof(inputField)) then
            -- Кодируем название инпута
            print(u8:decode(str(inputField))) -- Декодируем в Windows-1251
        end
        if imgui.Button(u8"Очистить поле") then -- Кодируем название кнопки
            imgui.StrCopy(inputField, '')
        end
        if imgui.Checkbox(u8'Заморозить игрока', freezePlayer) then -- Кодируем название кнопки
            player.LockPlayer = freezePlayer[0]
        end
        if imgui.Checkbox(u8'Скрыть курсор', removeCursor) then -- Кодируем название кнопки
            player.HideCursor = removeCursor[0]
        end
        if player.HideCursor then
            imgui.Text(u8'Курсор скрыт') -- Кодируем выводимый текст
        end
        imgui.End()
    end
)

function main()
    addEventHandler('onWindowMessage', function(msg, wparam, lparam)
        if msg == wm.WM_KEYDOWN or msg == wm.WM_SYSKEYDOWN then
            if wparam == vkeys.VK_X then
                renderWindow[0] = not renderWindow[0]
            end
        end
    end)
    wait(-1)
end

Это еще чо imgui.GetIO().IniFilename = nil
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,798
2,659
Чо за третий аргумент у инпута
это размер инпута, обычно ставят его через sizeof() из ffi, который динамически подстраивается под текст
Чо за player аргумент в функции и как с ним работать
точно не знаю, но вроде это что-то типа идентификатора окна, через который можно допустим скрыть курсор
 

Lance_Sterling

Известный
Автор темы
977
341
это размер инпута, обычно ставят 255 символов (2^8 - информатика)

точно не знаю, но вроде это что-то типа идентификатора окна, через который можно допустим скрыть курсор
А self нахуя придумали тогда?

Это еще чо imgui.GetIO().IniFilename = nil
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,798
2,659
А self нахуя придумали тогда?
кто-то называется player, кто-то self, там хз как более правильно
Из статьи mimgui про player/self
Код:
В функцию в качестве первой переменной передаются список функций
для взаимодействия с локальным игроком и рядом нескольких возможностей
 

Lance_Sterling

Известный
Автор темы
977
341
кто-то называется player, кто-то self, там хз как более правильно
Из статьи mimgui про player/self
Код:
В функцию в качестве первой переменной передаются список функций
для взаимодействия с локальным игроком и рядом нескольких возможностей
player это просто получается настройки которые активны когда окно активно?
 
  • Нравится
Реакции: whyega52

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,798
2,659
Это еще чо imgui.GetIO().IniFilename = nil
mimgui вроде умеет сам сохранять свои значения в ini, и эта переменная по умолчанию равна "moonloader/config/mimgui/%scriptfilename%.ini", т.е. путем, куда будет сохраняться все, задавая переменной значение nil, мы отключаем это самое сохранение
 
  • Нравится
Реакции: qdIbp и sdfy

sdfy

Известный
348
229
Это еще чо imgui.GetIO().IniFilename = nil
1678107633702.png

про это расписано прямо в теме с mimgui
 
  • Нравится
Реакции: qdIbp

qdIbp

Автор темы
Проверенный
1,438
1,180
Чо за третий аргумент у инпута
Оператор sizeof() в C++ возвращает размер переданной переменной или данных в байтах
Чо за player аргумент в функции и как с ним работать
массив через который ты юзаешь
player.LockPlayer = freezePlayer[0]
player.HideCursor = removeCursor[0]
и еще что то
Код:
[ML] (script) lua — êîïèÿ.lua: _draw   function: 0x10902408
[ML] (script) lua — êîïèÿ.lua: Condition   function: 0x109023c8
[ML] (script) lua — êîïèÿ.lua: Unsubscribe   function: 0x10902b60
[ML] (script) lua — êîïèÿ.lua: HideCursor   false
[ML] (script) lua — êîïèÿ.lua: IsActive   function: 0x10902b80
[ML] (script) lua — êîïèÿ.lua: _render   true
[ML] (script) lua — êîïèÿ.lua: LockPlayer   false

Это еще чо imgui.GetIO().IniFilename = nil
Выключаем сохранение
 
  • Нравится
Реакции: whyega52

Lance_Sterling

Известный
Автор темы
977
341
mimgui вроде умеет сам сохранять свои значения в ini, и эта переменная по умолчанию равна "moonloader/config/mimgui/%scriptfilename%.ini", т.е. путем, куда будет сохраняться все, задавая переменной значение nil, мы отключаем это самое сохранение
вахуи а я думал почему оно сохраняется

Посмотреть вложение 192391
про это расписано прямо в теме с mimgui
дякую

Оператор sizeof() в C++ возвращает размер переданной переменной или данных в байтах

массив через который ты юзаешь
player.LockPlayer = freezePlayer[0]
player.HideCursor = removeCursor[0]
и еще что то
Код:
[ML] (script) lua — êîïèÿ.lua: _draw   function: 0x10902408
[ML] (script) lua — êîïèÿ.lua: Condition   function: 0x109023c8
[ML] (script) lua — êîïèÿ.lua: Unsubscribe   function: 0x10902b60
[ML] (script) lua — êîïèÿ.lua: HideCursor   false
[ML] (script) lua — êîïèÿ.lua: IsActive   function: 0x10902b80
[ML] (script) lua — êîïèÿ.lua: _render   true
[ML] (script) lua — êîïèÿ.lua: LockPlayer   false


Выключаем сохранение
пон
 
  • Грустно
  • Нравится
Реакции: whyega52 и qdIbp