Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

linmsqn

Известный
331
10
как выполнить какое-либо действие после выхода с сервера? типо я вышел с сервака и в моем конфиге автоматически изменился какой-то параметр
 

meowprd

Тот самый Котовский
Проверенный
1,297
735
кароч, все работает, но игра зависает если в подгружаемом скрипте подключено имгуи
супер странно, мб не может найти либу?
попробуй руками прописать package.path и package.cpath

А возможности обрабатывать урон, полученный другим игроком нет?
можно обрабатывать только урон полученный тобой или урон который отправил ты
{'onSendGiveDamage', 'onSendTakeDamage'}

либо постоянно сравнивать старое значение хп с новым у всех в зоне стрима
и если оно отличается - писать полученный урон, но ты не узнаешь от кого или от чего пед получил урон

как выполнить какое-либо действие после выхода с сервера? типо я вышел с сервака и в моем конфиге автоматически изменился какой-то параметр
следить за GameState и если игрок отключился (+ дополнительная проверка был ли игрок уже подключен) то делать действия

ты нормально объясни что ты хочешь, а не апай постоянно
 
Последнее редактирование:

W1ll04eison

Известный
330
19
супер странно, мб не может найти либу?
попробуй руками прописать package.path и package.cpath


можно обрабатывать только урон полученный тобой или урон который отправил ты
{'onSendGiveDamage', 'onSendTakeDamage'}

либо постоянно сравнивать старое значение хп с новым у всех в зоне стрима
и если оно отличается - писать полученный урон, но ты не узнаешь от кого или от чего пед получил урон


следить за GameState и если игрок отключился (+ дополнительная проверка был ли игрок уже подключен) то делать действия


ты нормально объясни что ты хочешь, а не апай постоянно
Функция ведёт поиск строк в файле (пример: [12.12.2020|12:12:12] PayDay), если такие строки присутствуют она их суммирует и выводит количество данных найденных строк в imgui окно(пример: нашла функция две строки 1+1 = 2 - то, функция это число(2) должна вывести в имгуи окно.
Если данные строки с разными датами(пример:
[12.12.2020|12:12:12] PaDay
[15.12.2020|12:12:12] PayDay) то она должна перенести строку с другой датой на следующую строку в окне imgui, и уже PayDay'i с новой датой записывать в строке с новой датой(пример:
[12.12.2020|12:12:12] 1(кол-во PaDay)
[15.12.2020|12:12:12] 4(кол-во PaDay))

Но это почему то не происходит
 
Последнее редактирование:

meowprd

Тот самый Котовский
Проверенный
1,297
735
Функция ведёт поиск строк в файле (пример: [12.12.2020|12:12:12] PayDay), если такие строки присутствуют она их суммирует и выводит количество данных найденных строк в imgui окно(пример: нашла функция две строки 1+1 = 2 - то, функция это число(2) должна вывести в имгуи окно.
Если данные строки с разными датами(пример:
[12.12.2020|12:12:12] PaDay
[15.12.2020|12:12:12] PayDay) то она должна перенести строку с другой датой на следующую строку в окне imgui, и уже PayDay'i с новой датой записывать в строке с новой датой(пример:
[12.12.2020|12:12:12] 1(кол-во PaDay)
[15.12.2020|12:12:12] 4(кол-во PaDay))

Но это почему то не происходит
Дай текст файла для написания примера мне
 

W1ll04eison

Известный
330
19
Дай текст файла для написания примера мне
Текст в файле:
[13.12.2021|20:55:15] <-Gabril_Turner[199] to Eldar_Mamedov[7]: Sultan [94 m/h] > Цена в салоне 2250000$ > 1 процент: 27000$
[13.12.2021|21:00:10] PayDay

т.е, тут идет подсчет PayDay и ответов.

Как это примерно должно выглядить в окне imgui:
Снимок.JPG
 
Последнее редактирование:

chapo

tg/inst: @moujeek
Всефорумный модератор
9,212
12,550
Почему при добавлении темы в mImGui вылезает такой краш?
Lua:
ML] (error) MultiScripts.lua: D:\SAMP_CHEATS\moonloader\lib\mimgui\init.lua:302: attempt to index upvalue 'renderer' (a nil value)
stack traceback:
    D:\SAMP_CHEATS\moonloader\lib\mimgui\init.lua:302: in function 'SwitchContext'
    D:\SAMP_CHEATS\moonloader\MultiScripts.lua:178: in function 'white_style'
    D:\SAMP_CHEATS\moonloader\MultiScripts.lua:220: in main chunk
