Rivals Sem Key e OP Silent aim, rage bot, fly, ESP, e etc...
201 Views
11d atrás
Verificado
Descrição
Nenhuma descrição fornecida.
Como Utilizar?
Script
Script Patched
Clique para revelar
1--[[
2 Rivals Cheat v2.2 - Rayfield UI
3 Optional Mobile Buttons + Fixed Config System + Fixed Aimbot Checks
4]]
5
6local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
7
8local RunService = game:GetService("RunService")
9local Players = game:GetService("Players")
10local LocalPlayer = Players.LocalPlayer
11local Workspace = game:GetService("Workspace")
12local ReplicatedStorage = game:GetService("ReplicatedStorage")
13local UserInputService = game:GetService("UserInputService")
14local Camera = Workspace.CurrentCamera
15
16-- Connection storage for proper cleanup
17local connections = {}
18local mobileButtons = {}
19local mobileButtonsEnabled = {
20 Aimbot = false,
21 Fly = false,
22 NoClip = false
23}
24
25local Window = Rayfield:CreateWindow({
26 Name = "Rivals - thegxx v2.2",
27 LoadingTitle = "Rivals Cheat",
28 LoadingSubtitle = "by thegxx",
29 ConfigurationSaving = {
30 Enabled = true,
31 FolderName = "RivalsCheat",
32 FileName = "RivalsConfig"
33 },
34 Discord = {
35 Enabled = false,
36 Invite = "noinvite",
37 RememberJoins = true
38 },
39 KeySystem = false,
40})
41
42local Tabs = {
43 Aimbot = Window:CreateTab("🎯 Aimbot & Precision", 4483362458),
44 Visuals = Window:CreateTab("👁️ Visuals & ESP", 4483362458),
45 Movement = Window:CreateTab("🏃 Movement & Mobility", 4483362458),
46 Protection = Window:CreateTab("🛡️ Protection & Survival", 4483362458),
47 Extras = Window:CreateTab("⚙️ UI & Extras", 4483362458),
48 Settings = Window:CreateTab("⚙️ Settings", 4483362458),
49}
50
51-- Utility functions
52local function getCharacter()
53 return LocalPlayer.Character
54end
55
56local function getHumanoid()
57 local character = getCharacter()
58 return character and character:FindFirstChild("Humanoid")
59end
60
61local function getRoot()
62 local character = getCharacter()
63 return character and character:FindFirstChild("HumanoidRootPart")
64end
65
66-- Mobile Button Creator
67local function createMobileButton(name, position, callback)
68 local ScreenGui = LocalPlayer.PlayerGui:FindFirstChild("MobileButtons") or Instance.new("ScreenGui")
69 ScreenGui.Name = "MobileButtons"
70 ScreenGui.ResetOnSpawn = false
71 ScreenGui.Parent = LocalPlayer.PlayerGui
72
73 local button = Instance.new("TextButton")
74 button.Name = name
75 button.Size = UDim2.new(0, 80, 0, 80)
76 button.Position = position
77 button.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
78 button.BorderSizePixel = 2
79 button.BorderColor3 = Color3.fromRGB(255, 255, 255)
80 button.Text = name
81 button.TextColor3 = Color3.fromRGB(255, 255, 255)
82 button.TextSize = 14
83 button.Font = Enum.Font.GothamBold
84 button.Visible = false
85 button.Parent = ScreenGui
86
87 local corner = Instance.new("UICorner")
88 corner.CornerRadius = UDim.new(0, 10)
89 corner.Parent = button
90
91 local toggled = false
92 button.MouseButton1Click:Connect(function()
93 if not mobileButtonsEnabled[name] then return end
94 toggled = not toggled
95 button.BackgroundColor3 = toggled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(40, 40, 40)
96 callback(toggled)
97 end)
98
99 mobileButtons[name] = button
100 return button
101end
102
103local function updateMobileButtonVisibility(buttonName, shouldShow)
104 if mobileButtons[buttonName] then
105 mobileButtons[buttonName].Visible = shouldShow and mobileButtonsEnabled[buttonName]
106 end
107end
108
109-- ========== Aimbot / Silent Aim / Trigger / Settings ==========
110
111-- Aimbot Variables
112local aimbotEnabled = false
113local aimbotLock = "Head"
114local aimbotPrediction = false
115local aimbotAutoLock = false
116local aimbotShowFOV = false
117local aimbotFOVColor = Color3.fromRGB(255, 255, 255)
118local fovCircle = nil
119
120-- Keybinds (fixed handling)
121local aimbotKeyEnum = Enum.KeyCode.Q
122local flyKeyEnum = Enum.KeyCode.F
123
124local function parseKeybindInput(k)
125 -- Supports Enum.KeyCode, string ("Q") or table return types from UI
126 if typeof(k) == "EnumItem" and k.EnumType == Enum.KeyCode then
127 return k
128 elseif typeof(k) == "string" then
129 local name = k:upper()
130 if Enum.KeyCode[name] then
131 return Enum.KeyCode[name]
132 end
133 elseif type(k) == "table" and #k > 0 then
134 -- Rayfield sometimes returns table like {"Q"} or similar
135 local first = k[1]
136 if typeof(first) == "EnumItem" and first.EnumType == Enum.KeyCode then
137 return first
138 elseif type(first) == "string" then
139 local name = first:upper()
140 if Enum.KeyCode[name] then return Enum.KeyCode[name] end
141 end
142 end
143 return nil
144end
145
146-- Sections
147local AimbotSection = Tabs.Aimbot:CreateSection("Rage Aimbot")
148
149local AimbotToggle = Tabs.Aimbot:CreateToggle({
150 Name = "Enable Rage Aimbot",
151 CurrentValue = false,
152 Flag = "AimbotToggle",
153 Callback = function(Value)
154 aimbotEnabled = Value
155 if mobileButtons["Aimbot"] then
156 mobileButtons["Aimbot"].BackgroundColor3 = Value and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(40, 40, 40)
157 end
158 end,
159})
160
161local AimbotKeybind = Tabs.Aimbot:CreateKeybind({
162 Name = "Rage Aimbot Keybind",
163 CurrentKeybind = "Q",
164 HoldToInteract = false,
165 Flag = "AimbotKeybind",
166 Callback = function(Keybind)
167 local parsed = parseKeybindInput(Keybind)
168 if parsed then
169 aimbotKeyEnum = parsed
170 end
171 -- Rayfield handles displaying/storing the config key; we just cache the Enum.KeyCode here
172 end,
173})
174
175local AimbotLockDropdown = Tabs.Aimbot:CreateDropdown({
176 Name = "Lock Target",
177 Options = {"Head", "Torso"},
178 CurrentOption = {"Head"},
179 MultipleOptions = false,
180 Flag = "AimbotLock",
181 Callback = function(Option)
182 aimbotLock = Option[1] == "Head" and "Head" or "UpperTorso"
183 end,
184})
185
186local AimbotPredictionToggle = Tabs.Aimbot:CreateToggle({
187 Name = "Movement Prediction",
188 CurrentValue = false,
189 Flag = "AimbotPrediction",
190 Callback = function(Value)
191 aimbotPrediction = Value
192 end,
193})
194
195local AimbotAutoLockToggle = Tabs.Aimbot:CreateToggle({
196 Name = "Auto Lock",
197 CurrentValue = false,
198 Flag = "AimbotAutoLock",
199 Callback = function(Value)
200 aimbotAutoLock = Value
201 end,
202})
203
204-- Silent Aim Section
205local SilentSection = Tabs.Aimbot:CreateSection("Silent Aim")
206
207local silentAimEnabled = false
208local silentAimHitchance = 100
209local silentAimLock = "Head"
210
211local SilentAimToggle = Tabs.Aimbot:CreateToggle({
212 Name = "Silent Aim",
213 CurrentValue = false,
214 Flag = "SilentAim",
215 Callback = function(Value)
216 silentAimEnabled = Value
217 end,
218})
219
220local SilentAimHitchanceSlider = Tabs.Aimbot:CreateSlider({
221 Name = "Hitchance (%)",
222 Range = {0, 100},
223 Increment = 1,
224 Suffix = "%",
225 CurrentValue = 100,
226 Flag = "SilentHitchance",
227 Callback = function(Value)
228 silentAimHitchance = Value
229 end,
230})
231
232local SilentAimLockDropdown = Tabs.Aimbot:CreateDropdown({
233 Name = "Lock Target",
234 Options = {"Head", "Torso"},
235 CurrentOption = {"Head"},
236 MultipleOptions = false,
237 Flag = "SilentAimLock",
238 Callback = function(Option)
239 silentAimLock = Option[1] == "Head" and "Head" or "UpperTorso"
240 end,
241})
242
243-- Trigger Bot Section
244local TriggerSection = Tabs.Aimbot:CreateSection("Trigger Bot")
245
246local triggerEnabled = false
247local triggerDelay = 0
248
249local TriggerToggle = Tabs.Aimbot:CreateToggle({
250 Name = "Trigger Bot",
251 CurrentValue = false,
252 Flag = "TriggerBot",
253 Callback = function(Value)
254 triggerEnabled = Value
255 end,
256})
257
258local TriggerDelaySlider = Tabs.Aimbot:CreateSlider({
259 Name = "Trigger Delay (ms)",
260 Range = {0, 500},
261 Increment = 10,
262 Suffix = "ms",
263 CurrentValue = 0,
264 Flag = "TriggerDelay",
265 Callback = function(Value)
266 triggerDelay = Value / 1000
267 end,
268})
269
270-- Aimbot Settings Section
271local SettingsSection = Tabs.Aimbot:CreateSection("Aimbot Settings")
272
273local aimDeadCheck = true
274local aimWallCheck = true
275local aimPriority = "Distance"
276local aimFOV = 500
277local aimMaxDistance = 0
278
279local AimPriorityDropdown = Tabs.Aimbot:CreateDropdown({
280 Name = "Priority",
281 Options = {"Distance", "Health"},
282 CurrentOption = {"Distance"},
283 MultipleOptions = false,
284 Flag = "AimPriority",
285 Callback = function(Option)
286 aimPriority = Option[1]
287 end,
288})
289
290local AimFOVSlider = Tabs.Aimbot:CreateSlider({
291 Name = "Aimbot FOV",
292 Range = {100, 1000},
293 Increment = 10,
294 CurrentValue = 500,
295 Flag = "AimFOV",
296 Callback = function(Value)
297 aimFOV = Value
298 if fovCircle then
299 fovCircle.Radius = Value
300 end
301 end,
302})
303
304local ShowFOVToggle = Tabs.Aimbot:CreateToggle({
305 Name = "Show FOV Circle",
306 CurrentValue = false,
307 Flag = "ShowFOV",
308 Callback = function(Value)
309 aimbotShowFOV = Value
310 if fovCircle then
311 fovCircle.Visible = Value
312 end
313 end,
314})
315
316local MaxDistanceSlider = Tabs.Aimbot:CreateSlider({
317 Name = "Max Distance (0 = unlimited)",
318 Range = {0, 1000},
319 Increment = 10,
320 Suffix = " studs",
321 CurrentValue = 0,
322 Flag = "MaxDistance",
323 Callback = function(Value)
324 aimMaxDistance = Value
325 end,
326})
327
328local DeadCheckToggle = Tabs.Aimbot:CreateToggle({
329 Name = "Dead Check",
330 CurrentValue = true,
331 Flag = "DeadCheck",
332 Callback = function(Value)
333 aimDeadCheck = Value
334 end,
335})
336
337local WallCheckToggle = Tabs.Aimbot:CreateToggle({
338 Name = "Wall Check",
339 CurrentValue = true,
340 Flag = "WallCheck",
341 Callback = function(Value)
342 aimWallCheck = Value
343 end,
344})
345
346-- Create FOV Circle
347fovCircle = Drawing.new("Circle")
348fovCircle.Thickness = 2
349fovCircle.NumSides = 100
350fovCircle.Radius = aimFOV
351fovCircle.Filled = false
352fovCircle.Visible = false
353fovCircle.ZIndex = 999
354fovCircle.Transparency = 1
355fovCircle.Color = aimbotFOVColor
356
357-- Helper: FIXED target validation with proper checks
358local function isValidTarget(player)
359 -- Basic existence checks
360 if not player then return false end
361 if player == LocalPlayer then return false end
362 if not player.Parent then return false end
363
364 -- Character checks
365 local character = player.Character
366 if not character then return false end
367 if not character.Parent then return false end
368
369 -- Humanoid checks
370 local humanoid = character:FindFirstChild("Humanoid")
371 if not humanoid then return false end
372
373 -- Dead check
374 if aimDeadCheck then
375 if humanoid.Health <= 0 then return false end
376 if humanoid:GetState() == Enum.HumanoidStateType.Dead then return false end
377 end
378
379 -- Target part existence
380 local targetPartName = aimbotLock or "Head"
381 local targetPart = character:FindFirstChild(targetPartName)
382 if not targetPart then return false end
383
384 -- Distance check
385 if aimMaxDistance > 0 then
386 local myRoot = getRoot()
387 if myRoot then
388 local distance = (myRoot.Position - targetPart.Position).Magnitude
389 if distance > aimMaxDistance then
390 return false
391 end
392 else
393 return false
394 end
395 end
396
397 -- Wall check (visibility check)
398 if aimWallCheck then
399 local myRoot = getRoot()
400 if not myRoot then return false end
401
402 local origin = Camera.CFrame.Position
403 local direction = (targetPart.Position - origin)
404 local distance = direction.Magnitude
405
406 local ray = Ray.new(origin, direction.Unit * distance)
407 local ignoreList = {getCharacter(), character}
408
409 local hit, hitPosition = Workspace:FindPartOnRayWithIgnoreList(ray, ignoreList)
410
411 -- If we hit something and it's not the target's character, they're behind a wall
412 if hit then
413 if not hit:IsDescendantOf(character) then
414 return false
415 end
416 end
417 end
418
419 return true
420end
421
422local function getClosestPlayer(fov)
423 local closest, closestValue = nil, math.huge
424 local center = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
425
426 for _, player in ipairs(Players:GetPlayers()) do
427 if not isValidTarget(player) then continue end
428
429 local character = player.Character
430 if not character then continue end
431
432 local targetPartName = aimbotLock or "Head"
433 local targetPart = character:FindFirstChild(targetPartName)
434 if not targetPart then continue end
435
436 local pos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
437 if not onScreen then continue end
438
439 local screenPos = Vector2.new(pos.X, pos.Y)
440 local dist = (center - screenPos).Magnitude
441
442 if fov and dist > fov then continue end
443
444 local value
445 if aimPriority == "Distance" then
446 value = dist
447 else
448 local humanoid = character:FindFirstChild("Humanoid")
449 if humanoid then
450 value = humanoid.Health
451 else
452 value = math.huge
453 end
454 end
455
456 if value < closestValue then
457 closestValue = value
458 closest = player
459 end
460 end
461
462 return closest
463end
464
465-- Keep track of locked target
466local currentlyLockedTarget = nil
467local lastTriggerShot = 0
468
469-- Aimbot Render loop with Auto Lock and Smoothness
470connections["Aimbot"] = RunService:BindToRenderStep("Aimbot", Enum.RenderPriority.Camera.Value, function(dt)
471 -- Update FOV circle position
472 if fovCircle then
473 fovCircle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
474 fovCircle.Radius = aimFOV
475 fovCircle.Visible = aimbotShowFOV
476 fovCircle.Color = aimbotFOVColor
477 end
478
479 if not aimbotEnabled then
480 currentlyLockedTarget = nil
481 return
482 end
483
484 local targetToAim = nil
485
486 -- Auto Lock logic with validation
487 if aimbotAutoLock and currentlyLockedTarget then
488 if isValidTarget(currentlyLockedTarget) then
489 targetToAim = currentlyLockedTarget
490 else
491 currentlyLockedTarget = nil
492 end
493 end
494
495 -- Find new target if needed
496 if not targetToAim then
497 targetToAim = getClosestPlayer(aimFOV)
498 currentlyLockedTarget = targetToAim
499 end
500
501 if targetToAim and targetToAim.Character then
502 local targetPartName = aimbotLock or "Head"
503 local targetPart = targetToAim.Character:FindFirstChild(targetPartName)
504
505 if not targetPart then
506 currentlyLockedTarget = nil
507 return
508 end
509
510 local predictionOffset = Vector3.zero
511 if aimbotPrediction then
512 local v = targetPart.AssemblyLinearVelocity or targetPart.Velocity or Vector3.zero
513 predictionOffset = v * 0.15
514 end
515
516 local targetPos = targetPart.Position + predictionOffset
517
518 -- Instant snap
519 Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position, targetPos)
520 else
521 currentlyLockedTarget = nil
522 end
523end)
524
525-- Silent Aim hook
526pcall(function()
527 local utility = require(ReplicatedStorage.Modules.Utility)
528 local oldRaycast = utility.Raycast
529
530 utility.Raycast = function(...)
531 local args = {...}
532 if silentAimEnabled and #args >= 3 and math.random(100) <= silentAimHitchance then
533 local closest = getClosestPlayer(aimFOV)
534 if closest and closest.Character then
535 local targetPart = closest.Character:FindFirstChild(silentAimLock or "Head")
536 if targetPart then
537 args[3] = targetPart.Position
538 end
539 end
540 end
541 return oldRaycast(table.unpack(args))
542 end
543end)
544
545-- Improved Trigger Bot
546local lastClickTime = 0
547connections["Trigger"] = RunService.Heartbeat:Connect(function()
548 if not triggerEnabled then return end
549
550 local currentTime = tick()
551 if currentTime - lastTriggerShot < triggerDelay then return end
552
553 local locked = currentlyLockedTarget
554 if not locked or not locked.Character then return end
555 if not isValidTarget(locked) then return end
556
557 if currentTime - lastClickTime >= 0.1 then
558 lastClickTime = currentTime
559 lastTriggerShot = currentTime
560
561 local character = getCharacter()
562 if character then
563 local tool = character:FindFirstChildOfClass("Tool")
564 if tool then
565 pcall(function()
566 tool:Activate()
567 end)
568
569 pcall(function()
570 local remote = tool:FindFirstChild("Remote") or tool:FindFirstChild("Fire")
571 if remote and remote:IsA("RemoteEvent") then
572 remote:FireServer()
573 end
574 end)
575 end
576 end
577 end
578end)
579
580-- ========== Visuals & ESP ==========
581
582local ESPSection = Tabs.Visuals:CreateSection("Player ESP Options")
583
584local playerESPEnabled = false
585local boxESPEnabled = false
586local chamsESPEnabled = false
587local playerESPName = true
588local playerESPDistance = true
589local playerESPHealth = true
590local rainbowModeEnabled = false
591local deadESPEnabled = true
592local skeletonESPEnabled = false
593local skeletonESPTracers = false
594
595-- ESP Storage
596local espBoxes = {}
597local espChams = {}
598local espTexts = {}
599local skeletonLines = {}
600
601-- Cleanup function
602local function cleanupPlayerESP(player)
603 if espBoxes[player] then
604 pcall(function() espBoxes[player]:Remove() end)
605 espBoxes[player] = nil
606 end
607 if espChams[player] then
608 pcall(function() espChams[player]:Destroy() end)
609 espChams[player] = nil
610 end
611 if espTexts[player] then
612 pcall(function() espTexts[player]:Remove() end)
613 espTexts[player] = nil
614 end
615 if skeletonLines[player] then
616 if skeletonLines[player].lines then
617 for _, line in pairs(skeletonLines[player].lines) do
618 pcall(function() line:Remove() end)
619 end
620 end
621 if skeletonLines[player].tracer then
622 pcall(function() skeletonLines[player].tracer:Remove() end)
623 end
624 skeletonLines[player] = nil
625 end
626end
627
628-- ESP creation function
629local function createPlayerESP(player)
630 if player == LocalPlayer then return end
631 if not player.Character then return end
632
633 cleanupPlayerESP(player)
634
635 -- Box ESP
636 local box = Drawing.new("Square")
637 box.Visible = false
638 box.Color = Color3.new(1, 1, 1)
639 box.Thickness = 2
640 box.Filled = false
641 box.Transparency = 1
642 espBoxes[player] = box
643
644 -- Chams ESP
645 local cham = Instance.new("Highlight")
646 cham.Name = "ESP_Cham_" .. player.Name
647 cham.Parent = game.CoreGui
648 cham.Adornee = player.Character
649 cham.FillTransparency = 0.5
650 cham.OutlineTransparency = 0
651 cham.FillColor = Color3.new(1, 1, 1)
652 cham.OutlineColor = Color3.new(1, 1, 1)
653 cham.Enabled = false
654 espChams[player] = cham
655
656 -- Text ESP
657 local text = Drawing.new("Text")
658 text.Visible = false
659 text.Color = Color3.new(1, 1, 1)
660 text.Size = 16
661 text.Center = true
662 text.Outline = true
663 text.Transparency = 1
664 text.Font = 2
665 espTexts[player] = text
666end
667
668-- ESP Toggles
669local PlayerESPToggle = Tabs.Visuals:CreateToggle({
670 Name = "Enable Player ESP",
671 CurrentValue = false,
672 Flag = "PlayerESP",
673 Callback = function(Value)
674 playerESPEnabled = Value
675 if not Value then
676 for p in pairs(espBoxes) do cleanupPlayerESP(p) end
677 for p in pairs(skeletonLines) do cleanupPlayerESP(p) end
678 Rayfield:Notify({
679 Title = "ESP",
680 Content = "All ESP cleared",
681 Duration = 2,
682 Image = 4483362458,
683 })
684 else
685 for _, player in ipairs(Players:GetPlayers()) do
686 if player ~= LocalPlayer and player.Character then
687 createPlayerESP(player)
688 end
689 end
690 Rayfield:Notify({
691 Title = "ESP",
692 Content = "Player ESP enabled",
693 Duration = 2,
694 Image = 4483362458,
695 })
696 end
697 end,
698})
699
700local BoxESPToggle = Tabs.Visuals:CreateToggle({
701 Name = "Box ESP",
702 CurrentValue = false,
703 Flag = "BoxESP",
704 Callback = function(Value)
705 boxESPEnabled = Value
706 end,
707})
708
709local ChamsESPToggle = Tabs.Visuals:CreateToggle({
710 Name = "Chams ESP",
711 CurrentValue = false,
712 Flag = "ChamsESP",
713 Callback = function(Value)
714 chamsESPEnabled = Value
715 end,
716})
717
718local NameESPToggle = Tabs.Visuals:CreateToggle({
719 Name = "Name",
720 CurrentValue = true,
721 Flag = "NameESP",
722 Callback = function(Value)
723 playerESPName = Value
724 end,
725})
726
727local DistanceESPToggle = Tabs.Visuals:CreateToggle({
728 Name = "Distance",
729 CurrentValue = true,
730 Flag = "DistanceESP",
731 Callback = function(Value)
732 playerESPDistance = Value
733 end,
734})
735
736local HealthESPToggle = Tabs.Visuals:CreateToggle({
737 Name = "Health",
738 CurrentValue = true,
739 Flag = "HealthESP",
740 Callback = function(Value)
741 playerESPHealth = Value
742 end,
743})
744
745local SkeletonSection = Tabs.Visuals:CreateSection("Skeleton ESP Options")
746
747local SkeletonESPToggle = Tabs.Visuals:CreateToggle({
748 Name = "Skeleton ESP",
749 CurrentValue = false,
750 Flag = "SkeletonESP",
751 Callback = function(Value)
752 skeletonESPEnabled = Value
753 if not Value then
754 for p in pairs(skeletonLines) do
755 if skeletonLines[p] then
756 if skeletonLines[p].lines then
757 for _, line in pairs(skeletonLines[p].lines) do
758 line.Visible = false
759 end
760 end
761 if skeletonLines[p].tracer then
762 skeletonLines[p].tracer.Visible = false
763 end
764 end
765 end
766 end
767 end,
768})
769
770local TracersESPToggle = Tabs.Visuals:CreateToggle({
771 Name = "Tracers",
772 CurrentValue = false,
773 Flag = "TracersESP",
774 Callback = function(Value)
775 skeletonESPTracers = Value
776 if not Value then
777 for p, data in pairs(skeletonLines) do
778 if data and data.tracer then
779 data.tracer.Visible = false
780 end
781 end
782 end
783 end,
784})
785
786local OtherVisualsSection = Tabs.Visuals:CreateSection("Other Visuals")
787
788local DeadESPToggle = Tabs.Visuals:CreateToggle({
789 Name = "Hide Dead ESP",
790 CurrentValue = true,
791 Flag = "DeadESP",
792 Callback = function(Value)
793 deadESPEnabled = Value
794 end,
795})
796
797local RainbowModeToggle = Tabs.Visuals:CreateToggle({
798 Name = "Rainbow Mode",
799 CurrentValue = false,
800 Flag = "RainbowMode",
801 Callback = function(Value)
802 rainbowModeEnabled = Value
803 end,
804})
805
806-- Setup player management
807local function setupPlayerESP(player)
808 if player == LocalPlayer then return end
809
810 player.CharacterAdded:Connect(function(char)
811 task.wait(0.1)
812 if playerESPEnabled then
813 createPlayerESP(player)
814 end
815 end)
816
817 player.CharacterRemoving:Connect(function()
818 cleanupPlayerESP(player)
819 end)
820
821 if player.Character and playerESPEnabled then
822 task.wait(0.1)
823 createPlayerESP(player)
824 end
825end
826
827for _, player in ipairs(Players:GetPlayers()) do
828 setupPlayerESP(player)
829end
830
831Players.PlayerAdded:Connect(function(player)
832 setupPlayerESP(player)
833end)
834
835Players.PlayerRemoving:Connect(function(player)
836 cleanupPlayerESP(player)
837end)
838
839-- ESP update loop
840connections["PlayerESP"] = RunService.Heartbeat:Connect(function()
841 if not playerESPEnabled then return end
842
843 local hue = tick() % 5 / 5
844 local rainbowColor = Color3.fromHSV(hue, 1, 1)
845
846 for _, player in ipairs(Players:GetPlayers()) do
847 if player == LocalPlayer then continue end
848
849 if not player.Character or not player.Character.Parent then
850 cleanupPlayerESP(player)
851 continue
852 end
853
854 local humanoid = player.Character:FindFirstChild("Humanoid")
855 local root = player.Character:FindFirstChild("HumanoidRootPart")
856
857 if not humanoid or not root then
858 cleanupPlayerESP(player)
859 continue
860 end
861
862 if deadESPEnabled and humanoid.Health <= 0 then
863 cleanupPlayerESP(player)
864 continue
865 end
866
867 if not espBoxes[player] then
868 createPlayerESP(player)
869 end
870
871 local rootPos, onScreen = Camera:WorldToViewportPoint(root.Position)
872 if onScreen then
873 -- Text ESP
874 if espTexts[player] and (playerESPName or playerESPDistance or playerESPHealth) then
875 local textStr = ""
876 if playerESPName then textStr = textStr .. player.Name .. "\n" end
877 if playerESPDistance then
878 local myRoot = getRoot()
879 if myRoot then
880 textStr = textStr .. math.floor((myRoot.Position - root.Position).Magnitude) .. " studs\n"
881 end
882 end
883 if playerESPHealth then textStr = textStr .. math.floor(humanoid.Health) .. "/" .. humanoid.MaxHealth .. "\n" end
884
885 espTexts[player].Text = textStr
886 espTexts[player].Position = Vector2.new(rootPos.X, rootPos.Y - 50)
887 espTexts[player].Visible = true
888 if rainbowModeEnabled then
889 espTexts[player].Color = rainbowColor
890 end
891 elseif espTexts[player] then
892 espTexts[player].Visible = false
893 end
894
895 -- Box ESP
896 if boxESPEnabled and espBoxes[player] then
897 local minX, minY = math.huge, math.huge
898 local maxX, maxY = -math.huge, -math.huge
899
900 for _, part in ipairs(player.Character:GetDescendants()) do
901 if part:IsA("BasePart") then
902 local corners = {
903 part.CFrame * CFrame.new(part.Size.X/2, part.Size.Y/2, part.Size.Z/2).Position,
904 part.CFrame * CFrame.new(part.Size.X/2, part.Size.Y/2, -part.Size.Z/2).Position,
905 part.CFrame * CFrame.new(part.Size.X/2, -part.Size.Y/2, part.Size.Z/2).Position,
906 part.CFrame * CFrame.new(part.Size.X/2, -part.Size.Y/2, -part.Size.Z/2).Position,
907 part.CFrame * CFrame.new(-part.Size.X/2, part.Size.Y/2, part.Size.Z/2).Position,
908 part.CFrame * CFrame.new(-part.Size.X/2, part.Size.Y/2, -part.Size.Z/2).Position,
909 part.CFrame * CFrame.new(-part.Size.X/2, -part.Size.Y/2, part.Size.Z/2).Position,
910 part.CFrame * CFrame.new(-part.Size.X/2, -part.Size.Y/2, -part.Size.Z/2).Position
911 }
912 for _, corner in ipairs(corners) do
913 local pos = Camera:WorldToViewportPoint(corner)
914 minX = math.min(minX, pos.X)
915 maxX = math.max(maxX, pos.X)
916 minY = math.min(minY, pos.Y)
917 maxY = math.max(maxY, pos.Y)
918 end
919 end
920 end
921
922 espBoxes[player].Size = Vector2.new(maxX - minX, maxY - minY)
923 espBoxes[player].Position = Vector2.new(minX, minY)
924 espBoxes[player].Visible = true
925 if rainbowModeEnabled then
926 espBoxes[player].Color = rainbowColor
927 end
928 elseif espBoxes[player] then
929 espBoxes[player].Visible = false
930 end
931 else
932 if espTexts[player] then espTexts[player].Visible = false end
933 if espBoxes[player] then espBoxes[player].Visible = false end
934 end
935
936 -- Chams ESP
937 if chamsESPEnabled and espChams[player] then
938 if espChams[player].Adornee ~= player.Character then
939 espChams[player].Adornee = player.Character
940 end
941 espChams[player].Enabled = true
942 if rainbowModeEnabled then
943 espChams[player].FillColor = rainbowColor
944 espChams[player].OutlineColor = rainbowColor
945 end
946 elseif espChams[player] then
947 espChams[player].Enabled = false
948 end
949 end
950end)
951
952-- Skeleton ESP
953local function getPos(part) return part and part.Position or nil end
954
955connections["SkeletonESP"] = RunService.Heartbeat:Connect(function()
956 if not playerESPEnabled then
957 for p in pairs(skeletonLines) do cleanupPlayerESP(p) end
958 return
959 end
960 if not skeletonESPEnabled then return end
961
962 local hue = tick() % 5 / 5
963 local rainbowColor = Color3.fromHSV(hue, 1, 1)
964
965 for _, player in ipairs(Players:GetPlayers()) do
966 if player == LocalPlayer then continue end
967
968 if not player.Character or not player.Character.Parent then
969 if skeletonLines[player] then cleanupPlayerESP(player) end
970 continue
971 end
972
973 local humanoid = player.Character:FindFirstChild("Humanoid")
974 if not humanoid or (deadESPEnabled and humanoid.Health <= 0) then
975 if skeletonLines[player] then cleanupPlayerESP(player) end
976 continue
977 end
978
979 if not skeletonLines[player] then
980 skeletonLines[player] = { lines = {}, tracer = nil }
981 for i = 1, 14 do
982 local line = Drawing.new("Line")
983 line.Visible = false
984 line.Color = Color3.new(1,1,1)
985 line.Thickness = 2
986 line.Transparency = 1
987 skeletonLines[player].lines[i] = line
988 end
989 end
990
991 local char = player.Character
992 local bonePairs = {
993 {char:FindFirstChild("Head"), char:FindFirstChild("UpperTorso")},
994 {char:FindFirstChild("UpperTorso"), char:FindFirstChild("LowerTorso")},
995 {char:FindFirstChild("UpperTorso"), char:FindFirstChild("LeftUpperArm")},
996 {char:FindFirstChild("LeftUpperArm"), char:FindFirstChild("LeftLowerArm")},
997 {char:FindFirstChild("LeftLowerArm"), char:FindFirstChild("LeftHand")},
998 {char:FindFirstChild("UpperTorso"), char:FindFirstChild("RightUpperArm")},
999 {char:FindFirstChild("RightUpperArm"), char:FindFirstChild("RightLowerArm")},
1000 {char:FindFirstChild("RightLowerArm"), char:FindFirstChild("RightHand")},
1001 {char:FindFirstChild("LowerTorso"), char:FindFirstChild("LeftUpperLeg")},
1002 {char:FindFirstChild("LeftUpperLeg"), char:FindFirstChild("LeftLowerLeg")},
1003 {char:FindFirstChild("LeftLowerLeg"), char:FindFirstChild("LeftFoot")},
1004 {char:FindFirstChild("LowerTorso"), char:FindFirstChild("RightUpperLeg")},
1005 {char:FindFirstChild("RightUpperLeg"), char:FindFirstChild("RightLowerLeg")},
1006 {char:FindFirstChild("RightLowerLeg"), char:FindFirstChild("RightFoot")}
1007 }
1008
1009 for i, pair in ipairs(bonePairs) do
1010 local startPart, endPart = pair[1], pair[2]
1011 local line = skeletonLines[player].lines[i]
1012 if startPart and endPart and line then
1013 local startPos, endPos = getPos(startPart), getPos(endPart)
1014 if startPos and endPos then
1015 local startScreen, startOn = Camera:WorldToViewportPoint(startPos)
1016 local endScreen, endOn = Camera:WorldToViewportPoint(endPos)
1017 if startOn and endOn then
1018 line.From = Vector2.new(startScreen.X, startScreen.Y)
1019 line.To = Vector2.new(endScreen.X, endScreen.Y)
1020 line.Visible = playerESPEnabled and skeletonESPEnabled
1021 if rainbowModeEnabled then line.Color = rainbowColor end
1022 else
1023 line.Visible = false
1024 end
1025 else
1026 line.Visible = false
1027 end
1028 elseif line then
1029 line.Visible = false
1030 end
1031 end
1032
1033 -- Tracer
1034 if skeletonESPTracers and skeletonESPEnabled and playerESPEnabled then
1035 local root = char:FindFirstChild("HumanoidRootPart")
1036 if root then
1037 local rootPos, onScreen = Camera:WorldToViewportPoint(root.Position)
1038 if onScreen then
1039 if not skeletonLines[player].tracer then
1040 local tracer = Drawing.new("Line")
1041 tracer.Thickness = 2
1042 tracer.Transparency = 1
1043 tracer.Color = Color3.new(1,1,1)
1044 skeletonLines[player].tracer = tracer
1045 end
1046 local tracer = skeletonLines[player].tracer
1047 tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
1048 tracer.To = Vector2.new(rootPos.X, rootPos.Y)
1049 tracer.Visible = true
1050 if rainbowModeEnabled then tracer.Color = rainbowColor end
1051 else
1052 if skeletonLines[player].tracer then skeletonLines[player].tracer.Visible = false end
1053 end
1054 end
1055 else
1056 if skeletonLines[player] and skeletonLines[player].tracer then
1057 skeletonLines[player].tracer.Visible = false
1058 end
1059 end
1060 end
1061end)
1062
1063-- ========== Movement ==========
1064
1065local MovementSection = Tabs.Movement:CreateSection("Movement Options")
1066
1067local flyEnabled = false
1068local flySpeed = 10
1069local flyBodyVelocity
1070
1071local FlyToggle = Tabs.Movement:CreateToggle({
1072 Name = "Fly Hack",
1073 CurrentValue = false,
1074 Flag = "FlyHack",
1075 Callback = function(Value)
1076 flyEnabled = Value
1077
1078 if mobileButtons["Fly"] then
1079 mobileButtons["Fly"].BackgroundColor3 = Value and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(40, 40, 40)
1080 end
1081
1082 if Value then
1083 local root = getRoot()
1084 if root then
1085 root.Anchored = false
1086
1087 if not flyBodyVelocity then
1088 flyBodyVelocity = Instance.new("BodyVelocity")
1089 flyBodyVelocity.MaxForce = Vector3.new(4000, 4000, 4000)
1090 flyBodyVelocity.Velocity = Vector3.zero
1091 flyBodyVelocity.Parent = root
1092 end
1093 end
1094 else
1095 if flyBodyVelocity then
1096 flyBodyVelocity:Destroy()
1097 flyBodyVelocity = nil
1098 end
1099 end
1100 end,
1101})
1102
1103local FlySpeedSlider = Tabs.Movement:CreateSlider({
1104 Name = "Fly Speed",
1105 Range = {1, 100},
1106 Increment = 1,
1107 CurrentValue = 10,
1108 Flag = "FlySpeed",
1109 Callback = function(Value)
1110 flySpeed = Value
1111 end,
1112})
1113
1114local FlyKeybind = Tabs.Movement:CreateKeybind({
1115 Name = "Fly Keybind",
1116 CurrentKeybind = "F",
1117 HoldToInteract = false,
1118 Flag = "FlyKeybind",
1119 Callback = function(Keybind)
1120 local parsed = parseKeybindInput(Keybind)
1121 if parsed then
1122 flyKeyEnum = parsed
1123 end
1124 end,
1125})
1126
1127connections["Fly"] = RunService.Heartbeat:Connect(function()
1128 if flyEnabled and flyBodyVelocity and flyBodyVelocity.Parent then
1129 local moveDir = Vector3.zero
1130 if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDir += Camera.CFrame.LookVector end
1131 if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDir -= Camera.CFrame.LookVector end
1132 if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDir -= Camera.CFrame.RightVector end
1133 if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDir += Camera.CFrame.RightVector end
1134 if UserInputService:IsKeyDown(Enum.KeyCode.Space) then moveDir += Vector3.new(0, 1, 0) end
1135 if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then moveDir -= Vector3.new(0, 1, 0) end
1136
1137 if moveDir.Magnitude > 0 then
1138 flyBodyVelocity.Velocity = moveDir.Unit * flySpeed
1139 else
1140 flyBodyVelocity.Velocity = Vector3.zero
1141 end
1142 end
1143end)
1144
1145local AdditionalMovementSection = Tabs.Movement:CreateSection("Additional Movement")
1146
1147-- Infinite Jump
1148local infJumpEnabled = false
1149local infJumpConnection
1150
1151local InfJumpToggle = Tabs.Movement:CreateToggle({
1152 Name = "Infinite Jump",
1153 CurrentValue = false,
1154 Flag = "InfiniteJump",
1155 Callback = function(Value)
1156 infJumpEnabled = Value
1157 if Value then
1158 infJumpConnection = UserInputService.JumpRequest:Connect(function()
1159 local humanoid = getHumanoid()
1160 if humanoid then
1161 humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
1162 end
1163 end)
1164 else
1165 if infJumpConnection then
1166 infJumpConnection:Disconnect()
1167 infJumpConnection = nil
1168 end
1169 end
1170 end,
1171})
1172
1173-- No Clip
1174local noClipEnabled = false
1175
1176local NoClipToggle = Tabs.Movement:CreateToggle({
1177 Name = "No Clip",
1178 CurrentValue = false,
1179 Flag = "NoClip",
1180 Callback = function(Value)
1181 noClipEnabled = Value
1182
1183 if mobileButtons["NoClip"] then
1184 mobileButtons["NoClip"].BackgroundColor3 = Value and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(40, 40, 40)
1185 end
1186 end,
1187})
1188
1189connections["NoClip"] = RunService.Stepped:Connect(function()
1190 if noClipEnabled then
1191 pcall(function()
1192 for _, part in ipairs(getCharacter():GetDescendants()) do
1193 if part:IsA("BasePart") then
1194 part.CanCollide = false
1195 end
1196 end
1197 end)
1198 end
1199end)
1200
1201-- Bunny Hop
1202local bunnyHopEnabled = false
1203
1204local BunnyHopToggle = Tabs.Movement:CreateToggle({
1205 Name = "Bunny Hop",
1206 CurrentValue = false,
1207 Flag = "BunnyHop",
1208 Callback = function(Value)
1209 bunnyHopEnabled = Value
1210 end,
1211})
1212
1213connections["BunnyHop"] = RunService.Heartbeat:Connect(function()
1214 if bunnyHopEnabled then
1215 pcall(function()
1216 local humanoid = getHumanoid()
1217 if humanoid and humanoid.MoveDirection.Magnitude > 0 and humanoid.FloorMaterial ~= Enum.Material.Air then
1218 humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
1219 end
1220 end)
1221 end
1222end)
1223
1224-- ========== Protection ==========
1225
1226local ProtectionSection = Tabs.Protection:CreateSection("Protection Options")
1227
1228Tabs.Protection:CreateLabel("⚠️ Update Notice")
1229Tabs.Protection:CreateLabel("Unfortunately, due to game updates,")
1230Tabs.Protection:CreateLabel("Anti-Aim and Force Third Person")
1231Tabs.Protection:CreateLabel("features have been temporarily")
1232Tabs.Protection:CreateLabel("removed. We're working on bringing")
1233Tabs.Protection:CreateLabel("them back in future updates.")
1234
1235-- ========== Extras ==========
1236
1237local ExtrasSection = Tabs.Extras:CreateSection("Extras Options")
1238
1239local fpsBoostEnabled = false
1240
1241local FPSBoostToggle = Tabs.Extras:CreateToggle({
1242 Name = "FPS Boost",
1243 CurrentValue = false,
1244 Flag = "FPSBoost",
1245 Callback = function(Value)
1246 fpsBoostEnabled = Value
1247 if Value then
1248 pcall(function()
1249 local lighting = game:GetService("Lighting")
1250 lighting.GlobalShadows = false
1251 lighting.FogEnd = 9e9
1252 settings().Rendering.QualityLevel = Enum.QualityLevel.Level01
1253
1254 for _, v in pairs(workspace:GetDescendants()) do
1255 if v:IsA("ParticleEmitter") or v:IsA("Trail") or v:IsA("Smoke") or v:IsA("Fire") then
1256 v.Enabled = false
1257 end
1258 end
1259 end)
1260 Rayfield:Notify({
1261 Title = "FPS Boost",
1262 Content = "FPS Boost Enabled!",
1263 Duration = 3,
1264 Image = 4483362458,
1265 })
1266 else
1267 pcall(function()
1268 local lighting = game:GetService("Lighting")
1269 lighting.GlobalShadows = true
1270 settings().Rendering.QualityLevel = Enum.QualityLevel.Automatic
1271 end)
1272 end
1273 end,
1274})
1275
1276local RemoveTexturesButton = Tabs.Extras:CreateButton({
1277 Name = "Remove Textures (Extreme FPS)",
1278 Callback = function()
1279 for _, v in pairs(workspace:GetDescendants()) do
1280 pcall(function()
1281 if v:IsA("Decal") or v:IsA("Texture") then
1282 v:Destroy()
1283 elseif v:IsA("BasePart") then
1284 v.Material = Enum.Material.SmoothPlastic
1285 v.Reflectance = 0
1286 end
1287 end)
1288 end
1289 Rayfield:Notify({
1290 Title = "Textures",
1291 Content = "Textures removed!",
1292 Duration = 3,
1293 Image = 4483362458,
1294 })
1295 end,
1296})
1297
1298local FullbrightButton = Tabs.Extras:CreateButton({
1299 Name = "Fullbright",
1300 Callback = function()
1301 local lighting = game:GetService("Lighting")
1302 lighting.Brightness = 2
1303 lighting.ClockTime = 14
1304 lighting.FogEnd = 100000
1305 lighting.GlobalShadows = false
1306 lighting.OutdoorAmbient = Color3.fromRGB(128, 128, 128)
1307 Rayfield:Notify({
1308 Title = "Fullbright",
1309 Content = "Fullbright Enabled!",
1310 Duration = 3,
1311 Image = 4483362458,
1312 })
1313 end,
1314})
1315
1316local RemoveFogButton = Tabs.Extras:CreateButton({
1317 Name = "Remove Fog",
1318 Callback = function()
1319 local lighting = game:GetService("Lighting")
1320 lighting.FogEnd = 100000
1321 for _, v in pairs(lighting:GetChildren()) do
1322 if v:IsA("Atmosphere") then
1323 v:Destroy()
1324 end
1325 end
1326 Rayfield:Notify({
1327 Title = "Fog",
1328 Content = "Fog Removed!",
1329 Duration = 3,
1330 Image = 4483362458,
1331 })
1332 end,
1333})
1334
1335-- ========== Settings Tab (Config Management) ==========
1336
1337local ConfigSection = Tabs.Settings:CreateSection("Configuration Management")
1338
1339local SaveConfigButton = Tabs.Settings:CreateButton({
1340 Name = "Save Configuration",
1341 Callback = function()
1342 Rayfield:Notify({
1343 Title = "Config Saved",
1344 Content = "Your configuration has been saved!",
1345 Duration = 3,
1346 Image = 4483362458,
1347 })
1348 end,
1349})
1350
1351local LoadConfigButton = Tabs.Settings:CreateButton({
1352 Name = "Load Configuration",
1353 Callback = function()
1354 Rayfield:Notify({
1355 Title = "Config Loaded",
1356 Content = "Your configuration has been loaded!",
1357 Duration = 3,
1358 Image = 4483362458,
1359 })
1360 end,
1361})
1362
1363local ResetConfigButton = Tabs.Settings:CreateButton({
1364 Name = "Reset to Default",
1365 Callback = function()
1366 Rayfield:Notify({
1367 Title = "Config Reset",
1368 Content = "Configuration reset to defaults!",
1369 Duration = 3,
1370 Image = 4483362458,
1371 })
1372 end,
1373})
1374
1375local MiscSection = Tabs.Settings:CreateSection("Miscellaneous")
1376
1377local UnloadButton = Tabs.Settings:CreateButton({
1378 Name = "Unload Script",
1379 Callback = function()
1380 UnloadScript()
1381 end,
1382})
1383
1384-- Mobile Buttons Section
1385local MobileButtonsSection = Tabs.Settings:CreateSection("Mobile Button Controls")
1386
1387Tabs.Settings:CreateLabel("Enable screen buttons for touch control")
1388Tabs.Settings:CreateLabel("Buttons only work when feature is active")
1389
1390local AimbotButtonToggle = Tabs.Settings:CreateToggle({
1391 Name = "Aimbot Button",
1392 CurrentValue = false,
1393 Flag = "AimbotButton",
1394 Callback = function(Value)
1395 mobileButtonsEnabled.Aimbot = Value
1396 updateMobileButtonVisibility("Aimbot", Value)
1397 end,
1398})
1399
1400local FlyButtonToggle = Tabs.Settings:CreateToggle({
1401 Name = "Fly Button",
1402 CurrentValue = false,
1403 Flag = "FlyButton",
1404 Callback = function(Value)
1405 mobileButtonsEnabled.Fly = Value
1406 updateMobileButtonVisibility("Fly", Value)
1407 end,
1408})
1409
1410local NoClipButtonToggle = Tabs.Settings:CreateToggle({
1411 Name = "NoClip Button",
1412 CurrentValue = false,
1413 Flag = "NoClipButton",
1414 Callback = function(Value)
1415 mobileButtonsEnabled.NoClip = Value
1416 updateMobileButtonVisibility("NoClip", Value)
1417 end,
1418})
1419
1420-- Show PC controls if not on touch devices
1421if not UserInputService.TouchEnabled then
1422 local PCSection = Tabs.Settings:CreateSection("💻 PC Controls")
1423 Tabs.Settings:CreateLabel("You're on PC - Use keybinds for quick access!")
1424 Tabs.Settings:CreateLabel("All keybinds can be customized in their")
1425 Tabs.Settings:CreateLabel("respective sections.")
1426end
1427
1428-- Create mobile buttons (hidden by default)
1429createMobileButton("Aimbot", UDim2.new(0, 10, 0.7, 0), function(toggled)
1430 aimbotEnabled = toggled
1431 AimbotToggle:Set(toggled)
1432end)
1433
1434createMobileButton("Fly", UDim2.new(0, 100, 0.7, 0), function(toggled)
1435 flyEnabled = toggled
1436 FlyToggle:Set(toggled)
1437end)
1438
1439createMobileButton("NoClip", UDim2.new(0, 190, 0.7, 0), function(toggled)
1440 noClipEnabled = toggled
1441 NoClipToggle:Set(toggled)
1442end)
1443
1444-- Keybind handling (global InputBegan)
1445connections["Keybinds"] = UserInputService.InputBegan:Connect(function(input, gameProcessed)
1446 if gameProcessed then return end
1447 if input.UserInputType ~= Enum.UserInputType.Keyboard then return end
1448
1449 local key = input.KeyCode
1450 if key == aimbotKeyEnum then
1451 aimbotEnabled = not aimbotEnabled
1452 -- Update UI toggle to reflect state
1453 if AimbotToggle and AimbotToggle.Set then
1454 AimbotToggle:Set(aimbotEnabled)
1455 end
1456 end
1457
1458 if key == flyKeyEnum then
1459 flyEnabled = not flyEnabled
1460 if FlyToggle and FlyToggle.Set then
1461 FlyToggle:Set(flyEnabled)
1462 end
1463 end
1464end)
1465
1466-- Proper cleanup on unload
1467function UnloadScript()
1468 print("Unloading Rivals Cheat...")
1469
1470 -- Disconnect all connections
1471 for name, conn in pairs(connections) do
1472 pcall(function()
1473 if name == "Aimbot" then
1474 RunService:UnbindFromRenderStep("Aimbot")
1475 elseif type(conn) == "table" and conn.Disconnect then
1476 conn:Disconnect()
1477 elseif type(conn) == "userdata" and conn.Disconnect then
1478 conn:Disconnect()
1479 end
1480 end)
1481 end
1482 connections = {}
1483
1484 -- Clean up all ESP
1485 for player in pairs(espBoxes) do
1486 cleanupPlayerESP(player)
1487 end
1488 for player in pairs(skeletonLines) do
1489 cleanupPlayerESP(player)
1490 end
1491
1492 -- Clean up FOV circle
1493 pcall(function() if fovCircle then fovCircle:Remove() end end)
1494
1495 -- Clean up mobile buttons
1496 pcall(function()
1497 local gui = LocalPlayer.PlayerGui:FindFirstChild("MobileButtons")
1498 if gui then gui:Destroy() end
1499 end)
1500
1501 -- Clean up physics
1502 if flyBodyVelocity then flyBodyVelocity:Destroy() end
1503 Workspace.Gravity = 196.2
1504
1505 -- Reset camera settings
1506 LocalPlayer.CameraMode = Enum.CameraMode.Classic
1507 LocalPlayer.CameraMaxZoomDistance = 128
1508 LocalPlayer.CameraMinZoomDistance = 0.5
1509
1510 -- Reset humanoid
1511 pcall(function()
1512 local humanoid = getHumanoid()
1513 if humanoid then
1514 humanoid.WalkSpeed = 16
1515 humanoid.JumpPower = 50
1516 end
1517 end)
1518
1519 -- Disconnect infinite jump
1520 if infJumpConnection then infJumpConnection:Disconnect() end
1521
1522 -- Reset lighting
1523 pcall(function()
1524 local lighting = game:GetService("Lighting")
1525 lighting.GlobalShadows = true
1526 lighting.Brightness = 1
1527 settings().Rendering.QualityLevel = Enum.QualityLevel.Automatic
1528 end)
1529
1530 Rayfield:Notify({
1531 Title = "Script Unloaded",
1532 Content = "Script unloaded successfully!",
1533 Duration = 3,
1534 Image = 4483362458,
1535 })
1536
1537 task.wait(1)
1538 Rayfield:Destroy()
1539end
1540
1541-- Startup notification
1542Rayfield:Notify({
1543 Title = "Rivals Cheat v2.2",
1544 Content = "Loaded successfully!",
1545 Duration = 5,
1546 Image = 4483362458,
1547})
1548
1549print("Rivals Cheat v2.2 - Rayfield UI loaded successfully!")Postador do Script
Jogos Suportados
Tags
espsilent aimaimbotrivalsopsem keyno keyfree

