Не прокручивает окно

RICJS29_JSJA

Участник
Автор темы
93
4
Версия MoonLoader
.026-beta
Окно не крутит тупо, как решить подскажите плиз
 
  • Эм
Реакции: qdIbp

RICJS29_JSJA

Участник
Автор темы
93
4
Может код с начало покажешь, не то в небо пальцем каждый тыкнет а решение окажется не верным
Lua:
script_name('DrivingShool_Helper')
script_author('Marcus_Kransov')
script_version('1.0')
script_version_number(1.0)

---------

require('lib.moonloader')

------

local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local ffi = require('ffi')
local new = imgui.new
local tegscript = '{4682b4}[Driving Shool Helper]{ffffff}'
local keys = require("vkeys")
local inicfg = require("inicfg")
local cfg = inicfg.load({
    config = {
        rank = '',
        number = '',
        otdel = '',
        sms_message_status = false
    },
    RpOtigrovki = {
        sms_message = '',
        privetstvie = '',
        badge = '',
        cena_license = '',
        bodycam_true = '',
        bodycam_status = '',
        bodycam_false = ''
    },
    settings = {
        AutoClist = false,
        AutoClist_list = 0
    }
}, 'DrivingShool_Helper.ini')

local Menu_Script = new.bool()
local Menu_InfoScript = new.bool()
local Menu_Glavnoe = new.bool()
local Menu_FAQ = new.bool()
local Settings_AutoClist = new.bool()
local sms_message_status = new.bool(cfg.config.sms_message_status)
local samp = require('samp.events')
local jam = require 'jamicons'
local font = {}

imgui.OnInitialize(function()
    imagestart = imgui.CreateTextureFromFile(getGameDirectory() .. "\\moonloader\\D-Shool_Helper\\images\\menuimages\\DrivingShoolMenuStart.jpg")
    imagescriptinfo = imgui.CreateTextureFromFile(getGameDirectory() .. "\\moonloader\\D-Shool_Helper\\images\\menuimages\\DrivingShoolMenuInfoScript.jpg")
    imagefaqmenu = imgui.CreateTextureFromFile(getGameDirectory() .. "\\moonloader\\D-Shool_Helper\\images\\menuimages\\DrivingShoolFAQ.jpg")
    ----
    skin_girls = imgui.CreateTextureFromFile(getGameDirectory() .. "\\moonloader\\D-Shool_Helper\\images\\skins\\DrivingShoolSkins1FAQ.jpg")
    skin_boys_7or10 = imgui.CreateTextureFromFile(getGameDirectory() .. "\\moonloader\\D-Shool_Helper\\images\\skins\\DrivingShoolSkins2FAQ.jpg")
    skin_boys_1or6 = imgui.CreateTextureFromFile(getGameDirectory() .. "\\moonloader\\D-Shool_Helper\\images\\skins\\DrivingShoolSkins3FAQ.jpg")
    blue_theme()
    ----
    local glyph_ranges = imgui.GetIO().Fonts:GetGlyphRangesCyrillic()
    example = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14)..'\\impact.ttf', 16, _, glyph_ranges)
    ----
    local font_config = imgui.ImFontConfig()
    font_config.SizePixels = 20;
    local iconRanges = new.ImWchar[3](jam.min_range, jam.max_range, 0)
    font['jam'] = imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(jam.get_font_data_base85(), 24, font_config, iconRanges)