[ML] (error) MultiScripts.lua: Script died due to an error. (2A742704)
тема: https://www.blast.hk/threads/25442/post-653729
Lua:
function white_style()
    imgui.SwitchContext()
    imgui.GetStyle().WindowRounding        = 7.0
    imgui.GetStyle().ChildRounding        = 7.0
    imgui.GetStyle().FrameRounding        = 10.0
    imgui.GetStyle().FramePadding        = imgui.ImVec2(5, 3)
    imgui.GetStyle().WindowPadding        = imgui.ImVec2(8, 8)
    imgui.GetStyle().ButtonTextAlign    = imgui.ImVec2(0.5, 0.5)
    imgui.GetStyle().GrabMinSize        = 7
    imgui.GetStyle().GrabRounding        = 15

    imgui.GetStyle().Colors[imgui.Col.Text]                    = imgui.ImVec4(1.00, 1.00, 1.00, 1.00)
    imgui.GetStyle().Colors[imgui.Col.TextDisabled]            = imgui.ImVec4(1.00, 1.00, 1.00, 0.20)
    imgui.GetStyle().Colors[imgui.Col.WindowBg]                = imgui.ImVec4(0.07, 0.07, 0.09, 1.00)
    imgui.GetStyle().Colors[imgui.Col.PopupBg]                = imgui.ImVec4(0.90, 0.90, 0.90, 1.00)
    imgui.GetStyle().Colors[imgui.Col.Border]                = imgui.ImVec4(0.00, 0.00, 0.00, 0.00)
    imgui.GetStyle().Colors[imgui.Col.SliderGrab]            = imgui.ImVec4(0.90, 0.90, 0.90, 1.00)
    imgui.GetStyle().Colors[imgui.Col.SliderGrabActive]        = imgui.ImVec4(0.70, 0.70, 0.70, 1.00)
    imgui.GetStyle().Colors[imgui.Col.BorderShadow]            = imgui.ImVec4(0.00, 0.00, 0.00, 0.00)
    imgui.GetStyle().Colors[imgui.Col.ScrollbarBg]            = imgui.ImVec4(0.60, 0.60, 0.60, 0.90)
    imgui.GetStyle().Colors[imgui.Col.ScrollbarGrab]        = imgui.ImVec4(0.90, 0.90, 0.90, 1.00)
    imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabHovered]    = imgui.ImVec4(0.80, 0.80, 0.80, 1.00)
    imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabActive]    = imgui.ImVec4(0.70, 0.70, 0.70, 1.00)
    imgui.GetStyle().Colors[imgui.Col.FrameBg]                = imgui.ImVec4(0.20, 0.20, 0.20, 1.00)
    imgui.GetStyle().Colors[imgui.Col.FrameBgHovered]        = imgui.ImVec4(0.20, 0.20, 0.20, 0.80)
    imgui.GetStyle().Colors[imgui.Col.FrameBgActive]        = imgui.ImVec4(0.20, 0.20, 0.20, 0.60)
    imgui.GetStyle().Colors[imgui.Col.CheckMark]            = imgui.ImVec4(1.00, 1.00, 1.00, 1.00)
    imgui.GetStyle().Colors[imgui.Col.Button]                = imgui.ImVec4(0.20, 0.20, 0.20, 1.00)
    imgui.GetStyle().Colors[imgui.Col.ButtonHovered]        = imgui.ImVec4(0.15, 0.15, 0.15, 1.00)
    imgui.GetStyle().Colors[imgui.Col.ButtonActive]            = imgui.ImVec4(0.10, 0.10, 0.10, 1.00)
    imgui.GetStyle().Colors[imgui.Col.TextSelectedBg]        = imgui.ImVec4(0.80, 0.80, 0.80, 0.80)

    local but_orig = imgui.Button
    imgui.Button = function(...)
        imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0.07, 0.07, 0.09, 1.00))
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.90, 0.90, 0.90, 1.00))
        imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.80, 0.80, 0.80, 1.00))
        imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.70, 0.70, 0.70, 1.00))
        local result = but_orig(...)
        imgui.PopStyleColor(4)
        return result
    end
end
white_style()
 

#Northn

Известный
Всефорумный модератор
2,659
2,600
Почему при добавлении темы в mImGui вылезает такой краш?
Lua:
ML] (error) MultiScripts.lua: D:\SAMP_CHEATS\moonloader\lib\mimgui\init.lua:302: attempt to index upvalue 'renderer' (a nil value)
stack traceback:
    D:\SAMP_CHEATS\moonloader\lib\mimgui\init.lua:302: in function 'SwitchContext'
    D:\SAMP_CHEATS\moonloader\MultiScripts.lua:178: in function 'white_style'
    D:\SAMP_CHEATS\moonloader\MultiScripts.lua:220: in main chunk
[ML] (error) MultiScripts.lua: Script died due to an error. (2A742704)
тема: https://www.blast.hk/threads/25442/post-653729
Lua:
function white_style()
    imgui.SwitchContext()
    imgui.GetStyle().WindowRounding        = 7.0
    imgui.GetStyle().ChildRounding        = 7.0
    imgui.GetStyle().FrameRounding        = 10.0
    imgui.GetStyle().FramePadding        = imgui.ImVec2(5, 3)
    imgui.GetStyle().WindowPadding        = imgui.ImVec2(8, 8)
    imgui.GetStyle().ButtonTextAlign    = imgui.ImVec2(0.5, 0.5)
    imgui.GetStyle().GrabMinSize        = 7
    imgui.GetStyle().GrabRounding        = 15

    imgui.GetStyle().Colors[imgui.Col.Text]                    = imgui.ImVec4(1.00, 1.00, 1.00, 1.00)
    imgui.GetStyle().Colors[imgui.Col.TextDisabled]            = imgui.ImVec4(1.00, 1.00, 1.00, 0.20)
    imgui.GetStyle().Colors[imgui.Col.WindowBg]                = imgui.ImVec4(0.07, 0.07, 0.09, 1.00)
    imgui.GetStyle().Colors[imgui.Col.PopupBg]                = imgui.ImVec4(0.90, 0.90, 0.90, 1.00)
    imgui.GetStyle().Colors[imgui.Col.Border]                = imgui.ImVec4(0.00, 0.00, 0.00, 0.00)
    imgui.GetStyle().Colors[imgui.Col.SliderGrab]            = imgui.ImVec4(0.90, 0.90, 0.90, 1.00)
    imgui.GetStyle().Colors[imgui.Col.SliderGrabActive]        = imgui.ImVec4(0.70, 0.70, 0.70, 1.00)
    imgui.GetStyle().Colors[imgui.Col.BorderShadow]            = imgui.ImVec4(0.00, 0.00, 0.00, 0.00)
    imgui.GetStyle().Colors[imgui.Col.ScrollbarBg]            = imgui.ImVec4(0.60, 0.60, 0.60, 0.90)
    imgui.GetStyle().Colors[imgui.Col.ScrollbarGrab]        = imgui.ImVec4(0.90, 0.90, 0.90, 1.00)
    imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabHovered]    = imgui.ImVec4(0.80, 0.80, 0.80, 1.00)
    imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabActive]    = imgui.ImVec4(0.70, 0.70, 0.70, 1.00)
    imgui.GetStyle().Colors[imgui.Col.FrameBg]                = imgui.ImVec4(0.20, 0.20, 0.20, 1.00)
    imgui.GetStyle().Colors[imgui.Col.FrameBgHovered]        = imgui.ImVec4(0.20, 0.20, 0.20, 0.80)
    imgui.GetStyle().Colors[imgui.Col.FrameBgActive]        = imgui.ImVec4(0.20, 0.20, 0.20, 0.60)
    imgui.GetStyle().Colors[imgui.Col.CheckMark]            = imgui.ImVec4(1.00, 1.00, 1.00, 1.00)
    imgui.GetStyle().Colors[imgui.Col.Button]                = imgui.ImVec4(0.20, 0.20, 0.20, 1.00)
    imgui.GetStyle().Colors[imgui.Col.ButtonHovered]        = imgui.ImVec4(0.15, 0.15, 0.15, 1.00)
    imgui.GetStyle().Colors[imgui.Col.ButtonActive]            = imgui.ImVec4(0.10, 0.10, 0.10, 1.00)
    imgui.GetStyle().Colors[imgui.Col.TextSelectedBg]        = imgui.ImVec4(0.80, 0.80, 0.80, 0.80)

    local but_orig = imgui.Button
    imgui.Button = function(...)
        imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0.07, 0.07, 0.09, 1.00))
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.90, 0.90, 0.90, 1.00))
        imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.80, 0.80, 0.80, 1.00))
        imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.70, 0.70, 0.70, 1.00))
        local result = but_orig(...)
        imgui.PopStyleColor(4)
        return result
    end
