mimgui checker

турбодизельный унитаз2012

Участник
Автор темы
127
9
Версия MoonLoader
.026-beta
Привет всем.
Наткнулся на такой вид чекера.
Как его сделать?
1711320248545.png
 

ChromiusJ

PARΛDIGM ΛSS
Друг
4,906
3,193
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local ffi = require('ffi')
local renderWindow = imgui.new.bool(true)
local text = imgui.new.char[256]()
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)
local nicknames = {}
local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow) then
            for i, nickname in ipairs(nicknames) do
                imgui.Text(u8(i..'.'..nickname))
                imgui.SameLine()
                if imgui.Button(u8'удалить##' .. i) then
                    table.remove(nicknames, i)
                end
            end
            imgui.InputText('add me',text,ffi.sizeof(text))
            if imgui.Button('add to the table') then
                table.insert(nicknames,u8:decode(ffi.string(text)))
                ffi.fill(text, ffi.sizeof(text), 0)
            end
            imgui.End()
        end
    end
)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('mimgui', function()
        renderWindow[0] = not renderWindow[0]
    end)
    wait(-1)
end
Ну что-то в качестве примера сойдет, перемещение и отображение уже можно и самому сделать
1711320789049.png
 

турбодизельный унитаз2012

Участник
Автор темы
127
9
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local ffi = require('ffi')
local renderWindow = imgui.new.bool(true)
local text = imgui.new.char[256]()
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)
local nicknames = {}
local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow) then
            for i, nickname in ipairs(nicknames) do
                imgui.Text(u8(i..'.'..nickname))
                imgui.SameLine()
                if imgui.Button(u8'удалить##' .. i) then
                    table.remove(nicknames, i)
                end
            end
            imgui.InputText('add me',text,ffi.sizeof(text))
            if imgui.Button('add to the table') then
                table.insert(nicknames,u8:decode(ffi.string(text)))
                ffi.fill(text, ffi.sizeof(text), 0)
            end
            imgui.End()
        end
    end
)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('mimgui', function()
        renderWindow[0] = not renderWindow[0]
    end)
    wait(-1)
end
Ну что-то в качестве примера сойдет, перемещение и отображение уже можно и самому сделать
Посмотреть вложение 235462
Извини, пожалуйста, но как добавить сохранение ников в json? А то я в нём очень плохо понимаю(
 

ChromiusJ

PARΛDIGM ΛSS
Друг
4,906
3,193
Извини, пожалуйста, но как добавить сохранение ников в json? А то я в нём очень плохо понимаю(
а что трудного?
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local ffi = require('ffi')
local renderWindow = imgui.new.bool(true)
local text = imgui.new.char[256]()
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)
local file = getWorkingDirectory()..'\\config\\gavnochecker.json'
local nicknames = {}
function json(filePath)
    local f = {}

    function f:read()
        local f = io.open(filePath, "r+")
        local jsonInString = f:read("*a")
        f:close()
        local jsonTable = decodeJson(jsonInString)
        return jsonTable
    end

    function f:write(t)
        f = io.open(filePath, "w")
        f:write(encodeJson(t))
        f:flush()
        f:close()
    end

    return f
end
local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow) then
            for i, nickname in ipairs(nicknames) do
                imgui.Text(u8(i .. '.' .. nickname))
                imgui.SameLine()
                if imgui.Button(u8'удалить##' .. i) then
                    table.remove(nicknames, i)
                    json(file):write(nicknames)
                end
            end
            imgui.InputText('add me', text, ffi.sizeof(text))
            if imgui.Button('add to the table') then
                table.insert(nicknames, u8:decode(ffi.string(text)))
                ffi.fill(text, ffi.sizeof(text), 0)
                json(file):write(nicknames)
            end
            imgui.End()
        end
    end
)

function main()
    while not isSampAvailable() do wait(0) end
    if doesFileExist(file) then
        nicknames = json(file):read()
    end
    sampRegisterChatCommand('mimgui', function()
        renderWindow[0] = not renderWindow[0]
    end)
    wait(-1)
end
 
  • Нравится
Реакции: qdIbp и MLycoris