end)
------
local font_flag = require('moonloader').font_flag
local my_font = renderCreateFont('Verdana', 12, font_flag.BOLD + font_flag.SHADOW)
local ZMENU = [[
    '1' — Приветствие
    '2' — Бейджик
    '3' — Попросить паспорт
    '4' — Попросить мед.карту (Лицензия на оружие)
    '5' — Попросить паспорт и мед.карту
]]
local BMENU = [[
    '1' — Оформить лицензию
    '2' — Назвать цену на лицензию.
    '3' — Отказать (Нет мед.карты)
    '4' — Поправить бейдж (/clist)
    '5' — Включить Body Cam
    '6' — Состояние Body Cam
    '7' — Выключить Body Cam
]]
------
local DSH_OScripte = 'Комбинация\tФункция\tКоманда\n{4682b4}Z + 1{ffffff}\tПриветствие\t{4682b4}/qq{ffffff}\n{4682b4}Z + 2{ffffff}\tПоказывает бейдж\t{4682b4}/badge{ffffff}\n{4682b4}Z + 3{ffffff}\tПопросить паспорт\t{4682b4}/dpasp{ffffff}\n{4682b4}Z + 4{ffffff}\tПопросить мед.карту\t{4682b4}/dmedk{ffffff}\n \n{4682b4}B + 1{ffffff}\tОформить лицензию\t{4682b4}/licmenu{ffffff}\n{4682b4}B + 2{ffffff}\tНазвать цену на лицензию\t{4682b4}/cenalic{ffffff}\n{4682b4}B + 3{ffffff}\tОтказать (Нету мед.карты)\t{4682b4}/nolic{ffffff}\n{4682b4}B + 4{ffffff}\tПоправить бейджик\t{4682b4}/cbage{ffffff}\n{4682b4}B + 5{ffffff}\tВключить BodyCam\t{4682b4}[No Command]{ffffff}\n{4682b4}B + 6{ffffff}\tСостояние BodyCam\t{4682b4}[No Command]{ffffff}\n{4682b4}B + 7{ffffff}\tВыключить BodyCam\t{4682b4}[No Command]{ffffff}'
local peremennie = {
    ['{id}'] = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)),
    ['{full_name}'] = sampGetPlayerNickname(id),
    ['{fullname}'] = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))):gsub('_', ' ')
}
------
local smsmessage = new.char[256](u8(cfg.RpOtigrovki.sms_message))
local privetstvie = new.char[256](u8(cfg.RpOtigrovki.privetstvie))
local badge = new.char[256](u8(cfg.RpOtigrovki.badge))
local cena_license = new.char[256](u8(cfg.RpOtigrovki.cena_license))
local bodycam_true = new.char[256](u8(cfg.RpOtigrovki.bodycam_true))
local bodycam_status = new.char[256](u8(cfg.RpOtigrovki.bodycam_status))
local bodycam_false = new.char[256](u8(cfg.RpOtigrovki.bodycam_false))
local autoClist_status = new.bool(cfg.settings.AutoClist)
local autoClist_numbers = new.int(cfg.settings.AutoClist_list)
------
function main()

    sampRegisterChatCommand('dsh', function() Menu_Script[0] = not Menu_Script[0] end)
    sampRegisterChatCommand('ddd', function() Menu_InfoScript[0] = not Menu_InfoScript[0] end)
    sampAddChatMessage(tegscript .. ' Загружен. Активация: /dsh', -1)

    if autoClist_status[0] then
        if sampIsLocalPlayerSpawned() then
            sampSendChat('/clist ' .. cfg.settings.AutoClist_list)
        end
    end

    while true do
        wait(0)
------
local current_dialog = sampHasDialogRespond()
local result, button, list, input = sampHasDialogRespond(current_dialog)
    if current_dialog == 10 then
        if result then
        elseif button == 0 and list == 0 then
            sampShowDialog(10, '                       Driving Shool Helper | Подробней о скрипте', DSH_OScripte, 'Назад', 'Дальше', 5)
        elseif button == 0 and list == 1 then
            sampShowDialog(10, '                       Driving Shool Helper | Подробней о скрипте', DSH_OScripte, 'Назад', 'Дальше', 5)
        elseif button == 0 and list == 2  then
            sampShowDialog(10, '                       Driving Shool Helper | Подробней о скрипте', DSH_OScripte, 'Назад', 'Дальше', 5)
        elseif button == 0 and list == 3 then
            sampShowDialog(10, '                       Driving Shool Helper | Подробней о скрипте', DSH_OScripte, 'Назад', 'Дальше', 5)
        end
    end