end
white_style()
Lua:
imgui.OnInitialize(function() -- Called once
    white_style()
end)
 
  • Нравится
Реакции: chapo

meowprd

Тот самый Котовский
Проверенный
1,297
735
Текст в файле:
[13.12.2021|20:55:15] <-Gabril_Turner[199] to Eldar_Mamedov[7]: Sultan [94 m/h] > Цена в салоне 2250000$ > 1 процент: 27000$
[13.12.2021|21:00:10] PayDay

т.е, тут идет подсчет PayDay и ответов.

Как это примерно должно выглядить в окне imgui:
Посмотреть вложение 126552
так а в чем сложность перебирая строки файла искать определенный текст и плюсовать в нужную переменную?
ну или в массив по нужной дате?
 

W1ll04eison

Известный
330
19
так а в чем сложность перебирая строки файла искать определенный текст и плюсовать в нужную переменную?
ну или в массив по нужной дате?
Так я код кинул выше, я ж не код прошу написать, а сказать почему он не ведёт подсчет, в чем ошибка?
 

YourAssistant

Участник
145
17
Lua:
if text_chat then
sub_text_chat = text_chat
elseif not text_chat then
?????
end
Если значение еще не существует, как цикл поставить на ожидание этого значения?
 

Young

Новичок
21
1
что делать если скрипт привязан к одному серверу и запускается только там исправьте плиз
 

Вложения

  • tools_dorabotka_Kelly.lua
    39.4 KB · Просмотры: 7

P3rsik

Активный
213
32
что делать если скрипт привязан к одному серверу и запускается только там исправьте плиз
Lua:
local imgui = require("imgui")
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sampev = require 'lib.samp.events'
require 'lib.sampfuncs'
local sw, sh = getScreenResolution()
local menu = imgui.ImBool(false)
local slet = imgui.ImBool(false)
local report = imgui.ImBool(false)
local tpreport = imgui.ImBool(false)
local vzaim = imgui.ImBool(false)
local inicfg = require("inicfg")
local d = require 'imgui_addons'
local font_flag = require('moonloader').font_flag
local font = renderCreateFont('Verdana', 10, font_flag.BOLD + font_flag.SHADOW)
local tab = 0
----
filename_ini = "ToolsSupreme/settings.ini"
ini = {
    adm = {
    autologin  = false,
    autoapanel = false,
    anticheat = false,
    recon = false,
    spawnaz = false,
    autoopra = false,
    proverka = true,
    adminchecker = false,
    password = '',
    apanel = '',
    otv1 = '',
    otv2 = '',
    otv3 = ''
    }
    }
    ini = inicfg.load(ini, filename_ini)
----
autologin = imgui.ImBool(ini.adm.autologin)
proverka = imgui.ImBool(ini.adm.proverka)
jailslet = imgui.ImBool(false)
autoapanel = imgui.ImBool(ini.adm.autoapanel)
spawnaz = imgui.ImBool(ini.adm.spawnaz)
anticheat = imgui.ImBool(ini.adm.anticheat)
adminchecker = imgui.ImBool(ini.adm.adminchecker)
autoopra = imgui.ImBool(ini.adm.autoopra)
password = imgui.ImBuffer(u8(ini.adm.password), 256)
apanel = imgui.ImBuffer(u8(ini.adm.apanel), 256)
otv1 = imgui.ImBuffer(u8(ini.adm.otv1), 256)
otv2 = imgui.ImBuffer(u8(ini.adm.otv2), 256)
otv3 = imgui.ImBuffer(u8(ini.adm.otv3), 256)
domslet = imgui.ImBuffer(256)
bizslet = imgui.ImBuffer(256)
otvetrep = imgui.ImBuffer(256)
tpbiz = imgui.ImBuffer(256)
tphouse = imgui.ImBuffer(256)
local nosave = imgui.ImInt(0)
local savelocal = imgui.ImInt(0)
local savebd = imgui.ImInt(0)
----


