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")