Вопросы по 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
 
Последнее редактирование:

[SA ARZ]

Известный
390
8
Помогите вытащить сообщение ник и ид из строки:

<Alejandro_Galliardi> (148): Кхем

Код:

1:
if string.find(text,"%s*{.*}%:%%s%(.*%)%:%%s.*$") and color == -825307393 then
   local nick, id, message = string.match(text,"^%s*{(.*)}%:%%s%((.*)%)%:%%s(.*)$")
   print(nick..' '..id..' '..message)
end
 

Hatiko

Известный
Проверенный
1,471
612
Помогите вытащить сообщение ник и ид из строки:

<Alejandro_Galliardi> (148): Кхем

Код:

1:
if string.find(text,"%s*{.*}%:%%s%(.*%)%:%%s.*$") and color == -825307393 then
   local nick, id, message = string.match(text,"^%s*{(.*)}%:%%s%((.*)%)%:%%s(.*)$")
   print(nick..' '..id..' '..message)
end
Как-то так:

Lua:
if text:find("<[%a_]+> %(%d+%): ") then
    local nick, id, mes = mes:match("<([%a_]+)> %((%d+)%): (.*)")
end
 

zippy

Участник
67
32
Проблема такова, при обновлении скрипта ctr + r у меня в центре висит курсор(просто примагничен к центру и все). Если поставить imgui.process = false то данной проблемы не будет, исходя из этого можно предположит, что это из-за imgui. Хорошо копаем дальше, как я только не пробовал и imgui.ShowCursor = false и в начало main`а ставил и за main`ом ставил и бесконечном цикле оно стояло и в Ondraw`e - 0 реакции. Далее я попробовал захватить обс`ом игру с курсором, обс не видит курсора. Пробовал imgui переустанавливать думал, что, что-то полетело. Если скрипт мой не загружать в игру, то все нормально. Я даже скриншот не могу сделать ибо курсора не видно. Короче как это фиксить.
Еще забыл кое-что сказать, если открыть чат или консоль и закрыть, то курсор в центре пропадает
 

ufdhbi

Известный
Проверенный
1,455
861
Проблема такова, при обновлении скрипта ctr + r у меня в центре висит курсор(просто примагничен к центру и все). Если поставить imgui.process = false то данной проблемы не будет, исходя из этого можно предположит, что это из-за imgui. Хорошо копаем дальше, как я только не пробовал и imgui.ShowCursor = false и в начало main`а ставил и за main`ом ставил и бесконечном цикле оно стояло и в Ondraw`e - 0 реакции. Далее я попробовал захватить обс`ом игру с курсором, обс не видит курсора. Пробовал imgui переустанавливать думал, что, что-то полетело. Если скрипт мой не загружать в игру, то все нормально. Я даже скриншот не могу сделать ибо курсора не видно. Короче как это фиксить.
Еще забыл кое-что сказать, если открыть чат или консоль и закрыть, то курсор в центре пропадает
local b = imgui.ImBool(false)
imgui.Process = b.v

ну ты понял
 

TRevrFra

Новичок
18
1
Подскажите чего не работает???? по цвету не могу сделать так как он не один на сервере. Я новичок в Lua
Хочу сделать чтобы не показывала данные строки чата
Lua:
if ini.settings.rang and text:find("%s выгнал %s из организации. Причина:") then print("[text]: " .. text) return false end
  if ini.settings.rang and text:find("%s повысил/понизил ваc до %d ранга") then print("[text]: " .. text) return false end
 

zippy

Участник
67
32
Подскажите чего не работает???? по цвету не могу сделать так как он не один на сервере. Я новичок в Lua
Хочу сделать чтобы не показывала данные строки чата
Lua:
if ini.settings.rang and text:find("%s выгнал %s из организации. Причина:") then print("[text]: " .. text) return false end
  if ini.settings.rang and text:find("%s повысил/понизил ваc до %d ранга") then print("[text]: " .. text) return false end
text:find(" выгнал из организации. Причина:", 1, true)
Проблема такова, при обновлении скрипта ctr + r у меня в центре висит курсор(просто примагничен к центру и все). Если поставить imgui.process = false то данной проблемы не будет, исходя из этого можно предположит, что это из-за imgui. Хорошо копаем дальше, как я только не пробовал и imgui.ShowCursor = false и в начало main`а ставил и за main`ом ставил и бесконечном цикле оно стояло и в Ondraw`e - 0 реакции. Далее я попробовал захватить обс`ом игру с курсором, обс не видит курсора. Пробовал imgui переустанавливать думал, что, что-то полетело. Если скрипт мой не загружать в игру, то все нормально. Я даже скриншот не могу сделать ибо курсора не видно. Короче как это фиксить.
Еще забыл кое-что сказать, если открыть чат или консоль и закрыть, то курсор в центре пропадает
Я решил эту проблему, кому интересно как:
Lua:
for i = 0, 1 do
        setVirtualKeyDown(0x75, false)
        wait(1)
    end
 
  • Нравится
Реакции: TRevrFra

ufdhbi

Известный
Проверенный
1,455
861
Прикол в том, что в моем скрипте imgui.Process должен быть всегда включен, а если он всегда включен, то происходит такой забаг
если делаешь оверлей на имгуи, то после Begin окна оверлея делай imgui.ShowCursor = false
 

zippy

Участник
67
32
если делаешь оверлей на имгуи, то после Begin окна оверлея делай imgui.ShowCursor = false
Ты думаешь я этого не делал? я все возможные вариации как и imgui.Process так и imgui.ShowCursor перепробовал. Я даже в консоль выводил print(imgui.ShowCursor) - выдавало false а курсор был
 

