Помогите с imgui

Den3ik

Участник
Автор темы
46
7
Версия MoonLoader
.027.0-preview
Доброго времени суток, я написал окно imgui но при переносе BeginChild в правую сторону с помощью
imgui.SameLine() у меня возникла проблема, нижнее окна опустились, мне нужно что бы нижнее окно поднялось вверх, как это возможно сделать

19.13.33.859.jpg
 

Den3ik

Участник
Автор темы
46
7
[ML] (error) AutoSend: ...ona Games Launcher\bin\arizona\moonloader\NAuto-Send.lua:80: attempt to call field 'SetCursorY' (a nil value)
stack traceback:
...ona Games Launcher\bin\arizona\moonloader\NAuto-Send.lua:80: in function 'OnDrawFrame'
...zona Games Launcher\bin\arizona\moonloader\lib\imgui.lua:1378: in function <...zona Games Launcher\bin\arizona\moonloader\lib\imgui.lua:1367>
[ML] (error) AutoSend: Script died due to an error. (27D00B24)

lua:
script_name("AutoSend")
script_author("ddevyatochka")

require "lib.moonloader"

local imgui = require'imgui'
local encoding = require'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8


local main_color = "{98FB98}"
local tag1 = main_color .. "[AutoSend] {FFFFFF}- Скрипт успешно запустился."
local tag2 = main_color .. "[AutoSend] {FFFFFF}- Команда активации скрпита: /as"
local tag3 = main_color .. "[AutoSend] {FFFFFF}- Телеграм разработчика: @ddevyatochka"
local tag = main_color .. "[AutoSend]"

local main_window_state = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)
local time_buffer = imgui.ImBuffer(256)

local box_one = imgui.ImBool(false)
local box_two = imgui.ImBool(false)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    imgui.Process = false
    
    sampAddChatMessage(tag1, -1)
    sampAddChatMessage(tag2, -1)
    sampAddChatMessage(tag3, -1)
    
    sampRegisterChatCommand("as", function(arg)
        main_window_state.v = not main_window_state.v
        imgui.Process = main_window_state.v
    end)
    
    while true do
        wait(0)
        
        if main_window_state.v == false then
            imgui.Process = false
        end
    end
end

local isSending = false

local function check_and_set_default(buffer, default_value)
    if buffer.v == "" then
        buffer.v = tostring(default_value)
        sampAddChatMessage(tag .. " {FFFFFF}Поскольку вы не указали время, оно было автоматически установлено на значение по умолчанию — 5 минут.", -1)
    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(660, 295), imgui.Cond.FirstUseEver)
    imgui.Begin("AutoSend by ddevyatochka", main_window_state)

        imgui.BeginChild("ChildWindow", imgui.ImVec2(420, 75), true)
            imgui.Text(u8"Что бы начать отправку сообщений введите \nнужное сообщение и выберите куда отправлять.\n")
            imgui.Separator()
            imgui.InputText(u8'Текст для отправки.', text_buffer)
        imgui.EndChild()

        imgui.SameLine()

        imgui.BeginChild("ChildWindowS", imgui.ImVec2(200, 250), true)
            imgui.Text(u8"Статистика.\n")
            imgui.Separator()
            imgui.Text(u8'Сообщений в фам чат: 12', text_buffer)
            imgui.Separator()
            imgui.Text(u8'Сообщений в альянс чат: 192', text_buffer)
        imgui.EndChild()

        imgui.SetCursorY(0)

        imgui.BeginChild("ChildWindowtwo", imgui.ImVec2(420, 145), true)
            imgui.Columns(2, "Colums", true)

            imgui.Text(u8"Выберите куда нужно\nотправлять сообщения")
            imgui.NextColumn()
            imgui.Text(u8"Указажите КД отправки\nсообщений в секундах")
            imgui.Separator()
            imgui.NextColumn()
            imgui.Checkbox(u8"Чат семьи", box_one)
            imgui.Checkbox(u8"Чат альянса", box_two)

            imgui.NextColumn()

            imgui.InputText("", time_buffer)

            imgui.Columns(1)
            imgui.Separator()
            
            if imgui.Button(u8"Запустить отправку сообщений") then
                check_and_set_default(time_buffer, 5)
                local time_string = tostring(time_buffer.v)
                local message_string = u8:decode(text_buffer.v)
                isSending = true
                sampAddChatMessage(tag .. " {FFFFFF}Вы будете отправлять данное сообщение в чат семьи/альянса каждые " .. time_string .. " секунд.", -1)
                sampAddChatMessage(tag .. " {FFFFFF}Сообщение: " .. message_string, -1)
                lua_thread.create(function()
                    while isSending do
                        local waitTimeInSeconds = tonumber(u8:decode(time_buffer.v))
                        if waitTimeInSeconds then
                            local waitTimeInMilliseconds = waitTimeInSeconds * 1000
                            wait(waitTimeInMilliseconds)
                            if box_one.v then
                                sampAddChatMessage(tag .. " {FFFFFF}Первый бокс активен",-1)
                                sampSendChat(u8"/fam " .. message_string, -1)
                            end
                            if box_two.v then
                                sampAddChatMessage(tag .. " {FFFFFF}Второй бокс активен",-1)
                                sampSendChat(u8"/al " .. message_string, -1)
                            end
                        else
                            sampAddChatMessage(tag .. " {FFFFFF}Неверное значение в буфере, ожидание не выполнено.", -1)
                        end
                    end
                end)
            end
            if imgui.Button(u8"Остановить отправку") then
                isSending = false
                sampAddChatMessage(tag .. " {FFFFFF}Вы прекратили отправку сообщений в чат семьи/альянса!", -1)
            end
        imgui.EndChild()
    
        imgui.Text(u8"Script by ddevyatochka\nTelegram: @ddevyatochka")
    imgui.End()
end