From 71e43e9e73c9d62cc9d604da5568075c7d6510be Mon Sep 17 00:00:00 2001 From: treywisp Date: Thu, 13 Nov 2025 13:11:41 +0100 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BIG MARA SALVATRUCHA.lua | 5594 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 5594 insertions(+) create mode 100644 BIG MARA SALVATRUCHA.lua diff --git a/BIG MARA SALVATRUCHA.lua b/BIG MARA SALVATRUCHA.lua new file mode 100644 index 0000000..c601f65 --- /dev/null +++ b/BIG MARA SALVATRUCHA.lua @@ -0,0 +1,5594 @@ +script_name("BIG MARA SALVATRUCHA") +script_author("treywisp") +script_version("06.03.2025") +require("lib.moonloader") +require("lib.sampfuncs") + +sampev = require("samp.events") + +local var_0_0 = require("inicfg") +local var_0_1, var_0_2 = pcall(require, "mimgui_hotkeys") +local var_0_3, var_0_4 = pcall(require, "fAwesome6_solid") +local var_0_5, var_0_6 = pcall(require, "mimgui_addons") +local var_0_7 = require("encoding") +local var_0_8 = require("memory") +local var_0_9 = require("mimgui") +local var_0_10 = require("vkeys") +local var_0_11 = require("ffi") +local var_0_12 = var_0_9.new +local var_0_13 = var_0_12.bool() +local var_0_14 = var_0_7.CP1251 + +sizeof = var_0_11.sizeof +str = var_0_11.string + +if var_0_5 then + var_0_9.ToggleButton = require("mimgui_addons").ToggleButton +end + +local var_0_15 = true +local var_0_16 = false +local var_0_17 = true +local var_0_18 = true +local var_0_19 = false + +var_0_11.cdef(" bool SetCursorPos(int X, int Y); ") +var_0_11.cdef("\n struct stGangzone\n {\n float fPosition[4];\n uint32_t dwColor;\n uint32_t dwAltColor;\n };\n\n struct stGangzonePool\n {\n struct stGangzone *pGangzone[1024];\n int iIsListed[1024];\n };\n\n") +var_0_11.cdef(" typedef unsigned long HANDLE;\n typedef HANDLE HWND;\n typedef const char *LPCTSTR;\n HWND GetActiveWindow(void);\n bool SetWindowTextA(HWND hWnd, LPCTSTR lpString);\n") + +local var_0_20 = 0 +local var_0_21, var_0_22 = getScreenResolution() +local var_0_23, var_0_24 = convertGameScreenCoordsToWindowScreenCoords(88.081993103027, 322.58331298828) + +gz_pos_x, gz_pos_y = convertGameScreenCoordsToWindowScreenCoords(592.67, 203.26) +struck_pos_x, struck_pos_y = convertGameScreenCoordsToWindowScreenCoords(10, 432.24) +directIni = "BIG MARA SALVATRUCHA.ini" +config = {} +config.data = {} +config.default = { + narkotimer = { + inventory = true, + mats = 0, + death = false, + align = 2, + height = 4, + lines_one = "{1a9614}drugs !a!n{dedede}mats !m", + server_cmd = "usedrugs", + status = false, + flag = 13, + size = 10, + seconds = 60, + hp_one_gram = 10, + boostinfo = true, + lines_two = "{e81526}cooldown !s!n{dedede}mats !m", + font = "Segoe UI", + hp = 160, + drugs = 0, + max_use_gram = 15, + key = { + 88 + }, + x = var_0_23, + y = var_0_24 + }, + chat = { + vip_ad = false, + perenos = false, + ask = false, + gov = false, + ad = false, + events = false + }, + getgun_settings = { + status = false, + key = { + 78 + } + }, + getgun = { + SMG = 0, + armor = false, + Shotgun = 0, + M4A1 = 0, + AK47 = 0, + ["Desert Eagle"] = 0, + Rifle = 0, + ["SD Pistol"] = 0 + }, + office_getgun = { + SMG = 0, + ["Desert Eagle"] = 0, + Shotgun = 0, + M4A1 = 0, + AK47 = 0, + Rifle = 0, + ["SD Pistol"] = 0 + }, + marker = { + status = false, + key = { + 74 + } + }, + iznanka = { + run_key = 32, + int = 1, + status = false, + key = {} + }, + perevorot = { + speed = 15, + status = false, + key_one = { + 219 + }, + key_two = { + 221 + } + }, + doublejump = { + int = 0, + jump_key = 16, + status = false, + key = { + 20 + } + }, + autoadr = { + sbiv = false, + lomka = false, + perelom = false, + status = false + }, + autoclist_after_capt = { + clist = 0, + status = false + }, + autoclist_after_spawn = { + clist = 0, + status = false + }, + camhack = { + antiwarning = true, + bubble = false, + status = false, + key = { + 17, + 49 + } + }, + autohealme = { + status = false + }, + cmd_shorten = { + { + "de", + "gun deagle" + }, + { + "m4", + "gun m4" + }, + { + "sh", + "gun shotgun" + }, + { + "ri", + "gun rifle" + }, + { + "ak", + "gun ak47" + }, + { + "cl", + "clist 0" + }, + { + "mb", + "members" + }, + { + "gg", + "get guns" + }, + { + "un", + "unloading" + }, + { + "bun", + "bunloading" + }, + { + "inv", + "invite" + }, + { + "uval", + "uninvite" + }, + { + "wl", + "warelock" + }, + { + "sp", + "spawnchange" + }, + { + "wa", + "warehouse" + }, + { + "gr", + "giverank" + }, + { + "ofm", + "offmembers" + } + }, + binder = { + { + onekey = false, + enter = true, + sendtext = { + "/mm" + }, + key = { + 18, + 77 + } + } + }, + sbiv = { + status = false, + key = { + 82 + } + }, + grib_heal = { + status = false, + key = {} + }, + rkt = { + status = false, + key = {} + }, + flip = { + status = false, + key = {} + }, + vspiwka = { + status = false, + key = { + 51 + } + }, + delete_cue = { + status = false + }, + squad = { + text = "Состав отряда:", + font = "Trebuc", + status = false, + size = 10, + online_text = "online: !n", + x = 5, + style = 13, + y = var_0_22 * 0.358333333 + }, + remove_fence = { + status = false + }, + remove_flashlight = { + status = false + }, + struck = { + wait = 650, + status = false + }, + gz = { + fake = false, + text_pos = 1, + status = true, + font = { + text_size = 12, + height = 26, + length = 208, + x = gz_pos_x, + y = gz_pos_y, + color = { + text_back = 4278190080, + box = 4291891987, + text_front = 4294967295 + } + } + }, + capture = { + cmd = "bcapture", + wait = 650, + status = true + }, + antiafk = { + status = true + }, + infinite_run = { + status = false + }, + fastconnect = { + status = false + }, + gmwheels = { + status = false + }, + antibarrier = { + status = false + }, + nofall = { + status = false + }, + fastspawn = { + status = false + }, + schi = { + status = false + }, + nobike = { + status = false + }, + bikerlist = { + command = "/bikerlist", + status = true, + key = {} + }, + hpbar = { + status = true + }, + AutoBikeMotoRunSwimOnMaxSpeed = { + status = false + }, + ReplacingWindowWithNickName = { + status = false + }, + NoPara = { + status = false + }, + fastdeagle = { + speed = 1, + status = false + }, + ArrowPassMotoBike = { + status = false + }, + quitinformer = { + only_stream = true, + status = false + }, + dlcar = { + status = false + }, + autofill = { + status = false + } +} +config.directory = getWorkingDirectory() .. "\\BIG MARA SALVATRUCHA" + +function config_init() + if not doesDirectoryExist(config.directory) then + createDirectory(config.directory) + end + + config.address = string.format("%s\\settings.json", config.directory) + + if not doesFileExist(config.address) then + io.open(config.address, "a"):close() + config_save(config.default) + end + + config_read() + + for iter_1_0, iter_1_1 in pairs(config.data.binder) do + if iter_1_1.sendtext == nil then + config.data.binder = { + { + onekey = false, + enter = true, + sendtext = { + "/mm" + }, + key = { + 18, + 77 + } + } + } + + break + end + end + + for iter_1_2, iter_1_3 in pairs(config.default) do + if config.data[iter_1_2] == nil then + config.data[iter_1_2] = iter_1_3 + end + + if type(iter_1_3) == "table" and iter_1_2 ~= "binder" then + for iter_1_4, iter_1_5 in pairs(iter_1_3) do + if config.data[iter_1_2][iter_1_4] == nil then + config.data[iter_1_2][iter_1_4] = iter_1_5 + end + + if type(iter_1_5) ~= type(config.data[iter_1_2][iter_1_4]) then + config.data[iter_1_2][iter_1_4] = iter_1_5 + end + end + end + end + + config_save(config.data) +end + +function config_save(arg_2_0) + local var_2_0, var_2_1 = io.open(config.address, "w") + + if var_2_0 == nil then + print(var_2_1) + end + + var_2_0:write(encodeJson(arg_2_0)) + var_2_0:flush() + io.close(var_2_0) +end + +function config_read() + local function var_3_0() + local var_4_0, var_4_1 = io.open(config.address, "r") + + if var_4_0 then + config.data = decodeJson(var_4_0:read("*a")) + + io.close(var_4_0) + + if config.data == nil then + config_save(config.default) + end + end + end + + if not pcall(var_3_0) then + config_save(config.default) + end + + if config.data == nil then + config.error = true + + config_read() + elseif config.error then + config.error = false + end +end + +config_init() + +if not LPH_OBFUSCATED then + function LPH_NO_VIRTUALIZE(...) + return ... + end +end + +LuaScript = thisScript() + +function main() + if not isSampLoaded() or not isSampfuncsLoaded() then + return + end + + while not isSampAvailable() do + wait(0) + end + + var_0_8.fill(sampGetBase() + 29720, 144, 6, true) + + local var_6_0, var_6_1 = sampGetPlayerIdByCharHandle(PLAYER_PED) + + my_name = sampGetPlayerNickname(var_6_1) + + if var_0_1 then + narkotimer_hotkey = var_0_2.RegisterHotKey("narkotimer Hotkey", false, config.data.narkotimer.key, function() + return + end) + getgun_hotkey = var_0_2.RegisterHotKey("getgun Hotkey", false, config.data.getgun_settings.key, function() + return + end) + marker_hotkey = var_0_2.RegisterHotKey("marker Hotkey", false, config.data.marker.key, function() + return + end) + iznanka_hotkey = var_0_2.RegisterHotKey("iznanka Hotkey", false, config.data.iznanka.key, function() + return + end) + perevorot_one_hotkey = var_0_2.RegisterHotKey("perevorot_one Hotkey", false, config.data.perevorot.key_one, function() + return + end) + perevorot_two_hotkey = var_0_2.RegisterHotKey("perevorot_two Hotkey", false, config.data.perevorot.key_two, function() + return + end) + doublejump_hotkey = var_0_2.RegisterHotKey("doublejump Hotkey", false, config.data.doublejump.key, function() + return + end) + camhack_hotkey = var_0_2.RegisterHotKey("camhack Hotkey", false, config.data.camhack.key, function() + return + end) + sbiv_hotkey = var_0_2.RegisterHotKey("sbiv Hotkey", false, config.data.sbiv.key, function() + return + end) + grib_hotkey = var_0_2.RegisterHotKey("grib Hotkey", false, config.data.grib_heal.key, function() + return + end) + rkt_hotkey = var_0_2.RegisterHotKey("rkt Hotkey", false, config.data.rkt.key, function() + return + end) + flip_hotkey = var_0_2.RegisterHotKey("flip Hotkey", false, config.data.flip.key, function() + return + end) + vspiwka_hotkey = var_0_2.RegisterHotKey("vspiwka Hotkey", false, config.data.vspiwka.key, function() + return + end) + bikerlist_hotkey = var_0_2.RegisterHotKey("bikerlist Hotkey", false, config.data.bikerlist.key, function() + return + end) + end + + repeat + wait(0) + until sampGetCurrentServerName() ~= "SA-MP" + + repeat + wait(0) + until sampGetCurrentServerName():find("Samp%-Rp.Ru") + + repeat + wait(0) + until sampIsLocalPlayerSpawned() + + lua_thread.create(squad_check) + + repeat + wait(0) + until var_0_15 + + sampRegisterChatCommand("ese", function() + var_0_13[0] = not var_0_13[0] + end) + sampRegisterChatCommand("rld", function() + thisScript():reload() + end) + sampRegisterChatCommand("kdk", function() + sampAddChatMessage("" .. LuaScript, -1) + end) + ReplacingWindowWithNickName() + binder_register() + bikerlist_register() + capture_cmd_register() + lua_thread.create(check_boostinfo) + lua_thread.create(squadFunc) + lua_thread.create(squadFunc2) + lua_thread.create(narkotimerFunc) + lua_thread.create(getgunFunc) + lua_thread.create(deffdialogFunc) + lua_thread.create(markerFunc) + lua_thread.create(iznankaFunc) + lua_thread.create(perevorotFunc) + lua_thread.create(doublejumpFunc) + lua_thread.create(autoadrFunc) + lua_thread.create(autoclistspawnFunc) + lua_thread.create(autoclistcaptFunc) + lua_thread.create(camhackFunc) + lua_thread.create(autohealmeFunc) + lua_thread.create(binder_loop) + lua_thread.create(binder_loop_target) + lua_thread.create(sbivFunc) + lua_thread.create(gribhealFunc) + lua_thread.create(flipFunc) + lua_thread.create(rktFunc) + lua_thread.create(vspiwkaFunc) + lua_thread.create(deletecueFunc) + lua_thread.create(fenceFunc) + lua_thread.create(flashlightFunc) + lua_thread.create(struckFunc) + lua_thread.create(gzFunc) + lua_thread.create(captureFunc) + lua_thread.create(antiafkFunc) + lua_thread.create(infiniterunFunc) + lua_thread.create(fastconnectFunc) + lua_thread.create(gmwheelsFunc) + lua_thread.create(antibarrierFunc) + lua_thread.create(nofallFunc) + lua_thread.create(fastspawnFunc) + lua_thread.create(showcrosshairinstantlyFunc) + lua_thread.create(nobikeFunc) + lua_thread.create(hpbarFunc) + lua_thread.create(AutoBikeMotoRunSwimOnMaxSpeedFunc) + lua_thread.create(noparaFunc) + lua_thread.create(rank_check) + lua_thread.create(bikerlistFunc) + lua_thread.create(office_getgun_kostil) + lua_thread.create(ArrowPassMotoBikeFunc) + lua_thread.create(fastdeagleFunc) + lua_thread.create(dlcarFunc) + wait(-1) +end + +function office_getgun_kostil() + while true do + wait(0) + + if var_0_19 then + wait(800) + + for iter_24_0 = 1, ggtable.pistol do + sampSendDialogResponse(1513, 1, 0, -1) + + random_ms = math.random(750, 1000) + + wait(random_ms) + end + + for iter_24_1 = 1, ggtable.deagle do + sampSendDialogResponse(1513, 1, 1, -1) + + random_ms = math.random(750, 1000) + + wait(random_ms) + end + + wait(500) + + for iter_24_2 = 1, ggtable.shotgun do + sampSendDialogResponse(1513, 1, 2, -1) + + random_ms = math.random(750, 1000) + + wait(random_ms) + end + + for iter_24_3 = 1, ggtable.smg do + sampSendDialogResponse(1513, 1, 3, -1) + + random_ms = math.random(750, 1000) + + wait(random_ms) + end + + for iter_24_4 = 1, ggtable.ak47 do + sampSendDialogResponse(1513, 1, 4, -1) + + random_ms = math.random(750, 1000) + + wait(random_ms) + end + + for iter_24_5 = 1, ggtable.m4a1 do + sampSendDialogResponse(1513, 1, 5, -1) + + random_ms = math.random(750, 1000) + + wait(random_ms) + end + + for iter_24_6 = 1, ggtable.rifle do + sampSendDialogResponse(1513, 1, 5, -1) + + random_ms = math.random(900, 1000) + + wait(random_ms) + end + + gg = false + var_0_19 = false + end + end +end + +function squad_check() + while true do + wait(0) + + if var_0_18 then + sampSendChat("/squad") + wait(3000) + end + end +end + +local var_0_25 = var_0_9.new.bool(config.data.chat.ad) +local var_0_26 = var_0_9.new.bool(config.data.chat.vip_ad) +local var_0_27 = var_0_9.new.bool(config.data.chat.gov) +local var_0_28 = var_0_9.new.bool(config.data.chat.ask) +local var_0_29 = var_0_9.new.bool(config.data.chat.events) +local var_0_30 = var_0_9.new.bool(config.data.chat.perenos) + +function settings_chat() + var_0_9.ToggleButtonTextGear("Скрывать объявления", var_0_25, function() + config.data.chat.ad = not config.data.chat.ad + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Скрывать vip объявления", var_0_26, function() + config.data.chat.vip_ad = not config.data.chat.vip_ad + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Скрывать гос. новости", var_0_27, function() + config.data.chat.gov = not config.data.chat.gov + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Скрывать рекламу ask/news", var_0_28, function() + config.data.chat.ask = not config.data.chat.ask + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Скрывать events", var_0_29, function() + config.data.chat.events = not config.data.chat.events + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Переносить длинный текст", var_0_30, function() + config.data.chat.perenos = not config.data.chat.perenos + + config_save(config.data) + end) +end + +function seeMe(arg_33_0) + if arg_33_0 ~= "" then + RpMessage = arg_33_0 + chathelper_Enable = true + isMe = true + end +end + +function seeDo(arg_34_0) + if arg_34_0 ~= "" then + RpMessage = arg_34_0 + chathelper_Enable = true + isDo = true + end +end + +function seeTry(arg_35_0) + if arg_35_0 ~= "" then + RpMessage = arg_35_0 + chathelper_Enable = true + isTry = true + end +end + +cmd_short_comman_old = var_0_9.new.char[256]("") +cmd_short_comman_new = var_0_9.new.char[256]("") +cmd_short_added_combo_id = var_0_9.new.int() +cmd_short_added_combo_list = { + "Для SRP и ERP", + "Только для SRP", + "Только для ERP" +} +cmd_short_added_combo_items = var_0_9.new["const char*"][#cmd_short_added_combo_list](cmd_short_added_combo_list) +cmd_short_list_combo_id = var_0_9.new.int() +cmd_short_list_combo_list = { + "Показать сокращения для SRP", + "Показать сокращения для ERP", + "Показать все сокращения" +} +cmd_short_list_combo_items = var_0_9.new["const char*"][#cmd_short_list_combo_list](cmd_short_list_combo_list) +cmd_short_list_id = -1 + +local function var_0_31() + var_0_9.PushItemWidth(300) + var_0_9.InputText("Команда", cmd_short_comman_old, sizeof(cmd_short_comman_old)) + var_0_9.InputText("Сокращение", cmd_short_comman_new, sizeof(cmd_short_comman_new)) + + if #config.data.cmd_shorten >= cmd_short_list_id and cmd_short_list_id ~= -1 then + if var_0_9.Button("Изменить##shorten", var_0_9.ImVec2(146, 25)) then + local var_36_0 = str(cmd_short_comman_old) + local var_36_1 = str(cmd_short_comman_new) + + if #var_36_0 > 0 and #var_36_1 > 0 then + config.data.cmd_shorten[cmd_short_list_id][1] = var_36_1 + config.data.cmd_shorten[cmd_short_list_id][2] = var_36_0 + config.data.cmd_shorten[cmd_short_list_id][3] = cmd_short_added_combo_id[0] == 1 and "srp" or cmd_short_added_combo_id[0] == 2 and "erp" or "" + + config_save(config.data) + + cmd_short_list_id = -1 + end + end + + var_0_9.SameLine() + + if var_0_9.Button("Отмена##shorten", var_0_9.ImVec2(146, 25)) then + cmd_short_list_id = -1 + end + elseif var_0_9.Button("Создать##shorten", var_0_9.ImVec2(300, 25)) then + local var_36_2 = str(cmd_short_comman_old) + local var_36_3 = str(cmd_short_comman_new) + + if #var_36_2 > 0 and #var_36_3 > 0 then + config.data.cmd_shorten[#config.data.cmd_shorten + 1] = { + var_36_3, + var_36_2 + } + config.data.cmd_shorten[#config.data.cmd_shorten][3] = cmd_short_added_combo_id[0] == 1 and "srp" or cmd_short_added_combo_id[0] == 2 and "erp" or "" + end + end + + var_0_9.Spacing() + var_0_9.Spacing() + + for iter_36_0 = 1, #config.data.cmd_shorten do + if config.data.cmd_shorten[iter_36_0][3] == nil or config.data.cmd_shorten[iter_36_0][3] == "" or config.data.cmd_shorten[iter_36_0][3] == "srp" and cmd_short_list_combo_id[0] == 0 or config.data.cmd_shorten[iter_36_0][3] == "erp" and cmd_short_list_combo_id[0] == 1 or cmd_short_list_combo_id[0] == 2 then + if var_0_9.Button(config.data.cmd_shorten[iter_36_0][2] .. " > " .. config.data.cmd_shorten[iter_36_0][1] .. (config.data.cmd_shorten[iter_36_0][3] ~= nil and (#config.data.cmd_shorten[iter_36_0][3] > 0 and " [" .. config.data.cmd_shorten[iter_36_0][3] .. "]" or " [all]") or " [all]"), var_0_9.ImVec2(350, 25)) then + var_0_9.StrCopy(cmd_short_comman_old, config.data.cmd_shorten[iter_36_0][2]) + var_0_9.StrCopy(cmd_short_comman_new, config.data.cmd_shorten[iter_36_0][1]) + + if config.data.cmd_shorten[iter_36_0][3] ~= nil then + cmd_short_added_combo_id[0] = config.data.cmd_shorten[iter_36_0][3] == "srp" and 1 or 2 + else + cmd_short_added_combo_id[0] = 0 + end + + cmd_short_list_id = iter_36_0 + end + + var_0_9.SameLine() + + if var_0_9.Button(var_0_4.TRASH .. "##trash_short_command" .. iter_36_0, var_0_9.ImVec2(25, 25)) then + table.remove(config.data.cmd_shorten, iter_36_0) + config_save(config.data) + + break + end + end + end + + if var_0_9.Button("Сброс сокращений до стандартных", var_0_9.ImVec2(383, 25)) then + config.data.cmd_shorten = { + { + "de", + "gun deagle" + }, + { + "m4", + "gun m4" + }, + { + "sh", + "gun shotgun" + }, + { + "ri", + "gun rifle" + }, + { + "ak", + "gun ak47" + }, + { + "cl", + "clist 0" + }, + { + "mb", + "members" + }, + { + "gg", + "get guns" + }, + { + "un", + "unloading" + }, + { + "bun", + "bunloading" + }, + { + "inv", + "invite" + }, + { + "uval", + "uninvite" + }, + { + "wl", + "warelock" + }, + { + "sp", + "spawnchange" + }, + { + "wa", + "warehouse" + }, + { + "gr", + "giverank" + }, + { + "ofm", + "offmembers" + } + } + + config_save(config.data) + end +end + +font = renderCreateFont(config.data.narkotimer.font, config.data.narkotimer.size, config.data.narkotimer.flag) + +local var_0_32 = false +local var_0_33 = config.data.narkotimer.seconds +local var_0_34 = 0 +local var_0_35 = false +local var_0_36 = {} +local var_0_37 = var_0_9.new.bool(config.data.narkotimer.status) +local var_0_38 = true +local var_0_39 = false +local var_0_40 = false +local var_0_41 = var_0_9.new.char[256](var_0_14(config.data.narkotimer.lines_one)) +local var_0_42 = var_0_9.new.char[256](var_0_14(config.data.narkotimer.lines_two)) +local var_0_43 = var_0_9.new.char[256](var_0_14(config.data.narkotimer.font)) +local var_0_44 = var_0_9.new.char[256](var_0_14(config.data.narkotimer.size)) +local var_0_45 = var_0_9.new.char[256](var_0_14(config.data.narkotimer.flag)) +local var_0_46 = var_0_9.new.int(config.data.narkotimer.height) +local var_0_47 = var_0_9.new.int(config.data.narkotimer.max_use_gram) +local var_0_48 = var_0_9.new.int(config.data.narkotimer.hp) + +local function var_0_49() + var_0_9.ToggleButtonText("Наркотаймер", var_0_37, function() + config.data.narkotimer.status = not config.data.narkotimer.status + + config_save(config.data) + end) + + if narkotimer_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.narkotimer.key = narkotimer_hotkey:GetHotKey() + + config_save(config.data) + end + + if var_0_9.Button("Сменить позицию таймера", var_0_9.ImVec2(390, 20)) then + var_0_39 = true + end + + var_0_9.InputText("Текст без таймера", var_0_41, sizeof(var_0_41)) + + local var_37_0 = 394 + local var_37_1 = 98 + + var_0_9.SetCursorPos(var_0_9.ImVec2(var_37_0, var_37_1)) + var_0_9.Text("(?)") + var_0_9.Question("!s - Таймер\n!a - Кол-во наркотиков\n!m - Кол-во материалов\n!n - Новая строка") + var_0_9.Spacing() + var_0_9.InputText("Текст с таймером", var_0_42, sizeof(var_0_42)) + var_0_9.InputText("Название шрифта", var_0_43, sizeof(var_0_43)) + var_0_9.InputText("Размер шрифта", var_0_44, sizeof(var_0_44)) + var_0_9.InputText("Стиль шрифта", var_0_45, sizeof(var_0_45)) + + if var_0_9.Button("Сохранить##multi.nark.save", var_0_9.ImVec2(390, 25)) and str(var_0_44):find("^%d+$") and str(var_0_45):find("^%d+$") then + config.data.narkotimer.lines_one = str(var_0_41) + config.data.narkotimer.lines_two = str(var_0_42) + config.data.narkotimer.font = str(var_0_43) + config.data.narkotimer.size = tonumber(str(var_0_44)) + config.data.narkotimer.flag = tonumber(str(var_0_45)) + + config_save(config.data) + renderReleaseFont(font) + + font = renderCreateFont(config.data.narkotimer.font, config.data.narkotimer.size, config.data.narkotimer.flag) + end + + var_0_9.Spacing() + var_0_9.Spacing() + var_0_9.Spacing() + var_0_9.Spacing() + + local var_37_2 = config.data.narkotimer.align == 0 and "К левому краю" or config.data.narkotimer.align == 1 and "По середине" or "К правому краю" + + if var_0_9.Button("Выравнивание: " .. var_37_2 .. "##multi.nark.align", var_0_9.ImVec2(390, 25)) then + config.data.narkotimer.align = config.data.narkotimer.align + 1 + + if config.data.narkotimer.align >= 3 then + config.data.narkotimer.align = 0 + end + + config_save(config.data) + end + + var_0_9.PushItemWidth(150) + + if var_0_9.SliderInt("Расстояние между строк таймера", var_0_46, 2, 10) then + config.data.narkotimer.height = var_0_46[0] + + config_save(config.data) + end + + if var_0_9.SliderInt("Максимальное кол-во грамм", var_0_47, 0, 20) then + config.data.narkotimer.max_use_gram = var_0_47[0] + + config_save(config.data) + end + + if var_0_9.SliderInt("Максимальное кол-во HP", var_0_48, 0, 200) then + config.data.narkotimer.hp = var_0_48[0] + + config_save(config.data) + end +end + +function check_boostinfo() + while true do + wait(0) + + if var_0_38 and config.data.narkotimer.status then + sampSendChat("/boostinfo") + wait(4000) + end + end +end + +function narkotimerFunc() + while true do + wait(0) + + var_0_36[3] = {} + var_0_36[4] = {} + + for iter_40_0 in string.gmatch(config.data.narkotimer.lines_one:gsub("!n", "\n"), "[^\n]+") do + var_0_36[3][#var_0_36[3] + 1] = iter_40_0 + end + + for iter_40_1 in string.gmatch(config.data.narkotimer.lines_two:gsub("!n", "\n"), "[^\n]+") do + var_0_36[4][#var_0_36[4] + 1] = iter_40_1 + end + + if config.data.narkotimer.status and not sampIsScoreboardOpen() and sampIsChatVisible() and not isKeyDown(116) and not isKeyDown(121) then + second_timer = os.difftime(os.time(), var_0_34) + render_table = second_timer <= var_0_33 and second_timer > 0 and var_0_36[4] or var_0_36[3] + + local var_40_0 = config.data.narkotimer.y + local var_40_1 = renderGetFontDrawHeight(font) - renderGetFontDrawHeight(font) / config.data.narkotimer.height + + for iter_40_2 = 1, #render_table do + if render_table[iter_40_2] ~= nil then + string_gsub = render_table[iter_40_2]:gsub("!a", config.data.narkotimer.drugs) + string_gsub = string_gsub:gsub("!s", tostring(math.ceil(var_0_33 - second_timer))) + string_gsub = string_gsub:gsub("!m", tostring(config.data.narkotimer.mats)) + + if config.data.narkotimer.align == 1 then + X = config.data.narkotimer.x + end + + if config.data.narkotimer.align == 2 then + X = config.data.narkotimer.x - renderGetFontDrawTextLength(font, string_gsub) / 2 + end + + if config.data.narkotimer.align == 3 then + X = config.data.narkotimer.x - renderGetFontDrawTextLength(font, string_gsub) + end + + renderFontDrawText(font, string_gsub, X, var_40_0, 4294967295) + + var_40_0 = var_40_0 + var_40_1 + end + end + + if isKeysPressed(config.data.narkotimer.key) and config.data.narkotimer.status and not sampIsDialogActive() and not sampIsChatInputActive() and not sampIsCursorActive() then + local var_40_2 = math.ceil((config.data.narkotimer.hp + 1 - getCharHealth(playerPed)) / config.data.narkotimer.hp_one_gram) + + if var_40_2 > config.data.narkotimer.max_use_gram then + var_40_2 = config.data.narkotimer.max_use_gram + end + + sampSendChat(string.format("/%s %d", config.data.narkotimer.server_cmd, var_40_2)) + end + + if isKeyDown(16) and isKeysPressed(config.data.narkotimer.key) and config.data.narkotimer.status and not sampIsDialogActive() and not sampIsChatInputActive() and not sampIsCursorActive() then + local var_40_3 = math.ceil((config.data.narkotimer.hp + 1 - getCharHealth(playerPed)) / config.data.narkotimer.hp_one_gram) + + if var_40_3 > config.data.narkotimer.max_use_gram then + var_40_3 = config.data.narkotimer.max_use_gram + end + + sampSendChat(string.format("/%s %d", config.data.narkotimer.server_cmd, var_40_3)) + end + + if isKeyDown(32) and isKeysPressed(config.data.narkotimer.key) and config.data.narkotimer.status and not sampIsDialogActive() and not sampIsChatInputActive() and not sampIsCursorActive() then + local var_40_4 = math.ceil((config.data.narkotimer.hp + 1 - getCharHealth(playerPed)) / config.data.narkotimer.hp_one_gram) + + if var_40_4 > config.data.narkotimer.max_use_gram then + var_40_4 = config.data.narkotimer.max_use_gram + end + + sampSendChat(string.format("/%s %d", config.data.narkotimer.server_cmd, var_40_4)) + end + + if var_0_39 then + sampSetCursorMode(3) + + curX, curY = getCursorPos() + config.data.narkotimer.x = curX + config.data.narkotimer.y = curY + + if isKeyJustPressed(1) then + sampSetCursorMode(0) + + var_0_39 = false + + config_save(config.data) + end + end + end + end +end + +local var_0_50 = var_0_9.new.bool(config.data.getgun_settings.status) +local var_0_51 = var_0_9.new.bool(config.data.getgun.armor) +local var_0_52 = 0 + +gg = false +ggtable = {} +getguns = {} +getgun_gun_list = { + ["SD Pistol"] = { + "SD Pistol" + }, + ["Desert Eagle"] = { + "Desert Eagle" + }, + Shotgun = { + "Shotgun" + }, + SMG = { + "SMG", + "MP5" + }, + AK47 = { + "AK%-47", + "AK47" + }, + M4A1 = { + "M4A1", + "M4" + }, + Rifle = { + "Rifle" + } +} + +local function var_0_53() + var_0_9.ToggleButtonText("Быстрое взятие гана", var_0_50, function() + config.data.getgun_settings.status = config.data.getgun_settings.status + + config_save(config.data) + end) + var_0_9.Text("Активация") + + if getgun_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.getgun_settings.key = getgun_hotkey:GetHotKey() + + config_save(config.data) + end + + var_0_9.Spacing() + var_0_9.Spacing() + var_0_9.Text("Фракция") + + local var_41_0 = { + "SD Pistol", + "Desert Eagle", + "Shotgun", + "SMG", + "AK47", + "M4A1", + "Rifle" + } + + for iter_41_0 = 1, #var_41_0 do + if config.data.getgun[var_41_0[iter_41_0]] ~= nil then + if var_0_9.Button("+##plus_getgun" .. iter_41_0, var_0_9.ImVec2(20, 20)) then + config.data.getgun[var_41_0[iter_41_0]] = config.data.getgun[var_41_0[iter_41_0]] + 1 + + config_save(config.data) + end + + var_0_9.SameLine() + + if var_0_9.Button("-##minus_getgun" .. iter_41_0, var_0_9.ImVec2(20, 20)) then + config.data.getgun[var_41_0[iter_41_0]] = config.data.getgun[var_41_0[iter_41_0]] - 1 + + if config.data.getgun[var_41_0[iter_41_0]] < 0 then + config.data.getgun[var_41_0[iter_41_0]] = 0 + end + + config_save(config.data) + end + + var_0_9.SameLine() + var_0_9.Text(var_41_0[iter_41_0] .. ": " .. config.data.getgun[var_41_0[iter_41_0]]) + end + end + + if var_0_9.Checkbox("Armor", var_0_51) then + config.data.getgun.armor = var_0_51[0] + + config_save(config.data) + end + + local var_41_1 = 230 + local var_41_2 = 97.9 + + var_0_9.SetCursorPos(var_0_9.ImVec2(var_41_1, var_41_2)) + var_0_9.Text("Офис") + + local var_41_3 = { + "SD Pistol", + "Desert Eagle", + "Shotgun", + "SMG", + "AK47", + "M4A1", + "Rifle" + } + + for iter_41_1 = 1, #var_41_3 do + if config.data.office_getgun[var_41_3[iter_41_1]] ~= nil then + var_0_9.SetCursorPosX(230) + + if var_0_9.Button("+##plus_getgunsquad" .. iter_41_1, var_0_9.ImVec2(20, 20)) then + config.data.office_getgun[var_41_3[iter_41_1]] = config.data.office_getgun[var_41_3[iter_41_1]] + 1 + + config_save(config.data) + end + + var_0_9.SameLine() + + if var_0_9.Button("-##minus_getgunsquad" .. iter_41_1, var_0_9.ImVec2(20, 20)) then + config.data.office_getgun[var_41_3[iter_41_1]] = config.data.office_getgun[var_41_3[iter_41_1]] - 1 + + if config.data.office_getgun[var_41_3[iter_41_1]] < 0 then + config.data.office_getgun[var_41_3[iter_41_1]] = 0 + end + + config_save(config.data) + end + + var_0_9.SameLine() + var_0_9.Text(var_41_3[iter_41_1] .. ": " .. config.data.office_getgun[var_41_3[iter_41_1]]) + end + end +end + +function getgunFunc() + getguns.status = false + getguns.list_find = false + getguns.list = {} + getguns.active = 0 + + while true do + wait(0) + + if config.data.getgun_settings.status and isKeysPressed(config.data.getgun_settings.key) and isKeyCanBePressed() then + if var_0_52 == 0 then + setGameKeyState(15, 255) + + ggtable.pistol = config.data.office_getgun["SD Pistol"] + ggtable.deagle = config.data.office_getgun["Desert Eagle"] + ggtable.shotgun = config.data.office_getgun.Shotgun + ggtable.smg = config.data.office_getgun.SMG + ggtable.ak47 = config.data.office_getgun.AK47 + ggtable.m4a1 = config.data.office_getgun.M4A1 + ggtable.rifle = config.data.office_getgun.Rifle + gg = true + elseif var_0_52 == 11 or var_0_52 == 3 or var_0_52 == 2 then + repeat + wait(0) + until os.clock() * 1000 - var_0_20 > 650 + + ggtable.pistol = config.data.getgun["SD Pistol"] + ggtable.deagle = config.data.getgun["Desert Eagle"] + ggtable.shotgun = config.data.getgun.Shotgun + ggtable.smg = config.data.getgun.SMG + ggtable.ak47 = config.data.getgun.AK47 + ggtable.m4a1 = config.data.getgun.M4A1 + ggtable.rifle = config.data.getgun.Rifle + + if var_0_52 ~= 11 and config.data.getgun.armor then + ggtable.armor = 1 + end + + local var_43_0, var_43_1 = getCharPlayerIsTargeting(playerHandle) + + if var_43_0 then + resid, getgunid = sampGetPlayerIdByCharHandle(var_43_1) + + if resid then + sampSendChat("/getgun " .. getgunid) + end + else + sampSendChat("/getgun") + end + + gg = true + end + end + + if getguns.status and (not getguns.list_find and #getguns.list == 0 or os.time() - getguns.active >= 2) then + getguns.status = false + getguns.list_find = false + end + end +end + +deff_dialog = {} + +function deffdialogFunc() + while true do + wait(0) + + if deff_dialog.send ~= nil and os.clock() * 1000 - deff_dialog.send.clock > deff_dialog.send.wait then + sampSendDialogResponse(deff_dialog.send.dialogId, deff_dialog.send.button, deff_dialog.send.listitem, deff_dialog.send.input) + + deff_dialog.send = nil + end + end +end + +local var_0_54 = var_0_9.new.bool(config.data.marker.status) +local var_0_55 = { + "А", + "Б", + "В", + "Г", + "Д", + "Ж", + "З", + "И", + "К", + "Л", + "М", + "Н", + "О", + "П", + "Р", + "С", + "Т", + "У", + "Ф", + "Х", + "Ц", + "Ч", + "Ш", + "Я" +} +local var_0_56 + +function removeUserBlip() + deleteCheckpoint(var_0_56) + removeWaypoint() + addOneOffSound(0, 0, 0, 1149) +end + +function sendBlipInChat(arg_46_0, arg_46_1, arg_46_2) + sampSendChat(string.format("/fs Установил метку в %s. | CPOIX%sY%sZ%sE", getKv(round(arg_46_0), round(arg_46_1)), round(arg_46_0), round(arg_46_1), round(arg_46_2))) +end + +function getKv(arg_47_0, arg_47_1) + Square = var_0_55[math.ceil((arg_47_1 * -1 + 3000) / 250)] .. "-" .. math.ceil((arg_47_0 + 3000) / 250) .. "-" .. getUli(arg_47_0, arg_47_1) + + return Square +end + +function getUli(arg_48_0, arg_48_1) + local var_48_0 = arg_48_1 * -1 + 3000 + local var_48_1 = arg_48_0 + 3000 + local var_48_2 = math.ceil((arg_48_0 + 3000) / 250) + local var_48_3 = math.ceil((arg_48_1 * -1 + 3000) / 250) + local var_48_4 = var_48_1 - (var_48_2 * 250 - 250) + local var_48_5 = var_48_0 - (var_48_3 * 250 - 250) + local var_48_6 = var_48_4 / 250 + local var_48_7 = var_48_5 / 250 + local var_48_8 + local var_48_9 + + if var_48_6 < 0.33 then + var_48_8 = 1 + elseif var_48_6 > 0.33 and var_48_6 < 0.66 then + var_48_8 = 2 + elseif var_48_6 > 0.66 then + var_48_8 = 3 + end + + if var_48_7 < 0.33 then + var_48_9 = 1 + elseif var_48_7 > 0.33 and var_48_7 < 0.66 then + var_48_9 = 2 + elseif var_48_7 > 0.66 then + var_48_9 = 3 + end + + local var_48_10 = 0 + + if var_48_9 == 1 then + var_48_10 = var_48_8 + elseif var_48_9 == 2 then + if var_48_8 == 1 then + var_48_10 = 8 + elseif var_48_8 == 2 then + var_48_10 = 9 + elseif var_48_8 == 3 then + var_48_10 = 4 + end + elseif var_48_9 == 3 then + if var_48_8 == 1 then + var_48_10 = 7 + elseif var_48_8 == 2 then + var_48_10 = 6 + elseif var_48_8 == 3 then + var_48_10 = 5 + end + end + + return var_48_10 +end + +function get_crosshair_position() + local var_49_0 = var_0_11.new("float[3]") + local var_49_1 = var_0_11.new("float[3]") + + var_0_11.cast("void (__thiscall*)(void*, float, float, float, float, float*, float*)", 5327216)(var_0_11.cast("void*", 11989032), 15, var_49_1[0], var_49_1[1], var_49_1[2], var_49_1, var_49_0) + + return var_49_0[0], var_49_0[1], var_49_0[2] +end + +function round(arg_50_0) + return arg_50_0 - arg_50_0 % 1 +end + +function setMarker(arg_51_0, arg_51_1, arg_51_2, arg_51_3, arg_51_4, arg_51_5) + deleteCheckpoint(var_0_56) + + var_0_56 = createCheckpoint(arg_51_0, arg_51_1, arg_51_2, arg_51_3, 1, 1, 1, arg_51_4) + + addOneOffSound(0, 0, 0, 1190) + removeWaypoint() + placeWaypoint(arg_51_1, arg_51_2, arg_51_3) + lua_thread.create(function() + repeat + wait(0) + + local var_52_0, var_52_1, var_52_2 = getCharCoordinates(PLAYER_PED) + local var_52_3, var_52_4, var_52_5, var_52_6 = getTargetBlipCoordinates() + until getDistanceBetweenCoords3d(arg_51_1, arg_51_2, arg_51_3, var_52_0, var_52_1, var_52_2) < arg_51_4 or var_52_3 == false + + removeUserBlip() + end) +end + +local function var_0_57() + var_0_9.ToggleButtonText("Метка на карте", var_0_54, function() + config.data.marker.status = not config.data.marker.status + + config_save(config.data) + end, true, function() + window_function = "marker" + end) + + if marker_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.marker.key = marker_hotkey:GetHotKey() + + config_save(config.data) + end +end + +function markerFunc() + while true do + wait(0) + + if isKeysPressed(config.data.marker.key) and isKeyCanBePressed() and config.data.marker.status then + resX, resY = convert3DCoordsToScreen(get_crosshair_position()) + targetX, targetY, targetZ = convertScreenCoordsToWorld3D(resX, resY, 3600) + originX, originY, originZ = getActiveCameraCoordinates() + result, colPoint = processLineOfSight(originX, originY, originZ, targetX, targetY, targetZ, true, true, false, true, true, true, true, true) + + if result then + sendBlipInChat(colPoint.pos[1], colPoint.pos[2], colPoint.pos[3]) + end + end + end +end + +local var_0_58 = var_0_9.new.bool(config.data.iznanka.status) +local var_0_59 = false +local var_0_60 = var_0_12.int(config.data.iznanka.int) +local var_0_61 = { + "Shift", + "Space" +} +local var_0_62 = var_0_9.new["const char*"][#var_0_61](var_0_61) + +local function var_0_63() + var_0_9.ToggleButtonText("Танец в стенку", var_0_58, function() + config.data.iznanka.status = not config.data.iznanka.status + + config_save(config.data) + end, true, function() + window_function = "iznanka" + end) + + if iznanka_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.iznanka.key = iznanka_hotkey:GetHotKey() + + config_save(config.data) + end + + if var_0_9.Combo("Клавиша бега", var_0_60, var_0_62, #var_0_61) then + config.data.iznanka.int = var_0_60[0] + + if config.data.iznanka.int == 0 then + config.data.iznanka.run_key = 16 + elseif config.data.iznanka.int == 1 then + config.data.iznanka.run_key = 32 + end + + config_save(config.data) + end +end + +function iznankaFunc() + while true do + wait(0) + + if isKeysPressed(config.data.iznanka.key) and config.data.iznanka.status and isKeyCanBePressed() and var_0_17 and not sampIsCursorActive() and not isCharInAnyCar(1) then + var_0_59 = not var_0_59 + + if var_0_59 then + sampSetSpecialAction(7) + setVirtualKeyDown(config.data.iznanka.run_key, true) + wait(65) + setVirtualKeyDown(83, true) + iznanka_cycle() + else + setVirtualKeyDown(65, false) + setVirtualKeyDown(68, false) + setVirtualKeyDown(83, false) + setVirtualKeyDown(config.data.iznanka.run_key, false) + sampSetSpecialAction(0) + end + end + + if var_0_59 and (isKeysPressed(config.data.iznanka.key) or isCharDead(1) or isKeyJustPressed(82) or isKeyJustPressed(70)) then + var_0_59 = false + + setVirtualKeyDown(65, false) + setVirtualKeyDown(68, false) + setVirtualKeyDown(83, false) + setVirtualKeyDown(config.data.iznanka.run_key, false) + sampSetSpecialAction(0) + end + end +end + +function iznanka_cycle() + lua_thread.create(function() + while var_0_59 do + setVirtualKeyDown(65, true) + wait(400) + setVirtualKeyDown(65, false) + wait(65) + setVirtualKeyDown(68, true) + wait(400) + setVirtualKeyDown(68, false) + wait(65) + end + end) +end + +local var_0_64 = var_0_9.new.bool(config.data.iznanka.status) +local var_0_65 = var_0_12.int(config.data.perevorot.speed) + +local function var_0_66() + var_0_9.ToggleButtonText("Переворот авто", var_0_64, function() + config.data.perevorot.status = not config.data.perevorot.status + + config_save(config.data) + end, true, function() + window_function = "perevorot" + end) + + if perevorot_one_hotkey:ShowHotKey(var_0_9.ImVec2(180, 20)) then + config.data.perevorot.key_one = perevorot_one_hotkey:GetHotKey() + + config_save(config.data) + end + + var_0_9.SameLine() + + if perevorot_two_hotkey:ShowHotKey(var_0_9.ImVec2(180, 20)) then + config.data.perevorot.key_two = perevorot_two_hotkey:GetHotKey() + + config_save(config.data) + end + + if var_0_9.SliderInt(var_0_14("Скорость"), var_0_65, 0, 50) then + config.data.perevorot.speed = var_0_65[0] + + config_save(config.data) + end +end + +function perevorotFunc() + while true do + wait(0) + + if isCharInAnyCar(PLAYER_PED) and config.data.perevorot.status and isKeyCanBePressed() and var_0_17 then + if isKeysDown(config.data.perevorot.key_one) then + addToCarRotationVelocity(storeCarCharIsInNoSave(PLAYER_PED), 0, -tonumber(config.data.perevorot.speed / 100), 0) + elseif isKeysDown(config.data.perevorot.key_two) then + addToCarRotationVelocity(storeCarCharIsInNoSave(PLAYER_PED), 0, tonumber(config.data.perevorot.speed / 100), 0) + end + end + end +end + +local var_0_67 = var_0_9.new.bool(config.data.doublejump.status) +local var_0_68 = var_0_12.int(config.data.doublejump.int) +local var_0_69 = { + "Shift", + "Space" +} +local var_0_70 = var_0_9.new["const char*"][#var_0_69](var_0_69) + +local function var_0_71() + var_0_9.ToggleButtonText("DoubleJump", var_0_67, function() + config.data.doublejump.status = not config.data.doublejump.status + + config_save(config.data) + end) + + if doublejump_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.doublejump.key = doublejump_hotkey:GetHotKey() + + config_save(config.data) + end + + if var_0_9.Combo("Клавиша прыжка", var_0_68, var_0_70, #var_0_69) then + config.data.doublejump.int = var_0_68[0] + + if config.data.doublejump.int == 0 then + config.data.doublejump.jump_key = 16 + elseif config.data.doublejump.int == 1 then + config.data.doublejump.jump_key = 32 + end + + config_save(config.data) + end +end + +function doublejumpFunc() + while true do + wait(0) + + if isKeysPressed(config.data.doublejump.key) and config.data.doublejump.status and isKeyCanBePressed() then + taskPlayAnimNonInterruptable(PLAYER_PED, "colt45_reload", "COLT45", 4.0999999046326, false, false, true, true, 1) + + for iter_69_0 = 1, 10 do + if iter_69_0 == 3 then + taskPlayAnimNonInterruptable(PLAYER_PED, "colt45_reload", "COLT45", 4.0999999046326, false, false, true, true, 1) + end + + setVirtualKeyDown(config.data.doublejump.jump_key, true) + wait(2) + setVirtualKeyDown(config.data.doublejump.jump_key, false) + wait(12) + end + end + end +end + +local var_0_72 = var_0_9.new.bool(config.data.autoadr.status) +local var_0_73 = false + +local function var_0_74() + var_0_9.ToggleButtonText("Автоиспользование адреналина", var_0_72, function() + config.data.autoadr.status = not config.data.autoadr.status + + config_save(config.data) + end) + + if var_0_9.Button("Адреналин при переломах " .. (config.data.autoadr.perelom and "[ON]" or "[OFF]") .. "##multi.menu", var_0_9.ImVec2(390, 20)) then + config.data.autoadr.perelom = not config.data.autoadr.perelom + + config_save(config.data) + end + + if var_0_9.Button("Адреналин при ломках " .. (config.data.autoadr.lomka and "[ON]" or "[OFF]") .. "##multi.menus", var_0_9.ImVec2(390, 20)) then + config.data.autoadr.lomka = not config.data.autoadr.lomka + + config_save(config.data) + end + + if var_0_9.Button("Сбив " .. (config.data.autoadr.sbiv and "[ON]" or "[OFF]") .. "##multi.menu", var_0_9.ImVec2(390, 20)) then + config.data.autoadr.sbiv = not config.data.autoadr.sbiv + + config_save(config.data) + end +end + +function autoadrFunc() + while true do + wait(0) + + if var_0_73 and config.data.autoadr.status then + sampSendChat("/adr") + + if config.data.autoadr.sbiv and not isCharInAnyCar(PLAYER_PED) then + wait(100) + sampSetSpecialAction(7) + wait(50) + sampSetSpecialAction(0) + end + + var_0_73 = false + end + end +end + +local var_0_75 = var_0_9.new.bool(config.data.autoclist_after_spawn.status) +local var_0_76 = var_0_9.new.int(config.data.autoclist_after_spawn.clist) +local var_0_77 = 0 + +local function var_0_78() + var_0_9.ToggleButtonText("Автоклист после спавна", var_0_75, function() + config.data.autoclist_after_spawn.status = not config.data.autoclist_after_spawn.status + + config_save(config.data) + end) + var_0_9.SetNextItemWidth(150) + + if var_0_9.SliderInt("clist", var_0_76, 0, 33) then + config.data.autoclist_after_spawn.clist = var_0_76[0] + + config_save(config.data) + end +end + +function autoclistspawnFunc() + while true do + wait(0) + + if sampIsLocalPlayerSpawned() and config.data.autoclist_after_spawn.status and var_0_77 ~= 0 and os.time() - var_0_77 > 0 then + repeat + wait(0) + until os.clock() * 1000 - var_0_20 > 650 + + sampSendChat(string.format("/clist %s", config.data.autoclist_after_spawn.clist)) + + var_0_77 = 0 + end + end +end + +local var_0_79 = var_0_9.new.bool(config.data.autoclist_after_capt.status) +local var_0_80 = var_0_9.new.int(config.data.autoclist_after_capt.clist) +local var_0_81 = false + +local function var_0_82() + var_0_9.ToggleButtonText("Автоклист после капта", var_0_79, function() + config.data.autoclist_after_capt.status = not config.data.autoclist_after_capt.status + + config_save(config.data) + end) + var_0_9.SetNextItemWidth(150) + + if var_0_9.SliderInt("clist", var_0_80, 0, 33) then + config.data.autoclist_after_capt.clist = var_0_80[0] + + config_save(config.data) + end +end + +function autoclistcaptFunc() + while true do + wait(0) + + if var_0_81 and config.data.autoclist_after_capt.status then + repeat + wait(0) + until os.clock() * 1000 - var_0_20 > 650 + + sampSendChat(string.format("/clist %s", config.data.autoclist_after_capt.clist)) + + var_0_81 = false + end + end +end + +local var_0_83 = var_0_9.new.bool(config.data.camhack.status) + +local function var_0_84() + var_0_9.ToggleButtonText("Camhack", var_0_83, function() + config.data.camhack.status = var_0_83[0] + + config_save(config.data) + end) + var_0_9.Text("Активация Camhack") + + if camhack_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.camhack.key = camhack_hotkey:GetHotKey() + + config_save(config.data) + end + + var_0_9.Spacing() + var_0_9.Spacing() + + if var_0_9.Button("Показывать текст над головой на любом расстоянии " .. (config.data.camhack.bubble and "[ON]" or "[OFF]") .. "##multi.menu_camhack", var_0_9.ImVec2(390, 20)) then + config.data.camhack.bubble = not config.data.camhack.bubble + + config_save(config.data) + end + + if var_0_9.Button("Обходить варнинги " .. (config.data.camhack.antiwarning and "[ON]" or "[OFF]") .. "##multi.menu_camhack", var_0_9.ImVec2(390, 20)) then + config.data.camhack.antiwarning = not config.data.camhack.antiwarning + + config_save(config.data) + end + + var_0_9.Spacing() + var_0_9.Text("Описание:") + var_0_9.TextColoredRGB("{FFFFFF}Представляет собой обыкновенный камхак, но с обходом платных \n{FFFFFF}варнингов. После активации вы сможете свободно управлять\n{FFFFFF}камерой через {00ccff}WASD{ffffff}.\n{FFFFFF}Камеру можно замедлять на {00ccff}-{ffffff} и ускорять на {00ccff}+{ffffff}\n{00ccff}F10{ffffff} включает/выключает худ.\n\n{FFFFFF}Если камера залагает, включите и выключите ещё раз.\n\nАвторы: sanek a.k.a Maks_Fender, edited by ANIKI, qrlk обход\n{FFFFFF}варнингов") +end + +ch = {} +ch_flymode = 0 +ch_speed = 1 +ch_radarHud = 0 +ch_keyPressed = 0 +ch_posX, ch_posY, ch_posZ = 0, 0, 0 +ch_angY, ch_angZ = 0, 0 +ch_radZ, ch_radY = 0, 0 +ch_sinZ, ch_cosZ = 0, 0 +ch_sinY, ch_cosY = 0, 0 +ch_poiX, ch_poiY, ch_poiZ = 0, 0, 0 +ch_curZ, ch_curY, ch_angPlZ = 0, 0, 0 +ch_posPlX, ch_posPlY, ch_posPlZ = 0, 0, 0 + +function camhackFunc() + while true do + wait(0) + + if isKeysPressed(config.data.camhack.key) and config.data.camhack.status and isKeyCanBePressed() and ch_flymode == 0 then + ch_hide_interface(false) + + ch_posX, ch_posY, ch_posZ = getCharCoordinates(playerPed) + ch_angZ = getCharHeading(playerPed) + ch_angZ = ch_angZ * -1 + + setFixedCameraPosition(ch_posX, ch_posY, ch_posZ, 0, 0, 0) + + ch_angY = 0 + + lockPlayerControl(true) + + ch_flymode = 1 + + repeat + wait(0) + until not isKeysDown(config.data.camhack.key) + end + + if config.data.camhack.status and ch_flymode == 1 and not sampIsChatInputActive() and not isSampfuncsConsoleActive() then + offMouX, offMouY = getPcMouseMovement() + offMouX = offMouX / 4 + offMouY = offMouY / 4 + ch_angZ = ch_angZ + offMouX + ch_angY = ch_angY + offMouY + + if ch_angZ > 360 then + ch_angZ = ch_angZ - 360 + end + + if ch_angZ < 0 then + ch_angZ = ch_angZ + 360 + end + + if ch_angY > 89 then + ch_angY = 89 + end + + if ch_angY < -89 then + ch_angY = -89 + end + + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 1 + ch_cosZ = ch_cosZ * 1 + ch_sinY = ch_sinY * 1 + ch_poiX = ch_posX + ch_poiY = ch_posY + ch_poiZ = ch_posZ + ch_poiX = ch_poiX + ch_sinZ + ch_poiY = ch_poiY + ch_cosZ + ch_poiZ = ch_poiZ + ch_sinY + + pointCameraAtPoint(ch_poiX, ch_poiY, ch_poiZ, 2) + + ch_curZ = ch_angZ + 180 + ch_curY = ch_angY * -1 + ch_radZ = math.rad(ch_curZ) + ch_radY = math.rad(ch_curY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 10 + ch_cosZ = ch_cosZ * 10 + ch_sinY = ch_sinY * 10 + ch_posPlX = ch_posX + ch_sinZ + ch_posPlY = ch_posY + ch_cosZ + ch_posPlZ = ch_posZ + ch_sinY + ch_angPlZ = ch_angZ * -1 + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 1 + ch_cosZ = ch_cosZ * 1 + ch_sinY = ch_sinY * 1 + ch_poiX = ch_posX + ch_poiY = ch_posY + ch_poiZ = ch_posZ + ch_poiX = ch_poiX + ch_sinZ + ch_poiY = ch_poiY + ch_cosZ + ch_poiZ = ch_poiZ + ch_sinY + + pointCameraAtPoint(ch_poiX, ch_poiY, ch_poiZ, 2) + + if isKeyDown(VK_W) then + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * ch_speed + ch_cosZ = ch_cosZ * ch_speed + ch_sinY = ch_sinY * ch_speed + ch_posX = ch_posX + ch_sinZ + ch_posY = ch_posY + ch_cosZ + ch_posZ = ch_posZ + ch_sinY + + setFixedCameraPosition(ch_posX, ch_posY, ch_posZ, 0, 0, 0) + end + + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 1 + ch_cosZ = ch_cosZ * 1 + ch_sinY = ch_sinY * 1 + ch_poiX = ch_posX + ch_poiY = ch_posY + ch_poiZ = ch_posZ + ch_poiX = ch_poiX + ch_sinZ + ch_poiY = ch_poiY + ch_cosZ + ch_poiZ = ch_poiZ + ch_sinY + + pointCameraAtPoint(ch_poiX, ch_poiY, ch_poiZ, 2) + + if isKeyDown(VK_S) then + ch_curZ = ch_angZ + 180 + ch_curY = ch_angY * -1 + ch_radZ = math.rad(ch_curZ) + ch_radY = math.rad(ch_curY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * ch_speed + ch_cosZ = ch_cosZ * ch_speed + ch_sinY = ch_sinY * ch_speed + ch_posX = ch_posX + ch_sinZ + ch_posY = ch_posY + ch_cosZ + ch_posZ = ch_posZ + ch_sinY + + setFixedCameraPosition(ch_posX, ch_posY, ch_posZ, 0, 0, 0) + end + + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 1 + ch_cosZ = ch_cosZ * 1 + ch_sinY = ch_sinY * 1 + ch_poiX = ch_posX + ch_poiY = ch_posY + ch_poiZ = ch_posZ + ch_poiX = ch_poiX + ch_sinZ + ch_poiY = ch_poiY + ch_cosZ + ch_poiZ = ch_poiZ + ch_sinY + + pointCameraAtPoint(ch_poiX, ch_poiY, ch_poiZ, 2) + + if isKeyDown(VK_A) then + ch_curZ = ch_angZ - 90 + ch_radZ = math.rad(ch_curZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinZ = ch_sinZ * ch_speed + ch_cosZ = ch_cosZ * ch_speed + ch_posX = ch_posX + ch_sinZ + ch_posY = ch_posY + ch_cosZ + + setFixedCameraPosition(ch_posX, ch_posY, ch_posZ, 0, 0, 0) + end + + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 1 + ch_cosZ = ch_cosZ * 1 + ch_sinY = ch_sinY * 1 + ch_poiX = ch_posX + ch_poiY = ch_posY + ch_poiZ = ch_posZ + ch_poiX = ch_poiX + ch_sinZ + ch_poiY = ch_poiY + ch_cosZ + ch_poiZ = ch_poiZ + ch_sinY + + pointCameraAtPoint(ch_poiX, ch_poiY, ch_poiZ, 2) + + if isKeyDown(VK_D) then + ch_curZ = ch_angZ + 90 + ch_radZ = math.rad(ch_curZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinZ = ch_sinZ * ch_speed + ch_cosZ = ch_cosZ * ch_speed + ch_posX = ch_posX + ch_sinZ + ch_posY = ch_posY + ch_cosZ + + setFixedCameraPosition(ch_posX, ch_posY, ch_posZ, 0, 0, 0) + end + + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 1 + ch_cosZ = ch_cosZ * 1 + ch_sinY = ch_sinY * 1 + ch_poiX = ch_posX + ch_poiY = ch_posY + ch_poiZ = ch_posZ + ch_poiX = ch_poiX + ch_sinZ + ch_poiY = ch_poiY + ch_cosZ + ch_poiZ = ch_poiZ + ch_sinY + + pointCameraAtPoint(ch_poiX, ch_poiY, ch_poiZ, 2) + + if isKeyDown(VK_SPACE) then + ch_posZ = ch_posZ + ch_speed + + setFixedCameraPosition(ch_posX, ch_posY, ch_posZ, 0, 0, 0) + end + + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 1 + ch_cosZ = ch_cosZ * 1 + ch_sinY = ch_sinY * 1 + ch_poiX = ch_posX + ch_poiY = ch_posY + ch_poiZ = ch_posZ + ch_poiX = ch_poiX + ch_sinZ + ch_poiY = ch_poiY + ch_cosZ + ch_poiZ = ch_poiZ + ch_sinY + + pointCameraAtPoint(ch_poiX, ch_poiY, ch_poiZ, 2) + + if isKeyDown(VK_SHIFT) then + ch_posZ = ch_posZ - ch_speed + + setFixedCameraPosition(ch_posX, ch_posY, ch_posZ, 0, 0, 0) + end + + ch_radZ = math.rad(ch_angZ) + ch_radY = math.rad(ch_angY) + ch_sinZ = math.sin(ch_radZ) + ch_cosZ = math.cos(ch_radZ) + ch_sinY = math.sin(ch_radY) + ch_cosY = math.cos(ch_radY) + ch_sinZ = ch_sinZ * ch_cosY + ch_cosZ = ch_cosZ * ch_cosY + ch_sinZ = ch_sinZ * 1 + ch_cosZ = ch_cosZ * 1 + ch_sinY = ch_sinY * 1 + ch_poiX = ch_posX + ch_poiY = ch_posY + ch_poiZ = ch_posZ + ch_poiX = ch_poiX + ch_sinZ + ch_poiY = ch_poiY + ch_cosZ + ch_poiZ = ch_poiZ + ch_sinY + + pointCameraAtPoint(ch_poiX, ch_poiY, ch_poiZ, 2) + + if ch_keyPressed == 0 and isKeyDown(VK_F10) then + ch_keyPressed = 1 + + if ch_radarHud == 0 then + ch_hide_interface(true) + + ch_radarHud = 1 + else + ch_hide_interface(false) + + ch_radarHud = 0 + end + end + + if wasKeyReleased(VK_F10) and ch_keyPressed == 1 then + ch_keyPressed = 0 + end + + if isKeyDown(187) then + ch_speed = ch_speed + 0.01 + + printStringNow(ch_speed, 1000) + end + + if isKeyDown(189) then + ch_speed = ch_speed - 0.01 + + if ch_speed < 0.01 then + ch_speed = 0.01 + end + + printStringNow(ch_speed, 1000) + end + + if isKeysPressed(config.data.camhack.key) then + ch_hide_interface(true) + + ch_radarHud = 0 + ch_angPlZ = ch_angZ * -1 + + lockPlayerControl(false) + restoreCameraJumpcut() + setCameraBehindPlayer() + + ch_flymode = 0 + end + end + end +end + +function ch_hide_interface(arg_82_0) + if not arg_82_0 then + var_0_8.write(sampGetBase() + 463887, 1, 1, true) + sampSetChatDisplayMode(0) + var_0_11.fill(var_0_11.cast(var_0_11.typeof("void*"), 5831763), 5, 144) + displayHud(false) + var_0_8.setint8(12216172, 2) + else + var_0_8.write(sampGetBase() + 463887, 0, 1, true) + sampSetChatDisplayMode(2) + var_0_11.copy(var_0_11.cast(var_0_11.typeof("void*"), 5831763), var_0_11.cast(var_0_11.typeof("void*"), tonumber(var_0_11.cast("intptr_t", var_0_11.cast("const char*", "\xE8ئ\xFF\xFF")))), 5) + displayHud(true) + var_0_8.setint8(12216172, 0) + end +end + +local var_0_85 = var_0_9.new.bool(config.data.autohealme.status) + +healme = {} +healme.start = false +healme.wait = 0 +healme.old = -1 + +local function var_0_86() + var_0_9.ToggleButtonText("Автоиспользование аптечек", var_0_85, function() + config.data.autohealme.status = not config.data.autohealme.status + + config_save(config.data) + end) +end + +function autohealmeFunc() + while true do + wait(0) + + if healme.start and os.time() - healme.wait >= 3 then + if getCharHealth(playerPed) < 100 then + if os.clock() * 1000 - var_0_20 > 850 then + var_0_20 = os.clock() * 1000 + + if healme.old ~= -1 and getCharHealth(playerPed) == healme.old then + healme.start = false + healme.old = -1 + else + healme.old = getCharHealth(playerPed) + + sampSendChat("/healme") + end + end + else + healme.start = false + end + end + end +end + +sbinder = {} +sbinder.select_id = -1 +sbinder.input_text = var_0_9.new.char[1024]("") +kosyha = {} +kosyha.bind = { + "/do Front Side: [Fullpatch Member] [Ваша Дорожная] [PFFP]", + "wait 650", + "/do Wing Side: [Guess Who`s Back] [1618]", + "wait 650", + "/do Back Side: [BIG MARA SALVATRUCHA] [1`/.-er] [MC] [San-Andreas]" +} +binder = {} +binder_handle = {} + +function binder_register() + function read_array(arg_87_0) + for iter_87_0, iter_87_1 in pairs(arg_87_0) do + if type(iter_87_1) == "table" then + if iter_87_1.key ~= nil then + local function var_87_0() + return + end + + local var_87_1 = false + + if iter_87_1.sendtext ~= nil then + var_87_1 = iter_87_1.onekey + + function var_87_0() + function binder.sender() + if not sampIsChatInputActive() then + for iter_90_0, iter_90_1 in pairs(iter_87_1.sendtext) do + wait(0) + + if iter_90_1:find("wait %d+") then + wait(tonumber(iter_90_1:match("wait (%d+)"))) + else + sampSendChat(binder_gsub(iter_90_1)) + end + end + + repeat + wait(0) + until not isKeysDown(iter_87_1.key) + end + end + end + end + + binder_handle[tostring(iter_87_0)] = var_0_2.RegisterHotKey(tostring(iter_87_0), var_87_1, iter_87_1.key, var_87_0) + end + + read_array(iter_87_1) + end + end + end + + read_array(config.data.binder) +end + +function binder_loop() + while true do + wait(0) + + if binder.sender ~= nil then + binder.sender() + + binder.sender = nil + end + end +end + +function binder_unregister() + for iter_92_0, iter_92_1 in pairs(binder_handle) do + var_0_2.RemoveHotKey(iter_92_0) + end + + binder_handle = {} +end + +binder_replace = { + ["{target_rp_name}"] = "nil", + ["{target_id}"] = "0", + ["{id_out_sms}"] = "0", + ["{target_name}"] = "nil", + ["{id_in_sms}"] = "0" +} + +function binder_gsub(arg_93_0) + for iter_93_0, iter_93_1 in pairs(binder_replace) do + if arg_93_0:find(iter_93_0) then + arg_93_0 = arg_93_0:gsub(iter_93_0, iter_93_1) + end + end + + return arg_93_0 +end + +function binder_loop_target() + while true do + wait(0) + + local var_94_0, var_94_1 = getCharPlayerIsTargeting(PLAYER_HANDLE) + + if var_94_0 then + local var_94_2, var_94_3 = sampGetPlayerIdByCharHandle(var_94_1) + + if var_94_2 then + local var_94_4 = sampGetPlayerNickname(var_94_3) + + binder_replace["{target_id}"] = var_94_3 + binder_replace["{target_rp_name}"] = var_94_4:gsub("_", " ") + binder_replace["{target_name}"] = var_94_4 + end + end + end +end + +local function var_0_87() + if sbinder.select_id == -1 then + if var_0_9.Button("Создать новый бинд ##new_binder", var_0_9.ImVec2(390, 25)) then + config.data.binder[#config.data.binder + 1] = { + onekey = false, + enter = true, + sendtext = {}, + key = {} + } + + config_save(config.data) + binder_unregister() + binder_register() + end + + if var_0_9.Button("Создать общий бинд косухи ##new_binder", var_0_9.ImVec2(390, 25)) then + config.data.binder[#config.data.binder + 1] = { + onekey = false, + enter = true, + sendtext = kosyha.bind, + key = {} + } + + config_save(config.data) + binder_unregister() + binder_register() + end + + for iter_95_0 = 1, #config.data.binder do + if var_0_9.Button(var_0_4.PEN_TO_SQUARE .. "##binder_edit" .. iter_95_0, var_0_9.ImVec2(25, 25)) then + local var_95_0 = "" + + for iter_95_1 = 1, #config.data.binder[iter_95_0].sendtext do + var_95_0 = var_95_0 .. config.data.binder[iter_95_0].sendtext[iter_95_1] .. "\n" + end + + var_0_9.StrCopy(sbinder.input_text, var_95_0) + + sbinder.select_id = iter_95_0 + + break + end + + var_0_9.Question("Редактировать") + var_0_9.SameLine() + + if binder_handle[tostring(iter_95_0)]:ShowHotKey(var_0_9.ImVec2(248, 25)) then + config.data.binder[iter_95_0].key = binder_handle[tostring(iter_95_0)]:GetHotKey() + + config_save(config.data) + end + + var_0_9.Question("Сменить активацию") + var_0_9.SameLine() + + local var_95_1 = "" + + for iter_95_2, iter_95_3 in pairs(config.data.binder[iter_95_0].sendtext) do + var_95_1 = var_95_1 .. iter_95_3 .. "\n" + end + + var_0_9.Button(var_0_4.NOTE_STICKY .. "##quest" .. iter_95_0, var_0_9.ImVec2(25, 25)) + var_0_9.Question(var_95_1) + var_0_9.SameLine() + + if var_0_9.Button((config.data.binder[iter_95_0].onekey and var_0_4.DICE_ONE or var_0_4.DICE_TWO) .. "##question" .. iter_95_0, var_0_9.ImVec2(25, 25)) then + config.data.binder[iter_95_0].key = {} + config.data.binder[iter_95_0].onekey = not config.data.binder[iter_95_0].onekey + + config_save(config.data) + binder_unregister() + binder_register() + + break + end + + var_0_9.Question(config.data.binder[iter_95_0].onekey and "Используется 1 клавиша активации" or "Используется 2 клавиши активации") + var_0_9.SameLine() + + if var_0_9.Button(var_0_4.TRASH .. "##trash_binder" .. iter_95_0, var_0_9.ImVec2(25, 25)) then + table.remove(config.data.binder, iter_95_0) + config_save(config.data) + + sbinder.select_id = -1 + + binder_unregister() + binder_register() + + break + end + + var_0_9.Question("Удалить") + end + else + var_0_9.InputTextMultiline("##InputTextMultiline_binder", sbinder.input_text, 1024, var_0_9.ImVec2(-1, 150)) + + if var_0_9.Button("Сохранить##save_edit_binder", var_0_9.ImVec2(125, 25)) then + local var_95_2 = split(str(sbinder.input_text), "\n") + + config.data.binder[sbinder.select_id].sendtext = var_95_2 + + config_save(config.data) + + sbinder.select_id = -1 + end + + if var_0_9.Button("Назад##cancel_edit_binder", var_0_9.ImVec2(125, 25)) then + sbinder.select_id = -1 + end + + var_0_9.Text("Поддерживает замены в тексте:\n{target_id} - Заменяет на ID человека по таргету\n{target_rp_name} - Заменяет на никнейм игрока без нижнего\n- подчеркивания по таргету\n{target_name} - Заменяет на никнейм игрока по таргету\n{id_in_sms} - Заменяет на ID человека который прислал Вам СМС\n{id_out_sms} - Заменяет на ID игрока которому вы отправили СМС\n\nwait 1000 - Ставит задержки между строк (1000 - 1 секунда)") + end +end + +local var_0_88 = var_0_9.new.bool(config.data.sbiv.status) + +local function var_0_89() + var_0_9.ToggleButtonText("Сбив анимации", var_0_88, function() + config.data.sbiv.status = not config.data.sbiv.status + + config_save(config.data) + end) + var_0_9.Text("Активация сбива") + + if sbiv_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.sbiv.key = sbiv_hotkey:GetHotKey() + + config_save(config.data) + end +end + +function sbivFunc() + while true do + wait(0) + + if isKeysPressed(config.data.sbiv.key) and config.data.sbiv.status and isKeyCanBePressed() and isCharOnFoot(PLAYER_PED) then + sampSetSpecialAction(7) + elseif wasReleased(config.data.sbiv.key) and config.data.sbiv.status then + sampSetSpecialAction(0) + end + end +end + +local var_0_90 = var_0_9.new.bool(config.data.vspiwka.status) +local var_0_91 = false + +local function var_0_92() + var_0_9.ToggleButtonText("Вспышка", var_0_90, function() + config.data.vspiwka.status = not config.data.vspiwka.status + + config_save(config.data) + end) + var_0_9.Text("Активация") + + if vspiwka_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.vspiwka.key = vspiwka_hotkey:GetHotKey() + + config_save(config.data) + end +end + +function vspiwkaFunc() + while true do + wait(0) + + if isKeysPressed(config.data.vspiwka.key) and config.data.vspiwka.status and isKeyCanBePressed() and isCharOnFoot(PLAYER_PED) and var_0_17 then + if not var_0_91 then + taskPlayAnim(PLAYER_PED, "FLOOR_HIT", "PED", 4, false, false, false, true, -1) + + var_0_91 = true + else + sampSetSpecialAction(7) + wait(2) + sampSetSpecialAction(0) + + var_0_91 = false + end + + wait(200) + end + end +end + +local var_0_93 = var_0_9.new.bool(config.data.grib_heal.status) + +local function var_0_94() + var_0_9.ToggleButtonText("Быстрый хил грибами", var_0_93, function() + config.data.grib_heal.status = not config.data.grib_heal.status + + config_save(config.data) + end) + var_0_9.Text("Активация") + + if grib_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.grib_heal.key = grib_hotkey:GetHotKey() + + config_save(config.data) + end +end + +function gribhealFunc() + while true do + wait(0) + + if isKeysPressed(config.data.grib_heal.key) and config.data.grib_heal.status and isKeyCanBePressed() and isCharOnFoot(PLAYER_PED) and var_0_17 then + repeat + wait(0) + until os.clock() * 1000 - var_0_20 > 650 + + sampSendChat("/grib eat") + wait(600) + sampSendChat("/grib heal") + wait(4250) + end + end +end + +local var_0_95 = var_0_9.new.bool(config.data.rkt.status) + +local function var_0_96() + var_0_9.ToggleButtonText("Быстрый RKT + сбив", var_0_95, function() + config.data.rkt.status = not config.data.rkt.status + + config_save(config.data) + end) + var_0_9.Text("Активация") + + if rkt_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.rkt.key = rkt_hotkey:GetHotKey() + + config_save(config.data) + end +end + +function rktFunc() + while true do + wait(0) + + if isKeysPressed(config.data.rkt.key) and config.data.rkt.status and isKeyCanBePressed() and isCharOnFoot(PLAYER_PED) and var_0_17 then + repeat + wait(0) + until os.clock() * 1000 - var_0_20 > 650 + + sampSendChat("/rkt") + wait(200) + sampSetSpecialAction(7) + wait(2) + sampSetSpecialAction(0) + end + end +end + +local var_0_97 = var_0_9.new.bool(config.data.flip.status) + +local function var_0_98() + var_0_9.ToggleButtonText("Быстрый FLIP + сбив", var_0_97, function() + config.data.flip.status = not config.data.flip.status + + config_save(config.data) + end) + var_0_9.Text("Активация") + + if flip_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.flip.key = flip_hotkey:GetHotKey() + + config_save(config.data) + end +end + +function flipFunc() + while true do + wait(0) + + if isKeysPressed(config.data.flip.key) and config.data.flip.status and isKeyCanBePressed() and var_0_17 then + repeat + wait(0) + until os.clock() * 1000 - var_0_20 > 650 + + sampSendChat("/flip") + + if isCharOnFoot(PLAYER_PED) then + wait(110) + sampSetSpecialAction(7) + wait(2) + sampSetSpecialAction(0) + end + end + end +end + +local var_0_99 = var_0_9.new.bool(config.data.delete_cue.status) +local var_0_100 = 1 + +function deletecueFunc() + while true do + wait(0) + + if sampIsLocalPlayerSpawned() and config.data.delete_cue.status and var_0_100 ~= 0 and os.time() - var_0_100 > 0 then + repeat + wait(0) + until os.clock() * 1000 - var_0_20 > 650 + + if hasCharGotWeapon(PLAYER_PED, 7) then + removeWeaponFromChar(PLAYER_PED, 7) + end + + var_0_100 = 0 + end + end +end + +local var_0_101 = {} +local var_0_102 = false +local var_0_103 = renderCreateFont(config.data.squad.font, config.data.squad.size, FCR_BORDER + FCR_BOLD) +local var_0_104 = var_0_9.new.bool(config.data.squad.status) +local var_0_105 = var_0_9.new.char[256](config.data.squad.text) +local var_0_106 = var_0_9.new.char[256](var_0_14(config.data.squad.size)) +local var_0_107 = var_0_9.new.char[256](var_0_14(config.data.squad.font)) +local var_0_108 = var_0_9.new.char[256](config.data.squad.online_text) + +local function var_0_109() + var_0_9.ToggleButtonText("Кастомный сквад", var_0_104, function() + config.data.squad.status = not config.data.squad.status + + config_save(config.data) + end) + + if var_0_9.Button("Сменить позицию сквада", var_0_9.ImVec2(390, 25)) then + reserve_x, reserve_y = config.data.squad.x, config.data.squad.y + + showCursor(true, true) + + squad_pos = true + end + + var_0_9.InputText("Заголовок", var_0_105, sizeof(var_0_105)) + var_0_9.InputText("Размер", var_0_106, sizeof(var_0_106)) + var_0_9.InputText("Шрифт", var_0_107, sizeof(var_0_107)) + var_0_9.InputText("Онлайн", var_0_108, sizeof(var_0_108)) + + if var_0_9.Button("Сбросить настройки##m", var_0_9.ImVec2(390, 25)) then + var_0_105 = var_0_9.new.char[256]("Состав отряда:") + var_0_106 = var_0_9.new.char[256](var_0_14(10)) + var_0_107 = var_0_9.new.char[256](var_0_14("Trebuc")) + var_0_108 = var_0_9.new.char[256]("online: !n") + config.data.squad.x = 5 + config.data.squad.y = var_0_22 * 0.358333333 + config.data.squad.font = "Trebuc" + config.data.squad.text = "Состав отряда:" + config.data.squad.size = 10 + config.data.squad.status = true + config.data.squad.online_text = "online: !n" + squads_font = renderCreateFont(config.data.squad.font, config.data.squad.size, FCR_BORDER + FCR_BOLD) + + config_save(config.data) + end + + if var_0_9.Button("Сохранить##multi.squad.save", var_0_9.ImVec2(390, 25)) and str(var_0_106):find("^%d+$") then + config.data.squad.text = str(var_0_105) + config.data.squad.size = tonumber(str(var_0_106)) + config.data.squad.font = str(var_0_107) + config.data.squad.online_text = str(var_0_108) + + config_save(config.data) + + squads_font = renderCreateFont(config.data.squad.font, config.data.squad.size, config.data.squad.style) + end +end + +function squadFunc() + while true do + wait(0) + + if sampTextdrawIsExists(config.data.squad.squadid) or sampTextdrawIsExists(2065) or sampTextdrawIsExists(2067) or sampTextdrawIsExists(2051) then + if sampTextdrawIsExists(config.data.squad.squadid) and sampTextdrawGetString(config.data.squad.squadid):find("SQUAD") then + -- block empty + elseif sampTextdrawIsExists(2065) and sampTextdrawGetString(2065):find("SQUAD") then + config.data.squad.squadid = 2065 + + config_save(config.data) + elseif sampTextdrawIsExists(2067) and sampTextdrawGetString(2067):find("SQUAD") then + config.data.squad.squadid = 2067 + + config_save(config.data) + elseif sampTextdrawIsExists(2051) and sampTextdrawGetString(2051):find("SQUAD") then + config.data.squad.squadid = 2051 + + config_save(config.data) + end + + if config.data.squad.status and sampIsChatVisible() and not sampIsScoreboardOpen() and not isKeyDown(121) and not isKeyDown(116) then + renderFontDrawText(var_0_103, config.data.squad.text, config.data.squad.x, config.data.squad.y, 4294967295) + + for iter_114_0, iter_114_1 in ipairs(var_0_101) do + local var_114_0 = tonumber(var_0_101[iter_114_0][1]) + local var_114_1 = var_0_101[iter_114_0][2] + + if var_114_0 ~= nil then + local var_114_2 = 0 + local var_114_3, var_114_4 = sampGetCharHandleBySampPlayerId(var_114_0) + local var_114_5 = ("0xFF%s"):format(("%06X"):format(bit.band(sampGetPlayerColor(var_114_0), 16777215))) + local var_114_6 = "" .. var_114_1 .. "[" .. var_114_0 .. "]" + + renderFontDrawText(var_0_103, var_114_6, config.data.squad.x, config.data.squad.y + (config.data.squad.size + 6) * iter_114_0, var_114_5) + end + end + + renderFontDrawText(var_0_103, config.data.squad.online_text:gsub("!n", #var_0_101), config.data.squad.x, config.data.squad.y + (config.data.squad.size + 6) * (#var_0_101 + 1), 4294967295) + end + end + end +end + +function squadFunc2() + while true do + wait(0) + + local var_115_0 = sampGetDialogCaption() + + if var_115_0 == "[samp-rp] new squad list by ilyad." then + local var_115_1, var_115_2, var_115_3, var_115_4 = sampHasDialogRespond(0) + + if var_115_1 then + sampShowDialog(1, "[samp-rp] new squad list by 1lyad.", "{FFFFFF}DA POJALUYSTA DRUJIWE!) LIKE EBANI NA POST NA BH\nA TO SKACHAL, A LIKE NE POSTAVIL((( KTO TAK DELAET?", "NU OK)", "", 0) + end + elseif var_115_0 == "Сфотографировать рабочих" or var_115_0 == "Сфотографировать гос. служащих" then + local var_115_5, var_115_6, var_115_7, var_115_8 = sampHasDialogRespond(0) + + if var_115_6 == 0 then + show_dialog(0) + end + end + + if config.data.squad.status and not isGamePaused() then + if squad_pos then + local var_115_9, var_115_10 = getCursorPos() + + config.data.squad.x, config.data.squad.y = var_115_9, var_115_10 + + if isKeyDown(1) then + showCursor(false, false) + + squad_pos = false + + config_save(config.data) + elseif isKeyDown(2) then + showCursor(false, false) + + squad_pos = false + config.data.squad.x, config.data.squad.y = reserve_x, reserve_y + end + end + + if sampTextdrawIsExists(config.data.squad.squadid) then + local var_115_11, var_115_12 = sampTextdrawGetPos(config.data.squad.squadid) + + if var_115_11 ~= 9999 and var_115_12 ~= 9999 then + sampTextdrawSetPos(config.data.squad.squadid, 9999, 9999) + end + + local var_115_13 = sampTextdrawGetString(config.data.squad.squadid) + + updatesquad_members(var_115_13) + end + end + end +end + +function sampGetPlayerIdByNickname(arg_116_0) + local var_116_0, var_116_1 = sampGetPlayerIdByCharHandle(playerPed) + + if tostring(arg_116_0) == sampGetPlayerNickname(var_116_1) then + return var_116_1 + end + + for iter_116_0 = 0, 1000 do + if sampIsPlayerConnected(iter_116_0) and sampGetPlayerNickname(iter_116_0) == tostring(arg_116_0) then + return iter_116_0 + end + end +end + +function join_argb(arg_117_0, arg_117_1, arg_117_2, arg_117_3) + local var_117_0 = arg_117_3 + local var_117_1 = bit.bor(var_117_0, bit.lshift(arg_117_2, 8)) + local var_117_2 = bit.bor(var_117_1, bit.lshift(arg_117_1, 16)) + + return (bit.bor(var_117_2, bit.lshift(arg_117_0, 24))) +end + +function explode_argb(arg_118_0) + local var_118_0 = bit.band(bit.rshift(arg_118_0, 24), 255) + local var_118_1 = bit.band(bit.rshift(arg_118_0, 16), 255) + local var_118_2 = bit.band(bit.rshift(arg_118_0, 8), 255) + local var_118_3 = bit.band(arg_118_0, 255) + + return var_118_0, var_118_1, var_118_2, var_118_3 +end + +function string.split(arg_119_0, arg_119_1, arg_119_2) + local var_119_0 = {} + local var_119_1 = 1 + local var_119_2 = arg_119_2 ~= false + + repeat + local var_119_3, var_119_4 = string.find(arg_119_0, arg_119_1, var_119_1, var_119_2) + + table.insert(var_119_0, string.sub(arg_119_0, var_119_1, var_119_3 and var_119_3 - 1)) + + var_119_1 = var_119_4 and var_119_4 + 1 + until not var_119_1 + + return var_119_0 +end + +function updatesquad_members(arg_120_0) + local var_120_0 = arg_120_0 + + var_0_101 = {} + + while arg_120_0:match("(%a+_%a+)") do + local var_120_1 = arg_120_0:match("(%a+_%a+)") + + arg_120_0 = string.gsub(arg_120_0, var_120_1, "") + + local var_120_2 = sampGetPlayerIdByNickname(var_120_1) + + table.insert(var_0_101, { + var_120_2, + var_120_1, + 0, + 0 + }) + end +end + +local var_0_110 = var_0_9.new.bool(config.data.remove_fence.status) +local var_0_111 = {} +local var_0_112 = 0 +local var_0_113 = { + 3276, + 3374 +} + +function fenceFunc() + while true do + wait(0) + + if config.data.remove_fence.status and sampIsLocalPlayerSpawned() and not isCharDead(PLAYER_PED) and var_0_17 then + x, y, z = getCharCoordinates(PLAYER_PED) + + if z ~= nil and z > 97 and z < 110 then + for iter_121_0, iter_121_1 in pairs(getAllObjects()) do + local var_121_0 = getObjectModel(iter_121_1) + + for iter_121_2, iter_121_3 in pairs(var_0_113) do + if var_121_0 == iter_121_3 then + deleteObject(iter_121_1) + end + end + end + end + elseif not config.data.remove_fence.status and var_0_112 > 0 then + -- block empty + end + end +end + +local var_0_114 = var_0_9.new.bool(config.data.remove_flashlight.status) +local var_0_115 = { + 1226, + 1298, + 3463, + 1290, + 1290, + 1297, + 1294, + 3460 +} + +function flashlightFunc() + while true do + wait(0) + + if config.data.remove_flashlight.status and var_0_17 then + x, y, z = getCharCoordinates(PLAYER_PED) + + if z ~= nil and z < 900 then + for iter_122_0, iter_122_1 in pairs(getAllObjects()) do + local var_122_0 = getObjectModel(iter_122_1) + + for iter_122_2, iter_122_3 in pairs(var_0_115) do + if var_122_0 == iter_122_3 then + deleteObject(iter_122_1) + end + end + end + end + end + end +end + +struck = {} +struck_flood = 0 + +function struckFunc() + while true do + wait(0) + + if sampIsLocalPlayerSpawned() and config.data.struck.status and struck_flood ~= 0 then + printStringNow("PRESS 'L' TO STOP", 1) + + if isKeyCanBePressed() and wasKeyPressed(var_0_10.VK_L) then + struck_flood = 0 + end + + if os.clock() * 1000 - var_0_20 > config.data.struck.wait then + sampSendChat("/struck") + end + end + end +end + +local var_0_116 = var_0_9.new.bool(config.data.struck.status) + +local function var_0_117() + var_0_9.ToggleButtonText("Автоперегон", var_0_116, function() + config.data.struck.status = not config.data.struck.status + + config_save(config.data) + end) + var_0_9.Spacing() + + if var_0_9.Button("+##plus_struck", var_0_9.ImVec2(20, 20)) then + config.data.struck.wait = config.data.struck.wait + 50 + + config_save(config.data) + end + + var_0_9.SameLine() + + if var_0_9.Button("-##minus_struck", var_0_9.ImVec2(20, 20)) then + config.data.struck.wait = config.data.struck.wait - 50 + + if config.data.struck.wait < 0 then + config.data.struck.wait = 0 + end + + config_save(config.data) + end + + var_0_9.SameLine() + var_0_9.Text("Задержка флудера: " .. config.data.struck.wait) +end + +local var_0_118 = var_0_9.new.bool(config.data.gz.status) +local var_0_119 = {} +local var_0_120 = var_0_9.new.int(config.data.narkotimer.hp) +local var_0_121 = var_0_9.new.int(config.data.gz.font.height) +local var_0_122 = var_0_9.new.int(config.data.gz.font.text_size) +local var_0_123 = var_0_9.ColorConvertU32ToFloat4(config.data.gz.font.color.box) + +var_0_119.box_color = var_0_9.new.float[4](var_0_123.x, var_0_123.y, var_0_123.z, var_0_123.w) + +local var_0_124 = var_0_9.ColorConvertU32ToFloat4(config.data.gz.font.color.text_front) + +var_0_119.text_front = var_0_9.new.float[4](var_0_124.x, var_0_124.y, var_0_124.z, var_0_124.w) + +local var_0_125 = var_0_9.ColorConvertU32ToFloat4(config.data.gz.font.color.text_back) + +var_0_119.text_back = var_0_9.new.float[4](var_0_125.x, var_0_125.y, var_0_125.z, var_0_125.w) +gz = {} +gz.font = renderCreateFont("Segoe UI", config.data.gz.font.text_size, 1) +gz_render = LPH_NO_VIRTUALIZE(function() + local var_126_0 = config.data.gz.font.x + local var_126_1 = config.data.gz.font.y + local var_126_2 = 0 + local var_126_3 = 90 + + for iter_126_0 = 1, 10 do + var_126_2 = var_126_2 + 2 + var_126_3 = var_126_3 + 10 + + local var_126_4 = modifyAlpha(config.data.gz.font.color.box, -var_126_3) + + renderDrawBox(var_126_0 - var_126_2, var_126_1, config.data.gz.font.length, config.data.gz.font.height, argb2abgr(var_126_4)) + end + + local var_126_5 = 0 + local var_126_6 = 90 + + for iter_126_1 = 1, 10 do + var_126_5 = var_126_5 + 2 + var_126_6 = var_126_6 + 10 + + local var_126_7 = modifyAlpha(config.data.gz.font.color.box, -var_126_6) + + renderDrawBox(var_126_0 + var_126_5, var_126_1, config.data.gz.font.length, config.data.gz.font.height, argb2abgr(var_126_7)) + end + + renderDrawBox(var_126_0, var_126_1, config.data.gz.font.length, config.data.gz.font.height, argb2abgr(config.data.gz.font.color.box)) + + if config.data.gz.text_pos == 2 then + kaban = 1 + + if config.data.gz.font.text_size > 15 then + for iter_126_2 = 1, config.data.gz.font.text_size - 15 do + kaban = 1 + 0.1 * iter_126_2 + end + end + + renderFontDrawText(gz.font, "ВЫ В КВАДРАТЕ ", var_126_0 + config.data.gz.font.length / 2 - (kaban == 1 and 64 or kaban > 19 and 70 or 65) * kaban, var_126_1 + config.data.gz.font.height / 2 - 12.5 * kaban, argb2abgr(config.data.gz.font.color.text_back)) + renderFontDrawText(gz.font, "ВЫ В КВАДРАТЕ ", var_126_0 + config.data.gz.font.length / 2 - (kaban == 1 and 64 or kaban > 19 and 70 or 65) * kaban, var_126_1 + config.data.gz.font.height / 2 - 12.5 * kaban, argb2abgr(config.data.gz.font.color.text_front)) + elseif config.data.gz.text_pos == 1 then + kaban = 1 + + if config.data.gz.font.text_size > 15 then + for iter_126_3 = 1, config.data.gz.font.text_size - 15 do + kaban = 1 + 0.1 * iter_126_3 + end + end + + renderFontDrawText(gz.font, "ВЫ В КВАДРАТЕ ", var_126_0, var_126_1 + config.data.gz.font.height / 2 - 12.5 * kaban, argb2abgr(config.data.gz.font.color.text_back)) + renderFontDrawText(gz.font, "ВЫ В КВАДРАТЕ ", var_126_0 + 1, var_126_1 + config.data.gz.font.height / 2 - 12.5 * kaban, argb2abgr(config.data.gz.font.color.text_front)) + elseif config.data.gz.text_pos == 3 then + kaban = 1 + + if config.data.gz.font.text_size > 15 then + for iter_126_4 = 1, config.data.gz.font.text_size - 15 do + kaban = 1 + 0.1 * iter_126_4 + end + end + + renderFontDrawText(gz.font, "ВЫ В КВАДРАТЕ ", var_126_0 + config.data.gz.font.length / 2 - (kaban > 1 and 45 * kaban or 15), var_126_1 + config.data.gz.font.height / 2 - 12.5 * kaban, argb2abgr(config.data.gz.font.color.text_back)) + renderFontDrawText(gz.font, "ВЫ В КВАДРАТЕ ", var_126_0 + config.data.gz.font.length / 2 - (kaban > 1 and 45 * kaban or 15), var_126_1 + config.data.gz.font.height / 2 - 12.5 * kaban, argb2abgr(config.data.gz.font.color.text_front)) + end +end) + +function gzFunc() + while true do + wait(0) + + if gz.pos then + gz_render() + sampSetCursorMode(3) + + curX, curY = getCursorPos() + config.data.gz.font.x = curX + config.data.gz.font.y = curY + + if isKeyJustPressed(1) then + sampSetCursorMode(0) + + gz.pos = false + + config_save(config.data) + end + end + + if config.data.gz.fake then + gz_render() + end + + if config.data.gz.status and isPlayerInActionGangZone() then + gz_render() + end + end +end + +function isPlayerInActionGangZone() + local var_128_0 = var_0_11.cast("struct stGangzonePool*", sampGetGangzonePoolPtr()) + local var_128_1 = false + + for iter_128_0 = 0, 1023 do + if var_128_0.iIsListed[iter_128_0] ~= 0 and var_128_0.pGangzone[iter_128_0] ~= nil then + local var_128_2 = var_128_0.pGangzone[iter_128_0].fPosition + + if var_128_0.pGangzone[iter_128_0].dwColor ~= var_128_0.pGangzone[iter_128_0].dwAltColor then + local var_128_3, var_128_4, var_128_5 = getCharCoordinates(PLAYER_PED) + + if (var_128_3 >= var_128_2[0] and var_128_3 <= var_128_2[2] or var_128_3 <= var_128_2[0] and var_128_3 >= var_128_2[2]) and (var_128_4 >= var_128_2[1] and var_128_4 <= var_128_2[3] or var_128_4 <= var_128_2[1] and var_128_4 >= var_128_2[3]) then + var_128_1 = true + + break + end + end + end + end + + return var_128_1 +end + +local function var_0_126() + var_0_9.ToggleButtonText("Отображение квадарта", var_0_118, function() + config.data.gz.status = not config.data.gz.status + + config_save(config.data) + end) + + if var_0_9.Button("Тест индикатора " .. (config.data.gz.fake and "[ON]" or "[OFF]") .. "##sbsrp.menu_func", var_0_9.ImVec2(390, 25)) then + config.data.gz.fake = not config.data.gz.fake + + config_save(config.data) + end + + if var_0_9.Button("Сменить позицию" .. "##sbsrp.kv", var_0_9.ImVec2(390, 25)) then + gz.pos = true + end + + if var_0_9.SliderInt("Длина", var_0_120, 100, 500) then + config.data.gz.font.length = var_0_120[0] + + config_save(config.data) + end + + if var_0_9.SliderInt("Ширина", var_0_121, 0, 200) then + config.data.gz.font.height = var_0_121[0] + + config_save(config.data) + end + + if var_0_9.SliderInt("Размер текста", var_0_122, 0, 80) then + config.data.gz.font.text_size = var_0_122[0] + + config_save(config.data) + renderReleaseFont(gz.font) + + gz.font = renderCreateFont("Segoe UI", config.data.gz.font.text_size, 1) + end + + textpos = config.data.gz.text_pos == 1 and "К левому краю" or config.data.gz.text_pos == 2 and "По середине" or "К правому краю" + + if var_0_9.Button("Местоположение текста: " .. textpos .. "##sbsp.kv", var_0_9.ImVec2(390, 25)) then + config.data.gz.text_pos = config.data.gz.text_pos + 1 + + if config.data.gz.text_pos >= 4 then + config.data.gz.text_pos = 1 + end + + config_save(config.data) + end + + if var_0_9.Button("Сбросить настройки##x", var_0_9.ImVec2(390, 25)) then + config.data.gz.font.x = gz_pos_x + config.data.gz.font.y = gz_pos_y + config.data.gz.font.length = 208 + config.data.gz.font.height = 26 + config.data.gz.font.text_size = 12 + + config_save(config.data) + renderReleaseFont(gz.font) + + gz.font = renderCreateFont("Segoe UI", config.data.gz.font.text_size, 1) + end + + var_0_9.SetNextItemWidth(20) + + if var_0_9.ColorEdit3("Цвет фона", var_0_119.box_color, var_0_9.ColorEditFlags.NoDragDrop + var_0_9.ColorEditFlags.NoInputs + var_0_9.ColorEditFlags.PickerHueWheel) then + config.data.gz.font.color.box = var_0_9.ColorConvertFloat4ToU32(var_0_9.ImVec4(var_0_119.box_color[0], var_0_119.box_color[1], var_0_119.box_color[2], var_0_119.box_color[3])) + + config_save(config.data) + end + + var_0_9.SetNextItemWidth(20) + + if var_0_9.ColorEdit3("Цвет шрифта", var_0_119.text_front, var_0_9.ColorEditFlags.NoDragDrop + var_0_9.ColorEditFlags.NoInputs + var_0_9.ColorEditFlags.PickerHueWheel) then + config.data.gz.font.color.text_front = var_0_9.ColorConvertFloat4ToU32(var_0_9.ImVec4(var_0_119.text_front[0], var_0_119.text_front[1], var_0_119.text_front[2], var_0_119.text_front[3])) + + config_save(config.data) + end + + var_0_9.SetNextItemWidth(20) + + if var_0_9.ColorEdit3("Цвет тени шрифта", var_0_119.text_back, var_0_9.ColorEditFlags.NoDragDrop + var_0_9.ColorEditFlags.NoInputs + var_0_9.ColorEditFlags.PickerHueWheel) then + config.data.gz.font.color.text_back = var_0_9.ColorConvertFloat4ToU32(var_0_9.ImVec4(var_0_119.text_back[0], var_0_119.text_back[1], var_0_119.text_back[2], var_0_119.text_back[3])) + + config_save(config.data) + end +end + +function modifyAlpha(arg_131_0, arg_131_1) + local var_131_0 = bit.band(bit.rshift(arg_131_0, 24), 255) + local var_131_1 = bit.band(bit.rshift(arg_131_0, 16), 255) + local var_131_2 = bit.band(bit.rshift(arg_131_0, 8), 255) + local var_131_3 = bit.band(arg_131_0, 255) + local var_131_4 = math.min(255, math.max(0, var_131_0 + arg_131_1)) + + return bit.bor(bit.lshift(var_131_4, 24), bit.lshift(var_131_1, 16), bit.lshift(var_131_2, 8), var_131_3) +end + +function argb2abgr(arg_132_0) + return (bit.bor(bit.lshift(bit.band(bit.rshift(arg_132_0, 24), 255), 24), bit.lshift(bit.band(arg_132_0, 255), 16), bit.lshift(bit.band(bit.rshift(arg_132_0, 8), 255), 8), bit.band(bit.rshift(arg_132_0, 16), 255))) +end + +local var_0_127 = var_0_9.new.bool(config.data.autofill.status) +local var_0_128 = var_0_9.new.bool(config.data.dlcar.status) +local var_0_129 = var_0_11.cast("int (__thiscall*)(void*, float*, int, bool)", 6177408) + +function dlcarFunc() + dlcar_font = renderCreateFont("Verdana", 10, 5) + + while true do + wait(0) + + if config.data.dlcar.status then + if isCharInAnyCar(PLAYER_PED) then + mycar = getCarCharIsUsing(PLAYER_PED) + end + + for iter_133_0, iter_133_1 in ipairs(getAllVehicles()) do + if iter_133_1 ~= mycar and doesVehicleExist(iter_133_1) and isCarOnScreen(iter_133_1) then + vehName = getGxtText(getNameOfVehicleModel(getCarModel(iter_133_1))) + myX, myY, myZ = getBodyPartCoordinates(8, PLAYER_PED) + X, Y, Z = getCarCoordinates(iter_133_1) + result, point = processLineOfSight(myX, myY, myZ, X, Y, Z, true, false, false, true, false, false, false, false) + + if not result then + local var_133_0, var_133_1, var_133_2 = getOffsetFromCarInWorldCoords(iter_133_1, 0, 0, 0) + local var_133_3, var_133_4 = convert3DCoordsToScreen(var_133_0, var_133_1, var_133_2) + local var_133_5 = getCarHealth(iter_133_1) + + renderFontDrawText(dlcar_font, var_133_5, var_133_3, var_133_4, 4294967295) + end + end + end + end + end +end + +function getBodyPartCoordinates(arg_134_0, arg_134_1) + local var_134_0 = getCharPointer(arg_134_1) + local var_134_1 = var_0_11.new("float[3]") + + var_0_129(var_0_11.cast("void*", var_134_0), var_134_1, arg_134_0, true) + + return var_134_1[0], var_134_1[1], var_134_1[2] +end + +local var_0_130 = var_0_12.bool() +local var_0_131 = var_0_9.new.bool(config.data.bikerlist.status) +local var_0_132 = var_0_9.new.char[256](config.data.bikerlist.command) +local var_0_133 = { + [2853968924] = "Mongols MC", + [2864035253] = "Outlaws MC", + [2853113615] = "Highwaymen MC", + [2852162304] = "Vagos MC", + [2868880640] = "Bandidos MC", + [2867754529] = "Warlock MC", + [2861253888] = "Sons of Silence MC", + [2863800866] = "Hell's Angels MC", + [2852126859] = "Pagans MC", + [2853195403] = "Free Souls MC" +} + +local function var_0_134() + var_0_9.ToggleButtonText("Байкерлист", var_0_131, function() + config.data.bikerlist.status = not config.data.bikerlist.status + + config_save(config.data) + end) + var_0_9.Text("Активация") + + if bikerlist_hotkey:ShowHotKey(var_0_9.ImVec2(390, 20)) then + config.data.bikerlist.key = bikerlist_hotkey:GetHotKey() + + config_save(config.data) + end + + var_0_9.PushItemWidth(390) + var_0_9.InputText("", var_0_132, sizeof(var_0_132)) + var_0_9.PopItemWidth() + + if var_0_9.Button("Сохранить команду", var_0_9.ImVec2(390, 25)) then + bikerlist_command = config.data.bikerlist.command:gsub("/", "") + + sampUnregisterChatCommand(bikerlist_commandd) + + config.data.bikerlist.command = str(var_0_132) + + config_save(config.data) + bikerlist_register() + end +end + +function bikerlistFunc() + while true do + wait(0) + + if isKeysPressed(config.data.bikerlist.key) and isKeyCanBePressed() and config.data.bikerlist.status then + var_0_130[0] = not var_0_130[0] + end + end +end + +function bikerlist_register() + bikerlist_command = config.data.bikerlist.command:gsub("/", "") + + sampRegisterChatCommand(bikerlist_command, function() + var_0_130[0] = not var_0_130[0] + end) +end + +var_0_9.OnFrame(function() + return var_0_130[0] +end, function() + local function var_141_0(arg_142_0) + return var_0_9.ImVec4(bit.band(bit.rshift(arg_142_0, 16), 255) / 255, bit.band(bit.rshift(arg_142_0, 8), 255) / 255, bit.band(arg_142_0, 255) / 255, 1) + end + + local var_141_1, var_141_2 = getScreenResolution() + + var_0_9.SetNextWindowSize(var_0_9.ImVec2(400, 400), 2) + var_0_9.SetNextWindowPos(var_0_9.ImVec2(var_141_1 / 2, var_141_2 / 2), 8, var_0_9.ImVec2(0.5, 0.5)) + var_0_9.Begin(var_0_4.MOTORCYCLE .. " BIG MARA SALVATRUCHA " .. var_0_4.MOTORCYCLE .. "##ese", var_0_130, var_0_9.WindowFlags.NoCollapse + var_0_9.WindowFlags.NoScrollbar) + var_0_9.Columns(2, "Columns", false) + var_0_9.Text(var_0_14("Organization")) + var_0_9.NextColumn() + var_0_9.Text(var_0_14("Nickname")) + var_0_9.NextColumn() + var_0_9.Separator() + + local var_141_3 = {} + local var_141_4 = {} + + for iter_141_0 = 0, sampGetMaxPlayerId() do + if sampIsPlayerConnected(iter_141_0) then + local var_141_5 = sampGetPlayerColor(iter_141_0) + + if var_0_133[var_141_5] then + var_141_3[#var_141_3 + 1] = { + clist = var_141_5, + id = iter_141_0 + } + var_141_4[var_141_5] = (var_141_4[var_141_5] or 0) + 1 + end + end + end + + local var_141_6 = {} + + for iter_141_1, iter_141_2 in pairs(var_141_4) do + table.insert(var_141_6, { + color = iter_141_1, + count = iter_141_2 + }) + end + + for iter_141_3, iter_141_4 in ipairs(var_141_6) do + local var_141_7 = iter_141_4.color + local var_141_8 = iter_141_4.count + + for iter_141_5, iter_141_6 in ipairs(var_141_3) do + if iter_141_6.clist == var_141_7 then + local var_141_9 = sampGetPlayerNickname(iter_141_6.id) + + var_0_9.TextColored(var_141_0(var_141_7), var_0_133[var_141_7]) + var_0_9.NextColumn() + var_0_9.Text(("%s [%s]"):format(var_141_9, iter_141_6.id)) + var_0_9.NextColumn() + end + end + + if var_141_8 > 0 then + var_0_9.Text("Online: " .. tostring(var_141_8)) + var_0_9.NextColumn() + var_0_9.Text("") + var_0_9.NextColumn() + end + end + + var_0_9.End() +end) + +local var_0_135 + +capture = {} +capture.status = false +capture.biz = -1 +capture.dialog_active = 0 + +local var_0_136 = var_0_9.new.bool(config.data.capture.status) +local var_0_137 = var_0_9.new.char[256](config.data.capture.cmd) + +local function var_0_138() + var_0_9.ToggleButtonText("Автокапт", var_0_136, function() + config.data.capture.status = not config.data.capture.status + + config_save(config.data) + end) + var_0_9.Spacing() + var_0_9.Text("Команда вызова меню авто-капта") + var_0_9.PushItemWidth(390) + var_0_9.InputText("", var_0_137, sizeof(var_0_137)) + + if var_0_9.Button("Сохранить команду", var_0_9.ImVec2(390, 20)) then + sampUnregisterChatCommand(config.data.capture.cmd) + + config.data.capture.cmd = str(var_0_137) + + config_save(config.data) + capture_cmd_register() + end + + var_0_9.PopItemWidth() + var_0_9.Spacing() + var_0_9.Spacing() + + if var_0_9.Button("+##plus_capture", var_0_9.ImVec2(20, 20)) then + config.data.capture.wait = config.data.capture.wait + 50 + + config_save(config.data) + end + + var_0_9.SameLine() + + if var_0_9.Button("-##minus_capture", var_0_9.ImVec2(20, 20)) then + config.data.capture.wait = config.data.capture.wait - 50 + + if config.data.capture.wait < 0 then + config.data.capture.wait = 0 + end + + config_save(config.data) + end + + var_0_9.SameLine() + var_0_9.Text("Задержка флудера капта: " .. config.data.capture.wait) +end + +function captureFunc() + while true do + wait(0) + + if config.data.capture.status and capture.status then + if sampIsDialogActive() and sampGetDialogCaption() == "Выберите объект" then + capture.dialog_active = os.clock() * 1000 + end + + if capture.biz ~= -1 and os.clock() * 1000 - capture.dialog_active > config.data.capture.wait then + capture.dialog_active = os.clock() * 1000 + + sampSendChat("/capture") + end + end + end +end + +function capture_cmd_register() + if sampIsChatCommandDefined(config.data.capture.cmd) then + sampUnregisterChatCommand(config.data.capture.cmd) + end + + sampRegisterChatCommand(config.data.capture.cmd, function() + if not capture.status then + if config.data.capture.status then + capture.biz = -1 + capture.status = true + + sampSendChat("/capture") + end + else + capture.status = false + + printStringNow("~R~CAPTURE STOP", 1000) + end + end) +end + +local var_0_139 = var_0_9.new.bool(config.data.antiafk.status) + +function antiafkFunc() + while true do + wait(0) + + if config.data.antiafk.status and var_0_17 then + writeMemory(7634870, 1, 1, 1) + writeMemory(7635034, 1, 1, 1) + var_0_8.fill(7623723, 144, 8) + var_0_8.fill(5499528, 144, 6) + else + writeMemory(7634870, 1, 0, 0) + writeMemory(7635034, 1, 0, 0) + var_0_8.hex2bin("5051FF1500838500", 7623723, 8) + var_0_8.hex2bin("0F847B010000", 5499528, 6) + end + end +end + +local var_0_140 = var_0_9.new.bool(config.data.infinite_run.status) + +function infiniterunFunc() + while true do + wait(0) + + if config.data.infinite_run.status and var_0_17 then + setPlayerNeverGetsTired(PLAYER_HANDLE, true) + else + setPlayerNeverGetsTired(PLAYER_HANDLE, false) + end + end +end + +local var_0_141 = var_0_9.new.bool(config.data.fastconnect.status) + +function fastconnectFunc() + while true do + wait(0) + + if config.data.fastconnect.status then + writeMemory(sampGetBase() + 2964549, 2, 0, true) + writeMemory(sampGetBase() + 2964549, 4, 0, 1) + end + end +end + +local var_0_142 = var_0_9.new.bool(config.data.hpbar.status) + +function hpbarFunc() + while true do + wait(0) + + if config.data.hpbar.status and var_0_17 then + var_0_8.setfloat(12030944, 910.4) + else + var_0_8.setfloat(12030944, 569) + end + end +end + +local var_0_143 = var_0_9.new.bool(config.data.gmwheels.status) + +function gmwheelsFunc() + while true do + wait(0) + + if config.data.gmwheels.status and isCharInAnyCar(PLAYER_PED) and var_0_17 then + vehicle = storeCarCharIsInNoSave(PLAYER_PED) + + setCanBurstCarTires(vehicle, false) + end + end +end + +local var_0_144 = var_0_9.new.bool(config.data.antibarrier.status) +local var_0_145 = { + 968, + 966 +} + +function antibarrierFunc() + while true do + wait(0) + + if config.data.antibarrier.status and var_0_17 then + for iter_153_0, iter_153_1 in pairs(getAllObjects()) do + local var_153_0 = getObjectModel(iter_153_1) + + for iter_153_2, iter_153_3 in pairs(var_0_145) do + if var_153_0 == iter_153_3 then + deleteObject(iter_153_1) + end + end + end + end + end +end + +local var_0_146 = var_0_9.new.bool(config.data.nofall.status) + +function nofallFunc() + while true do + wait(0) + + if config.data.nofall.status and (isCharPlayingAnim(PLAYER_PED, "KO_SKID_BACK") or isCharPlayingAnim(playerPed, "FALL_COLLAPSE")) and var_0_17 then + clearCharTasksImmediately(PLAYER_PED) + end + end +end + +local var_0_147 = var_0_9.new.bool(config.data.fastspawn.status) + +function fastspawnFunc() + while true do + wait(0) + + if config.data.fastspawn.status and isCharDead(PLAYER_PED) and var_0_17 then + var_0_8.fill(4467992, 144, 6) + end + end +end + +local var_0_148 = var_0_9.new.bool(config.data.schi.status) + +function showcrosshairinstantlyFunc() + while true do + wait(0) + + if config.data.schi.status and var_0_17 then + showCrosshairInstantlyPatch(true) + end + end +end + +function showCrosshairInstantlyPatch(arg_157_0) + if arg_157_0 then + if not patch_showCrosshairInstantly then + patch_showCrosshairInstantly = var_0_8.read(5824985, 1, true) + end + + var_0_8.write(5824985, 235, 1, true) + elseif patch_showCrosshairInstantly ~= nil then + var_0_8.write(5824985, patch_showCrosshairInstantly, 1, true) + + patch_showCrosshairInstantly = nil + end +end + +local var_0_149 = var_0_9.new.bool(config.data.AutoBikeMotoRunSwimOnMaxSpeed.status) + +AutoBikeMotoRunSwimOnMaxSpeed_bike = { + [481] = true, + [509] = true, + [510] = true +} +AutoBikeMotoRunSwimOnMaxSpeed_moto = { + [448] = true, + [463] = true, + [462] = true, + [523] = true, + [581] = true, + [586] = true, + [468] = true, + [471] = true, + [522] = true, + [521] = true, + [461] = true +} + +function AutoBikeMotoRunSwimOnMaxSpeedFunc() + while true do + wait(0) + + if config.data.AutoBikeMotoRunSwimOnMaxSpeed.status and var_0_17 then + if isCharOnAnyBike(playerPed) and isKeyCheckAvailable() and isKeyDown(160) then + if AutoBikeMotoRunSwimOnMaxSpeed_bike[getCarModel(storeCarCharIsInNoSave(playerPed))] then + setGameKeyState(16, 255) + wait(10) + setGameKeyState(16, 0) + elseif AutoBikeMotoRunSwimOnMaxSpeed_moto[getCarModel(storeCarCharIsInNoSave(playerPed))] then + setGameKeyState(1, -128) + wait(10) + setGameKeyState(1, 0) + end + end + + if isCharOnFoot(playerPed) and isKeyDown(49) and isKeyCheckAvailable() then + setGameKeyState(16, 256) + wait(10) + setGameKeyState(16, 0) + elseif isCharInWater(playerPed) and isKeyDown(49) and isKeyCheckAvailable() then + setGameKeyState(16, 256) + wait(10) + setGameKeyState(16, 0) + end + end + end +end + +function isKeyCheckAvailable() + if not isSampLoaded() then + return true + end + + if not isSampfuncsLoaded() then + return not sampIsChatInputActive() and not sampIsDialogActive() + end + + return not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive() +end + +local var_0_150 = var_0_9.new.bool(config.data.nobike.status) + +function nobikeFunc() + while true do + wait(0) + + if (isKeyDown(VK_W) or isKeyDown(VK_SHIFT)) and config.data.nobike.status and isCharInAnyCar(PLAYER_PED) and var_0_17 then + setCharCanBeKnockedOffBike(PLAYER_PED, true) + else + setCharCanBeKnockedOffBike(PLAYER_PED, false) + end + end +end + +ReplacingWindowWithNickName_status = var_0_9.new.bool(config.data.ReplacingWindowWithNickName.status) + +function ReplacingWindowWithNickName() + if config.data.ReplacingWindowWithNickName.status then + var_0_11.C.SetWindowTextA(var_0_11.C.GetActiveWindow(), string.format("%s - %s", sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))), sampGetCurrentServerName())) + else + var_0_11.C.SetWindowTextA(var_0_11.C.GetActiveWindow(), "GTA:SA:MP") + end +end + +nopara_status = var_0_9.new.bool(config.data.NoPara.status) + +function noparaFunc() + while true do + wait(0) + + if sampIsLocalPlayerSpawned() and config.data.NoPara.status and hasCharGotWeapon(PLAYER_PED, 46) then + removeWeaponFromChar(PLAYER_PED, 46) + end + end +end + +ArrowPassMotoBike_status = var_0_9.new.bool(config.data.ArrowPassMotoBike.status) + +function ArrowPassMotoBikeFunc() + while true do + wait(0) + + if config.data.ArrowPassMotoBike.status and var_0_17 then + var_0_8.fill(7043423, 144, 20, true) + else + var_0_8.hex2bin("0F84FF0200008B866404000085C00F85F1020000", 7043423, 20) + end + end +end + +quitinformer_status = var_0_9.new.bool(config.data.quitinformer.status) + +local function var_0_151() + var_0_9.ToggleButtonText("Quit Informer", quitinformer_status, function() + config.data.quitinformer.status = quitinformer_status[0] + + config_save(config.data) + end) + + if var_0_9.Button("Показывать /q игроков только из зоны стрима " .. (config.data.quitinformer.only_stream and "[ON]" or "[OFF]") .. "##multi.menu_quitinformer", var_0_9.ImVec2(380, 25)) then + config.data.quitinformer.only_stream = not config.data.quitinformer.only_stream + + config_save(config.data) + end +end + +local var_0_152 = var_0_9.new.bool(config.data.fastdeagle.status) +local var_0_153 = var_0_9.new.float(config.data.fastdeagle.speed) + +local function var_0_154() + var_0_9.ToggleButtonText("Fast Deagle", var_0_152, function() + config.data.fastdeagle.status = not config.data.fastdeagle.status + + config_save(config.data) + end) + var_0_9.Spacing() + + if var_0_9.SliderFloat("Скорость", var_0_153, 1, 3) then + config.data.fastdeagle.speed = var_0_153[0] + + config_save(config.data) + end +end + +function fastdeagleFunc() + while true do + wait(0) + + if config.data.fastdeagle.status and var_0_17 then + setCharAnimSpeed(PLAYER_PED, "PYTHON_CROUCHFIRE", config.data.fastdeagle.speed) + setCharAnimSpeed(PLAYER_PED, "PYTHON_FIRE", config.data.fastdeagle.speed) + setCharAnimSpeed(PLAYER_PED, "PYTHON_FIRE_POOR", config.data.fastdeagle.speed) + end + end +end + +local var_0_155 = false +local var_0_156 = 0 +local var_0_157 = { + ["VICE-PRESIDENT"] = 3, + NOMAD = 3, + COMRADE = 3, + ["FULLPATCH-MEMBER"] = 3, + PROSPECT = 1, + MEMBER = 2, + PRESIDENT = 3 +} + +function rank_check() + while true do + wait(0) + + if var_0_155 then + repeat + wait(0) + until os.clock() * 1000 - var_0_20 > 650 + + var_0_20 = os.clock() * 1000 + + sampSendChat("/fs РіРѕР№РґР°") + wait(3500) + end + end +end + +function sampev.onServerMessage(arg_170_0, arg_170_1) + if chathelper_Enable and config.data.chat.perenos then + if string.find(arg_170_1, "(( Сообщение отправлено ))") and arg_170_0 == -1 then + if isMe then + sampAddChatMessage("{FF5F5F}> {c2a2da}" .. RpMessage, -1) + + isMe = false + chathelper_Enable = false + + return false + elseif isDo then + sampAddChatMessage("{FF5F5F}> {FF8000}" .. RpMessage, -1) + + isDo = false + chathelper_Enable = false + + return false + end + end + + if string.find(arg_170_1, "%[Удачно%]") and arg_170_0 == -1 and isTry then + sampAddChatMessage("{FF5F5F}> {c2a2da}" .. RpMessage .. " {00AB06}[Удачно]", -1) + + isTry = false + chathelper_Enable = false + + return false + end + + if string.find(arg_170_1, "%[Неудачно%]") and arg_170_0 == -1 and isTry then + sampAddChatMessage("{FF5F5F}> {c2a2da}" .. RpMessage .. " {C42100}[Неудачно]", -1) + + isTry = false + chathelper_Enable = false + + return false + end + end + + if my_name ~= nil and arg_170_1:find("%[(.+)%] %{......%}(%w+_%w+)%[(%d+)%]: РіРѕР№РґР°") and var_0_155 then + my_rank, my_nick, my_id = arg_170_1:match("%[(.+)%] %{......%}(%w+_%w+)%[(%d+)%]: РіРѕР№РґР°") + + for iter_170_0, iter_170_1 in pairs(var_0_157) do + if my_rank == iter_170_0 then + var_0_156 = iter_170_1 + + msg(iter_170_1) + end + end + + var_0_155 = false + + return false + end + + if arg_170_1:find("Этот клуб уже начал войну") or arg_170_1:find("Ваш клуб уже участвует в войне") then + capture.status = false + + printStringNow("~R~CAPTURE STOP", 1000) + end + + if arg_170_1:find("Склад закрыт") then + gg = false + end + + if arg_170_1:find("Список пуст") and arg_170_0 == -1347440641 and var_0_18 then + var_0_15 = true + + if not var_0_16 then + msg("Скрипт успешно загружен.") + msg("Активация скрипта: /ese") + end + + sampCloseCurrentDialogWithButton(0) + + var_0_18 = false + + return false + end + + if arg_170_1:find("Задание уже начато") then + struck_flood = 0 + end + + if arg_170_1:find("SMS сообщение от Дзайбацу: Есть работа для тебя и твоих ребят. %(%( Введите: /struck %)%)") then + struck_flood = 1 + end + + if arg_170_0 == 13551615 then + return { + arg_170_0, + arg_170_1 + } + elseif arg_170_0 == -1613968897 then + if string.find(arg_170_1, "{9FCCC9} ") then + local var_170_0 = string.format("%08X", 2680998399):sub(1, 6) + + arg_170_1 = arg_170_1:gsub("{9FCCC9} ", "{" .. var_170_0 .. "} ") + end + + return { + 2680998399, + arg_170_1 + } + elseif arg_170_0 == 94098346 then + if arg_170_1:find("%[(%d+)%] (%a+_%a+)") then + local var_170_1 = 0 + local var_170_2 = "" + local var_170_3 = 0 + local var_170_4 = 0 + local var_170_5 = false + + if not arg_170_1:find("AFK") and not arg_170_1:find("SLEEP") then + var_170_1, var_170_2 = arg_170_1:match("%[(%d+)%] (%a+_%a+)") + elseif arg_170_1:find("AFK") and not arg_170_1:find("SLEEP") then + var_170_1, var_170_2, var_170_4 = arg_170_1:match("%[(%d+)%] (%a+_%a+).+( %d+)") + elseif not arg_170_1:find("AFK") and arg_170_1:find("SLEEP") then + var_170_1, var_170_2, var_170_3 = arg_170_1:match("%[(%d+)%] (%a+_%a+).+( %d+)") + elseif arg_170_1:find("AFK") and arg_170_1:find("SLEEP") then + var_170_1, var_170_2, var_170_3, var_170_4 = arg_170_1:match("%[(%d+)%] (%a+_%a+).+( %d+)|(%d+)") + end + + for iter_170_2, iter_170_3 in ipairs(var_0_101) do + if var_0_101[iter_170_2][2] == var_170_2 then + table.remove(var_0_101, iter_170_2) + table.insert(var_0_101, iter_170_2, { + var_170_1, + var_170_2, + var_170_3, + var_170_4 + }) + + var_170_5 = true + + break + end + end + + if not var_170_5 then + table.insert(var_0_101, { + var_170_1, + var_170_2, + var_170_3, + var_170_4 + }) + end + end + + if var_0_102 then + return false + else + return true + end + end + + if (arg_170_1:find("На складе нет аптечек") or arg_170_1:find("Вы должны быть на своей базе или дома") or arg_170_1:find("В этом месте нет аптечки") or arg_170_1:find("Вы не нуждаетесь в лечении") or arg_170_1:find("Аптечку можно использовать не более 10 раз в час")) and healme.start then + healme.old = -1 + healme.start = false + + return false + end + + if arg_170_1:find("%(%( /captstats %- подробная статистика | /crimestats %- статистика за всё время %)%)") and config.data.autoclist_after_capt.status then + var_0_81 = true + end + + if arg_170_1:find("кашель") and config.data.autoadr.sbiv and not isCharInAnyCar(PLAYER_PED) then + lua_thread.create(function() + wait(100) + sampSetSpecialAction(7) + wait(50) + sampSetSpecialAction(0) + end) + end + + if arg_170_1:find("~~~~~~~~ У вас началась ломка ~~~~~~~~") and config.data.autoadr.lomka and config.data.autoadr.status then + var_0_73 = true + end + + if arg_170_1:find("У вас перелом левой ноги. Обратитесь к врачу") and config.data.autoadr.perelom and config.data.autoadr.status then + var_0_73 = true + end + + if arg_170_1:find("У вас болит рука") and arg_170_1:find("Вам сложно") and config.data.autoadr.perelom and config.data.autoadr.status then + var_0_73 = true + end + + if string.match(arg_170_1, "^.+%[.*%]% {FFFFFF%}(.*)%[(.*)%]: .+ | CPOIX(.+)Y(.+)Z(.+)E$") then + local var_170_6, var_170_7, var_170_8, var_170_9, var_170_10 = string.match(arg_170_1, "^.+%[.*%]% {FFFFFF%}(.+)%[(.*)%]: .+ | CPOIX(.+)Y(.+)Z(.+)E$") + local var_170_11 = tonumber(var_170_8) + local var_170_12 = tonumber(var_170_9) + local var_170_13 = tonumber(var_170_10) + + setMarker(1, var_170_11, var_170_12, var_170_13, 3, 2516011775) + sampAddChatMessage(string.format("Выставлена метка в квадрат %s. [%s - ID %s]", getKv(var_170_11, var_170_12), var_170_6, var_170_7), 14687003) + + return false + end + + if arg_170_1:find("Редакция News (.+). (.+): (.+)") and (arg_170_0 == -7587841 and config.data.chat.vip_ad or arg_170_0 == 14221567 and config.data.chat.ad) then + return false + end + + if arg_170_1:find("VIP Объявление") and arg_170_0 == -7587841 and config.data.chat.vip_ad then + return false + end + + if arg_170_1:find("Объявление: (.+). (.+): (.+). Тел: (%d+)") and arg_170_0 == 14221567 and config.data.chat.ad then + return false + end + + if config.data.chat.gov and (arg_170_0 == -1 and arg_170_1:find("-----------=== Государственные Новости ===-----------") or arg_170_0 == 641859327 and arg_170_1:find("Новости:")) then + return false + end + + if arg_170_1:find("%[Event%]") and (arg_170_0 == -189267713 or arg_170_0 == -2016478465) and config.data.chat.events then + return false + end + + if config.data.chat.ask and (arg_170_0 == -1950935126 or arg_170_0 == 751250602) then + if arg_170_1:find("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") then + return false + end + + if arg_170_1:find("Задайте ваш вопрос в поддержку сервера %- /ask") then + return false + end + + if arg_170_1:find("Играйте вместе с музыкой от официального радио Samp RolePlay %- /music") then + return false + end + + if arg_170_1:find("Всю интересующую вас информацию вы можете получить на сайте %- samp%-rp.ru") then + return false + end + end + + if arg_170_1:find("Где взять машину? Купить/арендовать машину можно возле одного из авто") and config.data.chat.ask then + return false + end + + if arg_170_1:find("У вас (%d+)/500 материалов с собой") then + config.data.narkotimer.mats = arg_170_1:match("У вас (%d+)/500 материалов с собой") + + config_save(config.data) + end + + if arg_170_1:find("Вы получили") then + arg_170_1 = arg_170_1:gsub("%{......%}", "") + + if arg_170_1:find("Вы получили 'Материалы' %[(%d+)%]") then + plus_mats = arg_170_1:match("Вы получили 'Материалы' %[(%d+)%]") + config.data.narkotimer.mats = tonumber(config.data.narkotimer.mats + plus_mats) + end + + if arg_170_1:find("Вы получили 'Наркотики' %[(%d+)%]") then + plus_drugs = arg_170_1:match("Вы получили 'Наркотики' %[(%d+)%]") + config.data.narkotimer.drugs = tonumber(config.data.narkotimer.drugs + plus_drugs) + end + + config_save(config.data) + end + + if arg_170_1:find("штук, остаток (%d+) штук") then + arg_170_1 = arg_170_1:gsub("%{......%}", "") + + if arg_170_1:find("Вы выкинули 'Наркотики' в количестве (%d+) штук, остаток (%d+) штук") then + config.data.narkotimer.drugs = arg_170_1:match("штук, остаток (%d+) штук") + end + + if arg_170_1:find("Вы выкинули 'Материалы' в количестве (%d+) штук, остаток (%d+) штук") then + config.data.narkotimer.mats = arg_170_1:match("штук, остаток (%d+) штук") + end + + config_save(config.data) + end + + if arg_170_1:find("Бонусы отключены") and arg_170_0 == -1 and var_0_38 then + var_0_38 = false + var_0_40 = true + + return false + end + + if arg_170_1 == " (( Здоровье не пополняется чаще, чем раз в минуту ))" or arg_170_1 == " (( Здоровье можно пополнить не чаще, чем раз в минуту ))" then + var_0_35 = true + end + + if my_name ~= nil and string.find(arg_170_1, my_name) and string.find(arg_170_1, "употребил%(а%) наркотик") then + if not var_0_35 then + var_0_34 = os.time() + else + var_0_35 = false + end + end + + if arg_170_1:find("Действует до: ") and arg_170_0 == -1 and var_0_38 then + var_0_32 = true + var_0_33 = 20 + var_0_38 = false + + return false + end + + if arg_170_1:find("У вас (%d+)/500 материалов с собой") then + config.data.narkotimer.mats = arg_170_1:match("У вас (%d+)/500 материалов с собой") + + config_save(config.data) + end + + if string.find(arg_170_1, " %(%( Остаток: (%d+) грамм %)%)") then + config.data.narkotimer.drugs = string.match(arg_170_1, " %(%( Остаток: (%d+) грамм %)%)") + + config_save(config.data) + end + + if arg_170_1:find("Вы взяли (%d+) наркотиков") then + addnarko = arg_170_1:match("Вы взяли (%d+) наркотиков") + config.data.narkotimer.drugs = tonumber(config.data.narkotimer.drugs + addnarko) + + config_save(config.data) + end + + if string.find(arg_170_1, " %(%( Здоровье пополнено до: (%d+) %)%)") then + if not var_0_35 then + var_0_34 = os.time() + else + var_0_35 = false + end + + config_save(config.data) + end + + if string.find(arg_170_1, "%(%( Остаток: (%d+) материалов %)%)") then + config.data.narkotimer.mats = arg_170_1:match("%(%( Остаток: (%d+) материалов %)%)") + + config_save(config.data) + end + + if arg_170_1:find("Вы купили %d+ грамм наркотиков за %d+ вирт %(У вас есть (%d+) грамм%)") then + config.data.narkotimer.drugs = arg_170_1:match("Вы купили %d+ грамм наркотиков за %d+ вирт %(У вас есть (%d+) грамм%)") + + config_save(config.data) + end + + if arg_170_1:find("Вы купили (%d+) грамм наркотиков за %d+ вирт у .+") then + local var_170_14 = arg_170_1:match("Вы купили (%d+) грамм наркотиков за %d+ вирт у .+") + + config.data.narkotimer.drugs = tonumber(var_170_14) + config.data.narkotimer.drugs + + config_save(config.data) + end +end + +function sampev.onShowDialog(arg_172_0, arg_172_1, arg_172_2, arg_172_3, arg_172_4, arg_172_5) + var_0_135 = arg_172_2 + + if arg_172_2:find("По приглашению от:") then + sampSendDialogResponse(arg_172_0, 1, 0, "#sof") + + return false + end + + if arg_172_2:find("Сообщество") and var_0_18 then + lua_thread.create(function() + wait(250) + sampSendDialogResponse(arg_172_0, 1, 0) + end) + + return false + end + + if (arg_172_2:find("Список моих сообществ") and var_0_18) then + var_0_15 = true + var_0_17 = true + + if not var_0_16 then + msg("Скрипт успешно загружен.") + msg("Активация скрипта: /ese") + end + + var_0_18 = false + + lua_thread.create(function() + wait(250) + sampCloseCurrentDialogWithButton(1) + end) + + return false + end + + if arg_172_2:find("Выберите объект") and capture.status and capture.biz >= 0 then + deff_dialog.send = { + wait = 50, + button = 1, + input = "", + clock = os.clock() * 1000, + dialogId = arg_172_0, + listitem = capture.biz + } + + return false + end + + if arg_172_0 == 1326 and gg or arg_172_0 == 123 and gg then + if ggtable.deagle > 0 then + ggtable.deagle = ggtable.deagle - 1 + + sampSendDialogResponse(arg_172_0, 1, 0, -1) + + return false + end + + if ggtable.shotgun > 0 then + ggtable.shotgun = ggtable.shotgun - 1 + + sampSendDialogResponse(arg_172_0, 1, 1, -1) + + return false + end + + if ggtable.smg > 0 then + ggtable.smg = ggtable.smg - 1 + + sampSendDialogResponse(arg_172_0, 1, 2, -1) + + return false + end + + if ggtable.ak47 > 0 then + ggtable.ak47 = ggtable.ak47 - 1 + + sampSendDialogResponse(arg_172_0, 1, 3, -1) + + return false + end + + if ggtable.m4a1 > 0 then + ggtable.m4a1 = ggtable.m4a1 - 1 + + sampSendDialogResponse(arg_172_0, 1, 4, -1) + + return false + end + + if ggtable.rifle > 0 then + ggtable.rifle = ggtable.rifle - 1 + + sampSendDialogResponse(arg_172_0, 1, 5, -1) + + return false + end + + if ggtable.armor ~= nil and ggtable.armor > 0 then + ggtable.armor = ggtable.armor - 1 + + sampSendDialogResponse(arg_172_0, 1, 6, -1) + + return false + end + + gg = false + + return false + elseif arg_172_0 == 1513 and gg then + var_0_19 = true + end + + if arg_172_2:find("Бонусы") and not arg_172_2:find("Общие") and var_0_38 then + sampSendDialogResponse(arg_172_0, 1, 0, "") + + return false + end + + if arg_172_2:find("Общие бонусы") and var_0_32 then + sampCloseCurrentDialogWithButton(0) + + var_0_32 = false + + return false + end + + if arg_172_2:find("Бонусы") and var_0_40 then + sampCloseCurrentDialogWithButton(1) + + return false + end + + if arg_172_2:find("Информация") or arg_172_2:find("Карманы") then + local var_172_0 = false + local var_172_1 = false + local var_172_2 = split(arg_172_5, "\n") + + for iter_172_0 = 1, #var_172_2 do + if var_172_2[iter_172_0]:find("Наркотики\t(%d+)") then + config.data.narkotimer.drugs = var_172_2[iter_172_0]:match("Наркотики\t(%d+)") + var_172_0 = true + end + + if var_172_2[iter_172_0]:find("Материалы\t(%d+)") then + config.data.narkotimer.mats = var_172_2[iter_172_0]:match("Материалы\t(%d+)") + var_172_1 = true + end + end + + if not var_172_0 then + config.data.narkotimer.drugs = 0 + end + + if not var_172_1 then + config.data.narkotimer.mats = 0 + end + + config_save(config.data) + end +end + +function split(arg_175_0, arg_175_1, arg_175_2) + local var_175_0 = {} + local var_175_1 = 1 + local var_175_2 = arg_175_2 ~= false + + repeat + local var_175_3, var_175_4 = string.find(arg_175_0, arg_175_1, var_175_1, var_175_2) + + table.insert(var_175_0, string.sub(arg_175_0, var_175_1, var_175_3 and var_175_3 - 1)) + + var_175_1 = var_175_4 and var_175_4 + 1 + until not var_175_1 + + return var_175_0 +end + +function sampev.onShowTextDraw(arg_176_0, arg_176_1) + if arg_176_1.text:find("USE") and arg_176_1.text:find("TPMP") and arg_176_1.text:find("FOR TELEPORT") and config.data.chat.events then + return false + end + + if arg_176_1.text:find("SQUAD") then + config.data.squad.squadid = arg_176_0 + + lua_thread.create(function() + updatesquad_members(arg_176_1.text) + end) + config_save(config.data) + + var_0_101 = {} + + return true + end +end + +function sampev.onTextDrawHide(arg_178_0) + return +end + +function sampev.onSendMapMarker(arg_179_0) + if arg_179_0 ~= nil then + sendBlipInChat(arg_179_0.x, arg_179_0.y, arg_179_0.z) + + return false + end +end + +function sampev.onSendChat(arg_180_0) + var_0_20 = os.clock() * 1000 + + local var_180_0, var_180_1 = sampGetPlayerIdByCharHandle(playerPed) + local var_180_2 = sampGetPlayerNickname(var_180_1) + + if #arg_180_0 + #var_180_2 > 100 and config.data.chat.perenos then + lua_thread.create(function() + sampSendChat(string.sub(arg_180_0, 0, 97 - #var_180_2) .. "...") + wait(1200) + sampSendChat("..." .. string.sub(arg_180_0, 98 - #var_180_2, #arg_180_0)) + end) + + return false + end +end + +function sampev.onSendCommand(arg_182_0) + local var_182_0, var_182_1 = string.match(arg_182_0, "(/%a+) (.+)") + local var_182_2, var_182_3 = sampGetPlayerIdByCharHandle(playerPed) + local var_182_4 = sampGetPlayerNickname(var_182_3) + + if config.data.chat.perenos then + if var_182_0 == "/me" and #var_182_1 > 95 then + lua_thread.create(function() + sampSendChat("/me " .. string.sub(var_182_1, 0, 92) .. "...") + wait(1200) + sampSendChat("/me ..." .. string.sub(var_182_1, 93, #var_182_1)) + end) + + return false + elseif var_182_0 == "/do" and #var_182_1 + #var_182_4 > 97 then + lua_thread.create(function() + sampSendChat("/do " .. string.sub(var_182_1, 0, 94 - #var_182_4) .. "...") + wait(1200) + sampSendChat("/do ..." .. string.sub(var_182_1, 95 - #var_182_4, #var_182_1)) + end) + + return false + elseif var_182_0 == "/try" and #var_182_1 > 95 then + lua_thread.create(function() + sampSendChat("/me " .. string.sub(var_182_1, 0, 92) .. "...") + wait(1200) + sampSendChat("/try ..." .. string.sub(var_182_1, 93, #var_182_1)) + end) + + return false + elseif var_182_0 == "/todo" then + local var_182_5, var_182_6 = string.match(var_182_1, "(.+)*(.+)") + + if #var_182_6 > 46 then + lua_thread.create(function() + sampSendChat("/todo " .. var_182_5 .. "*" .. string.sub(var_182_6, 0, 43) .. "...") + wait(1200) + sampSendChat("/me ..." .. string.sub(var_182_6, 44, #var_182_6)) + end) + + return false + end + elseif var_182_0 == "/r" and #var_182_1 > 79 then + lua_thread.create(function() + sampSendChat("/r " .. string.sub(var_182_1, 0, 76) .. "...") + wait(1200) + sampSendChat("/r ..." .. string.sub(var_182_1, 77, #var_182_1)) + end) + + return false + elseif var_182_0 == "/f" and #var_182_1 > 79 then + lua_thread.create(function() + sampSendChat("/f " .. string.sub(var_182_1, 0, 76) .. "...") + wait(1200) + sampSendChat("/f ..." .. string.sub(var_182_1, 77, #var_182_1)) + end) + + return false + elseif var_182_0 == "/rb" and #var_182_1 > 73 then + lua_thread.create(function() + sampSendChat("/rb " .. string.sub(var_182_1, 0, 70) .. "...") + wait(1200) + sampSendChat("/rb ..." .. string.sub(var_182_1, 71, #var_182_1)) + end) + + return false + elseif var_182_0 == "/fb" and #var_182_1 > 73 then + lua_thread.create(function() + sampSendChat("/fb " .. string.sub(var_182_1, 0, 70) .. "...") + wait(1200) + sampSendChat("/fb ..." .. string.sub(var_182_1, 71, #var_182_1)) + end) + + return false + elseif var_182_0 == "/b" and #var_182_1 > 95 then + lua_thread.create(function() + sampSendChat("/b " .. string.sub(var_182_1, 0, 92) .. "...") + wait(1200) + sampSendChat("/b ..." .. string.sub(var_182_1, 93, #var_182_1)) + end) + + return false + elseif var_182_0 == "/m" and #var_182_1 > 95 then + lua_thread.create(function() + sampSendChat("/m " .. string.sub(var_182_1, 0, 92) .. "...") + wait(1200) + sampSendChat("/m ..." .. string.sub(var_182_1, 93, #var_182_1)) + end) + + return false + elseif var_182_0 == "/sms" then + local var_182_7, var_182_8 = string.match(var_182_1, "(%d+) (.+)") + + if var_182_8 and #var_182_8 > 70 then + lua_thread.create(function() + sampSendChat("/sms " .. var_182_7 .. " " .. string.sub(var_182_8, 0, 67) .. "..") + wait(1200) + sampSendChat("/sms " .. var_182_7 .. " ..." .. string.sub(var_182_8, 68, #var_182_8)) + end) + + return false + end + elseif var_182_0 == "/t" then + local var_182_9, var_182_10 = string.match(var_182_1, "(%d+) (.+)") + + if var_182_10 and #var_182_10 > 70 then + lua_thread.create(function() + sampSendChat("/t " .. var_182_9 .. " " .. string.sub(var_182_10, 0, 67) .. "..") + wait(1200) + sampSendChat("/t " .. var_182_9 .. " ..." .. string.sub(var_182_10, 68, #var_182_10)) + end) + + return false + end + elseif var_182_0 == "/fs" and #var_182_1 > 79 then + lua_thread.create(function() + sampSendChat("/fs " .. string.sub(var_182_1, 0, 76) .. "...") + wait(1200) + sampSendChat("/fs ..." .. string.sub(var_182_1, 77, #var_182_1)) + end) + + return false + end + + if var_182_0 == "/seeme" then + seeMe(var_182_1) + elseif var_182_0 == "/seedo" then + seeDo(var_182_1) + elseif var_182_0 == "/seetry" then + seeTry(var_182_1) + end + end + + var_0_20 = os.clock() * 1000 + arg_182_0 = arg_182_0:lower() + + for iter_182_0 = 1, #config.data.cmd_shorten do + local var_182_11 = config.data.cmd_shorten[iter_182_0][1] + local var_182_12 = config.data.cmd_shorten[iter_182_0][2] + local var_182_13 = var_182_11:lower() + local var_182_14 = var_182_12:lower() + + if string.byte(arg_182_0, 1) == 47 then + arg_182_0 = arg_182_0:sub(2, #arg_182_0) + end + + if string.byte(var_182_13, 1) == 47 then + var_182_13 = arg_182_0:sub(2, #var_182_13) + end + + spl_1 = split(arg_182_0, " ") + spl_2 = split(var_182_13, " ") + counter = 0 + + for iter_182_1 = 1, #spl_2 do + if spl_1[iter_182_1] ~= nil and spl_2[iter_182_1] == spl_1[iter_182_1] then + counter = counter + 1 + end + end + + if counter ~= 0 and counter == #spl_2 then + arg_182_0 = "/" .. arg_182_0:gsub(var_182_13, var_182_14) + + local var_182_15 = raknetNewBitStream() + + raknetBitStreamWriteInt32(var_182_15, #arg_182_0) + raknetBitStreamWriteString(var_182_15, arg_182_0) + raknetSendRpc(50, var_182_15) + raknetDeleteBitStream(var_182_15) + + return false + end + end +end + +function sampev.onSendSpawn() + var_0_77 = os.time() + var_0_100 = os.time() +end + +function sampev.onPlayerChatBubble(arg_197_0, arg_197_1, arg_197_2, arg_197_3, arg_197_4) + if ch_flymode == 1 and config.data.camhack.bubble then + return { + arg_197_0, + arg_197_1, + 1488, + arg_197_3, + arg_197_4 + } + end +end + +function sampev.onSendAimSync() + if ch_flymode == 1 and config.data.camhack.antiwarning then + return false + end +end + +function sampev.onSetInterior(arg_199_0) + var_0_52 = arg_199_0 + + if arg_199_0 ~= 0 then + if config.data.autohealme.status then + healme.wait = os.time() + healme.old = -1 + healme.start = true + end + else + healme.old = -1 + healme.start = false + end +end + +function sampev.onCreate3DText(arg_200_0, arg_200_1, arg_200_2, arg_200_3, arg_200_4, arg_200_5, arg_200_6, arg_200_7) + if arg_200_7:find("Цена за 200л") and arg_200_3 <= 12 and config.data.autofill.status and var_0_17 then + lua_thread.create(function() + sampSendChat("/fill") + wait(500) + sampSendChat("/get fuel") + end) + end +end + +function onWindowMessage(arg_202_0, arg_202_1, arg_202_2) + if arg_202_0 == 256 or arg_202_0 == 257 then + if arg_202_1 == var_0_10.VK_ESCAPE and var_0_13[0] then + consumeWindowMessage(true, false) + + if arg_202_0 == 257 then + var_0_13[0] = false + end + end + + if arg_202_1 == var_0_10.VK_ESCAPE and var_0_130[0] then + consumeWindowMessage(true, false) + + if arg_202_0 == 257 then + var_0_130[0] = false + end + end + end +end + +function sampev.onSendDialogResponse(arg_203_0, arg_203_1, arg_203_2, arg_203_3) + if capture.status and var_0_135:find("Выберите объект") then + if arg_203_1 == 1 then + capture.biz = arg_203_2 + else + capture.status = false + end + end +end + +quit_reasons = { + [0] = "потеря связи/краш", + "/q", + "кикнул сервер/забанил" +} + +function sampev.onPlayerQuit(arg_204_0, arg_204_1) + if config.data.quitinformer.status then + local var_204_0 = "[Quit Informer] {ffffff}Игрок {FF9C00}" .. sampGetPlayerNickname(arg_204_0) .. "[" .. arg_204_0 .. "] {ffffff}вышел с сервера. {FF9C00}Причина: {ffffff}" .. quit_reasons[arg_204_1] + + if config.data.quitinformer.only_stream then + if select(1, sampGetCharHandleBySampPlayerId(arg_204_0)) then + sampAddChatMessage(var_204_0, 16751616) + end + else + sampAddChatMessage(var_204_0, 16751616) + end + end +end + +local var_0_158 = 1 +local var_0_159 = "" +local var_0_160 = { + perevorot = var_0_66, + fastdeagle = var_0_154 +} +local var_0_161 = "" +local var_0_162 = { + sbiv = var_0_89, + grib_heal = var_0_94, + rkt = var_0_96, + flip = var_0_98, + vspiwka = var_0_92 +} +local var_0_163 = "" +local var_0_164 = { + narkotimer = var_0_49, + perevorot = var_0_66, + doublejump = var_0_71, + autoadr = var_0_74, + iznanka = var_0_63, + autoclist_after_spawn = var_0_78, + autoclist_after_capt = var_0_82, + camhack = var_0_84, + autohealme = var_0_86, + squad = var_0_109 +} +local var_0_165 = "" +local var_0_166 = { + getgun = var_0_53, + capture = var_0_138, + gz = var_0_126, + struck = var_0_117, + bikerlists = var_0_134, + marker = var_0_57, + quitinformer = var_0_151 +} + +var_0_9.OnFrame(function() + return var_0_13[0] +end, function(arg_206_0) + local var_206_0 = var_0_9.ImVec2(getScreenResolution()) + + var_0_9.SetNextWindowPos(var_0_9.ImVec2(var_206_0.x / 2, var_206_0.y / 2.1), var_0_9.Cond.FirstUseEver, var_0_9.ImVec2(0.5, 0.5)) + var_0_9.SetNextWindowSize(var_0_9.ImVec2(650, 500), var_0_9.Cond.FirstUseEver) + var_0_9.Begin(var_0_4.MOTORCYCLE .. " BIG MARA SALVATRUCHA " .. var_0_4.MOTORCYCLE, var_0_13, var_0_9.WindowFlags.NoResize + var_0_9.WindowFlags.NoCollapse + var_0_9.WindowFlags.NoScrollbar) + var_0_9.BeginChild("tabs", var_0_9.ImVec2(200, -1), false) + + if var_0_9.PageButton(var_0_158 == 1, var_0_4.COMMENT, "Настройки чата") then + var_0_158 = 1 + end + + if var_0_9.PageButton(var_0_158 == 2, var_0_4.SCISSORS, "Сокращения команд") then + var_0_158 = 2 + end + + if var_0_9.PageButton(var_0_158 == 3, var_0_4.VEST_PATCHES, "Биндер и косуха") then + var_0_158 = 3 + end + + if var_0_9.PageButton(var_0_158 == 4, var_0_4.HAT_COWBOY, "Скрипты для байкеров") then + var_0_158 = 4 + end + + if var_0_17 then + if var_0_9.PageButton(var_0_158 == 5, var_0_4.CROSSHAIRS, "Другие скрипты") then + var_0_158 = 5 + end + + if var_0_9.PageButton(var_0_158 == 6, var_0_4.EJECT, "Быстрые бинды") then + var_0_158 = 6 + end + + if var_0_9.PageButton(var_0_158 == 7, var_0_4.TRIANGLE_EXCLAMATION, "Модификации") then + var_0_158 = 7 + end + end + + var_0_9.EndChild() + var_0_9.SameLine() + var_0_9.BeginChild("workspace", var_0_9.ImVec2(-1, -1), false, var_0_9.WindowFlags.NoScrollbar) + + if var_0_158 == 1 then + settings_chat() + elseif var_0_158 == 2 then + var_0_31() + elseif var_0_158 == 3 then + var_0_87() + elseif var_0_158 == 4 then + if var_0_165 == "" then + var_0_9.ToggleButtonTextGear("Быстрое взятие гана", var_0_50, function() + config.data.getgun_settings.status = not config.data.getgun_settings.status + + config_save(config.data) + end, true, function() + var_0_165 = "getgun" + end) + var_0_9.ToggleButtonTextGear("Автокапт", var_0_136, function() + config.data.capture.status = not config.data.capture.status + + config_save(config.data) + end, true, function() + var_0_165 = "capture" + end) + var_0_9.ToggleButtonTextGear("Байкерлист", var_0_131, function() + config.data.bikerlist.status = not config.data.bikerlist.status + + config_save(config.data) + end, true, function() + var_0_165 = "bikerlists" + end) + var_0_9.ToggleButtonTextGear("Автоперегон", var_0_116, function() + config.data.struck.status = not config.data.struck.status + + config_save(config.data) + end, true, function() + var_0_165 = "struck" + end) + var_0_9.ToggleButtonTextGear("Quit Informer", quitinformer_status, function() + config.data.quitinformer.status = not config.data.quitinformer.status + + config_save(config.data) + end, true, function() + var_0_165 = "quitinformer" + end) + var_0_9.ToggleButtonTextGear("Метка на карте", var_0_54, function() + config.data.marker.status = not config.data.marker.status + + config_save(config.data) + end, true, function() + var_0_165 = "marker" + end) + var_0_9.ToggleButtonTextGear("Отображение квадрата", var_0_118, function() + config.data.gz.status = not config.data.gz.status + + config_save(config.data) + end, true, function() + var_0_165 = "gz" + end) + var_0_9.ToggleButtonTextGear("Удалять кий при спавне", var_0_99, function() + config.data.delete_cue.status = not config.data.delete_cue.status + + config_save(config.data) + end) + else + for iter_206_0, iter_206_1 in pairs(var_0_166) do + if var_0_165 == iter_206_0 then + if var_0_9.Button("Назад##multi.menu_func", var_0_9.ImVec2(390, 20)) then + var_0_165 = "" + end + + iter_206_1() + end + end + end + elseif var_0_158 == 5 then + if var_0_163 == "" then + var_0_9.ToggleButtonTextGear("Наркотаймер", var_0_37, function() + config.data.narkotimer.status = not config.data.narkotimer.status + + config_save(config.data) + end, true, function() + var_0_163 = "narkotimer" + end) + var_0_9.ToggleButtonTextGear("Кастомный сквад", var_0_104, function() + config.data.squad.status = not config.data.squad.status + + config_save(config.data) + end, true, function() + var_0_163 = "squad" + end) + var_0_9.ToggleButtonTextGear("Танец в стенку", var_0_58, function() + config.data.iznanka.status = not config.data.iznanka.status + + config_save(config.data) + end, true, function() + var_0_163 = "iznanka" + end) + var_0_9.ToggleButtonTextGear("DoubleJump", var_0_67, function() + config.data.doublejump.status = not config.data.doublejump.status + + config_save(config.data) + end, true, function() + var_0_163 = "doublejump" + end) + var_0_9.ToggleButtonTextGear("Camhack", var_0_83, function() + config.data.camhack.status = not config.data.camhack.status + + config_save(config.data) + end, true, function() + var_0_163 = "camhack" + end) + var_0_9.ToggleButtonTextGear("Автоиспользование адреналина", var_0_72, function() + config.data.autoadr.status = not config.data.autoadr.status + + config_save(config.data) + end, true, function() + var_0_163 = "autoadr" + end) + var_0_9.ToggleButtonTextGear("Автоиспользование аптечек", var_0_85, function() + config.data.autohealme.status = not config.data.autohealme.status + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Показывать здоровье т/с", var_0_128, function() + config.data.dlcar.status = not config.data.dlcar.status + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Автоклист после спавна", var_0_75, function() + config.data.autoclist_after_spawn.status = not config.data.autoclist_after_spawn.status + + config_save(config.data) + end, true, function() + var_0_163 = "autoclist_after_spawn" + end) + var_0_9.ToggleButtonTextGear("Автоклист после капта", var_0_79, function() + config.data.autoclist_after_capt.status = not config.data.autoclist_after_capt.status + + config_save(config.data) + end, true, function() + var_0_163 = "autoclist_after_capt" + end) + var_0_9.ToggleButtonTextGear("Автоудаление парашюта", nopara_status, function() + config.data.NoPara.status = not config.data.NoPara.status + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Автозаправка и автопокупка канистры", var_0_127, function() + config.data.autofill.status = not config.data.autofill.status + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("ReplacingWindowWithNickName", ReplacingWindowWithNickName_status, function() + config.data.ReplacingWindowWithNickName.status = not config.data.ReplacingWindowWithNickName.status + + config_save(config.data) + ReplacingWindowWithNickName() + end) + var_0_9.Question("Заменяет имя окна на ник персонажа + сервер") + else + for iter_206_2, iter_206_3 in pairs(var_0_164) do + if var_0_163 == iter_206_2 then + if var_0_9.Button("Назад##multi.menu_func", var_0_9.ImVec2(390, 20)) then + var_0_163 = "" + end + + iter_206_3() + end + end + end + elseif var_0_158 == 6 then + if var_0_161 == "" then + var_0_9.ToggleButtonTextGear("Сбив анимации", var_0_88, function() + config.data.sbiv.status = not config.data.sbiv.status + + config_save(config.data) + end, true, function() + var_0_161 = "sbiv" + end) + var_0_9.ToggleButtonTextGear("Вспышка", var_0_90, function() + config.data.vspiwka.status = not config.data.vspiwka.status + + config_save(config.data) + end, true, function() + var_0_161 = "vspiwka" + end) + var_0_9.ToggleButtonTextGear("Быстрый хил грибами", var_0_93, function() + config.data.grib_heal.status = not config.data.grib_heal.status + + config_save(config.data) + end, true, function() + var_0_161 = "grib_heal" + end) + var_0_9.ToggleButtonTextGear("Быстрый RKT + сбив", var_0_95, function() + config.data.rkt.status = not config.data.rkt.status + + config_save(config.data) + end, true, function() + var_0_161 = "rkt" + end) + var_0_9.ToggleButtonTextGear("Быстрый FLIP + сбив", var_0_97, function() + config.data.flip.status = not config.data.flip.status + + config_save(config.data) + end, true, function() + var_0_161 = "flip" + end) + else + for iter_206_4, iter_206_5 in pairs(var_0_162) do + if var_0_161 == iter_206_4 then + if var_0_9.Button("Назад##multi.menu_func", var_0_9.ImVec2(390, 20)) then + var_0_161 = "" + end + + iter_206_5() + end + end + end + elseif var_0_158 == 7 then + if var_0_159 == "" then + var_0_9.ToggleButtonTextGear("Anti AFK", var_0_139, function() + config.data.antiafk.status = not config.data.antiafk.status + + config_save(config.data) + end) + var_0_9.Question("Работа игры в свёрнутом режиме.") + var_0_9.ToggleButtonTextGear("Бесконечный бег", var_0_140, function() + config.data.infinite_run.status = not config.data.infinite_run.status + + config_save(config.data) + end) + var_0_9.Question("Игрок не будет уставать от бега.") + var_0_9.ToggleButtonTextGear("160 HP Bar", var_0_142, function() + config.data.hpbar.status = not config.data.hpbar.status + + config_save(config.data) + end) + var_0_9.Question("Увеличивает хп бар до 160.") + var_0_9.ToggleButtonTextGear("Fast Connect", var_0_141, function() + config.data.fastconnect.status = not config.data.fastconnect.status + + config_save(config.data) + end) + var_0_9.Question("Позволяет быстро подключаться к серверу.") + var_0_9.ToggleButtonTextGear("Переворот авто", var_0_64, function() + config.data.perevorot.status = not config.data.perevorot.status + + config_save(config.data) + end, true, function() + var_0_159 = "perevorot" + end) + var_0_9.ToggleButtonTextGear("GM Колеса", var_0_143, function() + config.data.gmwheels.status = not config.data.gmwheels.status + + config_save(config.data) + end) + var_0_9.Question("Никто не сможет пробить ваши колеса.") + var_0_9.ToggleButtonTextGear("Беспалевный NoBike", var_0_150, function() + config.data.nobike.status = not config.data.nobike.status + + config_save(config.data) + end) + var_0_9.Question("Не даёт вам упасть с байка, если у вас зажата клавиша W или SHIFT.") + var_0_9.ToggleButtonTextGear("Anti Barrier", var_0_144, function() + config.data.antibarrier.status = not config.data.antibarrier.status + + config_save(config.data) + end) + var_0_9.Question("убирает все шлагбаумы.") + var_0_9.ToggleButtonTextGear("Anti Fall", var_0_146, function() + config.data.nofall.status = not config.data.nofall.status + + config_save(config.data) + end) + var_0_9.Question("анимация падения не будет проигрываться.") + var_0_9.ToggleButtonTextGear("Fast Deagle", var_0_152, function() + config.data.fastdeagle.status = not config.data.fastdeagle.status + + config_save(config.data) + end, true, function() + var_0_159 = "fastdeagle" + end) + var_0_9.Question("Ускоряет стрельбу с Дигла.") + var_0_9.ToggleButtonTextGear("Fast Spawn", var_0_147, function() + config.data.fastspawn.status = not config.data.fastspawn.status + + config_save(config.data) + end) + var_0_9.Question("Моментальный спавн после смерти.") + var_0_9.ToggleButtonTextGear("Удалять забор на ID 3", var_0_110, function() + config.data.remove_fence.status = not config.data.remove_fence.status + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("Удалять фонари", var_0_114, function() + config.data.remove_flashlight.status = not config.data.remove_flashlight.status + + config_save(config.data) + end) + var_0_9.ToggleButtonTextGear("ShowCrossHairInstantly", var_0_148, function() + config.data.schi.status = not config.data.schi.status + + config_save(config.data) + showCrosshairInstantlyPatch(config.data.schi.status) + end) + var_0_9.Question("Показывает игровой прицел сразу же после нажатия кнопки прицеливания.") + var_0_9.ToggleButtonTextGear("AutoBikeMotoRunSwimOnMaxSpeed", var_0_149, function() + config.data.AutoBikeMotoRunSwimOnMaxSpeed.status = not config.data.AutoBikeMotoRunSwimOnMaxSpeed.status + + config_save(config.data) + end) + var_0_9.Question("Скрипт будет нажимать за вас W, когда вы едете на любом виде т/с.\n\nАктивация:\nНа велосипеде: Зажать левый шифт\nНа мотоцикле/скутере/квадроцикле: Зажать левый шифт\nВо время бега: Зажать W + 1\nВо время плавания: Зажать 1") + var_0_9.ToggleButtonTextGear("Ускорение на мото с пассажиром", ArrowPassMotoBike_status, function() + config.data.ArrowPassMotoBike.status = not config.data.ArrowPassMotoBike.status + + config_save(config.data) + end) + else + for iter_206_6, iter_206_7 in pairs(var_0_160) do + if var_0_159 == iter_206_6 then + if var_0_9.Button("Назад##multi.menu_func", var_0_9.ImVec2(390, 20)) then + var_0_159 = "" + end + + iter_206_7() + end + end + end + end + + var_0_9.EndChild() + + if var_0_158 == 1 then + var_0_9.SetCursorPos(var_0_9.ImVec2(210, 390)) + var_0_9.LinkText("Cracked by treywisp (clickable)", "https://treywisp.com") + var_0_9.SetCursorPos(var_0_9.ImVec2(210, 405)) + var_0_9.Text("Неизвестно для чего нужно писать скрипт\nА после ставить защиту только с Luajit\nНу что сказать, развивайтесь") + end + + var_0_9.End() +end) + +function var_0_9.LinkText(arg_271_0, arg_271_1) + var_0_9.TextColoredRGB(arg_271_0) + + if var_0_9.IsItemClicked(0) then + os.execute(("start %s"):format(arg_271_1)) + end +end + +var_0_9.OnInitialize(function() + var_0_9.GetIO().IniFilename = nil + + var_0_9.SwitchContext() + mimguiStyle() + var_0_4.Init() +end) + +function var_0_9.ToggleButtonText(arg_273_0, arg_273_1, arg_273_2) + if var_0_9.ToggleButton(arg_273_0, arg_273_1) then + arg_273_2() + end + + var_0_9.SameLine() + var_0_9.SetCursorPosY(var_0_9.GetCursorPosY() + 1) + var_0_9.TextColoredRGB((not arg_273_1[0] and "{525252}" or "") .. arg_273_0) +end + +function var_0_9.TextColoredRGB(arg_274_0) + local var_274_0 = var_0_9.GetStyle().Colors + local var_274_1 = var_0_9.ImVec4 + + local function var_274_2(arg_275_0) + local var_275_0 = bit.band(bit.rshift(arg_275_0, 24), 255) + local var_275_1 = bit.band(bit.rshift(arg_275_0, 16), 255) + local var_275_2 = bit.band(bit.rshift(arg_275_0, 8), 255) + local var_275_3 = bit.band(arg_275_0, 255) + + return var_275_0, var_275_1, var_275_2, var_275_3 + end + + local function var_274_3(arg_276_0) + if arg_276_0:sub(1, 6):upper() == "SSSSSS" then + local var_276_0 = var_274_0[1].x + local var_276_1 = var_274_0[1].y + local var_276_2 = var_274_0[1].z + local var_276_3 = tonumber(arg_276_0:sub(7, 8), 16) or var_274_0[1].w * 255 + + return var_274_1(var_276_0, var_276_1, var_276_2, var_276_3 / 255) + end + + local var_276_4 = type(arg_276_0) == "string" and tonumber(arg_276_0, 16) or arg_276_0 + + if type(var_276_4) ~= "number" then + return + end + + local var_276_5, var_276_6, var_276_7, var_276_8 = var_274_2(var_276_4) + + return var_0_9.ImVec4(var_276_5 / 255, var_276_6 / 255, var_276_7 / 255, var_276_8 / 255) + end + + ;(function(arg_277_0) + for iter_277_0 in arg_277_0:gmatch("[^\r\n]+") do + local var_277_0 = {} + local var_277_1 = {} + local var_277_2 = 1 + + iter_277_0 = iter_277_0:gsub("{(......)}", "{%1FF}") + + while iter_277_0:find("{........}") do + local var_277_3, var_277_4 = iter_277_0:find("{........}") + local var_277_5 = var_274_3(iter_277_0:sub(var_277_3 + 1, var_277_4 - 1)) + + if var_277_5 then + var_277_0[#var_277_0], var_277_0[#var_277_0 + 1] = iter_277_0:sub(var_277_2, var_277_3 - 1), iter_277_0:sub(var_277_4 + 1, #iter_277_0) + var_277_1[#var_277_1 + 1] = var_277_5 + var_277_2 = var_277_3 + end + + iter_277_0 = iter_277_0:sub(1, var_277_3 - 1) .. iter_277_0:sub(var_277_4 + 1, #iter_277_0) + end + + if var_277_0[0] then + for iter_277_1 = 0, #var_277_0 do + var_0_9.TextColored(var_277_1[iter_277_1] or var_274_0[1], var_277_0[iter_277_1]) + var_0_9.SameLine(nil, 0) + end + + var_0_9.NewLine() + else + var_0_9.Text(iter_277_0) + end + end + end)(arg_274_0) +end + +function var_0_9.Question(arg_278_0) + if var_0_9.IsItemHovered() then + var_0_9.BeginTooltip() + var_0_9.PushTextWrapPos(450) + var_0_9.TextUnformatted(arg_278_0) + var_0_9.PopTextWrapPos() + var_0_9.EndTooltip() + end +end + +function var_0_9.ToggleButtonTextGear(arg_279_0, arg_279_1, arg_279_2, arg_279_3, arg_279_4) + if var_0_9.ToggleButton(arg_279_0, arg_279_1) then + arg_279_2() + end + + if arg_279_3 then + var_0_9.SameLine() + var_0_9.SetCursorPosY(var_0_9.GetCursorPosY() + 1) + var_0_9.Text(var_0_4.GEAR) + + if var_0_9.IsItemClicked() then + arg_279_4() + end + + var_0_9.SameLine() + var_0_9.TextColoredRGB((not arg_279_1[0] and "{525252}" or "") .. arg_279_0) + + if var_0_9.IsItemClicked() then + arg_279_4() + end + else + var_0_9.SameLine() + var_0_9.SetCursorPosY(var_0_9.GetCursorPosY() + 1) + var_0_9.TextColoredRGB("{525252}" .. var_0_4.GEAR) + var_0_9.SameLine() + var_0_9.TextColoredRGB((not arg_279_1[0] and "{525252}" or "") .. arg_279_0) + end +end + +local var_0_167 = {} +local var_0_168 = var_0_9.ColorConvertFloat4ToU32 + +function var_0_9.PageButton(arg_280_0, arg_280_1, arg_280_2, arg_280_3) + arg_280_3 = arg_280_3 or 190 + + local var_280_0 = 0.25 + local var_280_1 = var_0_9.GetWindowDrawList() + local var_280_2 = var_0_9.GetCursorScreenPos() + local var_280_3 = var_0_9.GetCursorPos() + local var_280_4 = var_0_9.GetStyle().Colors[var_0_9.Col.ButtonActive] + + if not var_0_167[arg_280_2] then + var_0_167[arg_280_2] = {} + end + + local var_280_5 = var_0_167[arg_280_2] + + var_0_9.PushStyleColor(var_0_9.Col.Button, var_0_9.ImVec4(0, 0, 0, 0)) + var_0_9.PushStyleColor(var_0_9.Col.ButtonHovered, var_0_9.ImVec4(0, 0, 0, 0)) + var_0_9.PushStyleColor(var_0_9.Col.ButtonActive, var_0_9.ImVec4(0, 0, 0, 0)) + + local var_280_6 = var_0_9.InvisibleButton(arg_280_2, var_0_9.ImVec2(arg_280_3, 35)) + + if var_280_6 and not arg_280_0 then + var_280_5.clock = os.clock() + end + + local var_280_7 = var_0_9.IsItemActive() + + var_0_9.PopStyleColor(3) + + if arg_280_0 then + if var_280_5.clock and var_280_0 > os.clock() - var_280_5.clock then + local var_280_8 = (os.clock() - var_280_5.clock) * (arg_280_3 / var_280_0) + + var_280_1:AddRectFilled(var_0_9.ImVec2(var_280_2.x, var_280_2.y), var_0_9.ImVec2(var_280_2.x + 190 - var_280_8, var_280_2.y + 35), 285212671, 15, 10) + var_280_1:AddRectFilled(var_0_9.ImVec2(var_280_2.x, var_280_2.y), var_0_9.ImVec2(var_280_2.x + 3, var_280_2.y + 35), var_0_168(var_280_4)) + var_280_1:AddRectFilled(var_0_9.ImVec2(var_280_2.x, var_280_2.y), var_0_9.ImVec2(var_280_2.x + var_280_8, var_280_2.y + 35), var_0_168(var_0_9.ImVec4(var_280_4.x, var_280_4.y, var_280_4.z, 0.6)), 15, 10) + else + var_280_1:AddRectFilled(var_0_9.ImVec2(var_280_2.x, var_280_7 and var_280_2.y + 3 or var_280_2.y), var_0_9.ImVec2(var_280_2.x + 5, var_280_7 and var_280_2.y + 32 or var_280_2.y + 35), var_0_168(var_280_4)) + var_280_1:AddRectFilled(var_0_9.ImVec2(var_280_2.x, var_280_2.y), var_0_9.ImVec2(var_280_2.x + 190, var_280_2.y + 35), var_0_168(var_0_9.ImVec4(var_280_4.x, var_280_4.y, var_280_4.z, 0.6)), 15, 10) + end + elseif var_0_9.IsItemHovered() then + var_280_1:AddRectFilled(var_0_9.ImVec2(var_280_2.x, var_280_2.y), var_0_9.ImVec2(var_280_2.x + 190, var_280_2.y + 35), 285212671, 15, 10) + end + + var_0_9.SameLine(10) + var_0_9.SetCursorPosY(var_280_3.y + 8) + + if arg_280_0 then + var_0_9.Text((" "):rep(3) .. arg_280_1) + var_0_9.SameLine(45) + var_0_9.Text(arg_280_2) + else + var_0_9.TextColored(var_0_9.ImVec4(0.6, 0.6, 0.6, 1), (" "):rep(3) .. arg_280_1) + var_0_9.SameLine(45) + var_0_9.TextColored(var_0_9.ImVec4(0.6, 0.6, 0.6, 1), arg_280_2) + end + + var_0_9.SetCursorPosY(var_280_3.y + 40) + + return var_280_6 +end + +function mimguiStyle() + local var_281_0 = var_0_9.GetStyle() + local var_281_1 = var_281_0.Colors + + var_281_0.Alpha = 1 + var_281_0.WindowPadding = var_0_9.ImVec2(8, 8) + var_281_0.WindowRounding = 7 + var_281_0.WindowBorderSize = 1 + var_281_0.WindowMinSize = var_0_9.ImVec2(32, 32) + var_281_0.WindowTitleAlign = var_0_9.ImVec2(0.5, 0.5) + var_281_0.ChildRounding = 0 + var_281_0.ChildBorderSize = 1 + var_281_0.PopupRounding = 0 + var_281_0.PopupBorderSize = 1 + var_281_0.FramePadding = var_0_9.ImVec2(4, 3) + var_281_0.FrameRounding = 0 + var_281_0.FrameBorderSize = 0 + var_281_0.ItemSpacing = var_0_9.ImVec2(8, 4) + var_281_0.ItemInnerSpacing = var_0_9.ImVec2(4, 4) + var_281_0.IndentSpacing = 21 + var_281_0.ScrollbarSize = 14 + var_281_0.ScrollbarRounding = 9 + var_281_0.GrabMinSize = 10 + var_281_0.GrabRounding = 0 + var_281_0.TabRounding = 4 + var_281_0.ButtonTextAlign = var_0_9.ImVec2(0.5, 0.5) + var_281_0.SelectableTextAlign = var_0_9.ImVec2(0, 0) + var_281_1[var_0_9.Col.Text] = var_0_9.ImVec4(1, 1, 1, 1) + var_281_1[var_0_9.Col.TextDisabled] = var_0_9.ImVec4(0.5, 0.5, 0.5, 1) + var_281_1[var_0_9.Col.WindowBg] = var_0_9.ImVec4(0.06, 0.06, 0.06, 0.94) + var_281_1[var_0_9.Col.ChildBg] = var_0_9.ImVec4(0, 0, 0, 0) + var_281_1[var_0_9.Col.PopupBg] = var_0_9.ImVec4(0.08, 0.08, 0.08, 0.94) + var_281_1[var_0_9.Col.Border] = var_0_9.ImVec4(0.43, 0.43, 0.5, 0.5) + var_281_1[var_0_9.Col.BorderShadow] = var_0_9.ImVec4(0, 0, 0, 0) + var_281_1[var_0_9.Col.FrameBg] = var_0_9.ImVec4(0.35, 0.37, 0.39, 0.54) + var_281_1[var_0_9.Col.FrameBgHovered] = var_0_9.ImVec4(0.34, 0.35, 0.35, 0.4) + var_281_1[var_0_9.Col.FrameBgActive] = var_0_9.ImVec4(0.45, 0.45, 0.45, 0.67) + var_281_1[var_0_9.Col.TitleBg] = var_0_9.ImVec4(0.06, 0.06, 0.06, 0.94) + var_281_1[var_0_9.Col.TitleBgActive] = var_0_9.ImVec4(0.06, 0.06, 0.06, 0.94) + var_281_1[var_0_9.Col.TitleBgCollapsed] = var_0_9.ImVec4(0.06, 0.06, 0.06, 0.94) + var_281_1[var_0_9.Col.MenuBarBg] = var_0_9.ImVec4(0.14, 0.14, 0.14, 1) + var_281_1[var_0_9.Col.ScrollbarBg] = var_0_9.ImVec4(0.02, 0.02, 0.02, 0.53) + var_281_1[var_0_9.Col.ScrollbarGrab] = var_0_9.ImVec4(0.31, 0.31, 0.31, 1) + var_281_1[var_0_9.Col.ScrollbarGrabHovered] = var_0_9.ImVec4(0.41, 0.41, 0.41, 1) + var_281_1[var_0_9.Col.ScrollbarGrabActive] = var_0_9.ImVec4(0.51, 0.51, 0.51, 1) + var_281_1[var_0_9.Col.CheckMark] = var_0_9.ImVec4(1, 1, 1, 1) + var_281_1[var_0_9.Col.SliderGrab] = var_0_9.ImVec4(1, 1, 1, 1) + var_281_1[var_0_9.Col.SliderGrabActive] = var_0_9.ImVec4(1, 1, 1, 1) + var_281_1[var_0_9.Col.Button] = var_0_9.ImVec4(0.53, 0.53, 0.53, 0.4) + var_281_1[var_0_9.Col.ButtonHovered] = var_0_9.ImVec4(0.19, 0.19, 0.19, 1) + var_281_1[var_0_9.Col.ButtonActive] = var_0_9.ImVec4(0.41, 0.41, 0.41, 1) + var_281_1[var_0_9.Col.Header] = var_0_9.ImVec4(0.56, 0.56, 0.56, 0.31) + var_281_1[var_0_9.Col.HeaderHovered] = var_0_9.ImVec4(0.39, 0.39, 0.39, 0.8) + var_281_1[var_0_9.Col.HeaderActive] = var_0_9.ImVec4(0.43, 0.43, 0.43, 1) + var_281_1[var_0_9.Col.Separator] = var_0_9.ImVec4(0.43, 0.43, 0.5, 0.5) + var_281_1[var_0_9.Col.SeparatorHovered] = var_0_9.ImVec4(0.48, 0.48, 0.48, 0.78) + var_281_1[var_0_9.Col.SeparatorActive] = var_0_9.ImVec4(0.26, 0.26, 0.26, 1) + var_281_1[var_0_9.Col.ResizeGrip] = var_0_9.ImVec4(0.4, 0.4, 0.4, 0.25) + var_281_1[var_0_9.Col.ResizeGripHovered] = var_0_9.ImVec4(0.51, 0.51, 0.51, 0.67) + var_281_1[var_0_9.Col.ResizeGripActive] = var_0_9.ImVec4(0.5, 0.5, 0.5, 0.95) + var_281_1[var_0_9.Col.Tab] = var_0_9.ImVec4(0.36, 0.36, 0.36, 0.86) + var_281_1[var_0_9.Col.TabHovered] = var_0_9.ImVec4(0.45, 0.45, 0.45, 0.8) + var_281_1[var_0_9.Col.TabActive] = var_0_9.ImVec4(0.51, 0.51, 0.51, 1) + var_281_1[var_0_9.Col.TabUnfocused] = var_0_9.ImVec4(0.07, 0.1, 0.15, 0.97) + var_281_1[var_0_9.Col.TabUnfocusedActive] = var_0_9.ImVec4(0.14, 0.26, 0.42, 1) + var_281_1[var_0_9.Col.PlotLines] = var_0_9.ImVec4(0.61, 0.61, 0.61, 1) + var_281_1[var_0_9.Col.PlotLinesHovered] = var_0_9.ImVec4(1, 0.43, 0.35, 1) + var_281_1[var_0_9.Col.PlotHistogram] = var_0_9.ImVec4(0.9, 0.7, 0, 1) + var_281_1[var_0_9.Col.PlotHistogramHovered] = var_0_9.ImVec4(1, 0.6, 0, 1) + var_281_1[var_0_9.Col.TextSelectedBg] = var_0_9.ImVec4(0.26, 0.59, 0.98, 0.35) + var_281_1[var_0_9.Col.DragDropTarget] = var_0_9.ImVec4(1, 1, 0, 0.9) + var_281_1[var_0_9.Col.NavHighlight] = var_0_9.ImVec4(0.26, 0.59, 0.98, 1) + var_281_1[var_0_9.Col.NavWindowingHighlight] = var_0_9.ImVec4(1, 1, 1, 0.7) + var_281_1[var_0_9.Col.NavWindowingDimBg] = var_0_9.ImVec4(0.8, 0.8, 0.8, 0.2) + var_281_1[var_0_9.Col.ModalWindowDimBg] = var_0_9.ImVec4(0.8, 0.8, 0.8, 0.35) +end + +function isKeyCanBePressed() + if sampIsDialogActive() or sampIsChatInputActive() or isSampfuncsConsoleActive() then + return false + end + + return true +end + +function msg(arg_283_0) + return sampAddChatMessage(string.format("{505050}[BIG MARA SALVATRUCHA]{ffffff} %s", arg_283_0), -1) +end + +function isKeysPressed(arg_284_0) + if arg_284_0 ~= nil then + if #arg_284_0 == 0 then + return + end + + local var_284_0 = 0 + + for iter_284_0 = 1, #arg_284_0 do + if iter_284_0 == #arg_284_0 then + if wasKeyPressed(arg_284_0[iter_284_0]) then + var_284_0 = var_284_0 + 1 + end + elseif isKeyDown(arg_284_0[iter_284_0]) then + var_284_0 = var_284_0 + 1 + end + end + + if var_284_0 == #arg_284_0 then + return true + end + end +end + +function wasReleased(arg_285_0) + if arg_285_0 ~= nil then + if #arg_285_0 == 0 then + return + end + + local var_285_0 = 0 + + for iter_285_0 = 1, #arg_285_0 do + if iter_285_0 == #arg_285_0 then + if wasKeyReleased(arg_285_0[iter_285_0]) then + var_285_0 = var_285_0 + 1 + end + elseif wasKeyReleased(arg_285_0[iter_285_0]) then + var_285_0 = var_285_0 + 1 + end + end + + if var_285_0 == #arg_285_0 then + return true + end + end +end + +function isKeysDown(arg_286_0) + local var_286_0 = 0 + + for iter_286_0 = 1, #arg_286_0 do + if iter_286_0 == #arg_286_0 then + if isKeyDown(arg_286_0[iter_286_0]) then + var_286_0 = var_286_0 + 1 + end + elseif isKeyDown(arg_286_0[iter_286_0]) then + var_286_0 = var_286_0 + 1 + end + end + + if var_286_0 == #arg_286_0 then + return true + end +end + +function var_0_9.TextQuestion(arg_287_0, arg_287_1) + var_0_9.TextDisabled(arg_287_0) + + if var_0_9.IsItemHovered() then + var_0_9.BeginTooltip() + var_0_9.PushTextWrapPos(600) + var_0_9.TextUnformatted(arg_287_1) + var_0_9.PopTextWrapPos() + var_0_9.EndTooltip() + end +end + +_utf8 = load("return function(utf8_func, in_encoding, out_encoding); if encoding == nil then; encoding = require(\"encoding\"); encoding.default = \"CP1251\"; u8 = encoding.UTF8; end; if type(utf8_func) ~= \"table\" then; return false; end; if AnsiToUtf8 == nil or Utf8ToAnsi == nil then; AnsiToUtf8 = function(text); return u8(text); end; Utf8ToAnsi = function(text); return u8:decode(text); end; end; if _UTF8_FUNCTION_SAVE == nil then; _UTF8_FUNCTION_SAVE = {}; end; local change_var = \"_G\"; for s = 1, #utf8_func do; change_var = string.format('%s[\"%s\"]', change_var, utf8_func[s]); end; if _UTF8_FUNCTION_SAVE[change_var] == nil then; _UTF8_FUNCTION = function(...); local pack = table.pack(...); readTable = function(t, enc); for k, v in next, t do; if type(v) == 'table' then; readTable(v, enc); else; if enc ~= nil and (enc == \"AnsiToUtf8\" or enc == \"Utf8ToAnsi\") then; if type(k) == \"string\" then; k = _G[enc](k); end; if type(v) == \"string\" then; t[k] = _G[enc](v); end; end; end; end; return t; end; return table.unpack(readTable({_UTF8_FUNCTION_SAVE[change_var](table.unpack(readTable(pack, in_encoding)))}, out_encoding)); end; local text = string.format(\"_UTF8_FUNCTION_SAVE['%s'] = %s; %s = _UTF8_FUNCTION;\", change_var, change_var, change_var); load(text)(); _UTF8_FUNCTION = nil; end; return true; end") + +function utf8(...) + pcall(_utf8(), ...) +end + +utf8({ + "print" +}, "Utf8ToAnsi") +utf8({ + "sampSetCurrentDialogEditboxText" +}, "Utf8ToAnsi") +utf8({ + "sampShowDialog" +}, "Utf8ToAnsi") +utf8({ + "sampSendChat" +}, "Utf8ToAnsi") +utf8({ + "sampAddChatMessage" +}, "Utf8ToAnsi") +utf8({ + "renderFontDrawText" +}, "Utf8ToAnsi") +utf8({ + "sampHasDialogRespond" +}, nil, "AnsiToUtf8") +utf8({ + "sampev", + "onShowDialog" +}, "AnsiToUtf8", "Utf8ToAnsi") +utf8({ + "sampev", + "onServerMessage" +}, "AnsiToUtf8", "Utf8ToAnsi") +utf8({ + "sampev", + "onCreate3DText" +}, "AnsiToUtf8", "Utf8ToAnsi") +utf8({ + "sampev", + "onSendCommand" +}, "AnsiToUtf8", "Utf8ToAnsi") +utf8({ + "sampev", + "onSendChat" +}, "AnsiToUtf8", "Utf8ToAnsi")