Firus20016

Участник
148
15
Как в этом диалоге найти строчку с Desert Eagle и вывести её содержимое текста в чат?
45408
 

Rezistence

Участник
67
1
wait(-1) поставь. script terminated - ето значит что скрипт завершил работу. Если как тебе выше сказали while true do то поставь задержку wait(0) ибо краш.

Это пиздец.
1) начиная с того, что ты уже не правильно используешь мой код. Смотри как это работает, ты кидаешь ему скрипт и он выводит его hwid потом ты в скрипт добавляешь проверку на этот hwid(Вывод hwid`a на экран сделай сам), а у тебя получилось так, что ты проверку пропускаешь и скрипт у тебя сразу выгружается.
2)
Lua:
sampAddChatMessage("* [TEST]: {ffffff}Проверка {DD3A63}серийного IP {ffffff}......",0x288e6e)

wait(500) -- ето

sampAddChatMessage("* [TEST]: {ffffff}У Вас {DD3A63}есть доступ {ffffff}к тестовой версии скрипта......",0x288e6e)

wait(500) -- ето

sampAddChatMessage("* [TEST]: {ffffff}Загрузка...",0x288e6e)

sampAddChatMessage(string.format("{DD2A42}%s v %s {FFFFFF} loaded.", thisScript().name, thisScript().version), 0x00422ADD)

sampRegisterChatCommand("ats", at_open)
эти wait убираешь, а) они без полезны, б) используй задержку в
Lua:
lua_thread.create(function ()
    --code
end)
3) Где local imgui = require("imgui")
4) Где твоя функция imgui.OnDrawFrame()
5)
Lua:
imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()

          imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()

            imgui:Spacing()
а смотри как можно
Lua:
for i=1,10 do
    imgui.Spacing()
end
6) Ебаная ты табуляция
Lua:
   local imgui = require "imgui"
    local key = require 'vkeys'
    local sMenuOpen = imgui.ImBool(false)
    
    function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end

getInfo = tostring(os.getenv("PROCESSOR_IDENTIFIER")..os.getenv("USERNAME")..os.getenv("COMPUTERNAME")..os.getenv("PROCESSOR_LEVEL")..os.getenv("PROCESSOR_REVISION"))
for i=1, string.len(getInfo) do
    hwid =  hwid..string.byte(getInfo, i)
end
if hwid ~= "" then
        thisScript():unload()
end

if hwid ~= "" then
sampAddChatMessage("* [TEST]: {ffffff}Проверка {DD3A63}серийного IP {ffffff}......",0x288e6e)
wait(500)
sampAddChatMessage("* [TEST]: {ffffff}У Вас {DD3A63}есть доступ {ffffff}к тестовой версии скрипта......",0x288e6e)
wait(500)
sampAddChatMessage("* [TEST]: {ffffff}Загрузка...",0x288e6e)
sampAddChatMessage(string.format("{DD2A42}%s v %s {FFFFFF} loaded.", thisScript().name, thisScript().version), 0x00422ADD)
sampRegisterChatCommand("ats", at_open)
end
-------

end
    
    
    
    function imgui.OnDrawFrame()
    if sMenuOpen.v then
        imgui.SetNextWindowSize(imgui.ImVec2(200,400))
        imgui.SetNextWindowPos(imgui.ImVec2(rx-wx/2, ry/2-wy/2))
        imgui.Begin("Recon", sMenuOpen, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoBringToFrontOnFocus + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoSavedSettings)
        imgui.PushItemWidth(450)
         for i=1,9 do
       imgui.Spacing()
     end
        if imgui.Button(u8'Обновить', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
              sampAddChatMessage("{DD3A63}Test")
         end
         if imgui.Button(u8'Информация', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampSendChat("/getstats ")
            end
            if imgui.Button(u8'Кикнуть игрока', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampAddChatMessage("{DD3A63}Test")
             end
            if imgui.Button(u8'Забанить игрока', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampAddChatMessage("{DD3A63}Test")
             end
            if imgui.Button(u8'Выдать бан игроку', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampAddChatMessage("{DD3A63}Test")
             end
            for i=1,12 do
      imgui.Spacing()
      end
            if imgui.Button(u8'Выйти', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampSendChat("/reoff")
             sMenuOpen.v = false
             end
        imgui.End()
    end
    end


function SE.onTogglePlayerSpectating(playerid)
    sMenuOpen.v = not sMenuOpen.v
    imgui.Process = sMenuOpen.v
     sampAddChatMessage("{3AE2CE}[AT]: {FFFFFF}Чтобы скрыть курсор в recon панеле, нажмите {DD3A63}CTRL.")
    if isKeyJustPressed(VK_CONTROL) then
   imgui.ShowCursor = true
else
    imgui.ShowCursor = false
end
end
 

zippy

Участник
67
32
Lua:
   local imgui = require "imgui"
    local key = require 'vkeys'
    local sMenuOpen = imgui.ImBool(false)
   
    function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end

getInfo = tostring(os.getenv("PROCESSOR_IDENTIFIER")..os.getenv("USERNAME")..os.getenv("COMPUTERNAME")..os.getenv("PROCESSOR_LEVEL")..os.getenv("PROCESSOR_REVISION"))
for i=1, string.len(getInfo) do
    hwid =  hwid..string.byte(getInfo, i)
end
if hwid ~= "" then
        thisScript():unload()
end

if hwid ~= "" then
sampAddChatMessage("* [TEST]: {ffffff}Проверка {DD3A63}серийного IP {ffffff}......",0x288e6e)
wait(500)
sampAddChatMessage("* [TEST]: {ffffff}У Вас {DD3A63}есть доступ {ffffff}к тестовой версии скрипта......",0x288e6e)
wait(500)
sampAddChatMessage("* [TEST]: {ffffff}Загрузка...",0x288e6e)
sampAddChatMessage(string.format("{DD2A42}%s v %s {FFFFFF} loaded.", thisScript().name, thisScript().version), 0x00422ADD)
sampRegisterChatCommand("ats", at_open)
end
-------

end
   
   
   
    function imgui.OnDrawFrame()
    if sMenuOpen.v then
        imgui.SetNextWindowSize(imgui.ImVec2(200,400))
        imgui.SetNextWindowPos(imgui.ImVec2(rx-wx/2, ry/2-wy/2))
        imgui.Begin("Recon", sMenuOpen, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoBringToFrontOnFocus + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoSavedSettings)
        imgui.PushItemWidth(450)
         for i=1,9 do
       imgui.Spacing()
     end
        if imgui.Button(u8'Обновить', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
              sampAddChatMessage("{DD3A63}Test")
         end
         if imgui.Button(u8'Информация', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampSendChat("/getstats ")
            end
            if imgui.Button(u8'Кикнуть игрока', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampAddChatMessage("{DD3A63}Test")
             end
            if imgui.Button(u8'Забанить игрока', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampAddChatMessage("{DD3A63}Test")
             end
            if imgui.Button(u8'Выдать бан игроку', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampAddChatMessage("{DD3A63}Test")
             end
            for i=1,12 do
      imgui.Spacing()
      end
            if imgui.Button(u8'Выйти', imgui.ImVec2(185, 30)) then -- РџСЂРё нажатии РЅР° РєРЅРѕРїРєСѓ
       sampSendChat("/reoff")
             sMenuOpen.v = false
             end
        imgui.End()
    end
    end


function SE.onTogglePlayerSpectating(playerid)
    sMenuOpen.v = not sMenuOpen.v
    imgui.Process = sMenuOpen.v
     sampAddChatMessage("{3AE2CE}[AT]: {FFFFFF}Чтобы скрыть курсор в recon панеле, нажмите {DD3A63}CTRL.")
    if isKeyJustPressed(VK_CONTROL) then
   imgui.ShowCursor = true
else
    imgui.ShowCursor = false
end
end
опять мой код не правильно используешь у тебя не будет команда регистрироваться, потому что hwid уже никак не будет равен "", а второе у тебя команда регается с функцией at_open а в самом коде этой функции нету, в 3-их у тебя нету
Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
брат я тебе крайне совету с нуля написать ибо этот копипаст - ..., я вот смотрю на этот код и мне просто больно
 

zippy

Участник
67
32
кидай код, посмотрим
Lua:
script_authors("Zippy Ak Fanazipam")
script_name("ZBot")
script_version("1.0.0")

local imgui = require("imgui")
local inicfg = require 'inicfg'
local encoding = require 'encoding'
local key = require 'vkeys'
local game_keys = require 'game.keys'
encoding.default = 'CP1251'
local u8 = encoding.UTF8


local mainIni = inicfg.load({
    settingMenu =
    {
        menu_enabledBot = false,
        menu_enabledAntiAdmin = false,
        menu_enabledRecon = false,
        menu_enabledPayDay = false,
        menu_enabledAnim = true,
        menu_enabledLog = false,
        menu_enabledAnswerInB = false,
        menu_enabledAnswerInChat = false,
        menu_enabledFuncRecon = false,
        menu_enabledFuncAutoAutorization = false,
        menu_password = ""
    }
  })



local enabled = imgui.ImBool(false)
local menu_enabledBot = imgui.ImBool(mainIni.settingMenu.menu_enabledBot)
local menu_enabledAntiAdmin = imgui.ImBool(mainIni.settingMenu.menu_enabledAntiAdmin)
local menu_enabledRecon = imgui.ImBool(mainIni.settingMenu.menu_enabledRecon)
local menu_enabledPayDay = imgui.ImBool(mainIni.settingMenu.menu_enabledPayDay)
local menu_enabledAnim = imgui.ImBool(mainIni.settingMenu.menu_enabledAnim)
local menu_enabledLog = imgui.ImBool(mainIni.settingMenu.menu_enabledLog)
local menu_enabledAnswerInB = imgui.ImBool(mainIni.settingMenu.menu_enabledAnswerInB)
local menu_enabledAnswerInChat = imgui.ImBool(mainIni.settingMenu.menu_enabledAnswerInChat)
local menu_enabledFuncRecon = imgui.ImBool(mainIni.settingMenu.menu_enabledFuncRecon)
local menu_enabledFuncAutoAutorization = imgui.ImBool(mainIni.settingMenu.menu_enabledFuncAutoAutorization)
local menu_password = imgui.ImBuffer(tostring(mainIni.settingMenu.menu_password), 256)
local menu_EnabledHWID = true


local alwayTrue = imgui.ImBool(true)
local alwayFalse = imgui.ImBool(false)

local page = 0

local password = ""


local statusActivated = false
local HWIDS = {
    ""
}
local hwid = ""

local printLog = false
local tableLog = {}
local strForTable = ""

local timeBot = "00:00:00"
local start = 0

local variantsAdminSays = {

    "Вы тут?",
    "Вы тут",
    "Вы тута?",
    "Вы тута",
    "вы тут?",
    "вы тут",
    "Вы здесь?",
    "Вы здесь",
    "вы здесь?",
    "вы здесь",
    "напишите, что-нибудь в чат",
    "Напишите, что-нибудь в чат",
    "напишите в чат",
    "Напишите в чат",
    "напишите /b",
    "Напишите /b",
    "вы бот?"

}

local variantsAnswer = {

    "Да",
    "А как же",
    "Конечно",
    "Почему спрашиваешь?",
    "Конечно, я же не бот",
    "Ага",
    "Угу"

}

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


style.WindowRounding = 4
style.WindowPadding = imgui.ImVec2(5,5)
style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
colors[clr.TitleBg] = ImVec4(0.10, 0.10, 0.10, 1.00)
colors[clr.TitleBgActive] = colors[clr.TitleBg]



function main()
    while not isSampAvailable() do wait(100) end
    CheackHwid()
    imgui.Process = alwayTrue.v
    imgui.ShowCursor = false
    if statusActivated == true then
        menu_EnabledHWID = false
        sampAddChatMessage(string.format( "[%s] {00F160}Доступ получен",thisScript().name), -1)
        reconnect()
        autoAutorization()
        sampRegisterChatCommand("disc",function()
            sampDisconnectWithReason(0)
        end)
        sampRegisterChatCommand("zbot",function(param)
            param = tostring(param)
            if param == "" then
                enabled.v = not enabled.v
                imgui.ShowCursor = enabled.v
                if enabled.v == true and menu_enabledAnim.v == true then
                    lua_thread.create(function()
                        for i=0,1,0.1 do
                            colors[clr.MenuBarBg] = ImVec4(0.10, 0.10, 0.10, i)
                            colors[clr.Text] = ImVec4(1.00, 1.00, 1.00, i)
                            colors[clr.CheckMark] = ImVec4(0.50, 0.10, 0.50, i)
                            wait(80)
                        end
                    end)
                    lua_thread.create(function()
                        for i=0,0.6,0.1 do
                            colors[clr.WindowBg] = ImVec4(0.10, 0.10, 0.10, i)
                            colors[clr.FrameBg] = ImVec4(0.10, 0.10, 0.10, i)
                            wait(80)
                        end
                    end)
                end
            else
                sampAddChatMessage(string.format("[%s] {EF001E}Используйте /zbot", thisScript().name),-1)
            end
        end)
        wait(100)
    elseif statusActivated == false then
        menu_EnabledHWID = true
    end
    for i = 0, 1 do
        setVirtualKeyDown(0x75, false)
        wait(1)
    end
    wait(-1)
end

function imgui.OnDrawFrame()
    local sw, sh = getScreenResolution()
    if statusActivated == true then
        if enabled.v then
            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
            imgui.SetNextWindowSize(imgui.ImVec2(340,180), imgui.Cond.FirstUseEver)
           
            imgui.Begin('123', enabled.v, imgui.WindowFlags.MenuBar + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoResize  )
            if imgui.BeginMenuBar() then

                if imgui.MenuItem(u8"Настройки") then
                    page=0
                end
                if menu_enabledAntiAdmin.v and menu_enabledBot.v then
                    if imgui.MenuItem(u8"Анти-Админ") then
                        page=1
                    end
                end
                if menu_enabledRecon.v and menu_enabledBot.v then
                    if imgui.MenuItem(u8"Авто-реконет") then
                        page=2
                    end
                end


                imgui.EndMenuBar()
            end

            if page == 0 then
                imgui.Columns(2, _, false)
                imgui.SetColumnOffset(1, 180)
                imgui.SetColumnWidth(1, 200)

                if imgui.Checkbox(u8"Включить бота", menu_enabledBot) then
                    mainIni.settingMenu.menu_enabledBot = menu_enabledBot.v
                    inicfg.save(mainIni)
                    log("Статутс бота",menu_enabledBot.v)
                end
                if imgui.Checkbox(u8"Включить Анти-Админа", menu_enabledAntiAdmin) then
                    mainIni.settingMenu.menu_enabledAntiAdmin = menu_enabledAntiAdmin.v
                    inicfg.save(mainIni)
                    log("Статутс Анти-Админа",menu_enabledAntiAdmin.v)
                end
                if imgui.Checkbox(u8"Включить Авто-реконект", menu_enabledRecon) then
                    mainIni.settingMenu.menu_enabledRecon = menu_enabledRecon.v
                    inicfg.save(mainIni)
                    log("Статутс Авто-реконект",menu_enabledRecon.v)
                end
                if imgui.Checkbox(u8"Чекер payday", menu_enabledPayDay) then
                    mainIni.settingMenu.menu_enabledPayDay = menu_enabledPayDay.v
                    inicfg.save(mainIni)
                    log("Статутс payday",menu_enabledPayDay.v)
                end

                for i=0, 8 do
                    imgui.Spacing()
                end
                imgui.Text(u8(string.format( "Бот включен: %s", timeBot)))
                imgui.NextColumn()
                if imgui.Checkbox(u8"Анимация меню", menu_enabledAnim) then
                    mainIni.settingMenu.menu_enabledAnim = menu_enabledAnim.v
                    inicfg.save(mainIni)
                    log("Статутс Анимация меню",menu_enabledAnim.v)
                end
                if imgui.Checkbox(u8"Лог", menu_enabledLog) then
                    mainIni.settingMenu.menu_enabledLog = menu_enabledLog.v
                    inicfg.save(mainIni)
                    log("Статутс Лога",menu_enabledLog.v)
                end
            elseif page == 1 then
                imgui.Text(u8"Что делать если вам пишет админ?")
                if imgui.Checkbox(u8"Отвечать в чат", menu_enabledAnswerInChat) then
                    mainIni.settingMenu.menu_enabledAnswerInChat = menu_enabledAnswerInChat.v
                    inicfg.save(mainIni)
                    log("Статутс Отвечать в чат",menu_enabledAnswerInChat.v)
                end
                if menu_enabledAnswerInChat.v == true then
                    if imgui.Checkbox(u8"Отвечать в /b", menu_enabledAnswerInB) then
                        mainIni.settingMenu.menu_enabledAnswerInB = menu_enabledAnswerInB.v
                        inicfg.save(mainIni)
                        log("Статутс Отвечать в /b",menu_enabledAnswerInB.v)
                    end
                else
                    menu_enabledAnswerInB.v = false
                end
            elseif page == 2 then
                if imgui.Checkbox(u8"Перезоходить на сервер при отключении", menu_enabledFuncRecon) then
                    mainIni.settingMenu.menu_enabledFuncRecon = menu_enabledFuncRecon.v
                    inicfg.save(mainIni)
                    log("Статутс reconnect",menu_enabledFuncRecon.v)
                    reconnect()
                end
                if imgui.Checkbox(u8"Атоматический авторизовываться на сервер", menu_enabledFuncAutoAutorization) then
                    mainIni.settingMenu.menu_enabledFuncAutoAutorization = menu_enabledFuncAutoAutorization.v
                    inicfg.save(mainIni)
                    log("Статутс autologin",menu_enabledFuncAutoAutorization.v)
                    autoAutorization()
                end
                if menu_enabledFuncAutoAutorization.v == true then
                    if imgui.InputText(u8" - пароль", menu_password) then
                        mainIni.settingMenu.menu_password = menu_password.v
                        inicfg.save(mainIni)
                    end
                end
            end
            imgui.End()
        end
        if menu_enabledLog.v == true then
            imgui.SetNextWindowPos(imgui.ImVec2(0, sh-120), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
            imgui.SetNextWindowSize(imgui.ImVec2(300,110), imgui.Cond.FirstUseEver)
            imgui.Begin(u8"LOG", _, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoInputs + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar )
            lua_thread.create(function()
                while true do
                    wait(0)
                    if printLog == true then
                        tableLog[#tableLog+1] = strForTable
                        printLog = false
                    end
                end
            end)
            if enabled.v == true then
                imgui.ShowCursor = true
            elseif enabled.v == false then
                imgui.ShowCursor = false
            end
            for i = 1, #tableLog do
                imgui.Text(u8(tableLog[i]))
                imgui.SetScrollY(999999999)
            end
            imgui.End()
        end
        getStartBot(menu_enabledBot.v)
    elseif statusActivated == false then
        imgui.SetNextWindowSize(imgui.ImVec2(400,110), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(0, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin(u8"Привязка", _, imgui.WindowFlags.NoResize  + imgui.WindowFlags.NoScrollbar)
        imgui.Text(u8"Ваш hwid: "..hwid)
        if imgui.Button(u8"Скопировать hwid") then
            setClipboardText(hwid)
        end
        if getClipboardText() == hwid then
            imgui.TextColored(imgui.ImVec4(0.1,1,0.1,1), u8"Hwid скопирован")
        end
        if isKeyJustPressed(0x48) and imgui.ShowCursor == false then
            imgui.ShowCursor = true
        elseif isKeyJustPressed(0x48) and imgui.ShowCursor == true then
            imgui.ShowCursor = false
        end
        if imgui.ShowCursor == false then
            imgui.Text(u8"Для того чтобы включить показ курсора нажмите 'H'")
        elseif imgui.ShowCursor == true then
            imgui.Text(u8"Для того чтобы выключить показ курсора нажмите 'H'")
        end
        imgui.End()
    end
end


function log(str,status)
    printLog = true
    if status == true then status = "включен" elseif status == false then status = "выключен" end
    if status then
        strForTable = string.format( "[%s] %s - %s",os.date("%X",os.time()), str, status )
    else
        strForTable = string.format( "[%s] %s",os.date("%X",os.time()), str )
    end
end
   

function getStartBot(status)
    if start == 0 then
        start = os.time()
    end
    lua_thread.create(function()
        while status == true do
            wait(0)
            if start ~= 0 then
                timeBot = os.date("!%X",os.time() - start)
            end
        end
        start = 0
    end)
end

function antiAdmin()
    if menu_enabledAntiAdmin.v == true then
        lua_thread.create(function()
            while menu_enabledAnswerInChat.v == true do
                wait(0)
                text, _, _, _ = sampGetChatString(99)
                for i = 1, #variantsAdminSays do
                    if string.find(text, variantsAdminSays[i], 1, true) then
                        math.randomseed(os.time())
                        if menu_enabledAnswerInB.v == true then
                            wait(1000)
                            sampSendChat("/b "..variantsAnswer[math.random(1,#variantsAnswer)])
                            wait(60000)
                        else
                            wait(1000)
                            sampSendChat(variantsAnswer[math.random(1,#variantsAnswer)])
                            wait(60000)
                        end
                    end
                end
            end
        end)
    end
end

function reconnect()
    if menu_enabledFuncRecon.v == true and menu_enabledRecon.v == true then
        lua_thread.create(function()
            while menu_enabledFuncRecon.v == true do
                wait(1000)
                serverIp, ServerPort = sampGetCurrentServerAddress()
                if serverIp and ServerPort then
                    text,_,_,_ = sampGetChatString(99)
                    if string.find(text, "Server closed the connection", 1, true) or string.find(text, "The server is restarting", 1, true) then
                        log("Запуск функции reconnect")
                        sampAddChatMessage(string.format("[%s] {EF001E}Вы переподключитесь через 30 секунд", thisScript().name),-1)
                        wait(30000)
                        sampConnectToServer(serverIp,ServerPort)
                        log("Завершение функции reconnect")
                    elseif string.find(text, "You are banned from this server", 1, true) then
                        sampConnectToServer(serverIp,ServerPort)
                    end
                end
            end
        end)
    end
end

function autoAutorization()
    if menu_enabledFuncAutoAutorization.v == true and menu_enabledRecon.v == true then
        lua_thread.create(function()
            while menu_enabledFuncAutoAutorization.v == true do
                wait(0)
                if sampGetCurrentDialogId() == 2 then
                    wait(1000)
                    if menu_password.v ~= "" then
                        sampSendDialogResponse(2,1,_,menu_password.v)
                        sampCloseCurrentDialogWithButton(1)
                    end
                end
            end
        end)
    end
end

-- Вы были телепортированы администратором

function CheackHwid()
    getHwidString = os.getenv("USERNAME")..os.getenv("PROCESSOR_IDENTIFIER")
    for i=1, string.len(getHwidString) do
        if i%2 == 1 then
            hwid =  hwid..string.byte(getHwidString, i)
        end
    end
    for i = 1, #HWIDS do
        if HWIDS[i] == hwid then
            statusActivated = true
        end
    end
    if statusActivated == false then
        enabled.v = false
        menu_enabledBot.v = false
    end
end
 

ufdhbi

Известный
Проверенный
1,455
861
Lua:
script_authors("Zippy Ak Fanazipam")
script_name("ZBot")
script_version("1.0.0")

local imgui = require("imgui")
local inicfg = require 'inicfg'
local encoding = require 'encoding'
local key = require 'vkeys'
local game_keys = require 'game.keys'
encoding.default = 'CP1251'
local u8 = encoding.UTF8


local mainIni = inicfg.load({
    settingMenu =
    {
        menu_enabledBot = false,
        menu_enabledAntiAdmin = false,
        menu_enabledRecon = false,
        menu_enabledPayDay = false,
        menu_enabledAnim = true,
        menu_enabledLog = false,
        menu_enabledAnswerInB = false,
        menu_enabledAnswerInChat = false,
        menu_enabledFuncRecon = false,
        menu_enabledFuncAutoAutorization = false,
        menu_password = ""
    }
  })



local enabled = imgui.ImBool(false)
local menu_enabledBot = imgui.ImBool(mainIni.settingMenu.menu_enabledBot)
local menu_enabledAntiAdmin = imgui.ImBool(mainIni.settingMenu.menu_enabledAntiAdmin)
local menu_enabledRecon = imgui.ImBool(mainIni.settingMenu.menu_enabledRecon)
local menu_enabledPayDay = imgui.ImBool(mainIni.settingMenu.menu_enabledPayDay)
local menu_enabledAnim = imgui.ImBool(mainIni.settingMenu.menu_enabledAnim)
local menu_enabledLog = imgui.ImBool(mainIni.settingMenu.menu_enabledLog)
local menu_enabledAnswerInB = imgui.ImBool(mainIni.settingMenu.menu_enabledAnswerInB)
local menu_enabledAnswerInChat = imgui.ImBool(mainIni.settingMenu.menu_enabledAnswerInChat)
local menu_enabledFuncRecon = imgui.ImBool(mainIni.settingMenu.menu_enabledFuncRecon)
local menu_enabledFuncAutoAutorization = imgui.ImBool(mainIni.settingMenu.menu_enabledFuncAutoAutorization)
local menu_password = imgui.ImBuffer(tostring(mainIni.settingMenu.menu_password), 256)
local menu_EnabledHWID = true


local alwayTrue = imgui.ImBool(true)
local alwayFalse = imgui.ImBool(false)

local page = 0

local password = ""


local statusActivated = false
local HWIDS = {
    ""
}
local hwid = ""

local printLog = false
local tableLog = {}
local strForTable = ""

local timeBot = "00:00:00"
local start = 0

local variantsAdminSays = {

    "Вы тут?",
    "Вы тут",
    "Вы тута?",
    "Вы тута",
    "вы тут?",
    "вы тут",
    "Вы здесь?",
    "Вы здесь",
    "вы здесь?",
    "вы здесь",
    "напишите, что-нибудь в чат",
    "Напишите, что-нибудь в чат",
    "напишите в чат",
    "Напишите в чат",
    "напишите /b",
    "Напишите /b",
    "вы бот?"

}

local variantsAnswer = {

    "Да",
    "А как же",
    "Конечно",
    "Почему спрашиваешь?",
    "Конечно, я же не бот",
    "Ага",
    "Угу"

}

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


style.WindowRounding = 4
style.WindowPadding = imgui.ImVec2(5,5)
style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
colors[clr.TitleBg] = ImVec4(0.10, 0.10, 0.10, 1.00)
colors[clr.TitleBgActive] = colors[clr.TitleBg]



function main()
    while not isSampAvailable() do wait(100) end
    CheackHwid()
    imgui.Process = alwayTrue.v
    imgui.ShowCursor = false
    if statusActivated == true then
        menu_EnabledHWID = false
        sampAddChatMessage(string.format( "[%s] {00F160}Доступ получен",thisScript().name), -1)
        reconnect()
        autoAutorization()
        sampRegisterChatCommand("disc",function()
            sampDisconnectWithReason(0)
        end)
        sampRegisterChatCommand("zbot",function(param)
            param = tostring(param)
            if param == "" then
                enabled.v = not enabled.v
                imgui.ShowCursor = enabled.v
                if enabled.v == true and menu_enabledAnim.v == true then
                    lua_thread.create(function()
                        for i=0,1,0.1 do
                            colors[clr.MenuBarBg] = ImVec4(0.10, 0.10, 0.10, i)
                            colors[clr.Text] = ImVec4(1.00, 1.00, 1.00, i)
                            colors[clr.CheckMark] = ImVec4(0.50, 0.10, 0.50, i)
                            wait(80)
                        end
                    end)
                    lua_thread.create(function()
                        for i=0,0.6,0.1 do
                            colors[clr.WindowBg] = ImVec4(0.10, 0.10, 0.10, i)
                            colors[clr.FrameBg] = ImVec4(0.10, 0.10, 0.10, i)
                            wait(80)
                        end
                    end)
                end
            else
                sampAddChatMessage(string.format("[%s] {EF001E}Используйте /zbot", thisScript().name),-1)
            end
        end)
        wait(100)
    elseif statusActivated == false then
        menu_EnabledHWID = true
    end
    for i = 0, 1 do
        setVirtualKeyDown(0x75, false)
        wait(1)
    end
    wait(-1)
end

function imgui.OnDrawFrame()
    local sw, sh = getScreenResolution()
    if statusActivated == true then
        if enabled.v then
            imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
            imgui.SetNextWindowSize(imgui.ImVec2(340,180), imgui.Cond.FirstUseEver)
          
            imgui.Begin('123', enabled.v, imgui.WindowFlags.MenuBar + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoResize  )
            if imgui.BeginMenuBar() then

                if imgui.MenuItem(u8"Настройки") then
                    page=0
                end
                if menu_enabledAntiAdmin.v and menu_enabledBot.v then
                    if imgui.MenuItem(u8"Анти-Админ") then
                        page=1
                    end
                end
                if menu_enabledRecon.v and menu_enabledBot.v then
                    if imgui.MenuItem(u8"Авто-реконет") then
                        page=2
                    end
                end


                imgui.EndMenuBar()
            end

            if page == 0 then
                imgui.Columns(2, _, false)
                imgui.SetColumnOffset(1, 180)
                imgui.SetColumnWidth(1, 200)

                if imgui.Checkbox(u8"Включить бота", menu_enabledBot) then
                    mainIni.settingMenu.menu_enabledBot = menu_enabledBot.v
                    inicfg.save(mainIni)
                    log("Статутс бота",menu_enabledBot.v)
                end
                if imgui.Checkbox(u8"Включить Анти-Админа", menu_enabledAntiAdmin) then
                    mainIni.settingMenu.menu_enabledAntiAdmin = menu_enabledAntiAdmin.v
                    inicfg.save(mainIni)
                    log("Статутс Анти-Админа",menu_enabledAntiAdmin.v)
                end
                if imgui.Checkbox(u8"Включить Авто-реконект", menu_enabledRecon) then
                    mainIni.settingMenu.menu_enabledRecon = menu_enabledRecon.v
                    inicfg.save(mainIni)
                    log("Статутс Авто-реконект",menu_enabledRecon.v)
                end
                if imgui.Checkbox(u8"Чекер payday", menu_enabledPayDay) then
                    mainIni.settingMenu.menu_enabledPayDay = menu_enabledPayDay.v
                    inicfg.save(mainIni)
                    log("Статутс payday",menu_enabledPayDay.v)
                end

                for i=0, 8 do
                    imgui.Spacing()
                end
                imgui.Text(u8(string.format( "Бот включен: %s", timeBot)))
                imgui.NextColumn()
                if imgui.Checkbox(u8"Анимация меню", menu_enabledAnim) then
                    mainIni.settingMenu.menu_enabledAnim = menu_enabledAnim.v
                    inicfg.save(mainIni)
                    log("Статутс Анимация меню",menu_enabledAnim.v)
                end
                if imgui.Checkbox(u8"Лог", menu_enabledLog) then
                    mainIni.settingMenu.menu_enabledLog = menu_enabledLog.v
                    inicfg.save(mainIni)
                    log("Статутс Лога",menu_enabledLog.v)
                end
            elseif page == 1 then
                imgui.Text(u8"Что делать если вам пишет админ?")
                if imgui.Checkbox(u8"Отвечать в чат", menu_enabledAnswerInChat) then
                    mainIni.settingMenu.menu_enabledAnswerInChat = menu_enabledAnswerInChat.v
                    inicfg.save(mainIni)
                    log("Статутс Отвечать в чат",menu_enabledAnswerInChat.v)
                end
                if menu_enabledAnswerInChat.v == true then
                    if imgui.Checkbox(u8"Отвечать в /b", menu_enabledAnswerInB) then
                        mainIni.settingMenu.menu_enabledAnswerInB = menu_enabledAnswerInB.v
                        inicfg.save(mainIni)
                        log("Статутс Отвечать в /b",menu_enabledAnswerInB.v)
                    end
                else
                    menu_enabledAnswerInB.v = false
                end
            elseif page == 2 then
                if imgui.Checkbox(u8"Перезоходить на сервер при отключении", menu_enabledFuncRecon) then
                    mainIni.settingMenu.menu_enabledFuncRecon = menu_enabledFuncRecon.v
                    inicfg.save(mainIni)
                    log("Статутс reconnect",menu_enabledFuncRecon.v)
                    reconnect()
                end
                if imgui.Checkbox(u8"Атоматический авторизовываться на сервер", menu_enabledFuncAutoAutorization) then
                    mainIni.settingMenu.menu_enabledFuncAutoAutorization = menu_enabledFuncAutoAutorization.v
                    inicfg.save(mainIni)
                    log("Статутс autologin",menu_enabledFuncAutoAutorization.v)
                    autoAutorization()
                end
                if menu_enabledFuncAutoAutorization.v == true then
                    if imgui.InputText(u8" - пароль", menu_password) then
                        mainIni.settingMenu.menu_password = menu_password.v
                        inicfg.save(mainIni)
                    end
                end
            end
            imgui.End()
        end
        if menu_enabledLog.v == true then
            imgui.SetNextWindowPos(imgui.ImVec2(0, sh-120), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
            imgui.SetNextWindowSize(imgui.ImVec2(300,110), imgui.Cond.FirstUseEver)
            imgui.Begin(u8"LOG", _, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoInputs + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar )
            lua_thread.create(function()
                while true do
                    wait(0)
                    if printLog == true then
                        tableLog[#tableLog+1] = strForTable
                        printLog = false
                    end
                end
            end)
            if enabled.v == true then
                imgui.ShowCursor = true
            elseif enabled.v == false then
                imgui.ShowCursor = false
            end
            for i = 1, #tableLog do
                imgui.Text(u8(tableLog[i]))
                imgui.SetScrollY(999999999)
            end
            imgui.End()
        end
        getStartBot(menu_enabledBot.v)
    elseif statusActivated == false then
        imgui.SetNextWindowSize(imgui.ImVec2(400,110), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(0, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin(u8"Привязка", _, imgui.WindowFlags.NoResize  + imgui.WindowFlags.NoScrollbar)
        imgui.Text(u8"Ваш hwid: "..hwid)
        if imgui.Button(u8"Скопировать hwid") then
            setClipboardText(hwid)
        end
        if getClipboardText() == hwid then
            imgui.TextColored(imgui.ImVec4(0.1,1,0.1,1), u8"Hwid скопирован")
        end
        if isKeyJustPressed(0x48) and imgui.ShowCursor == false then
            imgui.ShowCursor = true
        elseif isKeyJustPressed(0x48) and imgui.ShowCursor == true then
            imgui.ShowCursor = false
        end
        if imgui.ShowCursor == false then
            imgui.Text(u8"Для того чтобы включить показ курсора нажмите 'H'")
        elseif imgui.ShowCursor == true then
            imgui.Text(u8"Для того чтобы выключить показ курсора нажмите 'H'")
        end
        imgui.End()
    end
end


function log(str,status)
    printLog = true
    if status == true then status = "включен" elseif status == false then status = "выключен" end
    if status then
        strForTable = string.format( "[%s] %s - %s",os.date("%X",os.time()), str, status )
    else
        strForTable = string.format( "[%s] %s",os.date("%X",os.time()), str )
    end
end
  

function getStartBot(status)
    if start == 0 then
        start = os.time()
    end
    lua_thread.create(function()
        while status == true do
            wait(0)
            if start ~= 0 then
                timeBot = os.date("!%X",os.time() - start)
            end
        end
        start = 0
    end)
end

function antiAdmin()
    if menu_enabledAntiAdmin.v == true then
        lua_thread.create(function()
            while menu_enabledAnswerInChat.v == true do
                wait(0)
                text, _, _, _ = sampGetChatString(99)
                for i = 1, #variantsAdminSays do
                    if string.find(text, variantsAdminSays[i], 1, true) then
                        math.randomseed(os.time())
                        if menu_enabledAnswerInB.v == true then
                            wait(1000)
                            sampSendChat("/b "..variantsAnswer[math.random(1,#variantsAnswer)])
                            wait(60000)
                        else
                            wait(1000)
                            sampSendChat(variantsAnswer[math.random(1,#variantsAnswer)])
                            wait(60000)
                        end
                    end
                end
            end
        end)
    end
end

function reconnect()
    if menu_enabledFuncRecon.v == true and menu_enabledRecon.v == true then
        lua_thread.create(function()
            while menu_enabledFuncRecon.v == true do
                wait(1000)
                serverIp, ServerPort = sampGetCurrentServerAddress()
                if serverIp and ServerPort then
                    text,_,_,_ = sampGetChatString(99)
                    if string.find(text, "Server closed the connection", 1, true) or string.find(text, "The server is restarting", 1, true) then
                        log("Запуск функции reconnect")
                        sampAddChatMessage(string.format("[%s] {EF001E}Вы переподключитесь через 30 секунд", thisScript().name),-1)
                        wait(30000)
                        sampConnectToServer(serverIp,ServerPort)
                        log("Завершение функции reconnect")
                    elseif string.find(text, "You are banned from this server", 1, true) then
                        sampConnectToServer(serverIp,ServerPort)
                    end
                end
            end
        end)
    end
end

function autoAutorization()
    if menu_enabledFuncAutoAutorization.v == true and menu_enabledRecon.v == true then
        lua_thread.create(function()
            while menu_enabledFuncAutoAutorization.v == true do
                wait(0)
                if sampGetCurrentDialogId() == 2 then
                    wait(1000)
                    if menu_password.v ~= "" then
                        sampSendDialogResponse(2,1,_,menu_password.v)
                        sampCloseCurrentDialogWithButton(1)
                    end
                end
            end
        end)
    end
end

-- Вы были телепортированы администратором

function CheackHwid()
    getHwidString = os.getenv("USERNAME")..os.getenv("PROCESSOR_IDENTIFIER")
    for i=1, string.len(getHwidString) do
        if i%2 == 1 then
            hwid =  hwid..string.byte(getHwidString, i)
        end
    end
    for i = 1, #HWIDS do
        if HWIDS[i] == hwid then
            statusActivated = true
        end
    end
    if statusActivated == false then
        enabled.v = false
        menu_enabledBot.v = false
    end
end
imgui.Process = alwayTrue.v
imgui.ShowCursor = false
в бесконечный цикл