OR4NG3-FRU1T

V1rpSaken script but i change the library from WindUI into Orion Library (NOT MY SCRIPT)

Jun 19th, 2026
11
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 55.57 KB | None | 0 0
  1. print("v1prware loaded")
  2.  
  3. ------------------------------------------------------------------------
  4. -- services
  5. ------------------------------------------------------------------------
  6. local svc = {
  7. Players = game:GetService("Players"),
  8. Run = game:GetService("RunService"),
  9. Input = game:GetService("UserInputService"),
  10. RS = game:GetService("ReplicatedStorage"),
  11. WS = game:GetService("Workspace"),
  12. TweenService = game:GetService("TweenService"),
  13. TextChat = game:GetService("TextChatService"),
  14. Http = game:GetService("HttpService"),
  15. }
  16.  
  17. local lp = svc.Players.LocalPlayer
  18. local gui = lp:WaitForChild("PlayerGui", 10)
  19.  
  20. ------------------------------------------------------------------------
  21. -- filesystem shims
  22. ------------------------------------------------------------------------
  23. local fs = {
  24. hasFolder = isfolder or function() return false end,
  25. makeFolder= makefolder or function() end,
  26. write = writefile or function() end,
  27. hasFile = isfile or function() return false end,
  28. read = readfile or function() return "" end,
  29. asset = getcustomasset or function(p) return p end,
  30. }
  31.  
  32. ------------------------------------------------------------------------
  33. -- config
  34. ------------------------------------------------------------------------
  35. local cfg = {}
  36. do
  37. local DIR = "GlovSakenScript"
  38. local FILE = DIR .. "/config.json"
  39. local function prep()
  40. if not fs.hasFolder(DIR) then fs.makeFolder(DIR) end
  41. end
  42. function cfg.load()
  43. prep()
  44. if not fs.hasFile(FILE) then return end
  45. local ok, t = pcall(svc.Http.JSONDecode, svc.Http, fs.read(FILE))
  46. if ok and type(t) == "table" then cfg._data = t end
  47. end
  48. function cfg.save()
  49. prep()
  50. local ok, s = pcall(svc.Http.JSONEncode, svc.Http, cfg._data)
  51. if ok then fs.write(FILE, s) end
  52. end
  53. function cfg.get(k, default)
  54. local v = cfg._data[k]
  55. return v ~= nil and v or default
  56. end
  57. function cfg.set(k, v)
  58. cfg._data[k] = v
  59. cfg.save()
  60. end
  61. cfg._data = {}
  62. cfg.load()
  63. end
  64.  
  65. ------------------------------------------------------------------------
  66. -- Orion Library
  67. ------------------------------------------------------------------------
  68. local OrionLib = loadstring(game:HttpGet(('https://raw.githubusercontent.com/jensonhirst/Orion/main/source')))()
  69.  
  70. local win = OrionLib:MakeWindow({
  71. Name = "V1PRWARE",
  72. HidePremium = false,
  73. SaveConfig = true,
  74. ConfigFolder = "GlovSakenScript",
  75. IntroEnabled = true,
  76. IntroText = "V1PRWARE",
  77. })
  78.  
  79. ------------------------------------------------------------------------
  80. -- helpers
  81. ------------------------------------------------------------------------
  82. local function getTeamFolder(name)
  83. local root = svc.WS:FindFirstChild("Players")
  84. return root and root:FindFirstChild(name)
  85. end
  86. local function getIngame()
  87. local m = svc.WS:FindFirstChild("Map")
  88. return m and m:FindFirstChild("Ingame")
  89. end
  90. local function getMapContent()
  91. local ig = getIngame()
  92. return ig and ig:FindFirstChild("Map")
  93. end
  94.  
  95. ------------------------------------------------------------------------
  96. -- TAB: SETTINGS
  97. ------------------------------------------------------------------------
  98. local tabSettings = win:MakeTab({ Name = "Settings", Icon = "rbxassetid://7059346386", PremiumOnly = false })
  99.  
  100. tabSettings:AddLabel("Interface")
  101.  
  102. -- Username Spoof
  103. local spoofActive = cfg.get("spoofActive", false)
  104. local spoofText = cfg.get("spoofText", "V1PRWARE")
  105. local spoofCache = {}
  106. local spoofConns = {}
  107.  
  108. local function spoofApply(lbl)
  109. if not (lbl:IsA("TextLabel") or lbl:IsA("TextButton")) then return end
  110. if lbl.Name ~= "Username" then return end
  111. if not spoofCache[lbl] then spoofCache[lbl] = lbl.Text end
  112. if spoofActive then lbl.Text = spoofText end
  113. end
  114. local function spoofRevert()
  115. for lbl, orig in pairs(spoofCache) do
  116. if lbl and lbl.Parent then lbl.Text = orig end
  117. end
  118. spoofCache = {}
  119. end
  120. local function spoofScan()
  121. local pg = lp:FindFirstChild("PlayerGui"); if not pg then return end
  122. task.defer(function()
  123. for _, root in ipairs({ pg:FindFirstChild("MainUI"), pg:FindFirstChild("TemporaryUI") }) do
  124. if root then
  125. for _, obj in ipairs(root:GetDescendants()) do spoofApply(obj) end
  126. end
  127. end
  128. end)
  129. end
  130. local function spoofWatch(root)
  131. if not root then return end
  132. local c = root.DescendantAdded:Connect(function(obj)
  133. if spoofActive then task.defer(spoofApply, obj) end
  134. end)
  135. table.insert(spoofConns, c)
  136. end
  137. local function spoofStart()
  138. for _, c in ipairs(spoofConns) do if c.Connected then c:Disconnect() end end
  139. spoofConns = {}
  140. local pg = lp:FindFirstChild("PlayerGui"); if not pg then return end
  141. spoofScan()
  142. spoofWatch(pg:FindFirstChild("MainUI"))
  143. spoofWatch(pg:FindFirstChild("TemporaryUI"))
  144. table.insert(spoofConns, pg.ChildAdded:Connect(function(child)
  145. if (child.Name == "MainUI" or child.Name == "TemporaryUI") and spoofActive then
  146. task.delay(0.1, spoofScan)
  147. spoofWatch(child)
  148. end
  149. end))
  150. end
  151. local function spoofStop()
  152. for _, c in ipairs(spoofConns) do if c.Connected then c:Disconnect() end end
  153. spoofConns = {}
  154. spoofRevert()
  155. end
  156.  
  157. tabSettings:AddToggle({
  158. Name = "Spoof Usernames",
  159. Default = spoofActive,
  160. Callback = function(on)
  161. spoofActive = on; cfg.set("spoofActive", on)
  162. if on then spoofStart() else spoofStop() end
  163. end
  164. })
  165.  
  166. -- Chat Force
  167. local chatForceEnabled = cfg.get("chatForceEnabled", false)
  168. local chatForceConn = nil
  169. local function enforceChatOn()
  170. if not chatForceEnabled then return end
  171. local cw = svc.TextChat:FindFirstChild("ChatWindowConfiguration")
  172. local ci = svc.TextChat:FindFirstChild("ChatInputBarConfiguration")
  173. if cw and not cw.Enabled then cw.Enabled = true end
  174. if ci and not ci.Enabled then ci.Enabled = true end
  175. end
  176.  
  177. tabSettings:AddToggle({
  178. Name = "Show Chat Logs",
  179. Default = chatForceEnabled,
  180. Callback = function(on)
  181. chatForceEnabled = on; cfg.set("chatForceEnabled", on)
  182. if chatForceConn then chatForceConn:Disconnect(); chatForceConn = nil end
  183. if on then
  184. enforceChatOn()
  185. chatForceConn = svc.Run.Heartbeat:Connect(enforceChatOn)
  186. end
  187. end
  188. })
  189.  
  190. -- Timer Position
  191. local timerSide = cfg.get("timerSide", "Middle")
  192. local function applyTimerPos()
  193. local rt = lp.PlayerGui:FindFirstChild("RoundTimer")
  194. local m = rt and rt:FindFirstChild("Main")
  195. if m then
  196. m.Position = UDim2.new(timerSide == "Middle" and 0.5 or 0.9, 0,
  197. m.Position.Y.Scale, m.Position.Y.Offset)
  198. end
  199. end
  200. applyTimerPos()
  201.  
  202. tabSettings:AddDropdown({
  203. Name = "Timer Position",
  204. Default = timerSide,
  205. Options = { "Middle", "Right" },
  206. Callback = function(v)
  207. timerSide = v; cfg.set("timerSide", v); applyTimerPos()
  208. end
  209. })
  210.  
  211. tabSettings:AddLabel("Platform Spoofer")
  212.  
  213. local platEnabled = cfg.get("platEnabled", false)
  214. local platDevice = cfg.get("platDevice", "Console")
  215. local platLoop = nil
  216. local platConn = nil
  217.  
  218. local function platPush()
  219. if not platEnabled then return end
  220. local ok, net = pcall(function() return require(svc.RS.Modules.Network) end)
  221. if ok and net then
  222. pcall(function() net:FireServerConnection("SetDevice", "REMOTE_EVENT", platDevice) end)
  223. end
  224. end
  225. local function platStart()
  226. if platLoop then return end
  227. platPush()
  228. if platConn then platConn:Disconnect() end
  229. platConn = svc.Input.LastInputTypeChanged:Connect(function()
  230. if platEnabled then platPush() end
  231. end)
  232. platLoop = task.spawn(function()
  233. while platEnabled do platPush(); task.wait(1) end
  234. platLoop = nil
  235. end)
  236. end
  237. local function platStop()
  238. platEnabled = false
  239. if platLoop then task.cancel(platLoop); platLoop = nil end
  240. if platConn then platConn:Disconnect(); platConn = nil end
  241. end
  242.  
  243. tabSettings:AddToggle({
  244. Name = "Enable Platform Spoofer",
  245. Default = platEnabled,
  246. Callback = function(on)
  247. platEnabled = on; cfg.set("platEnabled", on)
  248. if on then platStart() else platStop() end
  249. end
  250. })
  251. tabSettings:AddDropdown({
  252. Name = "Device",
  253. Default = platDevice,
  254. Options = { "PC", "Mobile", "Console" },
  255. Callback = function(v)
  256. platDevice = v; cfg.set("platDevice", v)
  257. if platEnabled then platPush() end
  258. end
  259. })
  260.  
  261. lp.CharacterAdded:Connect(function()
  262. task.delay(1, function()
  263. if spoofActive then spoofStart() end
  264. applyTimerPos()
  265. if platEnabled then platPush() end
  266. end)
  267. end)
  268.  
  269. ------------------------------------------------------------------------
  270. -- TAB: GLOBAL
  271. ------------------------------------------------------------------------
  272. local tabGlobal = win:MakeTab({ Name = "Global", Icon = "rbxassetid://7706157525", PremiumOnly = false })
  273.  
  274. tabGlobal:AddLabel("Stamina")
  275.  
  276. local stam = {
  277. on = cfg.get("stamOn", false),
  278. loss = cfg.get("stamLoss", 10),
  279. gain = cfg.get("stamGain", 20),
  280. max = cfg.get("stamMax", 100),
  281. current = cfg.get("stamCurrent", 100),
  282. noLoss = cfg.get("stamNoLoss", false),
  283. thread = nil,
  284. }
  285. local function stamModule()
  286. local ok, m = pcall(function()
  287. return require(svc.RS.Systems.Character.Game.Sprinting)
  288. end)
  289. return ok and m or nil
  290. end
  291. local function stamApply()
  292. local m = stamModule(); if not m then return end
  293. if not m.DefaultsSet then pcall(function() m.Init() end) end
  294. m.StaminaLoss = stam.loss
  295. m.StaminaGain = stam.gain
  296. m.MaxStamina = stam.max
  297. m.StaminaLossDisabled = stam.noLoss
  298. if m.Stamina and m.Stamina > stam.max then m.Stamina = stam.current end
  299. pcall(function()
  300. if m.__staminaChangedEvent then m.__staminaChangedEvent:Fire() end
  301. end)
  302. end
  303. local function stamStart()
  304. if stam.thread then return end
  305. stam.thread = task.spawn(function()
  306. while stam.on do
  307. if lp.Character and lp.Character:FindFirstChild("HumanoidRootPart") then
  308. stamApply()
  309. end
  310. task.wait(0.5)
  311. end
  312. stam.thread = nil
  313. end)
  314. end
  315. local function stamStop()
  316. stam.on = false
  317. if stam.thread then task.cancel(stam.thread); stam.thread = nil end
  318. end
  319.  
  320. tabGlobal:AddToggle({
  321. Name = "Custom Stamina",
  322. Default = stam.on,
  323. Callback = function(on)
  324. stam.on = on; cfg.set("stamOn", on)
  325. if on then stamStart() else stamStop() end
  326. end
  327. })
  328. tabGlobal:AddSlider({
  329. Name = "Loss Rate", Min = 0, Max = 50, Default = stam.loss,
  330. Callback = function(v) stam.loss = v; cfg.set("stamLoss", v) end
  331. })
  332. tabGlobal:AddSlider({
  333. Name = "Gain Rate", Min = 0, Max = 50, Default = stam.gain,
  334. Callback = function(v) stam.gain = v; cfg.set("stamGain", v) end
  335. })
  336. tabGlobal:AddSlider({
  337. Name = "Max Pool", Min = 50, Max = 500, Default = stam.max,
  338. Callback = function(v) stam.max = v; cfg.set("stamMax", v) end
  339. })
  340. tabGlobal:AddSlider({
  341. Name = "Current Value", Min = 0, Max = 500, Default = stam.current,
  342. Callback = function(v) stam.current = v; cfg.set("stamCurrent", v) end
  343. })
  344. tabGlobal:AddToggle({
  345. Name = "Infinite Stamina",
  346. Default = stam.noLoss,
  347. Callback = function(on)
  348. stam.noLoss = on; cfg.set("stamNoLoss", on)
  349. end
  350. })
  351.  
  352. if stam.on then stamStart() end
  353.  
  354. lp.CharacterAdded:Connect(function()
  355. task.delay(1.5, function()
  356. if stam.on then
  357. stamApply()
  358. if not stam.thread then stamStart() end
  359. end
  360. end)
  361. end)
  362.  
  363. -- Status
  364. tabGlobal:AddLabel("Status Effects")
  365.  
  366. local statusGroups = {
  367. Slowness = { on = false, paths = { "Modules.StatusEffects.Slowness" } },
  368. Hallucination = { on = false, paths = { "Modules.StatusEffects.KillerExclusive.Hallucination" } },
  369. Visual = { on = false, paths = {
  370. "Modules.StatusEffects.Blindness",
  371. "Modules.StatusEffects.KillerExclusive.Glitched",
  372. "Modules.StatusEffects.SurvivorExclusive.Subspaced",
  373. }},
  374. }
  375. local statusBackup = {}
  376. local function statusResolve(path)
  377. local node = svc.RS
  378. for seg in path:gmatch("[^%.]+") do
  379. node = node:FindFirstChild(seg)
  380. if not node then return nil end
  381. end
  382. return node
  383. end
  384. local function statusBlock(path)
  385. if statusBackup[path] then return end
  386. local mod = statusResolve(path)
  387. if mod and mod:IsA("ModuleScript") then
  388. statusBackup[path] = { clone = mod:Clone(), src = mod.Source }
  389. mod:Destroy()
  390. end
  391. end
  392. local function statusRestore(path)
  393. local saved = statusBackup[path]; if not saved then return end
  394. local existing = statusResolve(path)
  395. if existing then existing:Destroy() end
  396. local parentPath = path:match("^(.-)%.?[^%.]+$")
  397. local parent = statusResolve(parentPath)
  398. if parent then
  399. saved.clone.Source = saved.src
  400. saved.clone.Parent = parent
  401. end
  402. statusBackup[path] = nil
  403. end
  404. local statusLoopThread = nil
  405. local function statusTick()
  406. if statusLoopThread then return end
  407. statusLoopThread = task.spawn(function()
  408. while true do
  409. local any = false
  410. for _, g in pairs(statusGroups) do
  411. if g.on then
  412. any = true
  413. for _, p in ipairs(g.paths) do
  414. local m = statusResolve(p)
  415. if m then m:Destroy() end
  416. end
  417. end
  418. end
  419. if not any then break end
  420. task.wait(0.8)
  421. end
  422. statusLoopThread = nil
  423. end)
  424. end
  425. local function statusToggle(name)
  426. local g = statusGroups[name]; if not g then return end
  427. g.on = not g.on
  428. for _, p in ipairs(g.paths) do
  429. if g.on then statusBlock(p) else statusRestore(p) end
  430. end
  431. local any = false
  432. for _, sg in pairs(statusGroups) do if sg.on then any = true; break end end
  433. if any then statusTick()
  434. elseif statusLoopThread then
  435. task.cancel(statusLoopThread); statusLoopThread = nil
  436. end
  437. end
  438.  
  439. tabGlobal:AddButton({ Name = "Toggle: Slowness", Callback = function() statusToggle("Slowness") end })
  440. tabGlobal:AddButton({ Name = "Toggle: Hallucination", Callback = function() statusToggle("Hallucination") end })
  441. tabGlobal:AddButton({ Name = "Toggle: Visual Effects", Callback = function() statusToggle("Visual") end })
  442.  
  443. lp.CharacterAdded:Connect(function()
  444. statusBackup = {}
  445. for _, g in pairs(statusGroups) do g.on = false end
  446. if statusLoopThread then task.cancel(statusLoopThread); statusLoopThread = nil end
  447. end)
  448.  
  449. -- Network
  450. tabGlobal:AddLabel("Network")
  451.  
  452. local net = { ghost = false, lag = false, block = false, lagRunning = false }
  453. local function netGhostOn() net.block = true end
  454. local function netGhostOff() net.block = net.lag end
  455. local function netLagOn()
  456. if net.lagRunning then return end
  457. net.lagRunning = true
  458. task.spawn(function()
  459. while net.lag do
  460. net.block = true; task.wait(2)
  461. if not net.lag then break end
  462. net.block = false; task.wait(2)
  463. end
  464. net.lagRunning = false
  465. end)
  466. end
  467. local function netLagOff() net.lagRunning = false; net.block = net.ghost end
  468.  
  469. lp.CharacterAdded:Connect(function()
  470. net.ghost = false; net.lag = false; net.block = false; net.lagRunning = false
  471. end)
  472.  
  473. task.spawn(function()
  474. local mods = svc.RS:FindFirstChild("Modules"); if not mods then return end
  475. local netf = mods:FindFirstChild("Network"); if not netf then return end
  476. local ure = netf:FindFirstChild("UnreliableRemoteEvent"); if not ure then return end
  477. local old
  478. old = hookmetamethod(game, "__namecall", function(self, ...)
  479. if getnamecallmethod() == "FireServer" and self == ure then
  480. local a = {...}
  481. if #a > 0 and a[1] == "UpdCF" and net.block then return end
  482. end
  483. return old(self, ...)
  484. end)
  485. end)
  486.  
  487. tabGlobal:AddToggle({
  488. Name = "Ghost Mode", Default = false,
  489. Callback = function(on)
  490. net.ghost = on
  491. if on then netGhostOn() else netGhostOff() end
  492. end
  493. })
  494. tabGlobal:AddToggle({
  495. Name = "Lag Mode", Default = false,
  496. Callback = function(on)
  497. net.lag = on
  498. if on then netLagOn() else netLagOff() end
  499. end
  500. })
  501.  
  502. -- Hitbox
  503. tabGlobal:AddLabel("Hitbox")
  504.  
  505. local hb = {
  506. on = cfg.get("hbOn", false),
  507. strength = cfg.get("hbStrength", 50),
  508. conn = nil,
  509. active = {},
  510. }
  511. local hbAbilities = {
  512. Slash=1,Swing=1,Dagger=1,Charge=1,Punch=1,PlasmaBeam=1,
  513. Shoot=1,Behead=1,GashingWound=1,CorruptNature=1,
  514. WalkspeedOverride=1,Stab=1,Nova=1,MassInfection=1,Entanglement=1,
  515. }
  516. local hbRemote = svc.RS
  517. :WaitForChild("Modules")
  518. :WaitForChild("Network")
  519. :WaitForChild("RemoteEvent")
  520.  
  521. local function hbReadName(raw)
  522. if typeof(raw) == "buffer" then
  523. local s = buffer.tostring(raw)
  524. return s:match("[%a]+") or s:gsub("[^%w]", "")
  525. end
  526. return tostring(raw):gsub("\"", "")
  527. end
  528. local function hbPush(dist)
  529. local ch = lp.Character; if not ch then return end
  530. local r = ch:FindFirstChild("HumanoidRootPart"); if not r then return end
  531. local was = r.AssemblyLinearVelocity
  532. r.AssemblyLinearVelocity = was + r.CFrame.LookVector * dist
  533. svc.Run.RenderStepped:Wait()
  534. if ch and ch.Parent and r and r.Parent then
  535. r.AssemblyLinearVelocity = was
  536. end
  537. end
  538. local function hbStart()
  539. if hb.conn then return end
  540. hb.conn = hbRemote.OnClientEvent:Connect(function(action, data)
  541. if not hb.on then return end
  542. if action ~= "UseActorAbility" then return end
  543. if typeof(data) ~= "table" or not data[1] then return end
  544. local name = hbReadName(data[1])
  545. if not name or not hbAbilities[name] or hb.active[name] then return end
  546. hb.active[name] = true
  547. local t0 = tick()
  548. local c; c = svc.Run.Heartbeat:Connect(function()
  549. if tick() - t0 >= 1 then c:Disconnect(); hb.active[name] = nil; return end
  550. if hb.on then hbPush(hb.strength)
  551. else c:Disconnect(); hb.active[name] = nil end
  552. end)
  553. end)
  554. end
  555. local function hbStop()
  556. if hb.conn then hb.conn:Disconnect(); hb.conn = nil end
  557. for k in pairs(hb.active) do hb.active[k] = nil end
  558. end
  559.  
  560. tabGlobal:AddToggle({
  561. Name = "Hitbox Expander", Default = hb.on,
  562. Callback = function(on)
  563. hb.on = on; cfg.set("hbOn", on)
  564. if on then hbStart() else hbStop() end
  565. end
  566. })
  567. tabGlobal:AddSlider({
  568. Name = "Hitbox Strength", Min = 5, Max = 100, Default = hb.strength,
  569. Callback = function(v) hb.strength = v; cfg.set("hbStrength", v) end
  570. })
  571.  
  572. lp.CharacterAdded:Connect(function()
  573. for k in pairs(hb.active) do hb.active[k] = nil end
  574. task.delay(1, function() if hb.on then hbStop(); hbStart() end end)
  575. end)
  576. lp.CharacterRemoving:Connect(function()
  577. for k in pairs(hb.active) do hb.active[k] = nil end
  578. end)
  579.  
  580. ------------------------------------------------------------------------
  581. -- TAB: GENERATOR
  582. ------------------------------------------------------------------------
  583. local tabGen = win:MakeTab({ Name = "Generator", Icon = "rbxassetid://125543574844651", PremiumOnly = false })
  584. tabGen:AddLabel("Auto Solve")
  585.  
  586. local flow = {
  587. on = cfg.get("flowOn", false),
  588. nodeDelay = cfg.get("flowNodeDelay", 0.04),
  589. lineDelay = cfg.get("flowLineDelay", 0.60),
  590. }
  591. local function flowKey(n) return n.row .. "-" .. n.col end
  592. local function flowDir(r1,c1,r2,c2)
  593. if r2<r1 then return "up" end
  594. if r2>r1 then return "down" end
  595. if c2<c1 then return "left" end
  596. if c2>c1 then return "right" end
  597. end
  598. local function flowDirFlip(d)
  599. return ({up="down",down="up",left="right",right="left"})[d]
  600. end
  601. local function flowNeighbour(r1,c1,r2,c2)
  602. if r2==r1-1 and c2==c1 then return "up" end
  603. if r2==r1+1 and c2==c1 then return "down" end
  604. if r2==r1 and c2==c1-1 then return "left" end
  605. if r2==r1 and c2==c1+1 then return "right" end
  606. return false
  607. end
  608. local function flowConnections(prev,curr,nxt)
  609. local t={}
  610. if prev and curr then
  611. local d=flowDir(curr.row,curr.col,prev.row,prev.col)
  612. if d then t[flowDirFlip(d)]=true end
  613. end
  614. if nxt and curr then
  615. local d=flowDir(curr.row,curr.col,nxt.row,nxt.col)
  616. if d then t[d]=true end
  617. end
  618. return t
  619. end
  620. local function flowOrder(path,endpoints)
  621. if not path or #path==0 then return path end
  622. local lookup={}
  623. for _,n in ipairs(path) do lookup[flowKey(n)]=n end
  624. local start
  625. for _,ep in ipairs(endpoints or {}) do
  626. for _,n in ipairs(path) do
  627. if n.row==ep.row and n.col==ep.col then
  628. start={row=ep.row,col=ep.col}; break
  629. end
  630. end
  631. if start then break end
  632. end
  633. if not start then
  634. for _,n in ipairs(path) do
  635. local nb=0
  636. for _,d in ipairs({{-1,0},{1,0},{0,-1},{0,1}}) do
  637. if lookup[(n.row+d[1]).."-"..(n.col+d[2])] then nb+=1 end
  638. end
  639. if nb==1 then start={row=n.row,col=n.col}; break end
  640. end
  641. end
  642. if not start then start={row=path[1].row,col=path[1].col} end
  643. local pool={};local ordered={}
  644. for _,n in ipairs(path) do pool[flowKey(n)]={row=n.row,col=n.col} end
  645. local cur=start
  646. table.insert(ordered,{row=cur.row,col=cur.col})
  647. pool[flowKey(cur)]=nil
  648. while next(pool) do
  649. local moved=false
  650. for k,node in pairs(pool) do
  651. if flowNeighbour(cur.row,cur.col,node.row,node.col) then
  652. table.insert(ordered,{row=node.row,col=node.col})
  653. pool[k]=nil; cur=node; moved=true; break
  654. end
  655. end
  656. if not moved then break end
  657. end
  658. return ordered
  659. end
  660. local function flowSolve(puzzle)
  661. if not puzzle or not puzzle.Solution then return end
  662. local indices={}
  663. for i=1,#puzzle.Solution do indices[i]=i end
  664. for i=#indices,2,-1 do
  665. local j=math.random(1,i); indices[i],indices[j]=indices[j],indices[i]
  666. end
  667. for _,ci in ipairs(indices) do
  668. local ordered=flowOrder(puzzle.Solution[ci],puzzle.targetPairs[ci])
  669. puzzle.paths[ci]={}
  670. for i,node in ipairs(ordered) do
  671. table.insert(puzzle.paths[ci],{row=node.row,col=node.col})
  672. puzzle.gridConnections=puzzle.gridConnections or {}
  673. puzzle.gridConnections[flowKey(node)]=flowConnections(ordered[i-1],node,ordered[i+1])
  674. puzzle:updateGui()
  675. task.wait(flow.nodeDelay)
  676. end
  677. task.wait(flow.lineDelay)
  678. puzzle:checkForWin()
  679. end
  680. end
  681.  
  682. do
  683. local mod = svc.RS:FindFirstChild("Modules")
  684. and svc.RS.Modules:FindFirstChild("Misc")
  685. and svc.RS.Modules.Misc:FindFirstChild("FlowGameManager")
  686. and svc.RS.Modules.Misc.FlowGameManager:FindFirstChild("FlowGame")
  687. if mod then
  688. local FG = require(mod)
  689. local original = FG.new
  690. FG.new = function(...)
  691. local puzzle = original(...)
  692. if flow.on then
  693. task.spawn(function() task.wait(0.3); flowSolve(puzzle) end)
  694. end
  695. return puzzle
  696. end
  697. end
  698. end
  699.  
  700. tabGen:AddToggle({
  701. Name = "Auto Solve", Default = flow.on,
  702. Callback = function(on) flow.on = on; cfg.set("flowOn", on) end
  703. })
  704. tabGen:AddSlider({
  705. Name = "Node Speed", Min = 0.01, Max = 0.50, Default = flow.nodeDelay,
  706. Callback = function(v) flow.nodeDelay = v; cfg.set("flowNodeDelay", v) end
  707. })
  708. tabGen:AddSlider({
  709. Name = "Line Pause", Min = 0.00, Max = 1.00, Default = flow.lineDelay,
  710. Callback = function(v) flow.lineDelay = v; cfg.set("flowLineDelay", v) end
  711. })
  712.  
  713. ------------------------------------------------------------------------
  714. -- TAB: KILLER
  715. ------------------------------------------------------------------------
  716. local tabKiller = win:MakeTab({ Name = "Killer", Icon = "rbxassetid://9583486354", PremiumOnly = false })
  717.  
  718. tabKiller:AddLabel("Aimbot")
  719.  
  720. local aim = {
  721. on = cfg.get("aimOn", false),
  722. cooldown = cfg.get("aimCooldown", 0.3),
  723. lockTime = cfg.get("aimLockTime", 0.4),
  724. maxDist = cfg.get("aimMaxDist", 30),
  725. smooth = cfg.get("aimSmooth", 0.35),
  726. targeting = false,
  727. target = nil,
  728. deathConn = nil,
  729. autoRotate = nil,
  730. lastFired = 0,
  731. hum = nil,
  732. hrp = nil,
  733. cache = {},
  734. cacheTime = 0,
  735. cacheLife = 0.5,
  736. }
  737. local function aimAmIKiller()
  738. local ch = lp.Character; if not ch then return false end
  739. local kf = getTeamFolder("Killers")
  740. return kf and ch:IsDescendantOf(kf)
  741. end
  742. local function aimRefreshChar(ch)
  743. aim.hum = ch:FindFirstChildOfClass("Humanoid")
  744. aim.hrp = ch:FindFirstChild("HumanoidRootPart")
  745. end
  746. local function aimRefreshTargets()
  747. local now = tick()
  748. if now - aim.cacheTime < aim.cacheLife then return end
  749. aim.cacheTime = now; aim.cache = {}
  750. local sf = getTeamFolder("Survivors"); if not sf then return end
  751. for _, model in ipairs(sf:GetChildren()) do
  752. if model ~= lp.Character and model:IsA("Model") then
  753. local h = model:FindFirstChildOfClass("Humanoid")
  754. local r = model:FindFirstChild("HumanoidRootPart")
  755. if h and r and h.Health > 0 then
  756. table.insert(aim.cache, r)
  757. end
  758. end
  759. end
  760. end
  761. local function aimNearest()
  762. aimRefreshTargets()
  763. if not aim.hrp or #aim.cache == 0 then return nil end
  764. local best, bd = nil, math.huge
  765. for _, r in ipairs(aim.cache) do
  766. local d = (r.Position - aim.hrp.Position).Magnitude
  767. if d < bd and d <= aim.maxDist then bd = d; best = r end
  768. end
  769. return best
  770. end
  771. local function aimUnlock()
  772. if not aim.targeting then return end
  773. if aim.deathConn then aim.deathConn:Disconnect(); aim.deathConn = nil end
  774. if aim.autoRotate ~= nil and aim.hum then aim.hum.AutoRotate = aim.autoRotate end
  775. aim.targeting = false; aim.target = nil
  776. end
  777. local function aimLock(r)
  778. if not r or not r.Parent or not aim.hum or not aim.hrp then return end
  779. if aim.targeting and aim.target == r then return end
  780. aimUnlock()
  781. aim.target = r; aim.targeting = true
  782. aim.autoRotate = aim.hum.AutoRotate; aim.hum.AutoRotate = false
  783. local th = r.Parent:FindFirstChildOfClass("Humanoid")
  784. if th then aim.deathConn = th.Died:Connect(aimUnlock) end
  785. task.delay(aim.lockTime, function()
  786. if aim.target == r then aimUnlock() end
  787. end)
  788. end
  789.  
  790. svc.Run.RenderStepped:Connect(function()
  791. if not aim.on or not aim.targeting or not aim.hrp or not aim.target then return end
  792. if not aim.target.Parent then aimUnlock(); return end
  793. local th = aim.target.Parent:FindFirstChildOfClass("Humanoid")
  794. if not th or th.Health <= 0 then aimUnlock(); return end
  795. local flat = Vector3.new(
  796. aim.target.Position.X - aim.hrp.Position.X, 0,
  797. aim.target.Position.Z - aim.hrp.Position.Z
  798. ).Unit
  799. if flat.Magnitude > 0 then
  800. aim.hrp.CFrame = aim.hrp.CFrame:Lerp(
  801. CFrame.new(aim.hrp.Position, aim.hrp.Position + flat), aim.smooth
  802. )
  803. end
  804. end)
  805.  
  806. do
  807. local remote
  808. pcall(function()
  809. remote = svc.RS:WaitForChild("Modules",10):WaitForChild("Network",10):WaitForChild("RemoteEvent",10)
  810. end)
  811. if remote then
  812. remote.OnClientEvent:Connect(function(...)
  813. if not aim.on then return end
  814. local a = {...}
  815. if typeof(a[1]) ~= "string" then return end
  816. local n = a[1]
  817. if not (n:match("Ability") or n:match("[QER]") or n=="Slash" or n=="Dagger" or n=="Charge") then return end
  818. if tick() - aim.lastFired < aim.cooldown then return end
  819. aim.lastFired = tick()
  820. if aimAmIKiller() then
  821. local t = aimNearest()
  822. if t then aimLock(t) end
  823. end
  824. end)
  825. end
  826. end
  827.  
  828. lp.CharacterAdded:Connect(function(ch) task.wait(0.5); aimRefreshChar(ch) end)
  829. if lp.Character then aimRefreshChar(lp.Character) end
  830.  
  831. tabKiller:AddToggle({
  832. Name = "Enable Aimbot", Default = aim.on,
  833. Callback = function(on)
  834. aim.on = on; cfg.set("aimOn", on)
  835. if not on then aimUnlock() end
  836. end
  837. })
  838. tabKiller:AddSlider({
  839. Name = "Cooldown (s)", Min = 0.1, Max = 2.0, Default = aim.cooldown,
  840. Callback = function(v) aim.cooldown = v; cfg.set("aimCooldown", v) end
  841. })
  842. tabKiller:AddSlider({
  843. Name = "Lock Time (s)", Min = 0.1, Max = 3.0, Default = aim.lockTime,
  844. Callback = function(v) aim.lockTime = v; cfg.set("aimLockTime", v) end
  845. })
  846. tabKiller:AddSlider({
  847. Name = "Max Distance", Min = 5, Max = 100, Default = aim.maxDist,
  848. Callback = function(v) aim.maxDist = v; cfg.set("aimMaxDist", v) end
  849. })
  850. tabKiller:AddSlider({
  851. Name = "Rotation Smoothing", Min = 0.05, Max = 1.0, Default = aim.smooth,
  852. Callback = function(v) aim.smooth = v; cfg.set("aimSmooth", v) end
  853. })
  854.  
  855. -- Anti-Backstab
  856. tabKiller:AddLabel("Anti-Backstab")
  857.  
  858. local abs = {
  859. on = cfg.get("absOn", false),
  860. range = cfg.get("absRange", 40),
  861. duration = cfg.get("absDur", 1.5),
  862. locked = false,
  863. soundConn = nil,
  864. scanThread = nil,
  865. rings = {},
  866. }
  867. local absTriggerSounds = { ["86710781315432"]=true, ["99820161736138"]=true }
  868. local absScreenGui = nil
  869. local function absGui()
  870. if absScreenGui and absScreenGui.Parent then return absScreenGui end
  871. local pg = lp:FindFirstChild("PlayerGui"); if not pg then return nil end
  872. absScreenGui = Instance.new("ScreenGui")
  873. absScreenGui.Name = "AbsGui"
  874. absScreenGui.ResetOnSpawn = false
  875. absScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
  876. absScreenGui.Parent = pg
  877. return absScreenGui
  878. end
  879. local function absShowLabel(show)
  880. local g = absGui(); if not g then return end
  881. local lbl = g:FindFirstChild("AbsTaunt")
  882. if not lbl then
  883. lbl = Instance.new("TextLabel")
  884. lbl.Name = "AbsTaunt"
  885. lbl.Size = UDim2.new(0,500,0,50)
  886. lbl.Position = UDim2.new(0.5,-250,0.38,0)
  887. lbl.BackgroundTransparency = 1
  888. lbl.TextColor3 = Color3.new(1,1,1)
  889. lbl.TextStrokeTransparency = 0.4
  890. lbl.TextStrokeColor3 = Color3.new(0,0,0)
  891. lbl.Text = "At least they tried 😂"
  892. lbl.Font = Enum.Font.GothamBold
  893. lbl.TextSize = 36
  894. lbl.TextTransparency = 1
  895. lbl.Parent = g
  896. end
  897. local target = show and 0 or 1
  898. pcall(function()
  899. svc.TweenService:Create(lbl, TweenInfo.new(show and 0.15 or 0.5), {TextTransparency=target}):Play()
  900. end)
  901. end
  902. local function absAddRing(model)
  903. local hrp = model:FindFirstChild("HumanoidRootPart")
  904. if not hrp or abs.rings[model] then return end
  905. pcall(function()
  906. local ring = Instance.new("Part")
  907. ring.Name = "AbsRing"
  908. ring.Shape = Enum.PartType.Cylinder
  909. ring.Size = Vector3.new(0.1, abs.range*2, abs.range*2)
  910. ring.Color = Color3.fromRGB(220,50,50)
  911. ring.Material = Enum.Material.ForceField
  912. ring.Transparency = 0.5
  913. ring.CanCollide = false
  914. ring.CanTouch = false
  915. ring.CFrame = hrp.CFrame * CFrame.Angles(0,0,math.rad(90))
  916. ring.Parent = hrp
  917. local w = Instance.new("WeldConstraint")
  918. w.Part0=hrp; w.Part1=ring; w.Parent=ring
  919. abs.rings[model]=ring
  920. end)
  921. end
  922. local function absRemoveRing(model)
  923. local r = abs.rings[model]
  924. if r then pcall(function() r:Destroy() end); abs.rings[model]=nil end
  925. end
  926. local function absResizeRings()
  927. for _,r in pairs(abs.rings) do
  928. if r and r.Parent then r.Size=Vector3.new(0.1,abs.range*2,abs.range*2) end
  929. end
  930. end
  931. local function absCleanRings()
  932. for m in pairs(abs.rings) do absRemoveRing(m) end
  933. end
  934. local function absFindTwoTime()
  935. local players = svc.WS:FindFirstChild("Players"); if not players then return nil end
  936. for _,folder in ipairs(players:GetChildren()) do
  937. local tt = folder:FindFirstChild("TwoTime")
  938. if tt then return tt end
  939. end
  940. return nil
  941. end
  942. local function absTrigger()
  943. if abs.locked then return end
  944. local ch = lp.Character
  945. local myRoot = ch and ch:FindFirstChild("HumanoidRootPart")
  946. if not myRoot then return end
  947. local ttModel = absFindTwoTime(); if not ttModel then return end
  948. local ttRoot = ttModel:FindFirstChild("HumanoidRootPart"); if not ttRoot then return end
  949. if (myRoot.Position-ttRoot.Position).Magnitude > abs.range then return end
  950. abs.locked = true
  951. absShowLabel(true)
  952. task.spawn(function()
  953. local deadline = tick()+abs.duration
  954. while tick()<deadline do
  955. if not abs.on then break end
  956. local ch2 = lp.Character
  957. local r2 = ch2 and ch2:FindFirstChild("HumanoidRootPart")
  958. if not r2 or not ttRoot.Parent then break end
  959. r2.CFrame = CFrame.lookAt(r2.Position, Vector3.new(ttRoot.Position.X,r2.Position.Y,ttRoot.Position.Z))
  960. svc.Run.RenderStepped:Wait()
  961. end
  962. abs.locked = false
  963. absShowLabel(false)
  964. end)
  965. end
  966. local function absHookSounds()
  967. if abs.soundConn then abs.soundConn:Disconnect(); abs.soundConn=nil end
  968. abs.soundConn = svc.WS.DescendantAdded:Connect(function(obj)
  969. if not abs.on or not obj:IsA("Sound") then return end
  970. local id = obj.SoundId:match("%d+")
  971. if id and absTriggerSounds[id] then absTrigger() end
  972. end)
  973. end
  974. local function absStartScan()
  975. if abs.scanThread then return end
  976. abs.scanThread = task.spawn(function()
  977. while abs.on do
  978. local players = svc.WS:FindFirstChild("Players")
  979. if players then
  980. for _,folder in ipairs(players:GetChildren()) do
  981. for _,model in ipairs(folder:GetChildren()) do
  982. if model.Name=="TwoTime" then absAddRing(model) end
  983. end
  984. end
  985. end
  986. for m in pairs(abs.rings) do
  987. if not m.Parent then absRemoveRing(m) end
  988. end
  989. task.wait(1)
  990. end
  991. abs.scanThread=nil
  992. end)
  993. end
  994. local function absStart() absHookSounds(); absStartScan() end
  995. local function absStop()
  996. abs.on=false
  997. if abs.soundConn then abs.soundConn:Disconnect(); abs.soundConn=nil end
  998. if abs.scanThread then task.cancel(abs.scanThread); abs.scanThread=nil end
  999. absCleanRings(); abs.locked=false; absShowLabel(false)
  1000. end
  1001.  
  1002. lp.CharacterAdded:Connect(function()
  1003. abs.locked=false
  1004. if abs.on then absStart() end
  1005. end)
  1006.  
  1007. tabKiller:AddToggle({
  1008. Name = "Enable Anti-Backstab", Default = abs.on,
  1009. Callback = function(on)
  1010. abs.on=on; cfg.set("absOn",on)
  1011. if on then absStart() else absStop() end
  1012. end
  1013. })
  1014. tabKiller:AddSlider({
  1015. Name = "Detection Range", Min = 10, Max = 120, Default = abs.range,
  1016. Callback = function(v) abs.range=v; cfg.set("absRange",v); absResizeRings() end
  1017. })
  1018. tabKiller:AddSlider({
  1019. Name = "Look Duration (s)", Min = 0.3, Max = 5.0, Default = abs.duration,
  1020. Callback = function(v) abs.duration=v; cfg.set("absDur",v) end
  1021. })
  1022.  
  1023. ------------------------------------------------------------------------
  1024. -- TAB: VISUAL (ESP)
  1025. ------------------------------------------------------------------------
  1026. local tabVisual = win:MakeTab({ Name = "Visual (ESP)", Icon = "rbxassetid://524302419", PremiumOnly = false })
  1027. tabVisual:AddLabel("ESP")
  1028.  
  1029. local esp = {
  1030. killers=cfg.get("espKillers",false), survivors=cfg.get("espSurvivors",false),
  1031. generators=cfg.get("espGenerators",false), items=cfg.get("espItems",false),
  1032. buildings=cfg.get("espBuildings",false), shadows=cfg.get("espShadows",false),
  1033. killerFolder=nil, survivorFolder=nil, mapFolder=nil,
  1034. playerConns={}, mapConns={}, shadowConns={}, healthConns={}, progConns={},
  1035. shadowSet={}, guardConns={}, ready=false,
  1036. }
  1037. local function espItemColor(name)
  1038. local n=name:lower()
  1039. if n:find("medkit") then return Color3.fromRGB(0,255,200) end
  1040. if n:find("bloxycola") then return Color3.fromRGB(0,200,255) end
  1041. return Color3.fromRGB(0,230,230)
  1042. end
  1043. local espAttach, espDetach
  1044. espAttach = function(obj,tag,color,isChar)
  1045. if not obj or not obj.Parent then return end
  1046. if obj:FindFirstChild(tag) then return end
  1047. local root = obj:FindFirstChild("HumanoidRootPart") or obj.PrimaryPart
  1048. or obj:FindFirstChildWhichIsA("BasePart")
  1049. or obj:FindFirstChild("Base") or obj:FindFirstChild("Main")
  1050. if not root then
  1051. for _,d in ipairs(obj:GetDescendants()) do
  1052. if d:IsA("BasePart") then root=d; break end
  1053. end
  1054. end
  1055. if not root then return end
  1056. pcall(function()
  1057. local hl = Instance.new("Highlight")
  1058. hl.Name="esp_hl_"..tag; hl.FillColor=color; hl.FillTransparency=0.8
  1059. hl.OutlineColor=color; hl.OutlineTransparency=0
  1060. hl.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop
  1061. hl.Adornee=obj; hl.Parent=obj
  1062. local bb=Instance.new("BillboardGui")
  1063. bb.Name=tag.."_bb"; bb.Adornee=root
  1064. bb.Size=UDim2.new(0,100,0,20); bb.StudsOffset=Vector3.new(0,isChar and 3.5 or 3.8,0)
  1065. bb.AlwaysOnTop=true; bb.MaxDistance=1000; bb.Parent=obj
  1066. local lbl=Instance.new("TextLabel")
  1067. lbl.Size=UDim2.new(1,0,1,0); lbl.BackgroundTransparency=1
  1068. lbl.TextColor3=color; lbl.TextStrokeTransparency=0.5
  1069. lbl.TextStrokeColor3=Color3.new(0,0,0); lbl.TextSize=15
  1070. lbl.FontFace=Font.new("rbxasset://fonts/families/AccanthisADFStd.json")
  1071. lbl.Parent=bb
  1072. if isChar then
  1073. local hum=obj:FindFirstChildOfClass("Humanoid")
  1074. if hum then
  1075. lbl.Text=obj.Name.." (100%)"
  1076. local c=hum.HealthChanged:Connect(function()
  1077. if lbl.Parent then
  1078. lbl.Text=obj.Name.." ("..math.floor(hum.Health/hum.MaxHealth*100).."%)"
  1079. end
  1080. end)
  1081. esp.healthConns[obj]=c
  1082. else lbl.Text=obj.Name end
  1083. else
  1084. local prog=obj:FindFirstChild("Progress")
  1085. if prog and prog:IsA("NumberValue") then
  1086. lbl.Text=math.floor(prog.Value).."%"
  1087. local c=prog.Changed:Connect(function()
  1088. if lbl.Parent then lbl.Text=math.floor(prog.Value).."%" end
  1089. end)
  1090. esp.progConns[obj]=c
  1091. else lbl.Text=obj.Name end
  1092. end
  1093. end)
  1094. if esp.guardConns[obj] then pcall(function() esp.guardConns[obj]:Disconnect() end) end
  1095. esp.guardConns[obj]=obj.ChildRemoved:Connect(function(removed)
  1096. if removed.Name~=tag and removed.Name~=(tag.."_bb") then return end
  1097. task.defer(function()
  1098. if obj.Parent then espAttach(obj,tag,color,isChar) end
  1099. end)
  1100. end)
  1101. end
  1102. espDetach = function(obj,tag)
  1103. if not obj then return end
  1104. if esp.guardConns[obj] then
  1105. pcall(function() esp.guardConns[obj]:Disconnect() end)
  1106. esp.guardConns[obj]=nil
  1107. end
  1108. pcall(function()
  1109. for _,name in ipairs({tag,tag.."_bb"}) do
  1110. local c=obj:FindFirstChild(name); if c then c:Destroy() end
  1111. end
  1112. if esp.healthConns[obj] then esp.healthConns[obj]:Disconnect(); esp.healthConns[obj]=nil end
  1113. if esp.progConns[obj] then esp.progConns[obj]:Disconnect(); esp.progConns[obj]=nil end
  1114. end)
  1115. end
  1116. local function espDoKillers(on)
  1117. if not esp.killerFolder then return end
  1118. for _,k in ipairs(esp.killerFolder:GetChildren()) do
  1119. if k:IsA("Model") then
  1120. if on then espAttach(k,"esp_k",Color3.fromRGB(255,0,0),true)
  1121. else espDetach(k,"esp_k") end
  1122. end
  1123. end
  1124. end
  1125. local function espDoSurvivors(on)
  1126. if not esp.survivorFolder then return end
  1127. for _,s in ipairs(esp.survivorFolder:GetChildren()) do
  1128. if s:IsA("Model") then
  1129. if on then espAttach(s,"esp_s",Color3.fromRGB(255,255,0),true)
  1130. else espDetach(s,"esp_s") end
  1131. end
  1132. end
  1133. end
  1134. local function espDoGenerators(on)
  1135. local map=getMapContent(); if not map then return end
  1136. for _,obj in ipairs(map:GetChildren()) do
  1137. if obj.Name=="Generator" then
  1138. if on then espAttach(obj,"esp_g",Color3.fromRGB(255,105,180),false)
  1139. else espDetach(obj,"esp_g") end
  1140. end
  1141. end
  1142. end
  1143. local function espDoItems(on)
  1144. local map=getMapContent(); if not map then return end
  1145. for _,obj in ipairs(map:GetChildren()) do
  1146. if obj.Name=="BloxyCola" or obj.Name=="Medkit" then
  1147. if on then espAttach(obj,"esp_i",espItemColor(obj.Name),false)
  1148. else espDetach(obj,"esp_i") end
  1149. end
  1150. end
  1151. end
  1152. local function espDoBuildings(on)
  1153. local ig=getIngame(); if not ig then return end
  1154. for _,obj in ipairs(ig:GetChildren()) do
  1155. if obj.Name=="BuildermanSentry" or obj.Name=="SubspaceTripmine" or obj.Name=="BuildermanDispenser" then
  1156. if on then espAttach(obj,"esp_b",Color3.fromRGB(255,80,0),false)
  1157. else espDetach(obj,"esp_b") end
  1158. end
  1159. end
  1160. end
  1161. local function espShadowAdd(part)
  1162. if not part or esp.shadowSet[part] or not part:IsA("BasePart") then return end
  1163. pcall(function()
  1164. local hl=Instance.new("Highlight")
  1165. hl.Name="esp_sh"; hl.FillColor=Color3.fromRGB(255,230,0); hl.FillTransparency=0.3
  1166. hl.OutlineColor=Color3.fromRGB(255,230,0); hl.OutlineTransparency=0
  1167. hl.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop
  1168. hl.Adornee=part; hl.Parent=part
  1169. esp.shadowSet[part]=true
  1170. end)
  1171. end
  1172. local function espShadowRemove(part)
  1173. if not part then return end
  1174. pcall(function()
  1175. local h=part:FindFirstChild("esp_sh"); if h then h:Destroy() end
  1176. esp.shadowSet[part]=nil
  1177. end)
  1178. end
  1179. local function espShadowClear()
  1180. for p in pairs(esp.shadowSet) do espShadowRemove(p) end
  1181. esp.shadowSet={}
  1182. end
  1183. local function espShadowScan()
  1184. local ig=getIngame(); if not ig then return end
  1185. for _,folder in ipairs(ig:GetChildren()) do
  1186. if folder.Name:lower():find("shadow") then
  1187. for _,d in ipairs(folder:GetDescendants()) do
  1188. if d:IsA("BasePart") then espShadowAdd(d) end
  1189. end
  1190. end
  1191. end
  1192. end
  1193. local function espWatchShadows()
  1194. for _,c in pairs(esp.shadowConns) do if c.Connected then c:Disconnect() end end
  1195. esp.shadowConns={}
  1196. local ig=getIngame(); if not ig then return end
  1197. local function watchFolder(folder)
  1198. local c=folder.DescendantAdded:Connect(function(d)
  1199. if esp.shadows and d:IsA("BasePart") then task.wait(0.05); espShadowAdd(d) end
  1200. end)
  1201. table.insert(esp.shadowConns,c)
  1202. end
  1203. table.insert(esp.shadowConns,ig.ChildAdded:Connect(function(child)
  1204. if not esp.shadows then return end
  1205. if child.Name:lower():find("shadow") then
  1206. task.wait(0.1)
  1207. for _,d in ipairs(child:GetDescendants()) do
  1208. if d:IsA("BasePart") then espShadowAdd(d) end
  1209. end
  1210. watchFolder(child)
  1211. end
  1212. end))
  1213. table.insert(esp.shadowConns,ig.ChildRemoved:Connect(function(child)
  1214. if child.Name:lower():find("shadow") then
  1215. for _,d in ipairs(child:GetDescendants()) do espShadowRemove(d) end
  1216. end
  1217. end))
  1218. for _,folder in ipairs(ig:GetChildren()) do
  1219. if folder.Name:lower():find("shadow") then watchFolder(folder) end
  1220. end
  1221. end
  1222. local function espBindPlayers()
  1223. for _,c in pairs(esp.playerConns) do if c.Connected then c:Disconnect() end end
  1224. esp.playerConns={}
  1225. if esp.killerFolder then
  1226. table.insert(esp.playerConns,esp.killerFolder.ChildAdded:Connect(function(ch)
  1227. task.wait(0.2)
  1228. if esp.killers and ch:IsA("Model") then espAttach(ch,"esp_k",Color3.fromRGB(255,0,0),true) end
  1229. end))
  1230. table.insert(esp.playerConns,esp.killerFolder.ChildRemoved:Connect(function(ch)
  1231. espDetach(ch,"esp_k")
  1232. end))
  1233. end
  1234. if esp.survivorFolder then
  1235. table.insert(esp.playerConns,esp.survivorFolder.ChildAdded:Connect(function(ch)
  1236. task.wait(0.2)
  1237. if esp.survivors and ch:IsA("Model") then espAttach(ch,"esp_s",Color3.fromRGB(255,255,0),true) end
  1238. end))
  1239. table.insert(esp.playerConns,esp.survivorFolder.ChildRemoved:Connect(function(ch)
  1240. espDetach(ch,"esp_s")
  1241. end))
  1242. end
  1243. end
  1244. local function espBindWorld()
  1245. for _,c in pairs(esp.mapConns) do if c.Connected then c:Disconnect() end end
  1246. esp.mapConns={}
  1247. local ig=getIngame(); if not ig then return end
  1248. table.insert(esp.mapConns,ig.ChildAdded:Connect(function(obj)
  1249. task.wait(0.2)
  1250. if esp.buildings and (obj.Name=="BuildermanSentry" or obj.Name=="SubspaceTripmine" or obj.Name=="BuildermanDispenser") then
  1251. espAttach(obj,"esp_b",Color3.fromRGB(255,80,0),false)
  1252. end
  1253. if esp.shadows and obj.Name:lower():find("shadow") then
  1254. task.wait(0.1)
  1255. for _,d in ipairs(obj:GetDescendants()) do
  1256. if d:IsA("BasePart") then espShadowAdd(d) end
  1257. end
  1258. end
  1259. if obj.Name=="Map" then
  1260. task.wait(1); esp.mapFolder=obj
  1261. obj.ChildAdded:Connect(function(child)
  1262. task.wait(0.2)
  1263. if esp.generators and child.Name=="Generator" then espAttach(child,"esp_g",Color3.fromRGB(255,105,180),false) end
  1264. if esp.items and (child.Name=="BloxyCola" or child.Name=="Medkit") then espAttach(child,"esp_i",espItemColor(child.Name),false) end
  1265. end)
  1266. obj.ChildRemoved:Connect(function(child)
  1267. if child.Name=="Generator" then espDetach(child,"esp_g") end
  1268. if child.Name=="BloxyCola" or child.Name=="Medkit" then espDetach(child,"esp_i") end
  1269. end)
  1270. if esp.generators then task.spawn(function() espDoGenerators(true) end) end
  1271. if esp.items then task.spawn(function() espDoItems(true) end) end
  1272. end
  1273. end))
  1274. table.insert(esp.mapConns,ig.ChildRemoved:Connect(function(obj)
  1275. if obj.Name=="BuildermanSentry" or obj.Name=="SubspaceTripmine" then espDetach(obj,"esp_b") end
  1276. if obj.Name=="Map" then esp.mapFolder=nil end
  1277. end))
  1278. local existing=getMapContent()
  1279. if existing then
  1280. esp.mapFolder=existing
  1281. task.spawn(function()
  1282. task.wait(2)
  1283. if esp.generators then espDoGenerators(true) end
  1284. if esp.items then espDoItems(true) end
  1285. end)
  1286. end
  1287. end
  1288.  
  1289. task.spawn(function()
  1290. while true do
  1291. task.wait(3)
  1292. if esp.killers then task.spawn(function() espDoKillers(true) end) end
  1293. if esp.survivors then task.spawn(function() espDoSurvivors(true) end) end
  1294. if esp.generators then task.spawn(function() espDoGenerators(true) end) end
  1295. if esp.items then task.spawn(function() espDoItems(true) end) end
  1296. if esp.buildings then task.spawn(function() espDoBuildings(true) end) end
  1297. if esp.shadows then task.spawn(espShadowScan) end
  1298. end
  1299. end)
  1300.  
  1301. task.spawn(function()
  1302. task.wait(3)
  1303. local pf=svc.WS:FindFirstChild("Players")
  1304. if pf then
  1305. esp.killerFolder=pf:FindFirstChild("Killers")
  1306. esp.survivorFolder=pf:FindFirstChild("Survivors")
  1307. espBindPlayers()
  1308. if esp.killers then task.spawn(function() espDoKillers(true) end) end
  1309. if esp.survivors then task.spawn(function() espDoSurvivors(true) end) end
  1310. end
  1311. espBindWorld()
  1312. if esp.buildings then task.spawn(function() espDoBuildings(true) end) end
  1313. if esp.shadows then espWatchShadows(); task.spawn(espShadowScan) end
  1314. esp.ready=true
  1315. end)
  1316.  
  1317. lp.CharacterAdded:Connect(function()
  1318. task.wait(4)
  1319. espBindPlayers(); espBindWorld()
  1320. if esp.killers then task.spawn(function() espDoKillers(true) end) end
  1321. if esp.survivors then task.spawn(function() espDoSurvivors(true) end) end
  1322. if esp.generators then task.spawn(function() espDoGenerators(true) end) end
  1323. if esp.items then task.spawn(function() espDoItems(true) end) end
  1324. if esp.buildings then task.spawn(function() espDoBuildings(true) end) end
  1325. if esp.shadows then espWatchShadows(); task.spawn(espShadowScan) end
  1326. end)
  1327.  
  1328. tabVisual:AddToggle({ Name="Killers ESP", Default=esp.killers, Callback=function(on) esp.killers=on; cfg.set("espKillers",on); task.spawn(function() espDoKillers(on) end) end })
  1329. tabVisual:AddToggle({ Name="Survivors ESP", Default=esp.survivors, Callback=function(on) esp.survivors=on; cfg.set("espSurvivors",on); task.spawn(function() espDoSurvivors(on) end) end })
  1330. tabVisual:AddToggle({ Name="Generators ESP", Default=esp.generators, Callback=function(on) esp.generators=on; cfg.set("espGenerators",on); task.spawn(function() espDoGenerators(on) end) end })
  1331. tabVisual:AddToggle({ Name="Items ESP", Default=esp.items, Callback=function(on) esp.items=on; cfg.set("espItems",on); task.spawn(function() espDoItems(on) end) end })
  1332. tabVisual:AddToggle({ Name="Buildings ESP", Default=esp.buildings, Callback=function(on) esp.buildings=on; cfg.set("espBuildings",on); task.spawn(function() espDoBuildings(on) end) end })
  1333. tabVisual:AddToggle({
  1334. Name="JD Footprints", Default=esp.shadows,
  1335. Callback=function(on)
  1336. esp.shadows=on; cfg.set("espShadows",on)
  1337. if on then espWatchShadows(); task.spawn(espShadowScan)
  1338. else
  1339. espShadowClear()
  1340. for _,c in pairs(esp.shadowConns) do if c.Connected then c:Disconnect() end end
  1341. esp.shadowConns={}
  1342. end
  1343. end
  1344. })
  1345.  
  1346. ------------------------------------------------------------------------
  1347. -- TAB: MUSIC
  1348. ------------------------------------------------------------------------
  1349. local tabMusic = win:MakeTab({ Name = "Music", Icon = "rbxassetid://7059338419", PremiumOnly = false })
  1350. tabMusic:AddLabel("LMS Music")
  1351.  
  1352. local music = {
  1353. on=cfg.get("musicOn",false), selected=cfg.get("musicSel","CondemnedLMS"),
  1354. cached={}, origId=nil, thread=nil,
  1355. }
  1356. local musicDir="GlovSakenScript/LMS_Songs"
  1357. if not fs.hasFolder("GlovSakenScript") then fs.makeFolder("GlovSakenScript") end
  1358. if not fs.hasFolder(musicDir) then fs.makeFolder(musicDir) end
  1359.  
  1360. local musicTracks = {
  1361. ["AbberantLMS"] ="https://files.catbox.moe/4bb0g9.mp3",
  1362. ["OvertimeLMS"] ="https://files.catbox.moe/puf7xu.mp3",
  1363. ["PhotoshopLMS"] ="https://files.catbox.moe/yui8km.mp3",
  1364. ["JX1DX1LMS"] ="https://files.catbox.moe/52p5yh.mp3",
  1365. ["CondemnedLMS"] ="https://files.catbox.moe/l470am.mp3",
  1366. ["GeometryLMS"] ="https://files.catbox.moe/bqzc7u.mp3",
  1367. ["Milestone4LMS"]="https://files.catbox.moe/z68ns9.mp3",
  1368. }
  1369. local musicList={}
  1370. for k in pairs(musicTracks) do table.insert(musicList,k) end
  1371. table.sort(musicList)
  1372.  
  1373. local function musicFetch(name)
  1374. if music.cached[name] then return music.cached[name] end
  1375. local url=musicTracks[name]; if not url then return nil end
  1376. local path=musicDir.."/"..name:gsub("[^%w]","_")..".mp3"
  1377. if not fs.hasFile(path) then
  1378. local ok,data=pcall(function() return game:HttpGet(url) end)
  1379. if not ok or not data or #data==0 then return nil end
  1380. fs.write(path,data)
  1381. end
  1382. music.cached[name]=fs.asset(path)
  1383. return music.cached[name]
  1384. end
  1385. local function musicGetSound()
  1386. local t=svc.WS:FindFirstChild("Themes")
  1387. return t and t:FindFirstChild("LastSurvivor")
  1388. end
  1389. local function musicPlay(name)
  1390. local snd=musicGetSound(); if not snd then return false end
  1391. if not music.origId then music.origId=snd.SoundId end
  1392. local asset=musicFetch(name)
  1393. if asset then snd.SoundId=asset; snd:Play(); return true end
  1394. return false
  1395. end
  1396. local function musicReset()
  1397. local snd=musicGetSound()
  1398. if snd and music.origId then snd.SoundId=music.origId; snd:Play() end
  1399. end
  1400. local function musicIsLMS()
  1401. local sf=getTeamFolder("Survivors")
  1402. if sf then
  1403. local alive=0
  1404. for _,s in ipairs(sf:GetChildren()) do
  1405. local h=s:FindFirstChildOfClass("Humanoid")
  1406. if h and h.Health>0 then alive+=1 end
  1407. end
  1408. if alive==1 then return true end
  1409. end
  1410. local snd=musicGetSound()
  1411. return snd and snd.IsPlaying
  1412. end
  1413. local function musicMonitor()
  1414. local i=0
  1415. while music.on and i<1000 do
  1416. i+=1
  1417. if musicIsLMS() then
  1418. local snd=musicGetSound()
  1419. if not snd or snd.SoundId~=music.cached[music.selected] then musicPlay(music.selected) end
  1420. task.wait(5)
  1421. else task.wait(1) end
  1422. end
  1423. end
  1424.  
  1425. tabMusic:AddToggle({
  1426. Name="Auto-Play on LMS", Default=music.on,
  1427. Callback=function(on)
  1428. music.on=on; cfg.set("musicOn",on)
  1429. if on then music.thread=task.spawn(musicMonitor)
  1430. else
  1431. if music.thread then task.cancel(music.thread); music.thread=nil end
  1432. musicReset()
  1433. end
  1434. end
  1435. })
  1436. tabMusic:AddDropdown({
  1437. Name="Track", Default=music.selected, Options=musicList,
  1438. Callback=function(sel)
  1439. music.selected=type(sel)=="table" and sel[1] or sel
  1440. cfg.set("musicSel",music.selected)
  1441. task.spawn(function() musicFetch(music.selected) end)
  1442. end
  1443. })
  1444. tabMusic:AddButton({ Name="â–¶ Play", Callback=function() musicPlay(music.selected) end })
  1445. tabMusic:AddButton({ Name="â–  Stop", Callback=function() musicReset() end })
  1446. tabMusic:AddButton({ Name="↓ Preload All", Callback=function()
  1447. for name in pairs(musicTracks) do task.spawn(function() musicFetch(name) end); task.wait(0.1) end
  1448. end })
  1449.  
  1450. lp.CharacterAdded:Connect(function()
  1451. task.wait(3)
  1452. if music.on then
  1453. if music.thread then task.cancel(music.thread) end
  1454. music.thread=task.spawn(musicMonitor)
  1455. end
  1456. end)
  1457.  
  1458. ------------------------------------------------------------------------
  1459. -- TAB: CHARACTER
  1460. ------------------------------------------------------------------------
  1461. local tabChar = win:MakeTab({ Name = "Character", Icon = "rbxassetid://96856417870846", PremiumOnly = false })
  1462.  
  1463. tabChar:AddLabel("Killers")
  1464. tabChar:AddButton({ Name="Slasher (Locked)", Callback=function() end })
  1465.  
  1466. tabChar:AddLabel("Survivors")
  1467. tabChar:AddButton({ Name="Veeronica (Locked)", Callback=function() end })
  1468.  
  1469. tabChar:AddLabel("Sentinels")
  1470. tabChar:AddButton({ Name="Guest1337", Callback=function() loadstring(game:HttpGet("https://pastebin.com/raw/cDpDF3z4"))() end })
  1471. tabChar:AddButton({ Name="Shedletsky (use hitbox)", Callback=function() end })
  1472. tabChar:AddButton({ Name="Chance", Callback=function() loadstring(game:HttpGet("https://pastebin.com/raw/x0ECfJqN"))() end })
  1473. tabChar:AddButton({ Name="TwoTime", Callback=function() loadstring(game:HttpGet("https://pastebin.com/raw/6QiUWVMp"))() end })
  1474.  
  1475. tabChar:AddLabel("Supports")
  1476. tabChar:AddButton({ Name="Dusekkar (Locked)", Callback=function() end })
  1477. tabChar:AddButton({ Name="Elliot", Callback=function() loadstring(game:HttpGet("https://pastebin.com/raw/wDaKAwvD"))() end })
  1478.  
  1479. ------------------------------------------------------------------------
  1480. -- TAB: INTERFACE
  1481. ------------------------------------------------------------------------
  1482. local tabInterface = win:MakeTab({ Name = "Interface", Icon = "rbxassetid://117931171948240", PremiumOnly = false })
  1483. tabInterface:AddLabel("UI Functions")
  1484. tabInterface:AddButton({ Name="Close UI", Callback=function() OrionLib:Destroy() end })
  1485.  
  1486. ------------------------------------------------------------------------
  1487. -- Init
  1488. ------------------------------------------------------------------------
  1489. OrionLib:Init()
Add Comment
Please, Sign In to add comment