------

    if isKeyDown(keys.VK_Z) then
    local lineHeight = renderGetFontDrawHeight(my_font)
    local y = 400
    for line in ZMENU:gmatch("[^\r\n]+") do
        renderFontDrawText(my_font, line, 10, y, 0xFFFFFFFF)
        y = y + lineHeight
    end
    end
    if isKeyDown(keys.VK_Z) and isKeyJustPressed(keys.VK_1) then
        sampSendChat('Здравствуйте. Я сотрудник автошколы ' .. nick() .. ', чем могу помочь?')
    end
    if isKeyDown(keys.VK_Z) and isKeyJustPressed(keys.VK_2) then
        sampSendChat('/do На груди бейджик: ' .. nick() .. ' | Управляющий')
    end
    if isKeyDown(keys.VK_Z) and isKeyJustPressed(keys.VK_3) then
        sampSendChat('Хорошо. Ваш паспорт пожалуйста.')
    wait(1500)
        sampSendChat('/b /showpass id')
    end
    if isKeyDown(keys.VK_Z) and isKeyJustPressed(keys.VK_4) then
        sampSendChat('Хорошо. Покажите вашу медицинскую карту.')
    wait(1500)
        sampSendChat('/b /showmc id')
    end
    if isKeyDown(keys.VK_B) then
        local lineHeight = renderGetFontDrawHeight(my_font)
        local y = 400
        for line in BMENU:gmatch("[^\r\n]+") do
            renderFontDrawText(my_font, line, 10, y, 0xFFFFFFFF)
            y = y + lineHeight
        end
    end
    if isKeyDown(keys.VK_B) and isKeyJustPressed(keys.VK_1) then
        sampSendChat('/do Инструктор открыл(а) кейс и достал бланк лицензии.')
    wait(1500)
        sampSendChat('/me заполнил(а) бланк на выдачу соответствующей лицензии')
    wait(1500)
        sampSendChat('/me поставил(а) подпись и штамп "Instructors"')
    wait(1500)
        sampSetChatInputEnabled(true)
        sampSetChatInputText("/givelicense")
    end
    if isKeyDown(keys.VK_B) and isKeyJustPressed(keys.VK_2) then
        sampSendChat('Стоимость лицензии составит - вирт. Готовы оплатить?')
    end
    if isKeyDown(keys.VK_B) and isKeyJustPressed(keys.VK_3) then
        sampSendChat('Увы, но вынужден Вам отказать в продаже так как у вас отсутствует мед. карта.')
    wait(1500)
        sampSendChat('Её можно получить в центре здравоохранения, после её получения ожидаем Вас.')
    end
    if isKeyDown(keys.VK_B) and isKeyJustPressed(keys.VK_4) then
        sampSendChat('/me поправил(а) бейджик')
    wait(1500)
        sampSendChat('/clist 16')
    wait(1500)
        sampSendChat('/do Бейджик на груди — « Instructors | ' .. nick() .. ' | ' .. u8:decode(cfg.config.rank) .. ' | ' .. u8:decode(cfg.config.otdel) .. ' »')
    end
    end
end

local newFrame = imgui.OnFrame(
    function() return Menu_Script[0] end,
    function(self)
        local resX, resY = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(530, 238))
        imgui.Begin('Driving Shool Helper', Menu_Script, imgui.WindowFlags.NoResize)
        imgui.Image(imagestart, imgui.ImVec2(520, 200))
imgui.SetCursorPos(imgui.ImVec2(95,95))
    if imgui.Button(u8'\t\t\t\t\t\t\t\tМеню скрипта\t\t\t\t\t\t\t    ') then
        Menu_Glavnoe[0] = true
        Menu_Script[0] = false
    end
imgui.SetCursorPos(imgui.ImVec2(95,125))
    if imgui.Button(u8'          Перезагрузить\t\t ') then
        thisScript():reload()
    end
imgui.SameLine()
    if imgui.Button(u8'          Выключить\t\t    ') then
            sampAddChatMessage(tegscript ..' Выключен. (( Для включения зажмите CTRL + R ))')
        thisScript():unload()
    end
imgui.SetCursorPos(imgui.ImVec2(95,153))
    if imgui.Button(u8'                           Подробней о скрипте                         ') then
        sampShowDialog(10, '                       Driving Shool Helper | Подробней о скрипте', DSH_OScripte, 'Назад', 'Дальше', 5)
        Menu_Script[0] = false
    end
        imgui.End()
    end
)

local tab = 1

local newFrame2 = imgui.OnFrame(
    function() return Menu_Glavnoe[0] end,
    function(self)
    
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 530, 238
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY))
        imgui.Begin('Driving Shool Helper', Menu_Glavnoe, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoScrollbar)
-------------------------------
    if imgui.Button(u8'Главное меню', imgui.ImVec2(145,40)) then tab = 1 end
    if imgui.Button(u8'Настройки', imgui.ImVec2(145,40)) then tab = 2 end
    if imgui.Button(u8'Отыгровки', imgui.ImVec2(145,40)) then tab = 3 end
    if imgui.Button(u8'FAQ', imgui.ImVec2(145,40)) then
            Menu_Glavnoe[0] = false
            Menu_FAQ[0] = true
    end
    if imgui.Button(u8'Unload', imgui.ImVec2(70,26)) then
        sampAddChatMessage(tegscript .. ' Выключен', -1)
        thisScript():unload()
    end
imgui.SameLine()
    if imgui.Button(u8'Reload', imgui.ImVec2(70,26)) then
        thisScript():reload()
    end

    if tab == 1 then
    elseif tab == 2 then
imgui.SetCursorPos(imgui.ImVec2(155,40))
    if imgui.Checkbox('##1', sms_message_status) then
        cfg.config.sms_message_status = sms_message_status[0]
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.SameLine()
    imgui.Text(u8'Авто-отыгровка SMS')
imgui.SameLine()
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'При получении SMS будет автоматическая отыгровка\nПример: SMS: Я чушпан. Отправитель: Maks_Venda[102]\n(Текст отыгровки можно заменить в разделе "Отыгровки")')
        imgui.EndTooltip()
    end
