5595 lines
160 KiB
Lua
5595 lines
160 KiB
Lua
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")
|