Помогите пишу тулс почему то imgui окно багается

triazov

Активный
Автор темы
266
58
Версия SA-MP
  1. 0.3.7 (R1)
Здрасте короче учу lua и постепенно пишу свой AdminTools в чём проблема
При создание 2 окна имгуи вызывается командой другое окно и кнопки с первого окна есть на втором короче херня какая то
Проверьте сами если хотите
Вот код:
Скрипт:
script_name('TriazovTools')
script_author('triazov')
script_description('Скрипт сделан @dzeniktriazova')

local sampev = require 'lib.samp.events'
local moon = require 'lib.moonloader'
local imgui = require 'imgui'
local keys = require 'vkeys'
local rkeys = require 'rkeys'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
--------------------------------------------------------[НАСТРОЙКИ---------------------------------------------------------------------------------
local tag = '[TriazovTools]:'
local pass = 'хуйтебеанепарольпадло'
local apass = '123321'
local nick = 'triazov'
local versionscr = 'v0.1'
local main_color = '0xFFFFFF'
local servers = {
        '164.132.201.89:1113'
    }
--------------------------------------------------------[НАСТРОЙКИ]---------------------------------------------------------------------------------
--------------------------------------------------------[ПЕРЕМЕННЫЕ]--------------------------------------------------------------------------------
local main_window_state = imgui.ImBool(false)
local settings_window_state = imgui.ImBool(false)
local toogle_status = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)
local sw, sh = getScreenResolution()
local themes = import 'resource/imgui_themes.lua'
imgui.ToogleButton = require('imgui_addons').ToggleButton
imgui.HotKey = require('imgui_addons').HotKey
imgui.Spinner = require('imgui_addons').Spinner
imgui.BufferingBar = require('imgui_addons').BufferingBar
--------------------------------------------------------[ПЕРЕМЕННЫЕ]--------------------------------------------------------------------------------
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Скрипт успешно загружен!', main_color)
    sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Сделано группой @dzeniktriazova', main_color)
    for i, k in pairs(servers) do
        local ip, port = sampGetCurrentServerAddress()
        server = ip..":"..port
        if k == server then
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Доступ разрешен.', -1)
    else
        sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Доступ запрещён!')
        wait(5000)
        thisScript():unload()
        end
    end
    imgui.SwitchContext()
    themes.SwitchColorTheme(2)
    imgui.Process = false
--------------------------------------------------------[CMD]-----------------------------------------------------------------------------------
    sampRegisterChatCommand('tztmenu', cmd_tztmenu)
    sampRegisterChatCommand('settingsmenu', cmd_settingsmenu)
--------------------------------------------------------[CMD]-----------------------------------------------------------------------------------
    while true do
        wait(0)
    --if main_window_state.v == false then
    --    imgui.Process = false
    end
    end
function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if dialogId == 2 then
          sampSendDialogResponse(dialogId,1,0,pass)
          return false
    end
    end
function imgui.OnDrawFrame()
    --imgui.ToogleButton(u8'', true)
    --if imgui.ToogleButton(u8'??????', false) then
    --    thisScript():unload()
    --end

    --imgui.Text(u8'Разработчик:triazov')
    --imgui.Text(u8'По поводу вопросов:vk.com/maso.youin')
    if not main_window_state.v and not settings_window_state.v then
        imgui.Process = false
    end
    if main_window_state then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 300), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin('TriazovTools', main_window_state)
        x, y, z = getCharCoordinates(PLAYER_PED)
        --imgui.Text('X:'..math.floor(x)..' Y:'..math.floor(y)..' Z:'..math.floor(z))
        --imgui.Separator()

        --if imgui.Button(u8'Вывести координаты') then
        --    print('x: '..math.floor(x)..'y: '..math.floor(y)..'z: '..math.floor(z))
        --    sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Координаты выведены в консоль!', main_color)
        --end
        if imgui.Button(u8'Настройки') then

        end
        if imgui.Button(u8'О скрипте') then
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Разработчик: triazov', main_color)
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}По всем вопросам: vk.com/maso.youin', main_color)
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Версия скрипта: '..versionscr, main_color)
        end
        imgui.End()
    end
    if settings_window_state then
        imgui.Begin('TriazovTools', settings_window_state)
        imgui.Text(u8'Это настройки TriazovTools')
        imgui.End()
    end
end
function cmd_tztmenu(arg)
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end
function cmd_settingsmenu(arg)
    settings_window_state.v = not settings_window_state.v
    imgui.Process = settings_window_state.v
end
Кому надо скрипт прикреплю
 

Вложения

  • TriazovTools.lua
    4.8 KB · Просмотры: 3

Smeruxa

Известный
1,372
726
При создание 2 окна имгуи вызывается командой другое окно и кнопки с первого окна есть на втором короче херня какая то
Ты прочитай что написал

Пара замечаний:
Когда используешь элементы имгуи вне самой функции imgui - ты должен ставить знак ".v"
Например:

Lua:
imgui.Begin(u8"Lol", main_window) -- не ставится .v, т.к. в функции imgui

-------------

if main_window.v then -- ставится, т.к. не используется в функции imgui, а просто указано как проверка в условии

end
Дальше пошли, что с табуляцией? Исправляйся

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

    sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Скрипт успешно загружен!', main_color)
    sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Сделано группой @dzeniktriazova', main_color)
    for i, k in pairs(servers) do
        local ip, port = sampGetCurrentServerAddress()
        server = ip..":"..port
        if k == server then
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Доступ разрешен.', -1)
        else
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Доступ запрещён!')
            wait(5000)
            thisScript():unload()
        end
    end
    imgui.SwitchContext()
    themes.SwitchColorTheme(2)
    sampRegisterChatCommand('tztmenu', function()
        main_window_state.v = not main_window_state.v
    end)
    sampRegisterChatCommand('settingsmenu', function()
        settings_window_state.v = not settings_window_state.v
    end)
    while true do
        wait(0)
        imgui.Process = true
        if not main_window_state.v and not settings_window_state.v then
            imgui.ShowCursor = false
        end
    end
end

function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if dialogId == 2 then
        sampSendDialogResponse(dialogId,1,0,pass)
        return false
    end
end

function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.ShowCursor = true
        imgui.SetNextWindowSize(imgui.ImVec2(500, 300), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin('TriazovTools', main_window_state)
        if imgui.Button(u8'О скрипте') then
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Разработчик: triazov', main_color)
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}По всем вопросам: vk.com/maso.youin', main_color)
            sampAddChatMessage('{00E2FF}[TriazovTools]: {FF00E6}Версия скрипта: '..versionscr, main_color)
        end
        imgui.End()
    end
    if settings_window_state.v then
        imgui.ShowCursor = true
        imgui.Begin('TriazovTools', settings_window_state)
        imgui.Text(u8'Это настройки TriazovTools')
        imgui.End()
    end
end
 
Последнее редактирование:

reburial

Потрачен
151
42
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.