imgui.SameLine()
    if imgui.Checkbox('##2', autoClist_status) then
        cfg.settings.AutoClist = autoClist_status[0]
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.SameLine()
    imgui.Text('AutoClist')
imgui.SameLine()
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'При спавне устанавливает вам клист который вы выбрали.')
        imgui.EndTooltip()
    end
    if autoClist_status[0] then
imgui.SameLine()
    if imgui.Button('Settings') then
        Menu_Glavnoe[0] = false
        Settings_AutoClist[0] = true
    end
    end

    elseif tab == 3 then
imgui.SetCursorPos(imgui.ImVec2(155,40))
    imgui.Text(u8'Отыгровка при получении SMS:')
imgui.SameLine()
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'Только если включена функция в настройках')
        imgui.EndTooltip()
    end
imgui.SetCursorPos(imgui.ImVec2(155,60))
imgui.PushFont(font['jam'])
    if imgui.Button(jam['HISTORY'], imgui.ImVec2(36,29)) then
        imgui.StrCopy(smsmessage, '/seeDo ' .. u8('>> Пришло новое сообщение на iPhone 15 Pro Max <<'))
        cfg.RpOtigrovki.sms_message = u8:decode(ffi.string(smsmessage))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopFont()
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'Восстановит стандартную отыгровку')
        imgui.EndTooltip()
    end
imgui.SameLine()
imgui.PushItemWidth(330)
    if imgui.InputText('##test', smsmessage, 256) then
        cfg.RpOtigrovki.sms_message = u8:decode(ffi.string(smsmessage))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopItemWidth()
imgui.SetCursorPos(imgui.ImVec2(155,90))
    imgui.Text(u8'Отыгровка приветствия:')
imgui.SameLine()
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'Изменяет отыгровку в бинде\n(Z + 1 | /salam)')
        imgui.EndTooltip()
    end
imgui.SetCursorPos(imgui.ImVec2(155,110))
imgui.PushFont(font['jam'])
    if imgui.Button(jam['REDO'], imgui.ImVec2(36,29)) then
        imgui.StrCopy(privetstvie, u8('Здравствуйте. Я сотрудник автошколы M.Kransov, чем могу помочь?'))
        cfg.RpOtigrovki.privetstvie = u8:decode(ffi.string(privetstvie))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopFont()
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'Восстановит стандартную отыгровку')
        imgui.EndTooltip()
    end
imgui.SameLine()
imgui.PushItemWidth(330)
    if imgui.InputText('##testt', privetstvie, 256) then
        cfg.RpOtigrovki.privetstvie = u8:decode(ffi.string(privetstvie))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopItemWidth()
imgui.SetCursorPos(imgui.ImVec2(155,140))
    imgui.Text(u8'Бейджик: ')
imgui.SameLine()
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'Изменяет отыгровку бейджика на груди\n(Z + 2 | /badge)')
        imgui.EndTooltip()
    end
imgui.SetCursorPos(imgui.ImVec2(155,160))
imgui.PushFont(font['jam'])
    if imgui.Button(jam['STOP_SIGN'], imgui.ImVec2(36,29)) then
        imgui.StrCopy(badge, u8('/do На груди бейджик: Name | Rank | Тел: number'))
        cfg.RpOtigrovki.badge = u8:decode(ffi.string(badge))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopFont()
imgui.SameLine()
imgui.PushItemWidth(330)
    if imgui.InputText('##testtt', badge, 256) then
        cfg.RpOtigrovki.badge = u8:decode(ffi.string(badge))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopItemWidth()
imgui.SetCursorPos(imgui.ImVec2(155,190))
    imgui.Text(u8'Отыгровка Боди-Камеры [Включить]: ')
imgui.SameLine()
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'Отыграет включение камеры\n(B + 5)')
        imgui.EndTooltip()
    end
imgui.SetCursorPos(imgui.ImVec2(155,210))
imgui.PushFont(font['jam'])
    if imgui.Button(jam['UNDO'], imgui.ImVec2(36,29)) then
        imgui.StrCopy(bodycam_true, u8('/me нажал на кнопку на нагрудной камере «Body Cam G-101» и включил запись.'))
        cfg.RpOtigrovki.bodycam_true = u8:decode(ffi.string(bodycam_true))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopFont()
imgui.SameLine()
imgui.PushItemWidth(330)
    if imgui.InputText('##testttt', bodycam_true, 256) then
        cfg.RpOtigrovki.bodycam_true = u8:decode(ffi.string(bodycam_true))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopItemWidth()
imgui.SetCursorPos(imgui.ImVec2(155,240))
    imgui.Text(u8'Отыгровка Боди-Камеры [Состояние]: ')
imgui.SameLine()
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'Отыгрывает состояние камеры\n(B + 6)')
        imgui.EndTooltip()
    end
