1. ---@diagnostic disable: undefined-global
  2. math.randomseed(tick())
  3. local library = loadstring(syn.request({
  4. Method = "GET",
  5. Url = "https://wednesday.wtf/ars/library.lua"
  6. }).Body)()
  7. local cheat = {
  8. aimbot = {
  9. info = {},
  10. },
  11. visuals = {
  12. info = {},
  13. tracers = {},
  14. zombies = {},
  15. events = {},
  16. chams = {}
  17. },
  18. guns = {
  19. restore = {},
  20. data = {},
  21. },
  22. objects = {},
  23. }
  24. if (getgenv().cheat) then
  25. for _, object in next, getgenv().cheat.objects do
  26. object:Remove()
  27. object = nil
  28. end
  29. getgenv().cheat = nil
  30. end
  31. local old_library = library
  32. getgenv().library = library
  33. getgenv().cheat = cheat
  34. cheat.draw = function(class, properties)
  35. local object = Drawing.new(class)
  36. for property, value in pairs(properties) do
  37. object[property] = value
  38. end
  39. cheat.objects[#cheat.objects + 1] = object
  40. return object
  41. end
  42. cheat.lerp = function(a,b,c)
  43. return a + (b-a) * c
  44. end
  45. cheat.bezier = function(p0,p1,p2,p3,t)
  46. local l1 = cheat.lerp(p0, p1, t)
  47. local l2 = cheat.lerp(p1, p2, t)
  48. local l3 = cheat.lerp(p2, p3, t)
  49. local a = cheat.lerp(l1, l2, t)
  50. local b = cheat.lerp(l2, l3, t)
  51. local cubic = cheat.lerp(a, b, t)
  52. return cubic
  53. end
  54. local physics = {}
  55. -- Local variable bypass..?
  56. (function()
  57. local sort =table.sort
  58. local atan2 =math.atan2
  59. local inf =math.huge
  60. local cos =math.cos
  61. local sin =math.sin
  62. local setmetatable =setmetatable
  63. local tick =tick
  64. local dot =Vector3.new().Dot
  65. local function rootreals4(a,b,c,d,e)
  66. local x0,x1,x2,x3
  67. local m10=3*a
  68. local m0=-b/(4*a)
  69. local m4=c*c-3*b*d+12*a*e
  70. local m6=(b*b/(4*a)-2/3*c)/a
  71. local m9=((b*(4*c-b*b/a))/a-(8*d))/a
  72. local m5=c*(2*c*c-9*b*d-72*a*e)+27*a*d*d+27*b*b*e
  73. local m11=m5*m5-4*m4*m4*m4
  74. local m7
  75. if m11<0 then--Optimize
  76. local th=atan2((-m11)^0.5,m5)/3
  77. local m=((m5*m5-m11)/4)^(1/6)
  78. m7=(m4/m+m)/m10*cos(th)
  79. else--MAY NEED CASE FOR WHEN 2*c*c*c-9*b*c*d+27*a*d*d+27*b*b*e-72*a*c*e+((2*c*c*c-9*b*c*d+27*a*d*d+27*b*b*e-72*a*c*e)^2-4*(c*c-3*b*d+12*a*e)^3)^(1/2)=0
  80. local m8=(m5+m11^0.5)/2
  81. m8=m8<0 and -(-m8)^(1/3) or m8^(1/3)
  82. m7=(m4/m8+m8)/m10
  83. end
  84. local m2=2*m6-m7
  85. --print("m2",m2,0)
  86. local m12=m6+m7
  87. if m12<0 then
  88. local m3i=m9/(4*(-m12)^0.5)
  89. local m13=(m3i*m3i+m2*m2)^(1/4)*cos(atan2(m3i,m2)/2)/2
  90. --In order
  91. x0=m0-m13
  92. x1=m0-m13
  93. x2=m0+m13
  94. x3=m0+m13
  95. else
  96. local m1=m12^0.5
  97. --print("m1",m1,0)
  98. local m3=m9/(4*m1)
  99. --print("m3",m3,0)
  100. local m14=m2-m3
  101. local m15=m2+m3
  102. if m14<0 then
  103. x0=m0-m1/2
  104. x1=m0-m1/2
  105. else
  106. local m16=m14^0.5
  107. x0=m0-(m1+m16)/2
  108. x1=m0-(m1-m16)/2
  109. end
  110. if m15<0 then
  111. x2=m0+m1/2
  112. x3=m0+m1/2
  113. else
  114. local m17=m15^0.5
  115. x2=m0+(m1-m17)/2
  116. x3=m0+(m1+m17)/2
  117. end
  118. --bubble sort lel
  119. if x1<x0 then x0,x1=x1,x0 end
  120. if x2<x1 then x1,x2=x2,x1 end
  121. if x3<x2 then x2,x3=x3,x2 end
  122. if x1<x0 then x0,x1=x1,x0 end
  123. if x2<x1 then x1,x2=x2,x1 end
  124. if x1<x0 then x0,x1=x1,x0 end
  125. end
  126. return x0,x1,x2,x3
  127. end
  128. local function rootreals3(a,b,c,d)
  129. local x0,x1,x2
  130. local d0=b*b-3*a*c
  131. local d1=2*b*b*b+27*a*a*d-9*a*b*c
  132. local d=d1*d1-4*d0*d0*d0
  133. local m0=-1/(3*a)
  134. if d<0 then
  135. local cr,ci=d1/2,(-d)^0.5/2
  136. local th=atan2(ci,cr)/3
  137. local m=(cr*cr+ci*ci)^(1/6)
  138. local cr,ci=m*cos(th),m*sin(th)
  139. local m1=(1+d0/(m*m))/2
  140. local m2=(cr*d0+(cr-2*b)*m*m)/(6*a*m*m)
  141. local m3=ci*(d0+m*m)/(2*3^0.5*a*m*m)
  142. x0=-(b+cr*(1+d0/(m*m)))/(3*a)
  143. x1=m2-m3
  144. x2=m2+m3
  145. else
  146. local c3=(d1+d^0.5)/2
  147. c=c3<0 and -(-c3)^(1/3) or c3^(1/3)
  148. x0=m0*(b+c+d0/c)
  149. x1=m0*(b-(c*c+d0)/(2*c))
  150. x2=x1
  151. end
  152. if x1<x0 then x0,x1=x1,x0 end
  153. if x2<x1 then x1,x2=x2,x1 end
  154. if x1<x0 then x0,x1=x1,x0 end
  155. return x0,x1,x2
  156. end
  157. local function rootreals2(a,b,c)
  158. local p=-b/(2*a)
  159. local q2=p*p-c/a
  160. if 0<q2 then
  161. local q=q2^0.5
  162. return p-q,p+q
  163. else
  164. return p,p
  165. end
  166. end
  167. local solvemoar
  168. local function solve(a,b,c,d,e)
  169. if a*a<1e-32 then
  170. return solve(b,c,d,e)
  171. elseif e then
  172. if e*e<1e-32 then
  173. return solvemoar(a,b,c,d)
  174. elseif b*b<1e-12 and d*d<1e-12 then
  175. local roots={}
  176. local found={}
  177. local r0,r1=solve(a,c,e)
  178. if r0 then
  179. if r0>0 then
  180. local x=r0^0.5
  181. roots[#roots+1]=-x
  182. roots[#roots+1]=x
  183. elseif r0*r0<1e-32 then
  184. roots[#roots+1]=0
  185. end
  186. end
  187. if r1 then
  188. if r1>0 then
  189. local x=r1^0.5
  190. roots[#roots+1]=-x
  191. roots[#roots+1]=x
  192. elseif r1*r1<1e-32 then
  193. roots[#roots+1]=0
  194. end
  195. end
  196. sort(roots)
  197. return unpack(roots)
  198. else
  199. local roots={}
  200. local found={}
  201. local x0,x1,x2,x3=rootreals4(a,b,c,d,e)
  202. local d0,d1,d2=rootreals3(4*a,3*b,2*c,d)
  203. local m0,m1,m2,m3,m4=-inf,d0,d1,d2,inf
  204. local l0,l1,l2,l3,l4=a*inf,(((a*d0+b)*d0+c)*d0+d)*d0+e,(((a*d1+b)*d1+c)*d1+d)*d1+e,(((a*d2+b)*d2+c)*d2+d)*d2+e,a*inf
  205. if (l0<=0)==(0<=l1) then
  206. if (not roots[#roots + 1]) then
  207. return
  208. end
  209. roots[#roots+1]=x0
  210. found[x0]=true
  211. end
  212. if (l1<=0)==(0<=l2) and not found[x1] then
  213. roots[#roots+1]=x1
  214. found[x1]=true
  215. end
  216. if (l2<=0)==(0<=l3) and not found[x2] then
  217. roots[#roots+1]=x2
  218. found[x2]=true
  219. end
  220. if (l3<=0)==(0<=l4) and not found[x3] then
  221. roots[#roots+1]=x3
  222. end
  223. return unpack(roots)
  224. end
  225. elseif d then
  226. if d*d<1e-32 then
  227. return solvemoar(a,b,c)
  228. elseif b*b<1e-12 and c*c<1e-12 then
  229. local p=d/a
  230. return p<0 and (-p)^(1/3) or -p^(1/3)
  231. else
  232. local roots={}
  233. local found={}
  234. local x0,x1,x2=rootreals3(a,b,c,d)
  235. local d0,d1=rootreals2(3*a,2*b,c)
  236. local l0,l1,l2,l3=-a*inf,((a*d0+b)*d0+c)*d0+d,((a*d1+b)*d1+c)*d1+d,a*inf
  237. if (l0<=0)==(0<=l1) then
  238. roots[#roots+1]=x0
  239. found[x0]=true
  240. end
  241. if (l1<=0)==(0<=l2) and not found[x1] then
  242. roots[#roots+1]=x1
  243. found[x1]=true
  244. end
  245. if (l2<=0)==(0<=l3) and not found[x2] then
  246. roots[#roots+1]=x2
  247. end
  248. return unpack(roots)
  249. end
  250. elseif c then
  251. local p=-b/(2*a)
  252. local q2=p*p-c/a
  253. if 0<q2 then
  254. local q=q2^0.5
  255. return p-q,p+q
  256. elseif q2==0 then
  257. return p
  258. end
  259. elseif b then
  260. if a*a>1e-32 then
  261. return -b/a
  262. end
  263. end
  264. end
  265. function solvemoar(a,b,c,d,e)
  266. local roots={solve(a,b,c,d,e)}
  267. local good=true
  268. for i=1,#roots do
  269. if roots[i]==0 then
  270. good=false
  271. break
  272. end
  273. end
  274. if good then
  275. roots[#roots+1]=0
  276. sort(roots)
  277. end
  278. return unpack(roots)
  279. end
  280. function physics.time_to_hit(tp, ps, sp, g)
  281. local d = (tp - sp).Magnitude
  282. return ps / g + math.sqrt(2 * d / g + ps ^ 2 / g ^ 2) -- It feels like cheating to use ^ as pow & not xor lol
  283. end
  284. function physics.trajectory(pp,pv,pa,tp,tv,ta,s)
  285. local rp=tp-pp
  286. local rv=tv-pv
  287. local ra=ta-pa
  288. local t0,t1,t2,t3=solve(
  289. dot(ra,ra)/4,
  290. dot(ra,rv),
  291. dot(ra,rp)+dot(rv,rv)-s*s,
  292. 2*dot(rp,rv),
  293. dot(rp,rp)
  294. )
  295. if t0 and t0>0 then
  296. return ra*t0/2+tv+rp/t0,t0
  297. elseif t1 and t1>0 then
  298. return ra*t1/2+tv+rp/t1,t1
  299. elseif t2 and t2>0 then
  300. return ra*t2/2+tv+rp/t2,t2
  301. elseif t3 and t3>0 then
  302. return ra*t3/2+tv+rp/t3,t3
  303. end
  304. end
  305. end)()
  306. local framework = require(game:GetService("ReplicatedFirst").Framework) -- Mother of all modules
  307. local modules = {
  308. ["steppers"] = framework.require("Classes", "Steppers"),
  309. ["interface"] = framework.require("Libraries", "Interface"),
  310. ["keybinds"] = framework.require("Libraries", "Keybinds"),
  311. ["raycasting"] = framework.require("Libraries", "Raycasting"),
  312. ["stepped_springs"] = framework.require("Classes", "SteppedSprings"),
  313. ["maids"] = framework.require("Classes", "Maids"),
  314. ["springs"] = framework.require("Classes", "Springs"),
  315. ["old_springs"] = framework.require("Classes", "OldSprings"),
  316. ["signals"] = framework.require("Classes", "Signals"),
  317. ["resources"] = framework.require("Libraries", "Resources"),
  318. ["characters_require"] = framework.require("Classes", "Characters"),
  319. ["lighting_require"] = framework.require("Libraries", "Lighting"),
  320. ["camera"] = framework.require("Libraries", "Cameras"),
  321. ["world"] = framework.require("Libraries", "World"),
  322. ["gun_builder"] = framework.require("Libraries", "GunBuilder"),
  323. ["network"] = framework.require("Libraries", "Network"),
  324. ["item_data"] = framework.require("Configs", "ItemData"),
  325. ["bullets"] = framework.require("Libraries", "Bullets"),
  326. ["players_require"] = framework.require("Classes", "Players")
  327. }
  328. -- CENSORED
  329. local function copy_table(tbl) -- lua.org
  330. local type = typeof(tbl)
  331. local copy = {}
  332. if (type == "table") then
  333. for key, value in next, tbl, nil do
  334. copy[copy_table(key)] = copy_table(value)
  335. end
  336. setmetatable(copy, copy_table(getmetatable(tbl)))
  337. else
  338. copy = tbl
  339. end
  340. return copy
  341. end
  342. cheat.guns.data = (function()
  343. local copy = {}
  344. for key, value in next, framework.require("Configs", "ItemData") do
  345. if (value["Type"] == "Firearm") then
  346. copy[key] = value
  347. end
  348. end
  349. return copy
  350. end)()
  351. for key, value in next, cheat.guns.data do
  352. if (value["Type"] ~= "Firearm") then
  353. cheat.guns.data[key] = nil
  354. end
  355. end
  356. cheat.guns.restore = copy_table(cheat.guns.data)
  357. local function mod_guns(property, multiplier, parent)
  358. for gun_name, gun in next, cheat.guns.data do
  359. if (typeof(multiplier) == "table") then
  360. if (parent and gun[parent]) then
  361. setreadonly(gun[parent], false)
  362. setreadonly(gun[parent][property], false)
  363. gun[parent][property] = (not multiplier["data"] and cheat.guns.restore[gun_name][parent][property]) or multiplier["data"]
  364. setreadonly(gun[parent], true)
  365. setreadonly(gun[parent][property], true)
  366. elseif (gun[property]) then
  367. setreadonly(gun, false)
  368. setreadonly(gun[property], false)
  369. gun[property] = (not multiplier["data"] and cheat.guns.restore[gun_name][property]) or multiplier["data"]
  370. setreadonly(gun, true)
  371. setreadonly(gun[property], true)
  372. end
  373. continue
  374. end
  375. if (parent and gun[parent]) then
  376. setreadonly(gun[parent], false)
  377. gun[parent][property] = (multiplier ~= -1 and cheat.guns.restore[gun_name][parent][property] * multiplier) or cheat.guns.restore[gun_name][parent][property]
  378. setreadonly(gun[parent], true)
  379. elseif (gun[property]) then
  380. setreadonly(gun, false)
  381. gun[property] = (multiplier ~= -1 and cheat.guns.restore[gun_name][property] * multiplier) or cheat.guns.restore[gun_name][property]
  382. setreadonly(gun, true)
  383. end
  384. end
  385. end
  386. local local_player = game:GetService("Players").LocalPlayer
  387. local current_camera = game:GetService("Workspace").CurrentCamera
  388. local random_title_list = {
  389. "🐛",
  390. "🐞",
  391. "🔥",
  392. "🔫",
  393. "🔪",
  394. "🔨",
  395. "🔧",
  396. "🔩",
  397. "🔗",
  398. "🔖",
  399. "😱",
  400. "😈",
  401. "😎",
  402. "😍",
  403. "😘",
  404. "😗",
  405. "😙",
  406. }
  407. local random_title = random_title_list[math.random(1, #random_title_list)]
  408. local window = {
  409. ["main"] = library:new_window(random_title.. " ars.red ".. random_title),
  410. ["tabs"] = {},
  411. ["sections"] = {},
  412. ["indicators"] = {},
  413. }
  414. window["tabs"]["aimbot"] = window.main:new_tab("Aimbot")
  415. window["tabs"]["visuals"] = window.main:new_tab("Visuals")
  416. window["tabs"]["misc"] = window.main:new_tab("Miscellaneous")
  417. window["tabs"]["settings"] = window.main:new_tab("Settings")
  418. library:apply_settings(window["tabs"]["settings"])
  419. window["sections"]["aimbot_main"] = window.tabs.aimbot:new_group("Main", false)
  420. window.sections["aimbot_main"]:new_checkbox("aimbot_enabled", {
  421. text = "Enabled",
  422. default = false,
  423. })
  424. window["sections"]["aimbot_hitboxes"] = window.tabs.aimbot:new_group("Hitboxes", true)
  425. window.sections["aimbot_hitboxes"]:new_list("aimbot_hitboxes", {
  426. text = "Hitbox Selection",
  427. values = {
  428. "Head",
  429. "Torso",
  430. "Arms",
  431. "Legs",
  432. },
  433. multi = true,
  434. default = {
  435. "Head",
  436. }
  437. })
  438. window["sections"]["aimbot_mouse"] = window.tabs.aimbot:new_group("Mouse", true)
  439. window.sections["aimbot_mouse"]:new_checkbox("aimbot_mouse_enabled", {
  440. text = "Mouse Aimbot",
  441. default = false
  442. }):add_keybind("aimbot_mouse_enabled_hold", {
  443. mode = "Hold",
  444. default = "MouseButton2"
  445. })
  446. window.sections["aimbot_mouse"]:new_slider("aimbot_mouse_fov", {
  447. text = "Mouse FOV",
  448. min = 0,
  449. max = 180,
  450. decimals = 1,
  451. suffix = "°",
  452. default = 0
  453. })
  454. window.sections["aimbot_mouse"]:new_slider("aimbot_mouse_smoothing", {
  455. text = "Mouse Smoothing",
  456. min = 0.0,
  457. max = 1.0,
  458. decimals = 2,
  459. default = 0.1,
  460. suffix = "s"
  461. })
  462. window.sections["aimbot_mouse"]:new_slider("aimbot_mouse_jitter", {
  463. text = "Mouse Jitter",
  464. min = 0,
  465. max = 0.2,
  466. decimals = 2,
  467. default = 0,
  468. suffix = "s"
  469. })
  470. window["sections"]["aimbot_silent"] = window.tabs.aimbot:new_group("Silent", true)
  471. window.sections["aimbot_silent"]:new_checkbox("aimbot_silent_enabled", {
  472. text = "Silent Aimbot",
  473. default = false
  474. }):add_keybind("aimbot_silent_enabled_hold", {
  475. mode = "Hold",
  476. default = "MouseButton2"
  477. })
  478. window.sections["aimbot_silent"]:new_checkbox("aimbot_silent_magic_bullets", {
  479. text = "Silent Magic Bullets",
  480. default = false
  481. }):add_keybind("aimbot_silent_magic_bullets_hold", {
  482. mode = "Hold",
  483. default = Enum.KeyCode.E
  484. })
  485. window.sections["aimbot_silent"]:new_slider("aimbot_silent_fov", {
  486. text = "Silent FOV",
  487. min = 0,
  488. max = 180,
  489. decimals = 1,
  490. suffix = "°",
  491. default = 0
  492. })
  493. window.sections["aimbot_silent"]:new_slider("aimbot_silent_magic_bullet_depth", {
  494. text = "Magic Bullet Depth",
  495. min = 0,
  496. max = 7,
  497. decimals = 0,
  498. suffix = " studs",
  499. default = 5
  500. })
  501. window.sections["aimbot_silent"]:new_slider("aimbot_silent_hitchance", {
  502. text = "Silent Hitchance",
  503. min = 0,
  504. max = 100,
  505. decimals = 1,
  506. suffix = "%",
  507. default = 100
  508. })
  509. window.sections["aimbot_silent"]:new_slider("aimbot_silent_accuracy", {
  510. text = "Silent Accuracy",
  511. min = 0,
  512. max = 100,
  513. decimals = 1,
  514. suffix = "%",
  515. default = 100
  516. })
  517. window["sections"]["aimbot_distance"] = window.tabs.aimbot:new_group("Distance", false)
  518. window.sections["aimbot_distance"]:new_slider("aimbot_player_max_distance", {
  519. text = "Player Distance",
  520. min = 0,
  521. max = 2500,
  522. decimals = 1,
  523. default = 2000
  524. })
  525. window["sections"]["visuals_main"] = window.tabs.visuals:new_group("Main", false)
  526. window.sections["visuals_main"]:new_checkbox("visuals_enabled", {
  527. text = "Enabled",
  528. default = false
  529. }):add_keybind("visuals_enabled_toggle", {
  530. mode = "Toggle",
  531. default = nil
  532. })
  533. window["sections"]["visuals_distance"] = window.tabs.visuals:new_group("Distance", false)
  534. window.sections["visuals_distance"]:new_slider("visuals_player_max_distance", {
  535. text = "Player Distance",
  536. min = 0,
  537. max = 10000,
  538. decimals = 0,
  539. default = 2000,
  540. suffix = " studs"
  541. })
  542. window.sections["visuals_distance"]:new_slider("visuals_boss_max_distance", {
  543. text = "Boss Distance",
  544. min = 0,
  545. max = 10000,
  546. decimals = 0,
  547. default = 2000,
  548. suffix = " studs"
  549. })
  550. window.sections["visuals_distance"]:new_slider("visuals_event_max_distance", {
  551. text = "Event Distance",
  552. min = 0,
  553. max = 10000,
  554. decimals = 0,
  555. default = 2000,
  556. suffix = " studs"
  557. })
  558. window["sections"]["visuals_preference"] = window.tabs.visuals:new_group("Preference", false)
  559. window.sections["visuals_preference"]:new_list("visuals_preferred_measurement", {
  560. text = "Preferred Measurement",
  561. values = {
  562. "Roblox",
  563. "Imperial",
  564. "Metric",
  565. },
  566. default = "Roblox"
  567. })
  568. window.sections["visuals_preference"]:new_list("visuals_preferred_boxes", {
  569. text = "Preferred Boxes",
  570. values = {
  571. "Static",
  572. "Dynamic"
  573. },
  574. default = "Dynamic",
  575. })
  576. window["sections"]["visuals_players"] = window.tabs.visuals:new_group("Players", true)
  577. window.sections["visuals_players"]:new_checkbox("visuals_boxes", {
  578. text = "Boxes",
  579. default = false
  580. }):add_colorpicker("visuals_boxes_color", {
  581. text = "Box Color",
  582. default = {
  583. color = Color3.fromRGB(255, 255, 255),
  584. transparency = 0
  585. }
  586. })
  587. window.sections["visuals_players"]:new_checkbox("visuals_skeletons", {
  588. text = "Skeletons",
  589. default = false
  590. }):add_colorpicker("visuals_skeletons_color", {
  591. text = "Skeletons Color",
  592. default = {
  593. color = Color3.fromRGB(255, 255, 255),
  594. transparency = 0
  595. }
  596. })
  597. window.sections["visuals_players"]:new_checkbox("visuals_health_bars", {
  598. text = "Health Bars",
  599. default = false
  600. }):add_colorpicker("visuals_health_bars_color", {
  601. text = "Health Bar Color",
  602. default = {
  603. color = Color3.fromRGB(0, 255, 0),
  604. transparency = 0
  605. }
  606. })
  607. window.sections["visuals_players"]:new_checkbox("visuals_health_bars_boost", {
  608. text = "Health Bars Boost",
  609. }):add_colorpicker("visuals_health_bars_boost_color", {
  610. text = "Health Bar Color",
  611. default = {
  612. color = Color3.fromRGB(0, 175, 0),
  613. transparency = 0
  614. }
  615. })
  616. window.sections["visuals_players"]:new_checkbox("visuals_health_bar_text", {
  617. text = "Health Bar Text",
  618. default = false
  619. }):add_colorpicker("visuals_health_bar_text_color", {
  620. text = "Health Bar Text Color",
  621. default = {
  622. color = Color3.fromRGB(0, 0, 0),
  623. transparency = 0
  624. }
  625. })
  626. window.sections["visuals_players"]:new_checkbox("visuals_names", {
  627. text = "Names",
  628. default = false
  629. }):add_colorpicker("visuals_names_color", {
  630. text = "Names Color",
  631. default = {
  632. color = Color3.fromRGB(0, 0, 0),
  633. transparency = 0
  634. }
  635. })
  636. window.sections["visuals_players"]:new_checkbox("visuals_display_names", {
  637. text = "Display Names",
  638. default = false
  639. })
  640. window.sections["visuals_players"]:new_checkbox("visuals_active_weapon", {
  641. text = "Active Weapon",
  642. default = false
  643. }):add_colorpicker("visuals_active_weapon_color", {
  644. text = "Active Weapon Color",
  645. default = {
  646. color = Color3.fromRGB(0, 0, 0),
  647. transparency = 0
  648. }
  649. })
  650. window.sections["visuals_players"]:new_checkbox("visuals_distance", {
  651. text = "Distance",
  652. default = false
  653. }):add_colorpicker("visuals_distance_color", {
  654. text = "Distance Color",
  655. default = {
  656. color = Color3.fromRGB(0, 0, 0),
  657. transparency = 0
  658. }
  659. })
  660. window.sections["visuals_players"]:new_checkbox("visuals_oof_arrows", {
  661. text = "Out Of View Arrows",
  662. default = false
  663. }):add_colorpicker("visuals_oof_arrows_color", {
  664. text = "Out Of View Arrows Color",
  665. default = {
  666. color = Color3.fromRGB(255, 255, 255),
  667. transparency = 0
  668. }
  669. })
  670. window.sections["visuals_players"]:new_slider("visuals_oof_arrows_radius", {
  671. text = "Arrows Radius",
  672. min = 100,
  673. max = 400,
  674. decimals = 0,
  675. default = 100,
  676. suffix = "px"
  677. })
  678. window.sections["visuals_players"]:new_checkbox("visuals_view_tracer", {
  679. text = "View Tracer",
  680. default = false
  681. }):add_colorpicker("visuals_view_tracer_color", {
  682. text = "View Tracer Color",
  683. default = {
  684. color = Color3.fromRGB(79, 220, 255),
  685. transparency = 0
  686. }
  687. })
  688. window.sections["visuals_players"]:new_slider("visuals_view_tracer_length", {
  689. text = "Tracer Length",
  690. min = 0,
  691. max = 100,
  692. decimals = 1,
  693. default = 10,
  694. suffix = " studs"
  695. })
  696. window["sections"]["visuals_chams"] = window.tabs.visuals:new_group("Chams", true)
  697. window.sections["visuals_chams"]:new_checkbox("visuals_visible_chams", {
  698. text = "Visible Chams",
  699. default = false
  700. }):add_colorpicker("visuals_visible_chams_color", {
  701. text = "Visible Chams Color",
  702. default = {
  703. color = Color3.fromRGB(255, 0, 0),
  704. transparency = 0
  705. }
  706. })
  707. window.sections["visuals_chams"]:new_checkbox("visuals_occluded_chams", {
  708. text = "Occluded Chams",
  709. default = false
  710. }):add_colorpicker("visuals_occluded_chams_color", {
  711. text = "Occluded Chams Color",
  712. default = {
  713. color = Color3.fromRGB(79, 220, 255),
  714. transparency = 0
  715. }
  716. })
  717. window.sections["visuals_chams"]:new_checkbox("visuals_outline_chams", {
  718. text = "Outline Chams",
  719. default = false
  720. }):add_colorpicker("visuals_outline_chams_color", {
  721. text = "Outline Chams Color",
  722. default = {
  723. color = Color3.fromRGB(255, 255, 255),
  724. transparency = 0
  725. }
  726. })
  727. window["sections"]["visuals_bosses"] = window.tabs.visuals:new_group("Bosses", true)
  728. window.sections["visuals_bosses"]:new_checkbox("visuals_boss_boxes", {
  729. text = "Boxes",
  730. default = false
  731. }):add_colorpicker("visuals_boss_boxes_color", {
  732. text = "Box Color",
  733. default = {
  734. color = Color3.fromRGB(255, 255, 255),
  735. transparency = 0
  736. }
  737. })
  738. window.sections["visuals_bosses"]:new_checkbox("visuals_boss_names", {
  739. text = "Names",
  740. default = false
  741. }):add_colorpicker("visuals_boss_names_color", {
  742. text = "Names Color",
  743. default = {
  744. color = Color3.fromRGB(0, 0, 0),
  745. transparency = 0
  746. }
  747. })
  748. window["sections"]["visuals_events"] = window.tabs.visuals:new_group("Events", true)
  749. window.sections["visuals_events"]:new_checkbox("visuals_event_names", {
  750. text = "Names",
  751. default = false
  752. }):add_colorpicker("visuals_event_names_color", {
  753. text = "Event Color",
  754. default = {
  755. color = Color3.fromRGB(0, 0, 0),
  756. transparency = 0
  757. }
  758. })
  759. window["sections"]["visuals_bullets"] = window.tabs.visuals:new_group("Bullets", false)
  760. window.sections["visuals_bullets"]:new_checkbox("visuals_bullet_tracers", {
  761. text = "Bullet Tracers",
  762. default = false
  763. }):add_colorpicker("visuals_bullet_tracers_color", {
  764. text = "Tracer Color",
  765. default = {
  766. color = Color3.fromRGB(255, 255, 255),
  767. transparency = 0
  768. }
  769. })
  770. window.sections["visuals_bullets"]:new_checkbox("visuals_bullet_tracers_face_camera", {
  771. text = "Tracers Face Camera",
  772. default = false
  773. })
  774. window.sections["visuals_bullets"]:new_list("visuals_bullet_tracers_texture", {
  775. text = "Tracers Type",
  776. values = {
  777. "Lightning",
  778. "Smoke"
  779. },
  780. default = "Lightning"
  781. })
  782. window.sections["visuals_bullets"]:new_slider("visuals_bullet_tracers_thickness", {
  783. text = "Tracer Thickness",
  784. min = 0,
  785. max = 1,
  786. decimals = 1,
  787. default = 0.2,
  788. suffix = " studs"
  789. })
  790. window["sections"]["visuals_local"] = window.tabs.visuals:new_group("Local", false)
  791. window.sections["visuals_local"]:new_checkbox("visuals_mouse_fov", {
  792. text = "Mouse FOV",
  793. default = false
  794. }):add_colorpicker("visuals_mouse_fov_color", {
  795. text = "Mouse FOV Color",
  796. default = {
  797. color = Color3.fromRGB(255, 255, 255),
  798. transparency = 0
  799. }
  800. })
  801. window.sections["visuals_local"]:new_checkbox("visuals_silent_fov", {
  802. text = "Silent FOV",
  803. default = false
  804. }):add_colorpicker("visuals_silent_fov_color", {
  805. text = "Silent FOV Color",
  806. default = {
  807. color = Color3.fromRGB(79, 220, 255),
  808. transparency = 0
  809. }
  810. })
  811. window.sections["visuals_local"]:new_checkbox("visuals_crosshair", {
  812. text = "Crosshair",
  813. default = false
  814. }):add_colorpicker("visuals_crosshair_color", {
  815. text = "Crosshair Color",
  816. default = {
  817. color = Color3.fromRGB(255, 255, 255),
  818. transparency = 0
  819. }
  820. })
  821. window.sections["visuals_local"]:new_checkbox("visuals_crosshair_rotate", {
  822. text = "Crosshair Rotate",
  823. default = false
  824. })
  825. window.sections["visuals_local"]:new_slider("visuals_crosshair_width", {
  826. text = "Crosshair Width",
  827. min = 0,
  828. max = 10,
  829. decimals = 0,
  830. default = 3,
  831. suffix = "px"
  832. })
  833. window["sections"]["visuals_lighting"] = window.tabs.visuals:new_group("Lighting", true)
  834. window.sections["visuals_lighting"]:new_checkbox("misc_full_bright", {
  835. text = "Full Bright",
  836. default = false
  837. })
  838. window["sections"]["misc_main"] = window.tabs.misc:new_group("Main", false)
  839. window.sections["misc_main"]:new_checkbox("misc_enabled", {
  840. text = "Enabled",
  841. default = false
  842. })
  843. window["sections"]["misc_movement"] = window.tabs.misc:new_group("Movement", true)
  844. window.sections["misc_movement"]:new_checkbox("misc_fly", {
  845. text = "Fly",
  846. default = false
  847. }):add_keybind("misc_fly_toggle", {
  848. mode = "Toggle",
  849. default = Enum.KeyCode.G
  850. })
  851. window.sections["misc_movement"]:new_slider("misc_fly_speed", {
  852. text = "Fly Speed",
  853. min = 0,
  854. max = 1000,
  855. decimals = 1,
  856. default = 10,
  857. suffix = " stud/s"
  858. })
  859. window.sections["misc_movement"]:new_checkbox("misc_speed", {
  860. text = "Speed",
  861. default = false
  862. }):add_keybind("misc_speed_toggle", {
  863. mode = "Toggle",
  864. default = Enum.KeyCode.H
  865. })
  866. window.sections["misc_movement"]:new_slider("misc_speed_velocity", {
  867. text = "Speed Velocity",
  868. min = 0,
  869. max = 1000,
  870. decimals = 1,
  871. default = 10,
  872. suffix = " stud/s"
  873. })
  874. window.sections["misc_movement"]:new_checkbox("misc_jitter_fix", {
  875. text = "Jitter Fix",
  876. default = false,
  877. unsafe = true
  878. })
  879. window["sections"]["misc_spoof"] = window.tabs.misc:new_group("Spoof Status", true)
  880. window.sections["misc_spoof"]:new_checkbox("misc_spoof_status", {
  881. text = "Spoof Status",
  882. default = false
  883. })
  884. window.sections["misc_spoof"]:new_checkbox("misc_spoof_falling", {
  885. text = "Spoof Falling",
  886. default = false
  887. })
  888. window["sections"]["misc_zombies"] = window.tabs.misc:new_group("Zombies", true)
  889. window.sections["misc_zombies"]:new_checkbox("misc_zombie_freezer", {
  890. text = "Zombie Freezer",
  891. default = false
  892. })
  893. window.sections["misc_zombies"]:new_checkbox("misc_zombie_remover", {
  894. text = "Zombie Remover",
  895. default = false
  896. })
  897. window.sections["misc_zombies"]:new_list("misc_zombie_remover_mode", {
  898. text = "Zombie Remover Mode",
  899. values = {
  900. "Delete",
  901. "Teleport"
  902. },
  903. default = "Delete"
  904. })
  905. window.sections["misc_zombies"]:new_checkbox("misc_zombie_circle", {
  906. text = "Zombie Circle",
  907. default = false
  908. })
  909. window.sections["misc_zombies"]:new_slider("misc_zombie_circle_radius", {
  910. text = "Zombie Radius",
  911. min = 7,
  912. max = 100,
  913. decimals = 1,
  914. default = 10,
  915. suffix = " studs"
  916. })
  917. window.sections["misc_zombies"]:new_slider("misc_zombie_circle_speed", {
  918. text = "Zombie Speed",
  919. min = 1,
  920. max = 10000,
  921. decimals = 1,
  922. default = 500,
  923. suffix = " rpm"
  924. })
  925. window["sections"]["misc_bosses"] = window.tabs.misc:new_group("Bosses", true)
  926. window.sections["misc_bosses"]:new_checkbox("misc_boss_freezer", {
  927. text = "Boss Freezer",
  928. default = false
  929. })
  930. window["sections"]["misc_animations"] = window.tabs.misc:new_group("Animations", false)
  931. window.sections["misc_animations"]:new_list("misc_animation_category", {
  932. text = "Animation Category",
  933. values = (function()
  934. local values = {}
  935. for _, category in next, game:GetService("ReplicatedStorage").Assets.Animations:GetChildren() do
  936. values[#values + 1] = category.Name
  937. end
  938. return values
  939. end)(),
  940. default = "Idle",
  941. callback = function(value)
  942. if (not value or value == "") then
  943. return
  944. end
  945. options["misc_animation"]:set_values((function()
  946. local values = {}
  947. for _, category in next, game:GetService("ReplicatedStorage").Assets.Animations[value]:GetChildren() do
  948. values[#values + 1] = category.Name
  949. end
  950. return values
  951. end)())
  952. options["misc_animation"]:set_value("")
  953. end
  954. })
  955. window.sections["misc_animations"]:new_list("misc_animation", {
  956. text = "Animation",
  957. values = {},
  958. default = ""
  959. })
  960. window.sections["misc_animations"]:new_slider("misc_animation_duration", {
  961. text = "Animation Duration",
  962. min = 0,
  963. max = 300,
  964. decimals = 1,
  965. default = 60,
  966. suffix = "s"
  967. })
  968. window.sections["misc_animations"]:new_button({
  969. text = "Play Animation",
  970. callback = function()
  971. task.spawn(function()
  972. local animation_category = flags["misc_animation_category"]
  973. local animation_name = flags["misc_animation"]
  974. local duration = flags["misc_animation_duration"]
  975. if (not animation_category or animation_category == "") then
  976. return
  977. end
  978. if (not animation_name or animation_name == "") then
  979. return
  980. end
  981. local animation = game:GetService("ReplicatedStorage").Assets.Animations[animation_category][animation_name]
  982. if (not game:GetService("Players").LocalPlayer.Character) then
  983. return
  984. end
  985. local animator = game:GetService("Players").LocalPlayer.Character.Humanoid.Animator
  986. if (not animation) then
  987. return
  988. end
  989. if (not animator) then
  990. return
  991. end
  992. local loaded_animation = animator:LoadAnimation(animation)
  993. modules["players_require"]:get().Character.Animator:PlayAnimationReplicated(animation_category.. ".".. animation_name)
  994. task.wait(duration > 0 and duration or loaded_animation.Length)
  995. if (not modules["players_require"]:get().Character) then
  996. return
  997. end
  998. modules["players_require"]:get().Character.Animator:StopAnimationReplicated(animation_category.. ".".. animation_name, true)
  999. end)
  1000. end
  1001. }):add_keybind("misc_animation_bind", {
  1002. mode = "Toggle",
  1003. default = Enum.KeyCode.LeftAlt,
  1004. callback = function()
  1005. task.spawn(function()
  1006. local animation_category = flags["misc_animation_category"]
  1007. local animation_name = flags["misc_animation"]
  1008. local duration = flags["misc_animation_duration"]
  1009. if (not animation_category or animation_category == "") then
  1010. return
  1011. end
  1012. if (not animation_name or animation_name == "") then
  1013. return
  1014. end
  1015. local animation = game:GetService("ReplicatedStorage").Assets.Animations[animation_category][animation_name]
  1016. if (not game:GetService("Players").LocalPlayer.Character) then
  1017. return
  1018. end
  1019. local animator = game:GetService("Players").LocalPlayer.Character.Humanoid.Animator
  1020. if (not animation) then
  1021. return
  1022. end
  1023. if (not animator) then
  1024. return
  1025. end
  1026. local loaded_animation = animator:LoadAnimation(animation)
  1027. modules["players_require"]:get().Character.Animator:PlayAnimationReplicated(animation_category.. ".".. animation_name)
  1028. task.wait(duration > 0 and duration or loaded_animation.Length)
  1029. if (not modules["players_require"]:get().Character) then
  1030. return
  1031. end
  1032. modules["players_require"]:get().Character.Animator:StopAnimationReplicated(animation_category.. ".".. animation_name, true)
  1033. end)
  1034. end
  1035. })
  1036. window["sections"]["misc_gun_mods"] = window.tabs.misc:new_group("Gun Mods", false)
  1037. window.sections["misc_gun_mods"]:new_checkbox("misc_enabled_weapon_mods", {
  1038. text = "Enabled",
  1039. default = false
  1040. })
  1041. window.sections["misc_gun_mods"]:new_checkbox("misc_spread_mod_enabled", {
  1042. text = "No Spread",
  1043. default = false
  1044. })
  1045. window.sections["misc_gun_mods"]:new_checkbox("misc_firemode_all", {
  1046. text = "All Firemodes",
  1047. default = false,
  1048. callback = function(value)
  1049. if (flags["misc_enabled"] and flags["misc_enabled_weapon_mods"]) then
  1050. if (value) then
  1051. mod_guns("FireModes", { data = {"Semiautomatic", "Automatic", "Burst"} }, nil)
  1052. else
  1053. mod_guns("FireModes", {}, nil)
  1054. end
  1055. end
  1056. end
  1057. })
  1058. window.sections["misc_gun_mods"]:new_checkbox("misc_recoil_mod_enabled", {
  1059. text = "Recoil Modifier",
  1060. default = false,
  1061. callback = function(value)
  1062. if (flags["misc_enabled"] and flags["misc_enabled_weapon_mods"] and value) then
  1063. local recoil = flags["misc_weapon_recoil"]
  1064. mod_guns("KickUpBounce", recoil, "RecoilData")
  1065. mod_guns("KickUpForce", recoil, "RecoilData")
  1066. mod_guns("KickUpSpeed", recoil, "RecoilData")
  1067. mod_guns("KickUpGunInfluence", recoil, "RecoilData")
  1068. mod_guns("KickUpCameraInfluence", recoil, "RecoilData")
  1069. mod_guns("RaiseInfluence", recoil, "RecoilData")
  1070. mod_guns("RaiseBounce", recoil, "RecoilData")
  1071. mod_guns("RaiseSpeed", recoil, "RecoilData")
  1072. mod_guns("RaiseForce", recoil, "RecoilData")
  1073. mod_guns("ShiftGunInfluence", recoil, "RecoilData")
  1074. mod_guns("ShiftBounce", recoil, "RecoilData")
  1075. mod_guns("ShiftCameraInfluence", recoil, "RecoilData")
  1076. mod_guns("ShiftForce", recoil, "RecoilData")
  1077. else
  1078. mod_guns("KickUpBounce", -1, "RecoilData")
  1079. mod_guns("KickUpForce", -1, "RecoilData")
  1080. mod_guns("KickUpSpeed", -1, "RecoilData")
  1081. mod_guns("KickUpGunInfluence", -1, "RecoilData")
  1082. mod_guns("KickUpCameraInfluence", -1, "RecoilData")
  1083. mod_guns("RaiseInfluence", -1, "RecoilData")
  1084. mod_guns("RaiseBounce", -1, "RecoilData")
  1085. mod_guns("RaiseSpeed", -1, "RecoilData")
  1086. mod_guns("RaiseForce", -1, "RecoilData")
  1087. mod_guns("ShiftGunInfluence", -1, "RecoilData")
  1088. mod_guns("ShiftBounce", -1, "RecoilData")
  1089. mod_guns("ShiftCameraInfluence", -1, "RecoilData")
  1090. mod_guns("ShiftForce", -1, "RecoilData")
  1091. end
  1092. end
  1093. })
  1094. window.sections["misc_gun_mods"]:new_slider("misc_weapon_recoil", {
  1095. text = "Multiplier",
  1096. min = 0,
  1097. max = 1,
  1098. decimals = 2,
  1099. default = 1,
  1100. suffix = "x",
  1101. callback = function(value)
  1102. if (flags["misc_enabled"] and flags["misc_enabled_weapon_mods"] and flags["misc_recoil_mod_enabled"]) then
  1103. mod_guns("KickUpBounce", value, "RecoilData")
  1104. mod_guns("KickUpForce", value, "RecoilData")
  1105. mod_guns("KickUpSpeed", value , "RecoilData")
  1106. mod_guns("KickUpGunInfluence", value, "RecoilData")
  1107. mod_guns("KickUpCameraInfluence", value, "RecoilData")
  1108. mod_guns("RaiseInfluence", value, "RecoilData")
  1109. mod_guns("RaiseBounce", value, "RecoilData")
  1110. mod_guns("RaiseSpeed", value , "RecoilData")
  1111. mod_guns("RaiseForce", value, "RecoilData")
  1112. mod_guns("ShiftGunInfluence", value, "RecoilData")
  1113. mod_guns("ShiftBounce", value, "RecoilData")
  1114. mod_guns("ShiftCameraInfluence", value, "RecoilData")
  1115. mod_guns("ShiftForce", value, "RecoilData")
  1116. end
  1117. end
  1118. })
  1119. -- window.sections["misc_gun_mods"]:new_slider({
  1120. -- Text = "Weapon Fire Rate",
  1121. -- flag = "misc_weapon_fire_rate",
  1122. -- Min = 1,
  1123. -- Max = 10,
  1124. -- Rounding = .1,
  1125. -- Default = 1,
  1126. -- suffix = "x",
  1127. -- callback = function()
  1128. -- if (Toggles["misc_enabled"] and Toggles["misc_enabled_weapon_mods"] and Toggles["misc_recoil_mod_enabled"]) then
  1129. -- mod_guns("FireRate", Toggles["misc_weapon_fire_rate"], "FireConfig")
  1130. -- end
  1131. -- end
  1132. -- })
  1133. -- window.sections["misc_gun_mods"]:new_checkbox({
  1134. -- Text = "Fire Burst Modifier",
  1135. -- flag = "misc_fire_burst_mod_enabled",
  1136. -- callback = function()
  1137. -- if (Toggles["misc_enabled"] and Toggles["misc_enabled_weapon_mods"] and Toggles["misc_fire_burst_mod_enabled"]) then
  1138. -- mod_guns("BurstCount", Toggles["misc_weapon_burst_count"], "FireConfig")
  1139. -- else
  1140. -- mod_guns("BurstCount", -1, "FireConfig")
  1141. -- end
  1142. -- end
  1143. -- })
  1144. -- window.sections["misc_gun_mods"]:new_slider({
  1145. -- Text = "Weapon Burt Count",
  1146. -- flag = "misc_weapon_burst_count",
  1147. -- Min = 3,
  1148. -- Max = 10,
  1149. -- Rounding = 1,
  1150. -- Default = 3,
  1151. -- suffix = "x",
  1152. -- callback = function()
  1153. -- if (Toggles["misc_enabled"] and Toggles["misc_enabled_weapon_mods"] and Toggles["misc_fire_burst_mod_enabled"]) then
  1154. -- mod_guns("BurstCount", Toggles["misc_weapon_burst_count"], "FireConfig")
  1155. -- end
  1156. -- end
  1157. -- })
  1158. window["sections"]["misc_teleports"] = window.tabs.misc:new_group("Teleports", false)
  1159. window.sections["misc_teleports"]:new_list("misc_corpses", {
  1160. text = "Corpses",
  1161. values = (function()
  1162. local filtered_corpses = {}
  1163. for _, corpse in next, game:GetService("Workspace").Corpses:GetChildren() do
  1164. if (corpse.Name ~= "Zombie") then
  1165. table.insert(filtered_corpses, corpse.Name)
  1166. end
  1167. end
  1168. return filtered_corpses
  1169. end)(),
  1170. default = "",
  1171. callback = function(value)
  1172. if (not value) then return end
  1173. if (flags["misc_enabled"]) then
  1174. local corpse = game:GetService("Workspace").Corpses:FindFirstChild(value)
  1175. if (corpse) then
  1176. local character = local_player.Character
  1177. if (character) then
  1178. local humanoid = character:FindFirstChild("HumanoidRootPart")
  1179. local corpse_humanoid = corpse:FindFirstChild("HumanoidRootPart")
  1180. if (humanoid and corpse_humanoid) then
  1181. cheat.teleport_bypass = true
  1182. repeat task.wait() until cheat.teleport_bypass_ran
  1183. -- CENSORED
  1184. cheat.teleport_bypass = false
  1185. end
  1186. end
  1187. end
  1188. end
  1189. end,
  1190. ignore = true
  1191. })
  1192. window.sections["misc_teleports"]:new_list("misc_players", {
  1193. text = "Players",
  1194. values = (function()
  1195. local filtered_people = {}
  1196. for _, person in next, game:GetService("Players"):GetPlayers() do
  1197. if (person ~= local_player) then
  1198. table.insert(filtered_people, person.Name)
  1199. end
  1200. end
  1201. return filtered_people
  1202. end)(),
  1203. default = "",
  1204. callback = function(value)
  1205. if (not value) then return end
  1206. if (flags["misc_enabled"]) then
  1207. local player = game:GetService("Players"):FindFirstChild(value)
  1208. if (player) then
  1209. local character = local_player.Character
  1210. if (character and player.Character) then
  1211. local humanoid = character:FindFirstChild("HumanoidRootPart")
  1212. local player_humanoid = player.Character:FindFirstChild("HumanoidRootPart")
  1213. if (humanoid and player_humanoid) then
  1214. cheat.teleport_bypass = true
  1215. repeat task.wait() until cheat.teleport_bypass_ran
  1216. -- CENSORED
  1217. cheat.teleport_bypass = false
  1218. end
  1219. end
  1220. end
  1221. end
  1222. end,
  1223. ignore = true
  1224. })
  1225. window.sections["misc_teleports"]:new_list("misc_places", {
  1226. text = "Places",
  1227. values = (function()
  1228. local filtered_locations = {}
  1229. for _, location in next, game:GetService("Workspace").Locations:GetChildren() do
  1230. table.insert(filtered_locations, location.Name)
  1231. end
  1232. return filtered_locations
  1233. end)(),
  1234. default = "",
  1235. callback = function(value)
  1236. if (not value) then return end
  1237. if (flags["misc_enabled"]) then
  1238. local location = game:GetService("Workspace").Locations:FindFirstChild(value)
  1239. if (location) then
  1240. local character = local_player.Character
  1241. if (character) then
  1242. local humanoid = character:FindFirstChild("HumanoidRootPart")
  1243. if (humanoid) then
  1244. cheat.teleport_bypass = true
  1245. repeat task.wait() until cheat.teleport_bypass_ran
  1246. -- CENSORED
  1247. cheat.teleport_bypass = false
  1248. end
  1249. end
  1250. end
  1251. end
  1252. end,
  1253. ignore = true
  1254. })
  1255. function cheat:safe_call(func)
  1256. pcall(func, function()
  1257. return false
  1258. end)
  1259. return true
  1260. end
  1261. local connections = {}
  1262. local function corpse_remove()
  1263. if (not getgenv().library or getgenv().library ~= old_library) then
  1264. connections["corpse_remove"]:Disconnect()
  1265. return
  1266. end
  1267. getgenv().options["misc_corpses"]:set_values((function()
  1268. local filtered_corpses = {}
  1269. for _, corpse in next, game:GetService("Workspace").Corpses:GetChildren() do
  1270. if (corpse.Name ~= "Zombie") then
  1271. table.insert(filtered_corpses, corpse.Name)
  1272. end
  1273. end
  1274. return filtered_corpses
  1275. end)())
  1276. end
  1277. connections["corpse_remove"] = game:GetService("Workspace").Corpses.ChildRemoved:Connect(function() cheat:safe_call(corpse_remove) end)
  1278. local function player_removing()
  1279. if (not getgenv().library or getgenv().library ~= old_library) then
  1280. connections["player_removing"]:Disconnect()
  1281. return
  1282. end
  1283. getgenv().options["misc_players"]:set_values((function()
  1284. local filtered_people = {}
  1285. for _, person in next, game:GetService("Players"):GetPlayers() do
  1286. if (person ~= local_player) then
  1287. table.insert(filtered_people, person.Name)
  1288. end
  1289. end
  1290. return filtered_people
  1291. end)())
  1292. end
  1293. connections["player_removing"] = game:GetService("Players").PlayerRemoving:Connect(function() cheat:safe_call(player_removing) end)
  1294. local function corpse_added()
  1295. if (not getgenv().library or getgenv().library ~= old_library) then
  1296. connections["corpse_added"]:Disconnect()
  1297. return
  1298. end
  1299. getgenv().options["misc_corpses"]:set_values((function()
  1300. local filtered_corpses = {}
  1301. for _, corpse in next, game:GetService("Workspace").Corpses:GetChildren() do
  1302. if (corpse.Name ~= "Zombie") then
  1303. table.insert(filtered_corpses, corpse.Name)
  1304. end
  1305. end
  1306. return filtered_corpses
  1307. end)())
  1308. end
  1309. connections["corpse_added"] = game:GetService("Workspace").Corpses.ChildAdded:Connect(function() cheat:safe_call(corpse_added) end)
  1310. local function player_added()
  1311. if (not getgenv().library or getgenv().library ~= old_library) then
  1312. connections["player_added"]:Disconnect()
  1313. return
  1314. end
  1315. getgenv().options["misc_players"]:set_values((function()
  1316. local filtered_people = {}
  1317. for _, person in next, game:GetService("Players"):GetPlayers() do
  1318. if (person ~= local_player) then
  1319. table.insert(filtered_people, person.Name)
  1320. end
  1321. end
  1322. return filtered_people
  1323. end)())
  1324. end
  1325. connections["player_added"] = game:GetService("Players").PlayerAdded:Connect(function() cheat:safe_call(player_added) end)
  1326. function cheat:detour(name, loc, func)
  1327. local old_function = nil
  1328. -- HACK: Saves usless local variable
  1329. if (cheat:safe_call(function()
  1330. old_function = loc[name]
  1331. loc[name] = newcclosure(function(...)
  1332. if (not getgenv().library or getgenv().library ~= old_library) then
  1333. loc[name] = old_function
  1334. return old_function(...)
  1335. end
  1336. return func(old_function, ...)
  1337. end)
  1338. end)) then
  1339. -- library:Notify("Detoured " .. name, 1)
  1340. else
  1341. error("Failed to detour " .. name)
  1342. end
  1343. end
  1344. function cheat:render_stepped(priority, func, unload)
  1345. game:GetService("RunService"):BindToRenderStep(tostring(func), priority, function()
  1346. if (not getgenv().library or getgenv().library ~= old_library) then
  1347. game:GetService("RunService"):UnbindFromRenderStep(tostring(func))
  1348. if (unload) then
  1349. unload()
  1350. end
  1351. return
  1352. end
  1353. func()
  1354. end)
  1355. end
  1356. function cheat:heart_beat(func, unload)
  1357. local connection
  1358. connection = game:GetService("RunService").Heartbeat:Connect(function(delta)
  1359. if (not getgenv().library or getgenv().library ~= old_library) then
  1360. connection:Disconnect()
  1361. if (unload) then
  1362. unload()
  1363. end
  1364. return
  1365. end
  1366. func(delta)
  1367. end)
  1368. end
  1369. local function calculate_box(player)
  1370. -- Fixes the red dot causing boxes to be much bigger than they should be
  1371. if (player.Character:FindFirstChild("Equipped")) then
  1372. local equipped = player.Character.Equipped:GetDescendants()
  1373. for _, part in next, equipped do
  1374. if (string.find(part.Name, "Laser")) then
  1375. part.Position = player.Character:FindFirstChild("Head").Position
  1376. end
  1377. end
  1378. end
  1379. if (flags["visuals_preferred_boxes"] == "Dynamic") then
  1380. local position = player.Character:GetBoundingBox()
  1381. local size = player.Character:GetExtentsSize()
  1382. local maxs = (position * CFrame.new(size / 2)).Position
  1383. local mins = (position * CFrame.new(size / -2)).Position
  1384. local points = {
  1385. Vector3.new(mins.X, mins.Y, mins.Z),
  1386. Vector3.new(mins.X, maxs.Y, mins.Z),
  1387. Vector3.new(maxs.X, maxs.Y, mins.Z),
  1388. Vector3.new(maxs.X, mins.Y, mins.Z),
  1389. Vector3.new(maxs.X, maxs.Y, maxs.Z),
  1390. Vector3.new(mins.X, maxs.Y, maxs.Z),
  1391. Vector3.new(mins.X, mins.Y, maxs.Z),
  1392. Vector3.new(maxs.X, mins.Y, maxs.Z)
  1393. };
  1394. local visible = true
  1395. for idx, point in next, points do
  1396. points[idx], visible = current_camera:WorldToViewportPoint(point)
  1397. end
  1398. if (not visible) then
  1399. return
  1400. end
  1401. local left = math.huge
  1402. local right = 0
  1403. local top = math.huge
  1404. local bottom = 0
  1405. for _, point in next, points do
  1406. if (point.X < left) then
  1407. left = point.X
  1408. end
  1409. if (point.X > right) then
  1410. right = point.X
  1411. end
  1412. if (point.Y < top) then
  1413. top = point.Y
  1414. end
  1415. if (point.Y > bottom) then
  1416. bottom = point.Y
  1417. end
  1418. end
  1419. return {
  1420. ["X"] = math.floor(left),
  1421. ["Y"] = math.floor(top),
  1422. ["W"] = math.floor(right - left),
  1423. ["H"] = math.floor(bottom - top)
  1424. }
  1425. else
  1426. local camera_cframe = current_camera.CFrame
  1427. local player_parts = player.Character
  1428. if (not player_parts) then return end
  1429. local torso_cframe = player_parts.HumanoidRootPart.CFrame
  1430. local matrix_top = (torso_cframe.Position + Vector3.new(0, 0.3, 0)) + (torso_cframe.UpVector * 1.5) + camera_cframe.UpVector
  1431. local matrix_bottom = (torso_cframe.Position + Vector3.new(0, 0.4, 0)) - (torso_cframe.UpVector * 3)
  1432. local top, top_is_visible = current_camera:WorldToViewportPoint(matrix_top)
  1433. local bottom, bottom_is_visible = current_camera:WorldToViewportPoint(matrix_bottom)
  1434. if (not top_is_visible and not bottom_is_visible) then return end
  1435. local width = math.floor(math.abs(top.X - bottom.X))
  1436. local height = math.floor(math.max(math.abs(bottom.Y - top.Y), width * 0.6))
  1437. local box_size = Vector2.new(math.floor(math.max(height / 1.7, width * 1.8)), height)
  1438. local box_position = Vector2.new(math.floor(top.X * 0.5 + bottom.X * 0.5 - box_size.X * 0.5), math.floor(math.min(top.Y, bottom.Y)))
  1439. return {
  1440. ["X"] = box_position.X,
  1441. ["Y"] = box_position.Y,
  1442. ["W"] = box_size.X,
  1443. ["H"] = box_size.Y
  1444. }
  1445. end
  1446. end
  1447. local squad_list = {}
  1448. cheat:render_stepped(0, function(delta)
  1449. current_camera = game:GetService("Workspace").CurrentCamera
  1450. squad_list = {}
  1451. for _, template in next, local_player.PlayerGui["Interface Main"].PlayerList.MainList.SquadList.ScrollingFrame:GetChildren() do
  1452. if (template.Name == "SquadTemplate") then
  1453. local player_name = template.NameButton.NameLabelBin.NameLabel.text
  1454. squad_list[player_name] = true
  1455. end
  1456. end
  1457. end)
  1458. cheat:render_stepped(1, function(delta)
  1459. for _, player in next, game:GetService("Players"):GetPlayers() do
  1460. local skeleton_order = {
  1461. ["LeftFoot"] = "LeftLowerLeg",
  1462. ["LeftLowerLeg"] = "LeftUpperLeg",
  1463. ["LeftUpperLeg"] = "LowerTorso",
  1464. ["RightFoot"] = "RightLowerLeg",
  1465. ["RightLowerLeg"] = "RightUpperLeg",
  1466. ["RightUpperLeg"] = "LowerTorso",
  1467. ["LeftHand"] = "LeftLowerArm",
  1468. ["LeftLowerArm"] = "LeftUpperArm",
  1469. ["LeftUpperArm"] = "UpperTorso",
  1470. ["RightHand"] = "RightLowerArm",
  1471. ["RightLowerArm"] = "RightUpperArm",
  1472. ["RightUpperArm"] = "UpperTorso",
  1473. ["LowerTorso"] = "UpperTorso",
  1474. ["UpperTorso"] = "Head"
  1475. }
  1476. if (player == local_player) then
  1477. continue
  1478. end
  1479. if (not player.Character) then
  1480. if (cheat.visuals.info[player.Name]) then
  1481. for _, object in next, cheat.visuals.info[player.Name] do
  1482. object.Visible = false
  1483. end
  1484. end
  1485. continue
  1486. end
  1487. if (not local_player.Character) then
  1488. if (cheat.visuals.info[player.Name]) then
  1489. for _, object in next, cheat.visuals.info[player.Name] do
  1490. object.Visible = false
  1491. end
  1492. end
  1493. continue
  1494. end
  1495. if (squad_list[player.Name]) then
  1496. if (cheat.visuals.info[player.Name]) then
  1497. for _, object in next, cheat.visuals.info[player.Name] do
  1498. object.Visible = false
  1499. end
  1500. end
  1501. continue
  1502. end
  1503. local character = player.Character
  1504. local humanoid = character:FindFirstChildOfClass("Humanoid")
  1505. local stats = character:FindFirstChild("Stats")
  1506. if (not humanoid or not stats) then
  1507. if (cheat.visuals.info[player.Name]) then
  1508. for _, object in next, cheat.visuals.info[player.Name] do
  1509. object.Visible = false
  1510. end
  1511. end
  1512. continue
  1513. end
  1514. if (humanoid.Health <= 0) then
  1515. if (cheat.visuals.info[player.Name]) then
  1516. for _, object in next, cheat.visuals.info[player.Name] do
  1517. object.Visible = false
  1518. end
  1519. end
  1520. continue
  1521. end
  1522. if (not character:FindFirstChild("HumanoidRootPart") or not local_player.Character:FindFirstChild("HumanoidRootPart")) then
  1523. if (cheat.visuals.info[player.Name]) then
  1524. for _, object in next, cheat.visuals.info[player.Name] do
  1525. object.Visible = false
  1526. end
  1527. end
  1528. continue
  1529. end
  1530. if ((character.HumanoidRootPart.Position - local_player.Character.HumanoidRootPart.Position).Magnitude > flags["visuals_player_max_distance"]) then
  1531. if (cheat.visuals.info[player.Name]) then
  1532. for _, object in next, cheat.visuals.info[player.Name] do
  1533. object.Visible = false
  1534. end
  1535. end
  1536. continue
  1537. end
  1538. local box = calculate_box(player)
  1539. local info = cheat.visuals.info[player.Name]
  1540. if (not flags["visuals_enabled"] and not flags["visuals_enabled_toggle"].state) then
  1541. if (info) then
  1542. for _, object in next, info do
  1543. object.Visible = false
  1544. end
  1545. end
  1546. continue
  1547. end
  1548. if (not info) then
  1549. cheat.visuals.info[player.Name] = {}
  1550. cheat.visuals.info[player.Name]["box_outside"] = cheat.draw("Square", {
  1551. Color = Color3.new(0, 0, 0),
  1552. Thickness = 1,
  1553. Transparency = math.clamp(-(flags["visuals_boxes_color"].transparency) + 1 - 0.5, 0, 1),
  1554. Filled = false
  1555. })
  1556. cheat.visuals.info[player.Name]["box"] = cheat.draw("Square", {
  1557. Color = flags["visuals_boxes_color"].color,
  1558. Thickness = 1,
  1559. Transparency = -(flags["visuals_boxes_color"].transparency) + 1,
  1560. Filled = false
  1561. })
  1562. cheat.visuals.info[player.Name]["box_inside"] = cheat.draw("Square", {
  1563. Color = Color3.new(0, 0, 0),
  1564. Thickness = 1,
  1565. Transparency = math.clamp(-(flags["visuals_boxes_color"].transparency) + 1 - 0.5, 0, 1),
  1566. Filled = false
  1567. })
  1568. cheat.visuals.info[player.Name]["health_bar_outside"] = cheat.draw("Square", {
  1569. Color = Color3.new(0, 0, 0),
  1570. Thickness = 1,
  1571. Transparency = math.clamp(-(flags["visuals_health_bars_color"].transparency) + 1 - 0.5, 0, 1),
  1572. Filled = true
  1573. })
  1574. cheat.visuals.info[player.Name]["health_bar"] = cheat.draw("Square", {
  1575. Color = flags["visuals_health_bars_color"].color,
  1576. Thickness = 1,
  1577. Transparency = -(flags["visuals_health_bars_color"].transparency) + 1,
  1578. Filled = true
  1579. })
  1580. cheat.visuals.info[player.Name]["health_bar_boost"] = cheat.draw("Square", {
  1581. Color = flags["visuals_health_bars_boost_color"].color,
  1582. Thickness = 1,
  1583. Transparency = math.clamp(-(flags["visuals_health_bars_boost_color"].transparency) + 1 - 0.5, 0, 1),
  1584. Filled = true
  1585. })
  1586. cheat.visuals.info[player.Name]["health_bar_text"] = cheat.draw("Text", {
  1587. Color = Color3.new(1, 1, 1),
  1588. OutlineColor = flags["visuals_health_bar_text_color"].color,
  1589. Center = false,
  1590. Outline = true,
  1591. Size = 13,
  1592. Transparency = -(flags["visuals_health_bar_text_color"].transparency) + 1,
  1593. Font = 2
  1594. })
  1595. cheat.visuals.info[player.Name]["name"] = cheat.draw("Text", {
  1596. Color = Color3.new(1, 1, 1),
  1597. OutlineColor = flags["visuals_names_color"].color,
  1598. Center = true,
  1599. Outline = true,
  1600. Size = 13,
  1601. Transparency = math.clamp(-(flags["visuals_names_color"].transparency) + 1 - 0.5, 0, 1),
  1602. Font = 2
  1603. })
  1604. cheat.visuals.info[player.Name]["active_weapon"] = cheat.draw("Text", {
  1605. Color = Color3.new(1, 1, 1),
  1606. OutlineColor = flags["visuals_active_weapon_color"].color,
  1607. Center = true,
  1608. Outline = true,
  1609. Size = 13,
  1610. Transparency = -(flags["visuals_active_weapon_color"].transparency) + 1,
  1611. Font = 2
  1612. })
  1613. cheat.visuals.info[player.Name]["view_tracer"] = cheat.draw("Line", {
  1614. Color = flags["visuals_view_tracer_color"].color,
  1615. Transparency = -(flags["visuals_view_tracer_color"].transparency) + 1,
  1616. Visible = false
  1617. })
  1618. cheat.visuals.info[player.Name]["distance"] = cheat.draw("Text", {
  1619. Color = Color3.new(1, 1, 1),
  1620. OutlineColor = flags["visuals_distance_color"].color,
  1621. Center = true,
  1622. Outline = true,
  1623. Size = 13,
  1624. Transparency = -(flags["visuals_distance_color"].transparency) + 1,
  1625. Font = 2
  1626. })
  1627. cheat.visuals.info[player.Name]["oof_arrow"] = cheat.draw("Triangle", {
  1628. Color = flags["visuals_oof_arrows_color"].color,
  1629. Thickness = 1,
  1630. Transparency = -(flags["visuals_oof_arrows_color"].transparency) + 1,
  1631. Filled = true
  1632. })
  1633. cheat.visuals.info[player.Name]["oof_arrow_outside"] = cheat.draw("Triangle", {
  1634. Color = Color3.new(0, 0, 0),
  1635. Thickness = 1,
  1636. Transparency = -(flags["visuals_oof_arrows_color"].transparency) + 1,
  1637. Filled = false,
  1638. })
  1639. for required, _ in next, skeleton_order do
  1640. cheat.visuals.info[player.Name]["skeleton_".. required] = cheat.draw("Line", {
  1641. Color = flags["visuals_skeletons_color"].color,
  1642. Transparency = -(flags["visuals_skeletons_color"].transparency) + 1,
  1643. Visible = false
  1644. })
  1645. end
  1646. info = cheat.visuals.info[player.Name]
  1647. end
  1648. if (box) then
  1649. if (flags["visuals_boxes"]) then
  1650. info["box_outside"].Position = Vector2.new(box.X - 1, box.Y - 1)
  1651. info["box_outside"].Size = Vector2.new(box.W + 2, box.H + 2)
  1652. info["box_outside"].Transparency = math.clamp(1 - 0.5, 0, 1)
  1653. info["box_outside"].Visible = true
  1654. info["box"].Position = Vector2.new(box.X, box.Y)
  1655. info["box"].Size = Vector2.new(box.W, box.H)
  1656. info["box"].Transparency = 1
  1657. info["box"].Color = flags["visuals_boxes_color"].color
  1658. info["box"].Visible = true
  1659. info["box_inside"].Position = Vector2.new(box.X + 1, box.Y + 1)
  1660. info["box_inside"].Size = Vector2.new(box.W - 2, box.H - 2)
  1661. info["box_inside"].Transparency = math.clamp(1 - 0.5, 0, 1)
  1662. info["box_inside"].Visible = true
  1663. else
  1664. if (info["box"]) then
  1665. info["box"].Visible = false
  1666. end
  1667. if (info["box_inside"]) then
  1668. info["box_inside"].Visible = false
  1669. end
  1670. if (info["box_outside"]) then
  1671. info["box_outside"].Visible = false
  1672. end
  1673. end
  1674. if (flags["visuals_health_bars"]) then
  1675. local health_fraction = math.floor(stats.Health.Base.Value) / 100
  1676. local health_size = math.floor(box.H * health_fraction)
  1677. local health_position = math.floor((box.Y + box.H) - health_size)
  1678. local hue, saturation, value = flags["visuals_health_bars_color"].color:ToHSV()
  1679. local health_color = math.abs(hue - ((120 / 360) * (-(health_fraction) + 1))) -- fix negative underflow of hue
  1680. info["health_bar_outside"].Position = Vector2.new(box.X - 6, box.Y - 1)
  1681. info["health_bar_outside"].Size = Vector2.new(4, box.H + 2)
  1682. info["health_bar_outside"].Transparency = math.clamp(-(flags["visuals_health_bars_color"].transparency) + 1 - 0.5, 0, 1)
  1683. info["health_bar_outside"].Visible = true
  1684. info["health_bar"].Position = Vector2.new(box.X - 5, health_position)
  1685. info["health_bar"].Size = Vector2.new(2, health_size)
  1686. info["health_bar"].Transparency = -(flags["visuals_health_bars_color"].transparency) + 1
  1687. info["health_bar"].Color = Color3.fromHSV(health_color, saturation, value)
  1688. info["health_bar"].Visible = true
  1689. if (stats.Health.Base.Value <= 90) then
  1690. if (flags["visuals_health_bar_text"]) then
  1691. info["health_bar_text"].Position = Vector2.new(box.X - 7 - info["health_bar_text"].TextBounds.X, health_position - info["health_bar_text"].TextBounds.Y / 2)
  1692. info["health_bar_text"].Color = Color3.fromHSV(health_color, saturation, value)
  1693. info["health_bar_text"].OutlineColor = flags["visuals_health_bar_text_color"].color
  1694. info["health_bar_text"].Transparency = -(flags["visuals_health_bar_text_color"].transparency) + 1
  1695. info["health_bar_text"].Text = tostring(math.ceil(stats.Health.Base.Value))
  1696. info["health_bar_text"].Visible = true
  1697. else
  1698. info["health_bar_text"].Visible = false
  1699. end
  1700. else
  1701. info["health_bar_text"].Visible = false
  1702. end
  1703. else
  1704. if (info["health_bar_outside"]) then
  1705. info["health_bar_outside"].Visible = false
  1706. end
  1707. if (info["health_bar"]) then
  1708. info["health_bar"].Visible = false
  1709. end
  1710. if (info["health_bar_text"]) then
  1711. info["health_bar_text"].Visible = false
  1712. end
  1713. end
  1714. if (flags["visuals_health_bars_boost"] and flags["visuals_health_bars"]) then
  1715. local health_fraction = math.floor(stats.Health.Bonus.Value) / 50
  1716. local health_size = math.floor(box.H * health_fraction)
  1717. local health_position = math.floor((box.Y + box.H) - health_size)
  1718. info["health_bar_boost"].Position = Vector2.new(box.X - 5, health_position)
  1719. info["health_bar_boost"].Size = Vector2.new(2, health_size)
  1720. info["health_bar_boost"].Transparency = -(flags["visuals_health_bars_boost_color"].transparency) + 1
  1721. info["health_bar_boost"].Color = flags["visuals_health_bars_boost_color"].color
  1722. info["health_bar_boost"].Visible = true
  1723. if (stats.Health.Bonus.Value > 1) then
  1724. if (flags["visuals_health_bar_text"]) then
  1725. info["health_bar_text"].Position = Vector2.new(box.X - 7 - info["health_bar_text"].TextBounds.X, health_position - info["health_bar_text"].TextBounds.Y / 2)
  1726. info["health_bar_text"].Color = Color3.new(255, 255, 255)
  1727. info["health_bar_text"].OutlineColor = flags["visuals_health_bar_text_color"].color
  1728. info["health_bar_text"].Transparency = -(flags["visuals_health_bar_text_color"].transparency) + 1
  1729. info["health_bar_text"].Text = tostring(math.ceil(stats.Health.Base.Value + stats.Health.Bonus.Value))
  1730. info["health_bar_text"].Visible = true
  1731. else
  1732. info["health_bar_text"].Visible = false
  1733. end
  1734. else
  1735. if (stats.Health.Base.Value > 90) then
  1736. info["health_bar_text"].Visible = false
  1737. end
  1738. end
  1739. else
  1740. if (info["health_bar_boost"]) then
  1741. info["health_bar_boost"].Visible = false
  1742. end
  1743. end
  1744. if (flags["visuals_names"]) then
  1745. info["name"].Position = Vector2.new(box.X + (box.W / 2), box.Y - 5 - info["name"].TextBounds.Y)
  1746. info["name"].OutlineColor = flags["visuals_names_color"].color
  1747. info["name"].Transparency = -(flags["visuals_names_color"].transparency) + 1
  1748. info["name"].Text = (flags["visuals_display_names"] and player.DisplayName) or player.Name
  1749. info["name"].Visible = true
  1750. else
  1751. if (info["name"]) then
  1752. info["name"].Visible = false
  1753. end
  1754. end
  1755. local bottom_offset = 0
  1756. if (flags["visuals_active_weapon"]) then
  1757. local weapon = player.Character.Animator.EquippedItem.ItemName.Value ~= "" and player.Character.Animator.EquippedItem.ItemName.Value or "Hands"
  1758. info["active_weapon"].Position = Vector2.new(box.X + (box.W / 2), box.Y + box.H + 3 + bottom_offset)
  1759. info["active_weapon"].OutlineColor = flags["visuals_active_weapon_color"].color
  1760. info["active_weapon"].Transparency = -(flags["visuals_active_weapon_color"].transparency) + 1
  1761. info["active_weapon"].Text = weapon
  1762. info["active_weapon"].Visible = true
  1763. bottom_offset += info["active_weapon"].TextBounds.Y + 3
  1764. else
  1765. if (info["active_weapon"]) then
  1766. info["active_weapon"].Visible = false
  1767. end
  1768. end
  1769. if (flags["visuals_view_tracer"]) then
  1770. local camera_direction = player.Character.Head.CFrame.lookVector * flags["visuals_view_tracer_length"]
  1771. local parameters = RaycastParams.new()
  1772. parameters.FilterDescendantsInstances = {current_camera, local_player.Character}
  1773. parameters.FilterType = Enum.RaycastFilterType.Blacklist
  1774. local result = game:GetService("Workspace"):Raycast(player.Character.Head.Position, camera_direction, parameters)
  1775. if (result) then
  1776. local head_position, visible = current_camera:WorldToViewportPoint(player.Character.Head.Position)
  1777. local hit_position, visible_hit = current_camera:WorldToViewportPoint(result.Position)
  1778. if (not visible or not visible_hit) then
  1779. info["view_tracer"].Visible = false
  1780. else
  1781. info["view_tracer"].From = Vector2.new(head_position.X, head_position.Y)
  1782. info["view_tracer"].To = Vector2.new(hit_position.X, hit_position.Y)
  1783. info["view_tracer"].Color = flags["visuals_view_tracer_color"].color
  1784. info["view_tracer"].Transparency = -(flags["visuals_view_tracer_color"].transparency) + 1
  1785. info["view_tracer"].Visible = true
  1786. end
  1787. else
  1788. local head_position, visible = current_camera:WorldToViewportPoint(player.Character.Head.Position)
  1789. local hit_position, visible_hit = current_camera:WorldToViewportPoint(player.Character.Head.Position + camera_direction)
  1790. if (not visible or not visible_hit) then
  1791. info["view_tracer"].Visible = false
  1792. else
  1793. info["view_tracer"].From = Vector2.new(head_position.X, head_position.Y)
  1794. info["view_tracer"].To = Vector2.new(hit_position.X, hit_position.Y)
  1795. info["view_tracer"].Color = flags["visuals_view_tracer_color"].color
  1796. info["view_tracer"].Transparency = -(flags["visuals_view_tracer_color"].transparency) + 1
  1797. info["view_tracer"].Visible = true
  1798. end
  1799. end
  1800. else
  1801. if (info["view_tracer"]) then
  1802. info["view_tracer"].Visible = false
  1803. end
  1804. end
  1805. if (flags["visuals_distance"]) then
  1806. local localization_division = {
  1807. ["Roblox"] = 1,
  1808. ["Imperial"] = 3.265, -- Really rough estimate
  1809. ["Metric"] = 3.333 -- Rough estimate
  1810. }
  1811. local localization_suffix = {
  1812. ["Roblox"] = "s",
  1813. ["Imperial"] = "y",
  1814. ["Metric"] = "m"
  1815. }
  1816. local distance = math.floor((player.Character.HumanoidRootPart.Position - local_player.Character.HumanoidRootPart.Position).Magnitude / localization_division[flags["visuals_preferred_measurement"]])
  1817. info["distance"].Position = Vector2.new(box.X + (box.W / 2), box.Y + box.H + 3 + bottom_offset)
  1818. info["distance"].OutlineColor = flags["visuals_distance_color"].color
  1819. info["distance"].Transparency = -(flags["visuals_distance_color"].transparency) + 1
  1820. info["distance"].Text = "["..tostring(distance).. localization_suffix[flags["visuals_preferred_measurement"]].."]"
  1821. info["distance"].Visible = true
  1822. bottom_offset += info["distance"].TextBounds.Y + 3
  1823. else
  1824. if (info["distance"]) then
  1825. info["distance"].Visible = false
  1826. end
  1827. end
  1828. if (flags["visuals_skeletons"]) then
  1829. for _, part in next, character:GetChildren() do
  1830. local parent_part = skeleton_order[part.Name]
  1831. if (not parent_part) then continue end
  1832. local part_position, on_screen_start = current_camera:WorldToViewportPoint(part.Position)
  1833. local parent_part_position, on_screen_end = current_camera:WorldToViewportPoint(character:FindFirstChild(parent_part).Position)
  1834. info["skeleton_".. part.Name].From = Vector2.new(part_position.X, part_position.Y)
  1835. info["skeleton_".. part.Name].To = Vector2.new(parent_part_position.X, parent_part_position.Y)
  1836. info["skeleton_".. part.Name].Color = flags["visuals_skeletons_color"].color
  1837. info["skeleton_".. part.Name].Transparency = -(flags["visuals_skeletons_color"].transparency) + 1
  1838. info["skeleton_".. part.Name].Visible = true
  1839. end
  1840. else
  1841. for required, _ in next, skeleton_order do
  1842. if (info["skeleton_".. required]) then
  1843. info["skeleton_".. required].Visible = false
  1844. end
  1845. end
  1846. end
  1847. if (info["oof_arrow"]) then
  1848. info["oof_arrow"].Visible = false
  1849. end
  1850. if (info["oof_arrow_outside"]) then
  1851. info["oof_arrow_outside"].Visible = false
  1852. end
  1853. else
  1854. if (info) then
  1855. for _, object in next, info do
  1856. object.Visible = false
  1857. end
  1858. end
  1859. if (flags["visuals_oof_arrows"]) then
  1860. local fix_ratio = 450 / flags["visuals_oof_arrows_radius"]
  1861. local relative = current_camera.CFrame:PointToObjectSpace(player.Character.HumanoidRootPart.Position)
  1862. local middle = current_camera.ViewportSize / 2
  1863. local degree = math.deg(math.atan2(-relative.Y, relative.X)) * math.pi / 180
  1864. local end_pos = middle + (Vector2.new(math.cos(degree), math.sin(degree))) * flags["visuals_oof_arrows_radius"]
  1865. local end_pos_a = middle + (Vector2.new(math.cos(degree + math.rad(2 * fix_ratio)), math.sin(degree + math.rad(2 * fix_ratio)))) * flags["visuals_oof_arrows_radius"]
  1866. local end_pos_c = middle + (Vector2.new(math.cos(degree - math.rad(2 * fix_ratio)), math.sin(degree - math.rad(2 * fix_ratio)))) * flags["visuals_oof_arrows_radius"]
  1867. local difference = middle - end_pos
  1868. info["oof_arrow"].PointA = end_pos_a
  1869. info["oof_arrow"].PointB = end_pos + (-difference.Unit * 15)
  1870. info["oof_arrow"].PointC = end_pos_c
  1871. info["oof_arrow"].Visible = true
  1872. info["oof_arrow"].Color = flags["visuals_oof_arrows_color"].color
  1873. info["oof_arrow"].Transparency = -(flags["visuals_oof_arrows_color"].transparency) + 1
  1874. info["oof_arrow_outside"].PointA = end_pos_a
  1875. info["oof_arrow_outside"].PointB = end_pos + (-difference.Unit * 16)
  1876. info["oof_arrow_outside"].PointC = end_pos_c
  1877. info["oof_arrow_outside"].Visible = true
  1878. info["oof_arrow_outside"].Color = Color3.new(0, 0, 0)
  1879. info["oof_arrow_outside"].Transparency = -(flags["visuals_oof_arrows_color"].transparency) + 1
  1880. end
  1881. end
  1882. end
  1883. for player, _ in next, cheat.visuals.info do
  1884. if (not game:GetService("Players"):FindFirstChild(player)) then
  1885. for _, object in next, cheat.visuals.info[player] do
  1886. object:Remove()
  1887. end
  1888. cheat.visuals.info[player] = nil
  1889. end
  1890. end
  1891. end)
  1892. cheat:render_stepped(1, function(delta)
  1893. for _, zombie in next, game:GetService("Workspace").Zombies.Mobs:GetChildren() do
  1894. local info = cheat.visuals.zombies[zombie.Name]
  1895. if (not zombie:FindFirstChild("HumanoidRootPart")) then
  1896. if (info) then
  1897. for _, object in next, info do
  1898. object.Visible = false
  1899. end
  1900. end
  1901. continue
  1902. end
  1903. if (not local_player.Character) then
  1904. if (info) then
  1905. for _, object in next, info do
  1906. object.Visible = false
  1907. end
  1908. end
  1909. continue
  1910. end
  1911. if ((zombie.HumanoidRootPart.Position - local_player.Character.HumanoidRootPart.Position).Magnitude > flags["visuals_boss_max_distance"]) then
  1912. if (info) then
  1913. for _, object in next, info do
  1914. object.Visible = false
  1915. end
  1916. end
  1917. continue
  1918. end
  1919. -- HACK: What the fuck
  1920. local box = calculate_box({["Character"] = zombie})
  1921. if ((not flags["visuals_enabled"] and not flags["visuals_enabled_toggle"].state) or not box) then
  1922. if (info) then
  1923. for _, object in next, info do
  1924. object.Visible = false
  1925. end
  1926. end
  1927. continue
  1928. end
  1929. if (not zombie:FindFirstChild("Equipment")) then
  1930. if (info) then
  1931. for _, object in next, info do
  1932. object.Visible = false
  1933. end
  1934. end
  1935. continue
  1936. end
  1937. if (#zombie.Equipment:GetChildren() == 0) then
  1938. if (info) then
  1939. for _, object in next, info do
  1940. object.Visible = false
  1941. end
  1942. end
  1943. continue
  1944. end
  1945. local found_gun = false
  1946. for _, child in next, zombie.Equipment:GetChildren() do
  1947. if (child.Name:find("Firearm")) then
  1948. found_gun = true
  1949. break
  1950. end
  1951. end
  1952. if (not found_gun) then
  1953. if (info) then
  1954. for _, object in next, info do
  1955. object.Visible = false
  1956. end
  1957. end
  1958. continue
  1959. end
  1960. if (not info) then
  1961. cheat.visuals.zombies[zombie.Name] = {}
  1962. cheat.visuals.zombies[zombie.Name]["box_outside"] = cheat.draw("Square", {
  1963. Color = Color3.new(0, 0, 0),
  1964. Thickness = 1,
  1965. Transparency = math.clamp(1 - 0.5, 0, 1),
  1966. Filled = false
  1967. })
  1968. cheat.visuals.zombies[zombie.Name]["box"] = cheat.draw("Square", {
  1969. Color = flags["visuals_boss_boxes_color"].color,
  1970. Thickness = 1,
  1971. Transparency = 1,
  1972. Filled = false
  1973. })
  1974. cheat.visuals.zombies[zombie.Name]["box_inside"] = cheat.draw("Square", {
  1975. Color = Color3.new(0, 0, 0),
  1976. Thickness = 1,
  1977. Transparency = math.clamp(-(flags["visuals_boss_boxes_color"].transparency) + 1 - 0.5, 0, 1),
  1978. Filled = false
  1979. })
  1980. cheat.visuals.zombies[zombie.Name]["name"] = cheat.draw("Text", {
  1981. Color = Color3.new(1, 1, 1),
  1982. OutlineColor = flags["visuals_boss_names_color"].color,
  1983. Center = true,
  1984. Outline = true,
  1985. Size = 13,
  1986. Transparency = -(flags["visuals_boss_names_color"].transparency) + 1,
  1987. Font = 2
  1988. })
  1989. info = cheat.visuals.zombies[zombie.Name]
  1990. end
  1991. if (flags["visuals_boss_boxes"]) then
  1992. info["box_outside"].Position = Vector2.new(box.X - 1, box.Y - 1)
  1993. info["box_outside"].Size = Vector2.new(box.W + 2, box.H + 2)
  1994. info["box_outside"].Transparency = math.clamp(-(flags["visuals_boss_boxes_color"].transparency) + 1 - 0.5, 0, 1)
  1995. info["box_outside"].Visible = true
  1996. info["box"].Position = Vector2.new(box.X, box.Y)
  1997. info["box"].Size = Vector2.new(box.W, box.H)
  1998. info["box"].Transparency = -(flags["visuals_boss_boxes_color"].transparency) + 1
  1999. info["box"].Color = flags["visuals_boss_boxes_color"].color
  2000. info["box"].Visible = true
  2001. info["box_inside"].Position = Vector2.new(box.X + 1, box.Y + 1)
  2002. info["box_inside"].Size = Vector2.new(box.W - 2, box.H - 2)
  2003. info["box_inside"].Transparency = math.clamp(-(flags["visuals_boss_boxes_color"].transparency) + 1 - 0.5, 0, 1)
  2004. info["box_inside"].Visible = true
  2005. else
  2006. if (info["box"]) then
  2007. info["box"].Visible = false
  2008. end
  2009. if (info["box_inside"]) then
  2010. info["box_inside"].Visible = false
  2011. end
  2012. if (info["box_outside"]) then
  2013. info["box_outside"].Visible = false
  2014. end
  2015. end
  2016. if (flags["visuals_boss_names"]) then
  2017. info["name"].Position = Vector2.new(box.X + (box.W / 2), box.Y - 5 - info["name"].TextBounds.Y)
  2018. info["name"].OutlineColor = flags["visuals_boss_names_color"].color
  2019. info["name"].Transparency = -(flags["visuals_boss_names_color"].transparency) + 1
  2020. info["name"].Text = zombie.Name
  2021. info["name"].Visible = true
  2022. else
  2023. if (info["name"]) then
  2024. info["name"].Visible = false
  2025. end
  2026. end
  2027. end
  2028. for zombie, _ in next, cheat.visuals.zombies do
  2029. if (not game:GetService("Workspace").Zombies.Mobs:FindFirstChild(zombie)) then
  2030. for _, object in next, cheat.visuals.zombies[zombie] do
  2031. object:Remove()
  2032. end
  2033. cheat.visuals.zombies[zombie] = nil
  2034. end
  2035. end
  2036. end)
  2037. cheat:render_stepped(1, function(delta)
  2038. for _, event in next, game:GetService("Workspace").Map.Shared.Randoms:GetChildren() do
  2039. local info = cheat.visuals.events[event.Name]
  2040. if (not event:IsA("CFrameValue")) then
  2041. if (info) then
  2042. for _, object in next, info do
  2043. object.Visible = false
  2044. end
  2045. end
  2046. continue
  2047. end
  2048. if (not local_player.Character) then
  2049. if (info) then
  2050. for _, object in next, info do
  2051. object.Visible = false
  2052. end
  2053. end
  2054. continue
  2055. end
  2056. if ((event.Value.Position - local_player.Character.HumanoidRootPart.Position).Magnitude > flags["visuals_event_max_distance"]) then
  2057. if (info) then
  2058. for _, object in next, info do
  2059. object.Visible = false
  2060. end
  2061. end
  2062. continue
  2063. end
  2064. if ((not flags["visuals_enabled"] and not flags["visuals_enabled_toggle"].state)) then
  2065. if (info) then
  2066. for _, object in next, info do
  2067. object.Visible = false
  2068. end
  2069. end
  2070. continue
  2071. end
  2072. if (not info) then
  2073. cheat.visuals.events[event.Name] = {}
  2074. cheat.visuals.events[event.Name]["name"] = cheat.draw("Text", {
  2075. Color = Color3.new(1, 1, 1),
  2076. OutlineColor = flags["visuals_event_names_color"].color,
  2077. Center = true,
  2078. Outline = true,
  2079. Size = 13,
  2080. Transparency = -(flags["visuals_event_names_color"].transparency) + 1,
  2081. Font = 2
  2082. })
  2083. info = cheat.visuals.events[event.Name]
  2084. end
  2085. local event_w2s, on_screen = current_camera:WorldToViewportPoint(event.Value.Position)
  2086. if (flags["visuals_event_names"] and on_screen) then
  2087. info["name"].Position = Vector2.new(event_w2s.X, event_w2s.Y - 5 - info["name"].TextBounds.Y)
  2088. info["name"].OutlineColor = flags["visuals_event_names_color"].color
  2089. info["name"].Transparency = -(flags["visuals_event_names_color"].transparency) + 1
  2090. info["name"].Text = event.Name:gsub("%u", function(c, ...) return " " .. c end):sub(2, -3)
  2091. info["name"].Visible = true
  2092. else
  2093. if (info["name"]) then
  2094. info["name"].Visible = false
  2095. end
  2096. end
  2097. end
  2098. for event, _ in next, cheat.visuals.events do
  2099. if (not game:GetService("Workspace").Map.Shared.Randoms:FindFirstChild(event)) then
  2100. for _, object in next, cheat.visuals.events[event] do
  2101. object:Remove()
  2102. end
  2103. cheat.visuals.events[event] = nil
  2104. end
  2105. end
  2106. end)
  2107. cheat:render_stepped(2, function(delta)
  2108. local screen_size = current_camera.ViewportSize
  2109. local info = cheat.visuals["self"]
  2110. if (not info) then
  2111. cheat.visuals["self"] = {
  2112. ["mouse_fov"] = cheat.draw("Circle", {
  2113. Color = flags["visuals_mouse_fov_color"].color,
  2114. Thickness = 1,
  2115. Transparency = -(flags["visuals_mouse_fov_color"].transparency) + 1,
  2116. Filled = false,
  2117. NumSides = 50,
  2118. }),
  2119. ["silent_fov"] = cheat.draw("Circle", {
  2120. Color = flags["visuals_silent_fov_color"].color,
  2121. Thickness = 1,
  2122. Transparency = -(flags["visuals_silent_fov_color"].transparency) + 1,
  2123. Filled = false,
  2124. NumSides = 50,
  2125. }),
  2126. ["crosshair_outline"] = {
  2127. ["path_1"] = cheat.draw("Line", {
  2128. Color = Color3.new(0, 0, 0),
  2129. Thickness = 3,
  2130. Transparency = math.clamp(-(flags["visuals_crosshair_color"].transparency) + 1 - 0.5, 0, 1),
  2131. ZIndex = 1,
  2132. }),
  2133. ["path_2"] = cheat.draw("Line", {
  2134. Color = Color3.new(0, 0, 0),
  2135. Thickness = 3,
  2136. Transparency = math.clamp(-(flags["visuals_crosshair_color"].transparency) + 1 - 0.5, 0, 1),
  2137. ZIndex = 1,
  2138. })
  2139. },
  2140. ["crosshair"] = {
  2141. ["path_1"] = cheat.draw("Line", {
  2142. Color = flags["visuals_crosshair_color"].color,
  2143. Thickness = 1,
  2144. Transparency = -(flags["visuals_crosshair_color"].transparency) + 1,
  2145. ZIndex = 2,
  2146. }),
  2147. ["path_2"] = cheat.draw("Line", {
  2148. Color = flags["visuals_crosshair_color"].color,
  2149. Thickness = 1,
  2150. Transparency = -(flags["visuals_crosshair_color"].transparency) + 1,
  2151. ZIndex = 2,
  2152. })
  2153. },
  2154. }
  2155. info = cheat.visuals["self"]
  2156. end
  2157. if (not flags["visuals_enabled"]) then
  2158. if (info["mouse_fov"]) then
  2159. info["mouse_fov"].Visible = false
  2160. end
  2161. if (info["silent_fov"]) then
  2162. info["silent_fov"].Visible = false
  2163. end
  2164. if (info["crosshair"]) then
  2165. info["crosshair"]["path_1"].Visible = false
  2166. info["crosshair"]["path_2"].Visible = false
  2167. info["crosshair_outline"]["path_1"].Visible = false
  2168. info["crosshair_outline"]["path_2"].Visible = false
  2169. end
  2170. return
  2171. end
  2172. if (flags["visuals_mouse_fov"]) then
  2173. info["mouse_fov"].Visible = true
  2174. info["mouse_fov"].Position = screen_size / 2
  2175. --current_camera.FieldOfView
  2176. info["mouse_fov"].Radius = (math.tan(math.rad(flags["aimbot_mouse_fov"])) / math.tan(math.rad(70)) * screen_size.X) * (70 / current_camera.FieldOfView)
  2177. info["mouse_fov"].Color = flags["visuals_mouse_fov_color"].color
  2178. info["mouse_fov"].Transparency = -(flags["visuals_mouse_fov_color"].transparency) + 1
  2179. else
  2180. if (info["mouse_fov"]) then
  2181. info["mouse_fov"].Visible = false
  2182. end
  2183. end
  2184. if (flags["visuals_crosshair"]) then
  2185. local function solve_path_1(t)
  2186. return Vector2.new(screen_size.X / 2, screen_size.Y / 2) + Vector2.new(math.sin(t) * flags["visuals_crosshair_width"], math.cos(t) * flags["visuals_crosshair_width"])
  2187. end
  2188. local function solve_path_2(t)
  2189. return Vector2.new(screen_size.X / 2, screen_size.Y / 2) + Vector2.new(-math.sin(t) * flags["visuals_crosshair_width"], -math.cos(t) * flags["visuals_crosshair_width"])
  2190. end
  2191. local function solve_path_3(t)
  2192. return Vector2.new(screen_size.X / 2, screen_size.Y / 2) + Vector2.new(math.sin(t + math.rad(90)) * flags["visuals_crosshair_width"], math.cos(t + math.rad(90)) * flags["visuals_crosshair_width"])
  2193. end
  2194. local function solve_path_4(t)
  2195. return Vector2.new(screen_size.X / 2, screen_size.Y / 2) + Vector2.new(-math.sin(t + math.rad(90)) * flags["visuals_crosshair_width"], -math.cos(t + math.rad(90)) * flags["visuals_crosshair_width"])
  2196. end
  2197. local current_rotation = not flags["visuals_crosshair_rotate"] and 0 or tick() * 1000 / 1000
  2198. info["crosshair"]["path_1"].Visible = true
  2199. info["crosshair"]["path_1"].From = solve_path_1(current_rotation)
  2200. info["crosshair"]["path_1"].To = solve_path_2(current_rotation)
  2201. info["crosshair"]["path_1"].Color = flags["visuals_crosshair_color"].color
  2202. info["crosshair"]["path_1"].Transparency = -(flags["visuals_crosshair_color"].transparency) + 1
  2203. info["crosshair"]["path_2"].Visible = true
  2204. info["crosshair"]["path_2"].From = solve_path_3(current_rotation)
  2205. info["crosshair"]["path_2"].To = solve_path_4(current_rotation)
  2206. info["crosshair"]["path_2"].Color = flags["visuals_crosshair_color"].color
  2207. info["crosshair"]["path_2"].Transparency = -(flags["visuals_crosshair_color"].transparency) + 1
  2208. info["crosshair_outline"]["path_1"].Visible = true
  2209. info["crosshair_outline"]["path_1"].From = solve_path_1(current_rotation)
  2210. info["crosshair_outline"]["path_1"].To = solve_path_2(current_rotation)
  2211. info["crosshair_outline"]["path_1"].Color = Color3.new(0, 0, 0)
  2212. info["crosshair_outline"]["path_1"].Transparency = math.clamp(-(flags["visuals_crosshair_color"].transparency) + 1 - 0.5, 0, 1)
  2213. info["crosshair_outline"]["path_2"].Visible = true
  2214. info["crosshair_outline"]["path_2"].From = solve_path_3(current_rotation)
  2215. info["crosshair_outline"]["path_2"].To = solve_path_4(current_rotation)
  2216. info["crosshair_outline"]["path_2"].Color = Color3.new(0, 0, 0)
  2217. info["crosshair_outline"]["path_2"].Transparency = math.clamp(-(flags["visuals_crosshair_color"].transparency) + 1 - 0.5, 0, 1)
  2218. else
  2219. if (info["crosshair"]) then
  2220. info["crosshair"]["path_1"].Visible = false
  2221. info["crosshair"]["path_2"].Visible = false
  2222. info["crosshair_outline"]["path_1"].Visible = false
  2223. info["crosshair_outline"]["path_2"].Visible = false
  2224. end
  2225. end
  2226. if (flags["visuals_silent_fov"]) then
  2227. info["silent_fov"].Visible = true
  2228. info["silent_fov"].Position = screen_size / 2
  2229. info["silent_fov"].Radius = (math.tan(math.rad(flags["aimbot_silent_fov"])) / math.tan(math.rad(70)) * screen_size.X) * (70 / current_camera.FieldOfView)
  2230. info["silent_fov"].Color = flags["visuals_silent_fov_color"].color
  2231. info["silent_fov"].Transparency = -(flags["visuals_silent_fov_color"].transparency) + 1
  2232. else
  2233. if (info["silent_fov"]) then
  2234. info["silent_fov"].Visible = false
  2235. end
  2236. end
  2237. end)
  2238. cheat:heart_beat(function(delta)
  2239. for _, player in next, game:GetService("Players"):GetPlayers() do
  2240. local info = cheat.visuals.chams[player.Name]
  2241. if (player == local_player) then
  2242. if (info) then
  2243. for _, object in next, info do
  2244. object:Destroy()
  2245. end
  2246. cheat.visuals.chams[player.Name] = nil
  2247. end
  2248. continue
  2249. end
  2250. if (not player.Character) then
  2251. if (info) then
  2252. for _, object in next, info do
  2253. object:Destroy()
  2254. end
  2255. cheat.visuals.chams[player.Name] = nil
  2256. end
  2257. continue
  2258. end
  2259. local character = player.Character
  2260. if (not local_player.Character) then
  2261. if (info) then
  2262. for _, object in next, info do
  2263. object:Destroy()
  2264. end
  2265. cheat.visuals.chams[player.Name] = nil
  2266. end
  2267. continue
  2268. end
  2269. if (squad_list[player.Name]) then
  2270. if (info) then
  2271. for _, object in next, info do
  2272. object:Destroy()
  2273. end
  2274. cheat.visuals.chams[player.Name] = nil
  2275. end
  2276. continue
  2277. end
  2278. if (not character:FindFirstChild("HumanoidRootPart") or not local_player.Character:FindFirstChild("HumanoidRootPart")) then
  2279. if (info) then
  2280. for _, object in next, info do
  2281. object:Destroy()
  2282. end
  2283. cheat.visuals.chams[player.Name] = nil
  2284. end
  2285. continue
  2286. end
  2287. if (not flags["visuals_enabled"]) then
  2288. if (info) then
  2289. for _, object in next, info do
  2290. object:Destroy()
  2291. end
  2292. cheat.visuals.chams[player.Name] = nil
  2293. end
  2294. continue
  2295. end
  2296. if ((character.HumanoidRootPart.Position - local_player.Character.HumanoidRootPart.Position).Magnitude > flags["visuals_player_max_distance"]) then
  2297. if (info) then
  2298. for _, object in next, info do
  2299. object:Destroy()
  2300. end
  2301. cheat.visuals.chams[player.Name] = nil
  2302. end
  2303. continue
  2304. end
  2305. if (not info) then
  2306. cheat.visuals.chams[player.Name] = {}
  2307. cheat.visuals.chams[player.Name]["highlight"] = Instance.new("Highlight", character)
  2308. cheat.visuals.chams[player.Name]["highlight"].Name = "🐛"
  2309. cheat.visuals.chams[player.Name]["highlight"].FillTransparency = 0.55 -- Perfect ratio between transparency and color
  2310. cheat.visuals.chams[player.Name]["highlight"].Adornee = character
  2311. cheat.visuals.chams[player.Name]["highlight"].Enabled = false
  2312. info = cheat.visuals.chams[player.Name]
  2313. end
  2314. local camera_direction = (character.HumanoidRootPart.Position - current_camera.CFrame.Position)
  2315. local parameters = RaycastParams.new()
  2316. parameters.FilterDescendantsInstances = {current_camera, local_player.Character}
  2317. parameters.FilterType = Enum.RaycastFilterType.Blacklist
  2318. local result = game:GetService("Workspace"):Raycast(current_camera.CFrame.Position, camera_direction, parameters)
  2319. if (flags["visuals_visible_chams"] and result and result.Instance and result.Instance:IsDescendantOf(character)) then
  2320. for _, object in next, info do
  2321. if (object:IsA("Highlight")) then
  2322. object.Enabled = true
  2323. object.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
  2324. object.FillColor = flags["visuals_visible_chams_color"].color
  2325. object.FillTransparency = flags["visuals_visible_chams_color"].transparency
  2326. object.OutlineColor = flags["visuals_outline_chams_color"].color
  2327. object.OutlineTransparency = (flags["visuals_outline_chams"] and flags["visuals_outline_chams_color"].transparency) or 1
  2328. end
  2329. end
  2330. continue
  2331. end
  2332. if (flags["visuals_occluded_chams"]) then
  2333. for _, object in next, info do
  2334. if (object:IsA("Highlight")) then
  2335. object.Enabled = true
  2336. object.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
  2337. object.FillColor = flags["visuals_occluded_chams_color"].color
  2338. object.FillTransparency = flags["visuals_occluded_chams_color"].transparency
  2339. object.OutlineColor = flags["visuals_outline_chams_color"].color
  2340. object.OutlineTransparency = (flags["visuals_outline_chams"] and flags["visuals_outline_chams_color"].transparency) or 1
  2341. end
  2342. end
  2343. continue
  2344. end
  2345. for _, object in next, info do
  2346. if (object:IsA("Highlight")) then
  2347. object.Enabled = false
  2348. end
  2349. end
  2350. end
  2351. for player, _ in next, cheat.visuals.chams do
  2352. if (not game:GetService("Players"):FindFirstChild(player)) then
  2353. for _, object in next, cheat.visuals.chams[player] do
  2354. object:Destroy()
  2355. end
  2356. cheat.visuals.chams[player] = nil
  2357. end
  2358. end
  2359. end)
  2360. cheat:heart_beat(function(delta)
  2361. local texture_map = {
  2362. ["Lightning"] = "rbxassetid://446111271",
  2363. ["Smoke"] = "rbxassetid://3517446796"
  2364. }
  2365. for timestamp, tracer in next, cheat.visuals.tracers do
  2366. if (not tracer.object) then
  2367. if (not game:GetService("Workspace"):FindFirstChild("Beams")) then
  2368. local beams = Instance.new("Folder", game:GetService("Workspace"))
  2369. beams.Name = "Beams"
  2370. end
  2371. tracer.object = Instance.new("Part", game:GetService("Workspace")["Beams"])
  2372. tracer.object.Name = "🐛"
  2373. tracer.object.Anchored = true
  2374. tracer.object.Size = Vector3.new(0.1, 0.1, (tracer["end"] - tracer["start"]).Magnitude)
  2375. tracer.object.CFrame = CFrame.lookAt(tracer["start"], tracer["end"]) + (tracer["end"] - tracer["start"]) / 2
  2376. tracer.object.Transparency = 1
  2377. tracer.object.CanCollide = false
  2378. local attachment_1 = Instance.new("Attachment", tracer.object)
  2379. attachment_1.Name = "🐛_1"
  2380. attachment_1.Position = Vector3.new(0, 0, -tracer.object.Size.Z / 2)
  2381. local attachment_2 = Instance.new("Attachment", tracer.object)
  2382. attachment_2.Name = "🐛_2"
  2383. attachment_2.Position = Vector3.new(0, 0, tracer.object.Size.Z / 2)
  2384. local beam = Instance.new("Beam", tracer.object)
  2385. beam.Name = "🐛"
  2386. beam.Attachment0 = attachment_1
  2387. beam.Attachment1 = attachment_2
  2388. beam.FaceCamera = flags["visuals_bullet_tracers_face_camera"]
  2389. beam.Brightness = 1
  2390. beam.LightEmission = 1
  2391. beam.LightInfluence = 0
  2392. beam.Texture = texture_map[flags["visuals_bullet_tracers_texture"]]
  2393. beam.TextureLength = 1
  2394. beam.TextureMode = Enum.TextureMode.Stretch
  2395. beam.TextureSpeed = 0.7
  2396. beam.Transparency = NumberSequence.new({
  2397. NumberSequenceKeypoint.new(0, 1),
  2398. NumberSequenceKeypoint.new(0.1, 0),
  2399. NumberSequenceKeypoint.new(0.9, 0),
  2400. NumberSequenceKeypoint.new(1, 1)
  2401. })
  2402. beam.Width0 = flags["visuals_bullet_tracers_thickness"] / 10
  2403. beam.Width1 = flags["visuals_bullet_tracers_thickness"] / 10
  2404. beam.Color = ColorSequence.new(flags["visuals_bullet_tracers_color"].color)
  2405. beam.Brightness = 1
  2406. end
  2407. if (os.clock() - timestamp > 3) then
  2408. tracer.object:Destroy()
  2409. cheat.visuals.tracers[timestamp] = nil
  2410. continue
  2411. end
  2412. if (not flags["visuals_bullet_tracers"] or not flags["visuals_enabled"]) then
  2413. tracer.object:Destroy()
  2414. cheat.visuals.tracers[timestamp] = nil
  2415. continue
  2416. end
  2417. tracer.object:FindFirstChild("🐛").Width0 = flags["visuals_bullet_tracers_thickness"]
  2418. tracer.object:FindFirstChild("🐛").Width1 = flags["visuals_bullet_tracers_thickness"]
  2419. tracer.object:FindFirstChild("🐛").Color = ColorSequence.new(flags["visuals_bullet_tracers_color"].color)
  2420. tracer.object:FindFirstChild("🐛").Brightness = (-(flags["visuals_bullet_tracers_color"].transparency) + 1) * 2
  2421. tracer.object:FindFirstChild("🐛").Texture = texture_map[flags["visuals_bullet_tracers_texture"]]
  2422. end
  2423. end)
  2424. cheat:heart_beat(function(delta)
  2425. local function find_target()
  2426. local closest_fov = math.huge
  2427. local closest_player = nil
  2428. for _, player in next, game:GetService("Players"):GetPlayers() do
  2429. if (player == local_player) then continue end
  2430. if (not player.Character) then continue end
  2431. if (not local_player.Character) then continue end
  2432. if (not player.Character:FindFirstChild("HumanoidRootPart")) then continue end
  2433. if (flags["aimbot_player_max_distance"] < (player.Character.HumanoidRootPart.Position - local_player.Character.HumanoidRootPart.Position).Magnitude) then
  2434. continue
  2435. end
  2436. local fov = (math.deg(math.acos(current_camera.CFrame.LookVector:Dot((player.Character.HumanoidRootPart.Position - current_camera.CFrame.Position).Unit))))
  2437. if (fov < closest_fov) then
  2438. closest_fov = fov
  2439. closest_player = player
  2440. end
  2441. end
  2442. return closest_player, closest_fov
  2443. end
  2444. local function find_hitbox(player, max_fov)
  2445. local fixed_names = {
  2446. ["LeftFoot"] = "Legs",
  2447. ["LeftLowerLeg"] = "Legs",
  2448. ["LeftUpperLeg"] = "Legs",
  2449. ["RightFoot"] = "Legs",
  2450. ["RightLowerLeg"] = "Legs",
  2451. ["RightUpperLeg"] = "Legs",
  2452. ["LeftHand"] = "Arms",
  2453. ["LeftLowerArm"] = "Arms",
  2454. ["LeftUpperArm"] = "Arms",
  2455. ["RightHand"] = "Arms",
  2456. ["RightLowerArm"] = "Arms",
  2457. ["RightUpperArm"] = "Arms",
  2458. ["LowerTorso"] = "Torso",
  2459. ["UpperTorso"] = "Torso",
  2460. ["Head"] = "Head"
  2461. }
  2462. local closest_fov = max_fov
  2463. local closest_hitbox = nil
  2464. for _, hitbox in next, player.Character:GetChildren() do
  2465. if (fixed_names[hitbox.Name] and table.find(flags["aimbot_hitboxes"], fixed_names[hitbox.Name])) then
  2466. local fov = math.deg(math.acos(current_camera.CFrame.LookVector:Dot((hitbox.Position - current_camera.CFrame.Position).Unit)))
  2467. if (fov < closest_fov) then
  2468. closest_fov = fov
  2469. closest_hitbox = hitbox
  2470. end
  2471. end
  2472. end
  2473. return closest_hitbox
  2474. end
  2475. if (not flags["aimbot_enabled"]) then return end
  2476. if (not local_player.Character) then return end
  2477. local player_children = local_player.Character.Equipped:GetChildren()
  2478. if (#player_children < 1) then return end
  2479. local closest_player, closest_fov = find_target()
  2480. local gun_info = modules.item_data[player_children[1].Name:gsub("Mod%d+", "")]
  2481. if (not gun_info) then
  2482. error("[Aimbot] Gun not found: " .. player_children[1])
  2483. cheat.aimbot.silent_angle = nil
  2484. return
  2485. end
  2486. if (not player_children[1]:FindFirstChild("Muzzle")) then
  2487. cheat.aimbot.silent_angle = nil
  2488. return
  2489. end
  2490. if (not closest_player) then
  2491. cheat.aimbot.silent_angle = nil
  2492. return
  2493. end
  2494. if (squad_list[closest_player.Name]) then
  2495. cheat.aimbot.silent_angle = nil
  2496. return
  2497. end
  2498. local screen_center = current_camera.ViewportSize / 2
  2499. if (not cheat.aimbot.info[closest_player.Name]) then
  2500. cheat.aimbot.info[closest_player.Name] = {
  2501. last_position = closest_player.Character.HumanoidRootPart.Position
  2502. }
  2503. cheat.aimbot.silent_angle = nil
  2504. return
  2505. end
  2506. local player_origin = closest_player.Character.HumanoidRootPart.Position
  2507. if ((flags["aimbot_mouse_enabled"] or flags["aimbot_mouse_enabled_hold"].state) and closest_fov < flags["aimbot_mouse_fov"]) then
  2508. if (cheat.aimbot.last_target == closest_player.Name and cheat.aimbot.progress < 1) then
  2509. cheat.aimbot.progress += delta / (flags["aimbot_mouse_smoothing"] + math.random(0, flags["aimbot_mouse_jitter"] * 100) / 100)
  2510. else
  2511. cheat.aimbot.progress = 0
  2512. cheat.aimbot.last_target = closest_player.Name
  2513. end
  2514. local origin = player_children[1].Muzzle.Position
  2515. local part = find_hitbox(closest_player, flags["aimbot_mouse_fov"])
  2516. if (part) then
  2517. local time_to_hit = physics.time_to_hit(part.Position, gun_info.FireConfig.MuzzleVelocity, origin, -(game:GetService("Workspace").Gravity / 2))
  2518. local velocity = (player_origin - cheat.aimbot.info[closest_player.Name].last_position) * (1 / delta)
  2519. local target = part.Position + (velocity * time_to_hit)
  2520. local delta_time_to_hit = physics.time_to_hit(target, gun_info.FireConfig.MuzzleVelocity, origin, -(game:GetService("Workspace").Gravity / 2))
  2521. local delta_velocity = (player_origin - cheat.aimbot.info[closest_player.Name].last_position) * (1 / delta_time_to_hit)
  2522. local delta_target = part.Position + (delta_velocity * delta_time_to_hit)
  2523. local curve = physics.trajectory(origin, Vector3.new(), Vector3.new(0, -(game:GetService("Workspace").Gravity / 2), 0), delta_target, Vector3.new(), Vector3.new(), gun_info.FireConfig.MuzzleVelocity)
  2524. if (curve) then
  2525. local predicited_position = origin + curve
  2526. local w2s = current_camera:WorldToViewportPoint(predicited_position)
  2527. mousemoverel(((w2s.X - screen_center.X) / 2) * cheat.bezier(0, 1.1, 1, 1, cheat.aimbot.progress), ((w2s.Y - screen_center.Y) / 2) * cheat.bezier(0, 1.1, 1, 1, cheat.aimbot.progress))
  2528. end
  2529. end
  2530. else
  2531. cheat.aimbot.progress = 0
  2532. end
  2533. if ((flags["aimbot_silent_enabled"] or flags["aimbot_silent_enabled_hold"].state) and closest_fov < flags["aimbot_silent_fov"]) then
  2534. if (flags["aimbot_silent_hitchance"] < math.random(0, 100)) then
  2535. cheat.aimbot.silent_angle = nil
  2536. return
  2537. end
  2538. local origin = player_children[1].Muzzle.Position
  2539. local part = find_hitbox(closest_player, flags["aimbot_silent_fov"])
  2540. if (flags["aimbot_silent_magic_bullets"] or flags["aimbot_silent_magic_bullets_hold"].state) then
  2541. origin += player_children[1].Muzzle.CFrame.LookVector * math.clamp((player_children[1].Muzzle.Position - closest_player.Character.HumanoidRootPart.Position).Magnitude, 0, flags["aimbot_silent_magic_bullet_depth"])
  2542. cheat.aimbot.silent_origin = origin
  2543. else
  2544. cheat.aimbot.silent_origin = nil
  2545. end
  2546. if (part) then
  2547. local time_to_hit = physics.time_to_hit(part.Position, gun_info.FireConfig.MuzzleVelocity, origin, -(game:GetService("Workspace").Gravity / 2))
  2548. local velocity = (player_origin - cheat.aimbot.info[closest_player.Name].last_position) * (1 / delta)
  2549. local target = part.Position + (velocity * time_to_hit)
  2550. local delta_time_to_hit = physics.time_to_hit(target, gun_info.FireConfig.MuzzleVelocity, origin, -(game:GetService("Workspace").Gravity / 2))
  2551. local delta_velocity = (player_origin - cheat.aimbot.info[closest_player.Name].last_position) * (1 / delta_time_to_hit)
  2552. local delta_target = part.Position + (delta_velocity * delta_time_to_hit)
  2553. local curve = physics.trajectory(origin, Vector3.new(), Vector3.new(0, -(game:GetService("Workspace").Gravity / 2), 0), delta_target, Vector3.new(), Vector3.new(), gun_info.FireConfig.MuzzleVelocity)
  2554. if (curve) then
  2555. local current_spread = (math.random(0, -(flags["aimbot_silent_accuracy"]) + 100) / 100) * 5
  2556. local predicited_position = origin + curve + Vector3.new(current_spread, current_spread, current_spread)
  2557. cheat.aimbot.silent_angle = (predicited_position - origin).Unit
  2558. else
  2559. cheat.aimbot.silent_angle = nil
  2560. cheat.aimbot.silent_origin = nil
  2561. end
  2562. else
  2563. cheat.aimbot.silent_angle = nil
  2564. cheat.aimbot.silent_origin = nil
  2565. end
  2566. else
  2567. cheat.aimbot.silent_angle = nil
  2568. cheat.aimbot.silent_origin = nil
  2569. end
  2570. cheat.aimbot.info[closest_player.Name].last_position = player_origin
  2571. end)
  2572. cheat:heart_beat(function(delta)
  2573. setsimulationradius(math.huge)
  2574. if (not flags["misc_enabled"]) then
  2575. return
  2576. end
  2577. if (not local_player.Character) then
  2578. return
  2579. end
  2580. if (not local_player.Character:FindFirstChild("HumanoidRootPart")) then
  2581. return
  2582. end
  2583. local owned_zombies = {}
  2584. local owned_bosses = {}
  2585. for _, zombie in next, game:GetService("Workspace").Zombies.Mobs:GetChildren() do
  2586. if (zombie.PrimaryPart and isnetworkowner(zombie.PrimaryPart)) then
  2587. if (zombie:FindFirstChild("Equipment")) then
  2588. local found_gun = false
  2589. for _, child in next, zombie.Equipment:GetChildren() do
  2590. if (child.Name:find("Firearm")) then
  2591. found_gun = true
  2592. break
  2593. end
  2594. end
  2595. if (found_gun) then
  2596. owned_bosses[#owned_bosses + 1] = zombie
  2597. continue
  2598. end
  2599. end
  2600. owned_zombies[#owned_zombies + 1] = zombie
  2601. end
  2602. end
  2603. if (flags["misc_zombie_circle"]) then
  2604. for i = 360 / #owned_zombies, 360, 360 / #owned_zombies do
  2605. local current_rotation = math.rad((i + tick() * flags["misc_zombie_circle_speed"]) % 360)
  2606. local x = local_player.Character.HumanoidRootPart.Position.X + math.cos(current_rotation) * flags["misc_zombie_circle_radius"]
  2607. local z = local_player.Character.HumanoidRootPart.Position.Z + math.sin(current_rotation) * flags["misc_zombie_circle_radius"]
  2608. local location = math.ceil(#owned_zombies * (i / 360))
  2609. local zombie = owned_zombies[location]
  2610. if (not zombie) then
  2611. break
  2612. end
  2613. zombie.PrimaryPart.CFrame = CFrame.new(x, local_player.Character.HumanoidRootPart.Position.Y, z) * CFrame.Angles(0, 0, 0)
  2614. end
  2615. end
  2616. for _, zombie in next, owned_zombies do
  2617. if (flags["misc_zombie_remover"]) then
  2618. if (flags["misc_zombie_remover_mode"] == "Delete") then
  2619. zombie.PrimaryPart.CFrame = CFrame.new(0, -1000, 0)
  2620. else
  2621. local did_teleport = false
  2622. repeat
  2623. local random_player = game:GetService("Players"):GetPlayers()[math.random(1, #game:GetService("Players"):GetPlayers())]
  2624. if (random_player ~= local_player and random_player.Character and random_player.Character:FindFirstChild("HumanoidRootPart") and not squad_list[random_player.Name]) then
  2625. zombie.PrimaryPart.CFrame = random_player.Character.HumanoidRootPart.CFrame
  2626. did_teleport = true
  2627. end
  2628. until did_teleport
  2629. end
  2630. end
  2631. zombie.HumanoidRootPart.Anchored = flags["misc_zombie_freezer"]
  2632. end
  2633. for _, boss in next, owned_bosses do
  2634. boss.HumanoidRootPart.Anchored = flags["misc_boss_freezer"]
  2635. end
  2636. end)
  2637. cheat:heart_beat(function(delta)
  2638. if (not flags["misc_enabled"]) then
  2639. return
  2640. end
  2641. if (not local_player.Character) then
  2642. cheat.bypass = false
  2643. return
  2644. end
  2645. if (not local_player.Character:FindFirstChild("HumanoidRootPart")) then
  2646. cheat.bypass = false
  2647. return
  2648. end
  2649. if (cheat.teleport_bypass) then
  2650. local_player.Character.HumanoidRootPart.Velocity = Vector3.zero
  2651. end
  2652. if (flags["misc_fly"] or flags["misc_fly_toggle"].state) then
  2653. cheat.bypass = true
  2654. if (not cheat.bypass_ran) then
  2655. return
  2656. end
  2657. local_player.Character.HumanoidRootPart.Velocity = Vector3.zero
  2658. local is_key_down = game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.W) or game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.A) or game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.S) or game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.D)
  2659. if (is_key_down) then
  2660. local_player.Character.HumanoidRootPart.CFrame += Vector3.new(local_player.Character.Humanoid.MoveDirection.X * flags["misc_fly_speed"] * delta, current_camera.CFrame.LookVector.Y * (flags["misc_fly_speed"] / 2) * delta, local_player.Character.Humanoid.MoveDirection.Z * flags["misc_fly_speed"] * delta)
  2661. end
  2662. elseif (flags["misc_speed"] or flags["misc_speed_toggle"].state) then
  2663. cheat.bypass = true
  2664. if (not cheat.bypass_ran) then
  2665. return
  2666. end
  2667. local_player.Character.HumanoidRootPart.Velocity *= Vector3.new(0, 1, 0)
  2668. local is_key_down = game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.W) or game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.A) or game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.S) or game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.D)
  2669. if (is_key_down) then
  2670. local_player.Character.HumanoidRootPart.CFrame += Vector3.new(local_player.Character.Humanoid.MoveDirection.X * flags["misc_speed_velocity"] * delta, 0, local_player.Character.Humanoid.MoveDirection.Z * flags["misc_speed_velocity"] * delta)
  2671. end
  2672. else
  2673. cheat.bypass = false
  2674. end
  2675. end)
  2676. cheat:heart_beat(function(delta)
  2677. if (not flags["visuals_enabled"]) then
  2678. return
  2679. end
  2680. if (flags["misc_full_bright"]) then
  2681. game:GetService("Lighting").ClockTime = 12
  2682. end
  2683. end)
  2684. local rewrite_functions = {}
  2685. local function find_functions()
  2686. -- 20 bajillion times faster than looping through all of gc.
  2687. table.foreach(getupvalues(modules["bullets"]["Fire"]), function(_, func)
  2688. if (typeof(func) ~= "function") then return end
  2689. local info = getinfo(func).name
  2690. if (info == "getSpredAngle") then
  2691. rewrite_functions["get_spread_angle"] = func
  2692. end
  2693. if (info == "getSpreadVector") then
  2694. rewrite_functions["get_spread_vector"] = func
  2695. end
  2696. if (info == "castLocalBullet") then
  2697. rewrite_functions["cast_local_bullet"] = func
  2698. end
  2699. if (info == "getFireImpulse") then
  2700. rewrite_functions["get_fire_impulse"] = func
  2701. end
  2702. if (info == "playShootSound") then
  2703. rewrite_functions["play_shoot_sound"] = func
  2704. end
  2705. if (info == "impactEffects") then
  2706. rewrite_functions["impact_effects"] = func
  2707. end
  2708. if (info == "drawTracerPath") then
  2709. rewrite_functions["draw_tracer_path"] = func
  2710. end
  2711. end)
  2712. end
  2713. repeat
  2714. find_functions()
  2715. task.wait()
  2716. until rewrite_functions["get_spread_angle"] and rewrite_functions["get_spread_vector"] and rewrite_functions["cast_local_bullet"] and rewrite_functions["get_fire_impulse"] and rewrite_functions["play_shoot_sound"] and rewrite_functions["impact_effects"] and rewrite_functions["draw_tracer_path"]
  2717. getgenv().distance = 1
  2718. -- CENSORED
  2719. cheat:detour("Send", modules["network"], function(original, self, event_name, ...)
  2720. local arguments = {...}
  2721. if (event_name == "Bullet Fired") then
  2722. for _, bullet in next, (typeof(arguments[5]) == "table" and arguments[5]) or arguments[4] do
  2723. cheat.visuals.tracers[os.clock()] = {
  2724. ["start"] = arguments[2],
  2725. ["end"] = bullet["Position"]
  2726. }
  2727. end
  2728. end
  2729. if (event_name == "Set Character State") then
  2730. if (flags["misc_enabled"]) then
  2731. if (arguments[1] == "Falling" and flags["misc_spoof_falling"]) then
  2732. arguments[1] = "Sitting"
  2733. end
  2734. if ((arguments[1] == "Walking" or "Running" or "SprintSwimming") and flags["misc_spoof_status"]) then
  2735. arguments[1] = "Sitting"
  2736. end
  2737. if (cheat.bypass or cheat.teleport_bypass) then
  2738. arguments[1] = "Climbing"
  2739. end
  2740. end
  2741. end
  2742. local original_return = original(self, event_name, unpack(arguments))
  2743. if (not flags["misc_jitter_fix"]) then
  2744. if (event_name == "Set Character State" and cheat.bypass and arguments[1] == "Climbing") then
  2745. cheat.bypass_ran = true
  2746. elseif (arguments[1] ~= "Climbing") then
  2747. cheat.bypass_ran = false
  2748. end
  2749. else
  2750. cheat.bypass_ran = cheat.bypass
  2751. end
  2752. if (event_name == "Set Character State" and cheat.teleport_bypass and arguments[1] == "Climbing") then
  2753. cheat.teleport_bypass_ran = true
  2754. elseif (arguments[1] ~= "Climbing") then
  2755. cheat.teleport_bypass_ran = false
  2756. else
  2757. cheat.teleport_bypass_ran = cheat.teleport_bypass
  2758. end
  2759. return original_return
  2760. end)