function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('info',function()
    x,y,z = getCharCoordinates(PLAYER_PED)
    print(x..', '..y..' , '..z)
    end)
    sampRegisterChatCommand('gtcar', function()
    if chislo == nil or chislo == '%d+' then
    sampAddChatMessage('В репорте не было найдено айди ТС!',-1)
    else
        sampSendChat('/getherecar '..chislo)
    end
    end)
    sampRegisterChatCommand('slet',function()
        slet.v = not slet.v
    end)
    sampRegisterChatCommand('smenu',function()
    menu.v = not menu.v
   end)

  while true do
      wait(0)
      if isKeyDown(18) and isKeyJustPressed(49) then
       sampSendChat('/ot')
      end
      if isKeyJustPressed(221) then
        sampSetChatInputEnabled(true)
        sampSetChatInputText("/getherecar ")
      end
      imgui.Process = menu.v or slet.v or report.v  or tpreport.v or vzaim.v
end
end

 
  function imgui.OnDrawFrame()
      if menu.v then
                          imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                          imgui.SetNextWindowSize(imgui.ImVec2(550, 400), imgui.Cond.FirstUseEver)
                          imgui.Begin('SupremeTools', menu, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                          imgui.BeginChild('Osn', imgui.ImVec2(155, 365), true)
                          if imgui.Button(u8'Основное меню', imgui.ImVec2(140, 20)) then tab = 0 end
                          if imgui.Button(u8'Настройка репорта', imgui.ImVec2(140, 20)) then tab = 1 end
                          if imgui.Button(u8'О авторе скрипта', imgui.ImVec2(140, 20)) then tab = 2 end
                          imgui.EndChild()
                          imgui.SameLine()
                          if tab == 0 then
                             imgui.BeginChild("Osnn", imgui.ImVec2(500-130, 400 - 35), true)
                             imgui.Text(u8'Скрыть Анти-Чит:') imgui.SetCursorPos(imgui.ImVec2(130,8)) if d.ToggleButton('##1', anticheat)then ini.adm.anticheat = anticheat.v inicfg.save(ini,filename_ini) end imgui.SameLine() imgui.TextQuestion("(?)", u8"Убирает строки, о предупреждении о читерстве.")
                             imgui.Text(u8'Авто-Опра:') imgui.SetCursorPos(imgui.ImVec2(130,33)) if d.ToggleButton('##2', autoopra)then ini.adm.autoopra = autoopra.v inicfg.save(ini,filename_ini) end imgui.SameLine() imgui.TextQuestion("(?)", u8"Автоматически садить игроков в Деморган за Опру Дома/Бизнеса\n Советую включать перед PayDay.")
                             imgui.Text(u8'Авто-Логин:') imgui.SetCursorPos(imgui.ImVec2(130,58)) if d.ToggleButton('##3', autologin) then ini.adm.autologin = autologin.v inicfg.save(ini,filename_ini) end imgui.SameLine() if imgui.NewInputText('##Password', password, 100, u8'Пароль', 2) then ini.adm.password = password.v inicfg.save(ini,filename_ini) end
                             imgui.Text(u8'Авто-Панель:') imgui.SetCursorPos(imgui.ImVec2(130,83)) if d.ToggleButton('##4', autoapanel)then ini.adm.autoapanel = autoapanel.v inicfg.save(ini,filename_ini) end imgui.SameLine() if imgui.NewInputText('##Apanel', apanel, 100, u8'Админ-Пароль', 2) then ini.adm.apanel = apanel.v inicfg.save(ini,filename_ini) end
                             imgui.Text(u8'Админ-Чекер:') imgui.SetCursorPos(imgui.ImVec2(130,108)) if d.ToggleButton('##5', adminchecker)then ini.adm.adminchecker = adminchecker.v inicfg.save(ini,filename_ini) end imgui.SameLine() imgui.TextQuestion("(?)", u8"В разработке..")
                             imgui.Text(u8'Спавниться в AZ: ') imgui.SetCursorPos(imgui.ImVec2(130,133)) if d.ToggleButton('##6', spawnaz)then ini.adm.spawnaz = spawnaz.v inicfg.save(ini,filename_ini) end imgui.SameLine() imgui.TextQuestion("(?)", u8"В разработке..")
                             imgui.EndChild()
                         end
                         imgui.SameLine()
                         if tab == 1 then
                            imgui.BeginChild("report", imgui.ImVec2(500-130, 400 - 35), true)
                            imgui.CenterText(u8"Настройка ответов на репорт") imgui.SameLine() imgui.TextQuestion("(?)", u8"Свой вариант ответа на репорт\n1 поле - Кнопка помочь автору\n2 поле - Кнопка слежу за наруш \n3 поле - Кнопка передать адм реп\n4 поле - Кнопка не выдаем")
                            imgui.PushItemWidth(360) if imgui.InputText('##otv1', otv1) then ini.adm.otv1 = (u8:decode(otv1.v)) inicfg.save(ini,filename_ini) end imgui.PopItemWidth()
                            imgui.PushItemWidth(360) if imgui.InputText('##otv2', otv2) then ini.adm.otv2 = (u8:decode(otv2.v)) inicfg.save(ini,filename_ini) end imgui.PopItemWidth()
                            imgui.PushItemWidth(360) if imgui.InputText('##otv3', otv3) then ini.adm.otv3 = (u8:decode(otv3.v)) inicfg.save(ini,filename_ini) end imgui.PopItemWidth()
                            imgui.EndChild()
                        end
                        imgui.SameLine()
                        if tab == 2 then
                           imgui.BeginChild("binder", imgui.ImVec2(500-130, 400 - 35), true)
                           imgui.Text("avtor skripta Young")
                           imgui.EndChild()
                       end
                         imgui.End()
                         end
                         if slet.v then
                            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                            imgui.SetNextWindowSize(imgui.ImVec2(230, 100), imgui.Cond.FirstUseEver)
                            imgui.Begin(u8'Хелпер Слётов', slet, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                            imgui.Text(u8'Сажать за опру дома/бизнеса -') imgui.SameLine()
                            d.ToggleButton('##Slet',jailslet)
                            imgui.Text(u8'Айди Дома') imgui.PushItemWidth(35) imgui.SameLine() imgui.InputText('##Home', domslet) imgui.PopItemWidth()
                            imgui.Text(u8'Айди Бизнеса') imgui.PushItemWidth(35) imgui.SameLine() imgui.InputText('##Biz', bizslet) imgui.PopItemWidth()          
                            imgui.End()
                         end
                         if report.v then tpreport.v = true
                            vzaim.v = true
                            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                            imgui.SetNextWindowSize(imgui.ImVec2(370, 235), imgui.Cond.FirstUseEver)
                            imgui.Begin(u8'Жалоба/Вопрос', _, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                            imgui.Text(u8'Жалоба от: '..nick_rep..'['..id_rep..']') imgui.SameLine()
                            if imgui.Link(u8"<<Следить") then
                                sampSendChat('/re '..id_rep)
                            end
                            imgui.Separator()
                            imgui.TextWrapped(u8(text_rep))
                            imgui.Separator()
                            imgui.RadioButton(u8'Не сохранять',nosave,1) imgui.SameLine() imgui.RadioButton(u8'Сохранить локально',savelocal,2)
                            imgui.Separator()
                            imgui.PushItemWidth(350) imgui.InputText('##OtvetRep', otvetrep) imgui.PopItemWidth()
                            imgui.Separator()
                            if  imgui.Button(u8'Слежу за наруш', imgui.ImVec2(115, 20)) then
                            if text_rep:find('(%d+)') then
                            chislo = text_rep:match('(%d+)')
                            end
                            sampSendDialogResponse(6370,1,nil,(u8:decode(otv2.v)))
                            if chislo then
                            sampSendChat('/re '..chislo)
                            end
                            report.v = false
                            otvetrep.v = ''
                            tpreport.v = false
                            vzaim.v = false
                            end imgui.SameLine()
                            if imgui.Button(u8'Помочь автору', imgui.ImVec2(115, 20)) then
                            sampSendDialogResponse(6370,1,nil,(u8:decode(otv1.v)))
                            sampSendChat('/re '..id_rep)
                            report.v = false
                            otvetrep.v = ''
                            tpreport.v = false
                            vzaim.v = false
                            end imgui.SameLine()
                            if imgui.Button(u8'Переслать в /a чат', imgui.ImVec2(115, 20)) then
                            sampSendChat('/a Жалоба/Вопрос от: '..nick_rep..'['..id_rep..'] > '..text_rep)
                            end
                            if imgui.Button(u8'', imgui.ImVec2(115, 20)) then
                             
                            end imgui.SameLine()
                            if imgui.Button(u8'', imgui.ImVec2(115, 20)) then
                             
                            end imgui.SameLine()
                            if imgui.Button(u8'', imgui.ImVec2(115, 20)) then
 
                            end
                            if imgui.Button(u8'', imgui.ImVec2(115, 20)) then
   
                            end imgui.SameLine()
                            imgui.Button(u8'', imgui.ImVec2(115, 20)) imgui.SameLine()
                            if imgui.Button(u8'Передать адм реп', imgui.ImVec2(115, 20)) then
                            sampSendDialogResponse(6370,1,nil,(u8:decode(otv3.v)))
                            sampSendChat('/a Жалоба/Вопрос от: '..nick_rep..'['..id_rep..'] > '..text_rep)
                            report.v = false
                            otvetrep.v = ''
                            tpreport.v = false
                            vzaim.v = false
                            end
                            imgui.Separator()
                            if imgui.Button(u8'Отправить', imgui.ImVec2(115, 20)) then
                            sampSendDialogResponse(6370,1,nil,(u8:decode(otvetrep.v)))
                            report.v = false
                            otvetrep.v = ''
                            tpreport.v = false
                            vzaim.v = false
                            end
                            imgui.SetCursorPos(imgui.ImVec2(250,203)) if imgui.Button(u8'Закрыть', imgui.ImVec2(115, 20))  then
                            sampSendDialogResponse(6370,2,nil,nil)
                            otvetrep.v = false
                            tpreport.v = false
                            vzaim.v = false
                            end
                            imgui.End()
                         end
                         if tpreport.v then
                         imgui.SetNextWindowPos(imgui.ImVec2(sw / 2 - 290, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                         imgui.SetNextWindowSize(imgui.ImVec2(200, 500), imgui.Cond.FirstUseEver)
                         imgui.Begin('TELEPORT', _, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                         if imgui.Button(u8'Банк ЛС', imgui.ImVec2(180, 20))  then
                         lua_thread.create(function()
                         sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                         report.v = false
                         otvetrep.v = ''
                         setCharCoordinates(PLAYER_PED,1480.8314208984, -1740.7347412109 , 13.5468755)
                         wait(1000)
                         sampSendChat('/gethere '..id_rep)
                         tpreport.v = false
                         vzaim.v = false
                         end)
                         end
                         if imgui.Button(u8'Мастерская Одежды', imgui.ImVec2(180, 20))  then
                        lua_thread.create(function()
                        sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                        report.v = false
                        otvetrep.v = ''
                        setCharCoordinates(PLAYER_PED,673.20123291016, -522.30450439453 , 16.328144073486)
                        wait(1000)
                        sampSendChat('/gethere '..id_rep)
                        tpreport.v = false
                        vzaim.v = false
                         end)
                         end
                         if imgui.Button(u8'Авто-Базар', imgui.ImVec2(180, 20)) then
                         lua_thread.create(function()
                        sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                        report.v = false
                        otvetrep.v = ''
                        setCharCoordinates(PLAYER_PED,-2142.2543945313, -766.55065917969 , 32.0234375)
                        wait(1000)
                        sampSendChat('/gethere '..id_rep)
                        tpreport.v = false
                        vzaim.v = false
                         end)
                         end
                         if imgui.Button(u8'Банк ЛВ', imgui.ImVec2(180, 20)) then
                            lua_thread.create(function()
                           sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                           report.v = false
                           otvetrep.v = ''
                           setCharCoordinates(PLAYER_PED,2375.4228515625, 2309.8149414063 , 8.140625)
                           wait(1000)
                           sampSendChat('/gethere '..id_rep)
                           tpreport.v = false
                           vzaim.v = false
                            end)
                            end
                            if imgui.Button(u8'Контейнеры', imgui.ImVec2(180, 20)) then
                                lua_thread.create(function()
                               sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                               report.v = false
                               otvetrep.v = ''
                               setCharCoordinates(PLAYER_PED,-1744.9382324219, 148.69653320313 , 3.5495557785034)
                               wait(1000)
                               sampSendChat('/gethere '..id_rep)
                               tpreport.v = false
                               vzaim.v = false
                                end)
                                end
                                if imgui.Button(u8'Мерия', imgui.ImVec2(180, 20)) then
                                    lua_thread.create(function()
                                   sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                                   report.v = false
                                   otvetrep.v = ''
                                   setCharCoordinates(PLAYER_PED,1495.6651611328, -1284.7728271484 , 14.516803741455)
                                   wait(1000)
                                   sampSendChat('/gethere '..id_rep)
                                   tpreport.v = false
                                   vzaim.v = false
                                    end)
                                    end
                                    if imgui.Button(u8'Авто-Салон СФ', imgui.ImVec2(180, 20)) then
                                        lua_thread.create(function()
                                       sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                                       report.v = false
                                       otvetrep.v = ''
                                       setCharCoordinates(PLAYER_PED,-2671.8869628906, -23.813611984253 , 4.3267498016357)
                                       wait(1000)
                                       sampSendChat('/gethere '..id_rep)
                                       tpreport.v = false
                                       vzaim.v = false
                                        end)
                                        end
                                        if imgui.Button(u8'Авто-Салон ЛВ', imgui.ImVec2(180, 20)) then
                                            lua_thread.create(function()
                                           sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                                           report.v = false
                                           otvetrep.v = ''
                                           setCharCoordinates(PLAYER_PED,971.7216796875, 2118.4558105469 , 10.83930015564)
                                           wait(1000)
                                           sampSendChat('/gethere '..id_rep)
                                           tpreport.v = false
                                           vzaim.v = false
                                            end)
                                            end
                                            if imgui.Button(u8'Авто-Салон ЛЮКС', imgui.ImVec2(180, 20)) then
                                                lua_thread.create(function()
                                               sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                                               report.v = false
                                               otvetrep.v = ''
                                               setCharCoordinates(PLAYER_PED,-507.44470214844, 2592.9772949219 , 53.415424346924)
                                               wait(1000)
                                               sampSendChat('/gethere '..id_rep)
                                               tpreport.v = false
                                               vzaim.v = false
                                                end)
                                                end
                                                if imgui.Button(u8'Нелегалки', imgui.ImVec2(180, 20)) then
                                                    lua_thread.create(function()
                                                   sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                                                   report.v = false
                                                   otvetrep.v = ''
                                                   setCharCoordinates(PLAYER_PED, -2463.3388671875, 2247.4084472656 , 4.7928237915039)
                                                   wait(1000)
                                                   sampSendChat('/gethere '..id_rep)
                                                   tpreport.v = false
                                                   vzaim.v = false
                                                    end)
                                                    end
                         imgui.End()
                        end
                        if vzaim.v then
                            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2+290, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                            imgui.SetNextWindowSize(imgui.ImVec2(200, 500), imgui.Cond.FirstUseEver)
                            imgui.Begin(u8'Взаимодействия с игроком', _, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                            if imgui.Button(u8'Заспавнить игрока', imgui.ImVec2(180, 20)) then
                                sampSendChat('/spplayer '..id_rep)
                                sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, заспавнил вас!')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Выдать ХП', imgui.ImVec2(180, 20)) then
                                sampSendChat('/sethp  '..id_rep..' 100')
                                sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, выдал вам хп!')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Флипнуть', imgui.ImVec2(180, 20)) then
                                sampSendChat('/flip '..id_rep)
                                sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, флипнул вас!')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Выдать NRG', imgui.ImVec2(180, 20)) then
                                sampSendChat('/plveh '..id_rep..' 522 1')
                                sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, выдал вам ТС!')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Выдать Infernus', imgui.ImVec2(180, 20)) then
                                sampSendChat('/plveh '..id_rep..' 411 1')
                                sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, выдал вам ТС!')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Фрапсите', imgui.ImVec2(180, 20)) then
                                sampSendDialogResponse(6370,1,nil,'Уважаемый игрок,мы не помогаем в сделках,try.Фрапсите!')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Не выдаем', imgui.ImVec2(180, 20)) then
                                sampSendDialogResponse(6370,1,nil,'Администарация не выдает админки/лвл/лидерки/аксы/боксы')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Не телепортируем', imgui.ImVec2(180, 20)) then
                                sampSendDialogResponse(6370,1,nil,'Мы не телепортируем игроков к вам,вас к другому игроку.')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Не телепортируем кары', imgui.ImVec2(180, 20)) then
                                sampSendDialogResponse(6370,1,nil,'Мы не телепортируем автомобили к вам,вашим друзьям.')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'ТП к Игроку', imgui.ImVec2(180, 20)) then
                                sampSendChat('/goto '..id_rep)
                                sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас попробую вам помочь!')
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'Тп Биз', imgui.ImVec2(180, 20)) then
                                lua_thread.create(function()
                                    if text_rep:find('(%d+)') then
                                        chislo = text_rep:match('(%d+)')
                                        end
                                        sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                                        if chislo then
                                        sampSendChat('/gotobiz '..chislo)
                                        wait(1000)
                                        sampSendChat('/gethere '..id_rep)
                                        end
                                        end)
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            if imgui.Button(u8'ТП Дом', imgui.ImVec2(180, 20)) then
                                lua_thread.create(function()
                                    if text_rep:find('(%d+)') then
                                        chislo = text_rep:match('(%d+)')
                                        end
                                        sampSendDialogResponse(6370,1,nil,'Уважаемый игрок, сейчас телепортирую!')
                                        if chislo then
                                        sampSendChat('/gotohouse '..chislo)
                                        wait(1000)
                                        sampSendChat('/gethere '..id_rep)
                                        end
                                        end)
                                report.v = false
                                otvetrep.v = ''
                                vzaim.v = false
                                tpreport.v = false
                                vzaim.v = false
                            end
                            imgui.End()
                        end
                    end

                    --1480.8314208984, -1740.7347412109 , 13.546875 - BANK
                    --673.20123291016, -522.30450439453 , 16.328144073486 - Мастрерская Одежды
                    --1125.4593505859, -1406.9426269531 , 13.433320045471 - ЦР
                    ----2141.66796875, -759.49615478516 , 32.0234375 - AB
                    --2375.4228515625, 2309.8149414063 , 8.140625 - BANK LV
                    ---507.44470214844, 2592.9772949219 , 53.415424346924 -- LUXE
                    ---2671.8869628906, -23.813611984253 , 4.3267498016357 - SF Salon
                    -- 971.7216796875, 2118.4558105469 , 10.83930015564 - LV SALON
                    --1495.6651611328, -1284.7728271484 , 14.516803741455 meriya
                    ---1744.9382324219, 148.69653320313 , 3.5495557785034 kont

                        --if text_rep:find('(%d+)') then
                            --chislo = text_rep:match('(%d+)')
                            --print(chislo)
                        --end
                       

              function sampev.onShowDialog(id, style, title, button1, button2, text)
              if id == 6377 then
              sampSendDialogResponse(6377,1,0,nil)
              return false
              end
              if autologin.v and id == 2 then
              sampSendDialogResponse(2,1,nil,password.v)
              return false
              end
              if autoapanel.v and id == 211 then
              sampSendDialogResponse(211,1,nil,apanel.v)
              return false
              end
              if id == 6370 then
              report.v = true
              if text:find('Жалоба/Вопрос от: (.+)%[(.+)%]') then
              nick_rep,id_rep,text_rep = text:match('Жалоба/Вопрос от: (.+)%[(.+)%]')
              end
              if text:find('%{c8e464%}(.+)%s+') then
              text_rep = text:match('%{c8e464%}(.+)%s+')
              return false
              end
              end
              end

              function sampev.onServerMessage(color, text)
              if text:find('%[KANTI%-CHEAT%] .+') and anticheat.v then
              return false
              end
              if text:find('%[A%] Вы успешно авторизовались как (.+)') and spawnaz.v then
              sampSendChat('/az')
              end
              if text:find('.+ %[(%d+)%] купил дом ID: (%d+) по гос. цене за (.+) ms! Капча: (.+)') and autoopra.v then -- Jail за все дома
              id,iddom,vrema = text:match('.+ %[(%d+)%] купил дом ID: (%d+) по гос. цене за (.+) ms! Капча: (.+)')
              sampSendChat('/jail '..id..' 3000 Опра Дом '..iddom..' | '..vrema)
              end
              if text:find('.+ %[(%d+)%] купил дом ID: '..domslet.v..' по гос. цене за (.+) ms! Капча: .+') and jailslet.v then -- Jail за определённый дом
                idd,vremasl = text:match('.+ %[(%d+)%] купил дом ID: '..domslet.v..' по гос. цене за (.+) ms! Капча: .+')
                sampSendChat('/jail '..idd..' 3000 Опра Дом '..domslet.v..' | '..vremasl)
              end
              if text:find('.+ %[(%d+)%] купил бизнес ID: (%d+) по гос. цене за (.+) ms! Капча: .+')  and autoopra.v then
              idplb,idb,ms = text:match('.+ %[(%d+)%] купил бизнес ID: (%d+) по гос. цене за (.+) ms! Капча: .+')
              sampSendChat('/jail '..idplb..' 3000 Опра Бизнес '..idb..' | '..ms)
              end
              if text:find('.+ %[(%d+)%] купил бизнес ID: '..bizslet.v..' по гос. цене за (.+) ms! Капча: .+') and jailslet.v then
                idsll,mss = text:match('.+ %[(%d+)%] купил бизнес ID: '..bizslet.v..' по гос. цене за (.+) ms! Капча: .+')
                sampSendChat('/jail '..idsll..' 3000 Опра Бизнес '..bizslet.v..' | '..mss)
            end
            if text:find('(.+)%[%d+%] %- %[(%d+) lvl%] %-{FFFFFF} %[AFK: %d+%]{FFFFFF} %- Репутация: %d+ %- Выговоры .+') then
               lvladm = text:match('.+%[%d+%] %- %[(%d+) lvl%] %-{FFFFFF} %[AFK: %d+%]{FFFFFF} %- Репутация: %d+ %- Выговоры .+')
               
            end
        end

        function purple_style()
            imgui.SwitchContext()
            local style = imgui.GetStyle()
            local colors = style.Colors
            local clr = imgui.Col
            local ImVec4 = imgui.ImVec4
            colors[clr.FrameBg]                = ImVec4(0.46, 0.11, 0.29, 1.00)
            colors[clr.FrameBgHovered]         = ImVec4(0.69, 0.16, 0.43, 1.00)
            colors[clr.FrameBgActive]          = ImVec4(0.58, 0.10, 0.35, 1.00)
            colors[clr.TitleBg]                = ImVec4(0.00, 0.00, 0.00, 1.00)
            colors[clr.TitleBgActive]          = ImVec4(0.61, 0.16, 0.39, 1.00)
            colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
            colors[clr.CheckMark]              = ImVec4(0.94, 0.30, 0.63, 1.00)
            colors[clr.SliderGrab]             = ImVec4(0.85, 0.11, 0.49, 1.00)
            colors[clr.SliderGrabActive]       = ImVec4(0.89, 0.24, 0.58, 1.00)
            colors[clr.Button]                 = ImVec4(0.46, 0.11, 0.29, 1.00)
            colors[clr.ButtonHovered]          = ImVec4(0.69, 0.17, 0.43, 1.00)
            colors[clr.ButtonActive]           = ImVec4(0.59, 0.10, 0.35, 1.00)
            colors[clr.Header]                 = ImVec4(0.46, 0.11, 0.29, 1.00)
            colors[clr.HeaderHovered]          = ImVec4(0.69, 0.16, 0.43, 1.00)
            colors[clr.HeaderActive]           = ImVec4(0.58, 0.10, 0.35, 1.00)
            colors[clr.Separator]              = ImVec4(0.69, 0.16, 0.43, 1.00)
            colors[clr.SeparatorHovered]       = ImVec4(0.58, 0.10, 0.35, 1.00)
            colors[clr.SeparatorActive]        = ImVec4(0.58, 0.10, 0.35, 1.00)
            colors[clr.ResizeGrip]             = ImVec4(0.46, 0.11, 0.29, 0.70)
            colors[clr.ResizeGripHovered]      = ImVec4(0.69, 0.16, 0.43, 0.67)
            colors[clr.ResizeGripActive]       = ImVec4(0.70, 0.13, 0.42, 1.00)
            colors[clr.TextSelectedBg]         = ImVec4(1.00, 0.78, 0.90, 0.35)
            colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
            colors[clr.TextDisabled]           = ImVec4(0.60, 0.19, 0.40, 1.00)
            colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
            colors[clr.ChildWindowBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
            colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
            colors[clr.ComboBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
            colors[clr.Border]                 = ImVec4(0.49, 0.14, 0.31, 1.00)
            colors[clr.BorderShadow]           = ImVec4(0.49, 0.14, 0.31, 0.00)
            colors[clr.MenuBarBg]              = ImVec4(0.15, 0.15, 0.15, 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.CloseButton]            = ImVec4(0.41, 0.41, 0.41, 0.50)
            colors[clr.CloseButtonHovered]     = ImVec4(0.98, 0.39, 0.36, 1.00)
            colors[clr.CloseButtonActive]      = ImVec4(0.98, 0.39, 0.36, 1.00)
            colors[clr.ModalWindowDarkening]   = ImVec4(0.80, 0.80, 0.80, 0.35)
        end
        purple_style()
       

              function imgui.NewInputText(lable, val, width, hint, hintpos)
                local hint = hint and hint or ''
                local hintpos = tonumber(hintpos) and tonumber(hintpos) or 1
                local cPos = imgui.GetCursorPos()
                imgui.PushItemWidth(width)
                local result = imgui.InputText(lable, val)
                if #val.v == 0 then
                    local hintSize = imgui.CalcTextSize(hint)
                    if hintpos == 2 then imgui.SameLine(cPos.x + (width - hintSize.x) / 2)
                    elseif hintpos == 3 then imgui.SameLine(cPos.x + (width - hintSize.x - 5))
                    else imgui.SameLine(cPos.x + 5) end
                    imgui.TextColored(imgui.ImVec4(1.00, 1.00, 1.00, 0.40), tostring(hint))
                end
                imgui.PopItemWidth()
                return result
            end

            function imgui.TextQuestion(label, description)
                imgui.TextDisabled(label)
           
                if imgui.IsItemHovered() then
                    imgui.BeginTooltip()
                        imgui.PushTextWrapPos(600)
                            imgui.TextUnformatted(description)
                        imgui.PopTextWrapPos()
                    imgui.EndTooltip()
                end
            end

            function onSendRpc(id,bitStream,priority,reliability,orderingChannel,shiftTs)
                if id == RPC_SPAWN and proverka.v == true then
                if autoapanel.v then
                    sampSendChat('/apanel')
                    proverka.v = false
                end
                end
                end

                function imgui.Link(label, description)

                    local size = imgui.CalcTextSize(label)
                    local p = imgui.GetCursorScreenPos()
                    local p2 = imgui.GetCursorPos()
                    local result = imgui.InvisibleButton(label, size)
               
                    imgui.SetCursorPos(p2)
               
                    if imgui.IsItemHovered() then
                        if description then
                            imgui.BeginTooltip()
                            imgui.PushTextWrapPos(600)
                            imgui.TextUnformatted(description)
                            imgui.PopTextWrapPos()
                            imgui.EndTooltip()
               
                        end
               
                        imgui.TextColored(imgui.GetStyle().Colors[imgui.Col.CheckMark], label)
                        imgui.GetWindowDrawList():AddLine(imgui.ImVec2(p.x, p.y + size.y), imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.CheckMark]))
               
                    else
                        imgui.TextColored(imgui.GetStyle().Colors[imgui.Col.CheckMark], label)
                    end
               
                    return result
                end

                function imgui.CenterText(text)
                    local width = imgui.GetWindowWidth()
                    local calc = imgui.CalcTextSize(text)
                    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
                    imgui.Text(text)
                end