imgui.SetCursorPos(imgui.ImVec2(155,260))
imgui.PushFont(font['jam'])
    if imgui.Button(jam['TRASH'], imgui.ImVec2(36,29)) then
        imgui.StrCopy(bodycam_status, u8('/do Нагрудная камера «Body Cam G-101» ведет запись с передачей на SD-карту.'))
        cfg.RpOtigrovki.bodycam_status = u8:decode(ffi.string(bodycam_status))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopFont()
imgui.SameLine()
imgui.PushItemWidth(330)
    if imgui.InputText('##tessst', bodycam_status, 256) then
        cfg.RpOtigrovki.bodycam_status = u8:decode(ffi.string(bodycam_status))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopItemWidth()
imgui.SetCursorPos(imgui.ImVec2(155,290))
    imgui.Text(u8'Отыгровка Боди-Камеры [Выключение]: ')
imgui.SameLine()
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.Text(u8'Отыгрывает выключение камеры\n(B + 7)')
        imgui.EndTooltip()
    end
imgui.SetCursorPos(imgui.ImVec2(155,310))
imgui.PushFont(font['jam'])
    if imgui.Button(jam['CLOSE'], imgui.ImVec2(36,29)) then
        imgui.StrCopy(bodycam_false, u8('/me нажал на кнопку на нагрудной камере и выключил запись.'))
        cfg.RpOtigrovki.bodycam_false = u8:decode(ffi.string(bodycam_false))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopFont()
imgui.SameLine()
imgui.PushItemWidth(330)
    if imgui.InputText('##tttesst', bodycam_false, 256) then
        cfg.RpOtigrovki.bodycam_false = u8:decode(ffi.string(bodycam_false))
        inicfg.save(cfg, 'DrivingShool_Helper.ini')
    end
imgui.PopItemWidth()
    end
-------------------------------

        imgui.End()
    end
)
local newFrame3 = imgui.OnFrame(
    function() return Settings_AutoClist[0] end,
    function(self)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 330, 138
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY))
        imgui.Begin(u8'Driving Shool Helper | Настройки AutoClist', Menu_Glavnoe, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoScrollbar)
        if imgui.SliderInt(u8'Выберите клист', autoClist_numbers, 0, 33) then
            cfg.settings.AutoClist_list = autoClist_numbers[0]
            inicfg.save(cfg, 'DrivingShool_Helper.ini')
        end
        imgui.Text(u8'Выбранный клист: ' .. cfg.settings.AutoClist_list .. u8'\nПосле спавна он будет установлен.')
        imgui.End()
    end
)
local newFrame4 = imgui.OnFrame(
    function() return Menu_FAQ[0] end,
    function(self)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 660, 660
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY))
        imgui.Begin('DrivingShool_Helper | F.A.Q', Menu_FAQ)
        imgui.CenterText('ПРИВЕТ, ТУТ ЕСТЬ ВСЕ НУЖНОЕ ДЛЯ РАБОТЫ. А ИМЕННО')
imgui.Separator()
        imgui.CenterText('ГАРДЕРОБ | ЗАРАБОТНАЯ ПЛАТА | ОБЯЗАННОСТИ СОТРУДНИКОВ | ЦЕНЫ НА ЛИЦЕНЗИИ')
        imgui.CenterText('ПДД | КОМАНДЫ | РЕГЛАМЕНТ РАБОТЫ')
imgui.Separator()
        imgui.TextColoredAndCenter('\t\t\t\t\t{4682b4}F.A.Q РАЗДЕЛ №1 -- ГАРДЕРОБ{ffffff}')
imgui.Separator()
    if imgui.BeginChild('SkIN 1/7 RANK', imgui.ImVec2(270,180), true) then
imgui.Image(skin_boys_1or6, imgui.ImVec2(140,170))
imgui.SameLine()
imgui.Text(u8' \nСкин для мужчин\nРанги:\nСтажёр [1]\nКонсультант [2]\nЭкзаменатор [3]\nМл.Инструктор [4]\nИнструктор [5]\nКоординатор [6]')
        imgui.EndChild()
    end
imgui.SameLine()
    if imgui.BeginChild("The girl's skin", imgui.ImVec2(290,180), true) then
imgui.Image(skin_girls, imgui.ImVec2(140,170))
imgui.SameLine()
imgui.Text(u8'Скин для девушек\nРанги:\nСтажёр [1]\nКонсультант [2]\nЭкзаменатор [3]\nМл.Инструктор [4]\nИнструктор [5]\nКоординатор [6]\nМл.Мененджер [7]\nСт.Мененджер [8]\nДиректор [9]\nУправляющий [Leader]')
        imgui.EndChild()
    end
    if imgui.BeginChild('SKIN 7/10 RANK', imgui.ImVec2(290,180), true) then
imgui.Image(skin_boys_7or10, imgui.ImVec2(140,170))
imgui.SameLine()
imgui.Text(u8'\n \nСкин для мужчин\nРанги:\nМл.Мененджер [7]\nСт.Мененджер [8]\nДиректор [9]\nУправляющий [Leader]')
        imgui.EndChild()
    end
imgui.Separator()
imgui.TextColoredAndCenter('\t\t\t{4682b4}F.A.Q РАЗДЕЛ №2 -- ЗАРАБОТНАЯ ПЛАТА{ffffff}')
imgui.Separator()
---------
imgui.Text(u8'\t\t\tРанг\t\t\t | \t\t\tСумма\t\t\t | \t\t\tПроценты от лицензий\t\t\t | \t\tЛимит зарплаты')
imgui.Separator()
imgui.Text(u8'\t\t\tСтажёр\t\t | \t\t\t14506\t\t\t | \t\t\t\t\t\t[Нету]\t\t\t\t\t\t    | \t\t\t[Нету]')
imgui.Text(u8'\t\t\tКонсультант | \t\t\t20000\t\t\t | \t\t\t\t\t10 от продаж\t\t\t\t\t | \t\t\t20000')
imgui.Text(u8'\t\t\tЭкзаменатор | \t\t\t22500\t\t\t | \t\t\t\t\t11 от продаж\t\t\t\t\t | \t\t\t22500')
imgui.Text(u8'\t\t Мл.Инструктор | \t\t\t25000\t\t\t | \t\t\t\t\t12 от продаж\t\t\t\t\t | \t\t\t25000')
imgui.Text(u8'\t\t\tИнструктор   | \t\t\t27500\t\t\t | \t\t\t\t\t13 от продаж\t\t\t\t\t | \t\t\t27500')
imgui.Text(u8'\t\t\tКоординатор | \t\t\t30000\t\t\t | \t\t\t\t\t14 от продаж\t\t\t\t\t | \t\t\t30000')
imgui.Text(u8'\t\t Мл.Мененджер | \t\t\t35000\t\t\t | \t\t\t\t\t15 от продаж\t\t\t\t\t | \t\t\t35000')
imgui.Text(u8'\t\t Ст.Мененджер | \t\t\t40000\t\t\t | \t\t\t16 от продаж + со всех прод.    | \t\t\t40000')
imgui.Text(u8'\t\t\tДиректор\t | \t\t\t45000\t\t\t | \t\t18 от своих лиц + 8 со всех прод.  | \t\t\t45000')
imgui.Text(u8'\t\tУправляющий | \t\t\t50000\t\t\t | \t\t20 от своих лиц + 10 со всех прод.  | \t\t\t50000')
imgui.Separator()
---------

imgui.Separator()
---------
imgui.BulletText(u8'Стажёр [1]\t\t\t\t\t | \tЕдинственная обязанность - подготовиться к экзамену на консультанта.')
imgui.BulletText(u8'Консультант [2]\t\t\t|')
imgui.SameLine()
if imgui.CollapsingHeader(u8'Cоблюдать общие обязанности, характерные для сотрудников АШ.') then
    imgui.Text(u8'Cоблюдать общие обязанности, характерные для сотрудников автошколы.\nПроводить теоретические и практические экзамены по вождению.\nОбучаться навыкам работы у более опытных коллег, может продавать водительские права.')
    imgui.Separator()
end
imgui.BulletText(u8'Экзаменатор [3]\t\t   |')
imgui.SameLine()
if imgui.CollapsingHeader(u8'Проводить теоретические и практические экзамены по вождению.') then
    imgui.Text(u8'Продавать водительские права, а также лицензии на рыболовство и морской транспорт.\nОбучаться навыкам работы у более опытных коллег.')
end
imgui.BulletText(u8'Мл. Инструктор [4]\t\t  |')
imgui.SameLine()
if imgui.CollapsingHeader(u8'Продавать водительские права, лицензии на рыболовство, морской ...') then
    imgui.Text(u8'... и воздушный транспорт, а также на оружие.\nОказывать помощь младшему составу автошколы.')
end
imgui.BulletText(u8'Инструктор [5]\t\t\t |')
imgui.SameLine()
if imgui.CollapsingHeader(u8'Активно участвовать в работе отдела, предоставлять отчеты ...') then
    imgui.Text(u8'...в разделе своего отдела. Помогать младшему составу автошколы в выполнении их обязанностей.\nПродавать все виды лицензий.')
end
imgui.BulletText(u8'Координатор [6]\t\t |')
imgui.SameLine()
if imgui.CollapsingHeader(u8'Активно участвовать в работе отдела, предоставлять отчеты в ...') then
    imgui.Text(u8'...разделе своего отдела. Продавать все виды лицензий.\nПомогать младшему составу автошколы в выполнении их обязанностей.')
end
imgui.BulletText(u8'Мл. Мененджер [7]\t |')
imgui.SameLine()
if imgui.CollapsingHeader(u8'Поощрять младших сотрудников и повышать их.') then
    imgui.Text(u8'Помогать младшему составу автошколы в выполнении их обязанностей и способствовать их развитию\nПредотвращать любые нарушения со стороны младшего и среднего составов автошколы.\nПродавать все виды лицензий.')
end
imgui.BulletText(u8'Ст. Мененджер [8]\t |')
imgui.SameLine()
if imgui.CollapsingHeader(u8'Поощрять младших сотрудников, повышать их должности.') then
    imgui.Text(u8'Помогать младшему составу автошколы в выполнении их обязанностей и способствовать их развитию.\nПредотвращать любые нарушения со стороны младшего и среднего составов автошколы.\nПродавать все виды лицензий.')
end
imgui.BulletText(u8'Директор [9]\t\t |')
imgui.SameLine()
if imgui.CollapsingHeader(u8'Увольнять сотрудников при необходимости.') then
    imgui.Text(u8'Поощрять сотрудников за активную работу и повышать их должности.\nПринимать заявления на стажировку в автошколу и принимать решение о приеме.\nПресекать любые нарушения, совершаемые младшим, средним и старшим составами автошколы.\nПродавать все виды лицензий.')
end
imgui.Separator()
---------

imgui.Separator()
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')

imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
imgui.Text('ssss')
    imgui.End()
    end
)

function samp.onServerMessage(color, text)
    lua_thread.create(function()
    
    if sms_message_status then
        if text:find(" SMS: (.+)%. Отправитель: (.+)[(%d+)]") then
        wait(300)
            sampSendChat(cfg.RpOtigrovki.sms_message)
        end
    end
end, arg)
end

-----Функции-----

function blue_theme()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4

    imgui.GetStyle().WindowPadding = imgui.ImVec2(5, 5)
    imgui.GetStyle().FramePadding = imgui.ImVec2(5, 5)
    imgui.GetStyle().ItemSpacing = imgui.ImVec2(5, 5)
    imgui.GetStyle().ItemInnerSpacing = imgui.ImVec2(2, 2)
    imgui.GetStyle().TouchExtraPadding = imgui.ImVec2(0, 0)
    imgui.GetStyle().IndentSpacing = 0
    imgui.GetStyle().ScrollbarSize = 10
    imgui.GetStyle().GrabMinSize = 10
    imgui.GetStyle().WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
    --==[ BORDER ]==--
    imgui.GetStyle().WindowBorderSize = 1
    imgui.GetStyle().ChildBorderSize = 1
    imgui.GetStyle().PopupBorderSize = 1
    imgui.GetStyle().FrameBorderSize = 1
    imgui.GetStyle().TabBorderSize = 1

    --==[ ROUNDING ]==--
    imgui.GetStyle().WindowRounding = 8
    imgui.GetStyle().ChildRounding = 8
    imgui.GetStyle().FrameRounding = 8
    imgui.GetStyle().PopupRounding = 8
    imgui.GetStyle().ScrollbarRounding = 8
    imgui.GetStyle().GrabRounding = 8
    imgui.GetStyle().TabRounding = 8

    colors[clr.FrameBg]                = ImVec4(0.16, 0.29, 0.48, 0.54)
    colors[clr.FrameBgHovered]         = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.FrameBgActive]          = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.TitleBg]                = ImVec4(0.04, 0.04, 0.04, 1.00)
    colors[clr.TitleBgActive]          = ImVec4(0.16, 0.29, 0.48, 1.00)
    colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
    colors[clr.CheckMark]              = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.SliderGrab]             = ImVec4(0.24, 0.52, 0.88, 1.00)
    colors[clr.SliderGrabActive]       = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Button]                 = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.ButtonHovered]          = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ButtonActive]           = ImVec4(0.06, 0.53, 0.98, 1.00)
    colors[clr.Header]                 = ImVec4(0.26, 0.59, 0.98, 0.31)
    colors[clr.HeaderHovered]          = ImVec4(0.26, 0.59, 0.98, 0.80)
    colors[clr.HeaderActive]           = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Separator]              = colors[clr.Border]
    colors[clr.SeparatorHovered]       = ImVec4(0.26, 0.59, 0.98, 0.78)
    colors[clr.SeparatorActive]        = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ResizeGrip]             = ImVec4(0.26, 0.59, 0.98, 0.25)
    colors[clr.ResizeGripHovered]      = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.ResizeGripActive]       = ImVec4(0.26, 0.59, 0.98, 0.95)
    colors[clr.TextSelectedBg]         = ImVec4(0.26, 0.59, 0.98, 0.35)
    colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TextDisabled]           = ImVec4(0.50, 0.50, 0.50, 1.00)
    colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
    colors[clr.ChildBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
    colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.Border]                 = ImVec4(0.43, 0.43, 0.50, 0.50)
    colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
    colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]          = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
    colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
end
function imgui.CenterText(text)
    imgui.SetCursorPosX(imgui.GetWindowWidth()/2-imgui.CalcTextSize(u8(text)).x/2)
    imgui.Text(u8(text))
end
function imgui.TextColoredRGB(text)
    local style = imgui.GetStyle()
    local colors = style.Colors
    local ImVec4 = imgui.ImVec4
    local explode_argb = function(argb)
        local a = bit.band(bit.rshift(argb, 24), 0xFF)
        local r = bit.band(bit.rshift(argb, 16), 0xFF)
        local g = bit.band(bit.rshift(argb, 8), 0xFF)
        local b = bit.band(argb, 0xFF)
        return a, r, g, b
    end
    local getcolor = function(color)
        if color:sub(1, 6):upper() == 'SSSSSS' then
            local r, g, b = colors[1].x, colors[1].y, colors[1].z
            local a = tonumber(color:sub(7, 8), 16) or colors[1].w * 255
            return ImVec4(r, g, b, a / 255)
        end
        local color = type(color) == 'string' and tonumber(color, 16) or color
        if type(color) ~= 'number' then return end
        local r, g, b, a = explode_argb(color)
        return imgui.ImVec4(r/255, g/255, b/255, a/255)
    end
    local render_text = function(text_)
        for w in text_:gmatch('[^\r\n]+') do
            local text, colors_, m = {}, {}, 1
            w = w:gsub('{(......)}', '{%1FF}')
            while w:find('{........}') do
                local n, k = w:find('{........}')
                local color = getcolor(w:sub(n + 1, k - 1))
                if color then
                    text[#text], text[#text + 1] = w:sub(m, n - 1), w:sub(k + 1, #w)
                    colors_[#colors_ + 1] = color
                    m = n
                end
                w = w:sub(1, n - 1) .. w:sub(k + 1, #w)
            end
            if text[0] then
                for i = 0, #text do
                    imgui.TextColored(colors_[i] or colors[1], u8(text[i]))
                    imgui.SameLine(nil, 0)
                end
                imgui.NewLine()
            else imgui.Text(u8(w)) end
        end
    end
    render_text(text)
end
function imgui.TextColoredAndCenter(text)
    local style = imgui.GetStyle()
    local colors = style.Colors
    local ImVec4 = imgui.ImVec4
    local explode_argb = function(argb)
        local a = bit.band(bit.rshift(argb, 24), 0xFF)
        local r = bit.band(bit.rshift(argb, 16), 0xFF)
        local g = bit.band(bit.rshift(argb, 8), 0xFF)
        local b = bit.band(argb, 0xFF)
        return a, r, g, b
    end
    local getcolor = function(color)
        if color:sub(1, 6):upper() == 'SSSSSS' then
            local r, g, b = colors[1].x, colors[1].y, colors[1].z
            local a = tonumber(color:sub(7, 8), 16) or colors[1].w * 255
            return ImVec4(r, g, b, a / 255)
        end
        local color = type(color) == 'string' and tonumber(color, 16) or color
        if type(color) ~= 'number' then return end
        local r, g, b, a = explode_argb(color)
        return imgui.ImVec4(r/255, g/255, b/255, a/255)
    end
    local render_text = function(text_)
        for w in text_:gmatch('[^\r\n]+') do
            local text, colors_, m = {}, {}, 1
            w = w:gsub('{(......)}', '{%1FF}')
            while w:find('{........}') do
                local n, k = w:find('{........}')
                local color = getcolor(w:sub(n + 1, k - 1))
                if color then
                    text[#text], text[#text + 1] = w:sub(m, n - 1), w:sub(k + 1, #w)
                    colors_[#colors_ + 1] = color
                    m = n
                end
                w = w:sub(1, n - 1) .. w:sub(k + 1, #w)
            end
            if text[0] then
                for i = 0, #text do
                    imgui.TextColored(colors_[i] or colors[1], u8(text[i]))
                    imgui.SameLine(nil, 0)
                end
                imgui.NewLine()
            else imgui.Text(u8(w)) end
        end
    end
    imgui.SetCursorPosX(imgui.GetWindowWidth()/2-imgui.CalcTextSize(u8(text)).x/2)
    render_text(text)
end
function nick()
    return sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))):gsub('_', ' ')
end