Not a member of GistPad yet?
Sign Up,
it unlocks many cool features!
- local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local UIS = game:GetService("UserInputService")
- local Workspace = game:GetService("Workspace")
- local player = Players.LocalPlayer
- local Camera = Workspace.CurrentCamera
- --------------------------------------------------
- -- SETTINGS
- --------------------------------------------------
- local espEnabled = false
- local aimEnabled = false
- local autoShootEnabled = false
- local rainbowESP = false
- local clickAim = false
- local triggerBot = false
- local espColor = Color3.fromRGB(255, 0, 0)
- local rainbowSpeed = 0.02
- local smoothness = 0.15
- local maxDistance = 150
- local aimPart = "Head"
- local shootDelay = 0.1
- local triggerBotDelay = 0.05
- local espObjects = {}
- local lastShotTime = 0
- local lastTriggerTime = 0
- --------------------------------------------------
- -- UI WINDOW
- --------------------------------------------------
- local Window = Rayfield:CreateWindow({
- Name = "Cool Studios",
- Icon = 11767039004,
- LoadingTitle = "Cool Studios",
- LoadingSubtitle = "System Loading...",
- Theme = "Amber",
- ToggleUIKeybind = "K",
- })
- local ESPTab = Window:CreateTab("ESP", 11767039004)
- local AimTab = Window:CreateTab("Aim Assist", 11767039004)
- --------------------------------------------------
- -- RAINBOW
- --------------------------------------------------
- local function getRainbowColor()
- return Color3.fromHSV(tick() * rainbowSpeed % 1, 1, 1)
- end
- --------------------------------------------------
- -- VISIBILITY CHECK (🔥 WALL CHECK)
- --------------------------------------------------
- local function isVisible(targetPart)
- if not targetPart or not player.Character then return false
- local origin = Camera.CFrame.Position
- local direction = (targetPart.Position - origin).Unit * maxDistance
- local params = RaycastParams.new()
- params.FilterType = Enum.RaycastFilterType.Blacklist
- params.FilterDescendantsInstances = {player.Character}
- params.IgnoreWater = true
- local result = Workspace:Raycast(origin, direction, params)
- if result and result.Instance then
- -- Check if the hit part belongs to the target player
- local hitPlayer = Players:GetPlayerFromCharacter(result.Instance.Parent)
- if hitPlayer and hitPlayer == Players:GetPlayerFromCharacter(targetPart.Parent) then
- return true
- end
- return false
- end
- return true
- end
- --------------------------------------------------
- -- ESP UI
- --------------------------------------------------
- ESPTab:CreateToggle({
- Name = "Enable ESP",
- Callback = function(Value)
- espEnabled = Value
- if not Value then
- for _, obj in pairs(espObjects) do
- if obj then obj:Destroy() end
- end
- espObjects = {}
- end
- end,
- })
- ESPTab:CreateToggle({
- Name = "Rainbow ESP",
- Callback = function(Value)
- rainbowESP = Value
- end,
- })
- ESPTab:CreateColorPicker({
- Name = "ESP Color",
- Color = espColor,
- Callback = function(Value)
- espColor = Value
- end,
- })
- --------------------------------------------------
- -- AIM UI
- --------------------------------------------------
- AimTab:CreateToggle({
- Name = "Enable Aim Assist",
- Callback = function(Value)
- aimEnabled = Value
- end,
- })
- AimTab:CreateToggle({
- Name = "Only While Clicking",
- Callback = function(Value)
- clickAim = Value
- end,
- })
- AimTab:CreateToggle({
- Name = "Auto Shoot",
- Callback = function(Value)
- autoShootEnabled = Value
- end,
- })
- AimTab:CreateToggle({
- Name = "Trigger Bot",
- Callback = function(Value)
- triggerBot = Value
- end,
- })
- AimTab:CreateSlider({
- Name = "Smoothness",
- Range = {0.05, 1},
- Increment = 0.05,
- CurrentValue = smooth1ness,
- Callback = function(Value)
- smoothness = Value
- end,
- })
- AimTab:CreateSlider({
- Name = "Max Distance",
- Range = {50, 300},
- Increment = 10,
- CurrentValue = maxDistance,
- Callback = function(Value)
- maxDistance = Value
- end,
- })
- AimTab:CreateSlider({
- Name = "Shoot Delay",
- Range = {0.05, 0.5},
- Increment = 0.05,
- CurrentValue = shootDelay,
- Callback = function(Value)
- shootDelay = Value
- end,
- })
- AimTab:CreateSlider({
- Name = "TriggerBot Delay",
- Range = {0.01, 0.2},
- Increment = 0.01,
- CurrentValue = triggerBotDelay,
- Callback = function(Value)
- triggerBotDelay = Value
- end,
- })
- AimTab:CreateDropdown({
- Name = "Aim Part",
- Options = {"Head", "Torso", "HumanoidRootPart", "UpperTorso", "LowerTorso"},
- CurrentOption = aimPart,
- Callback = function(Value)
- aimPart = Value
- end,
- })
- --------------------------------------------------
- -- ESP SYSTEM
- --------------------------------------------------
- local function applyESP(plr)
- if plr == player then return end
- if not plr.Character then return end
- if espObjects[plr] then
- espObjects[plr]:Destroy()
- espObjects[plr] = nil
- end
- local h = Instance.new("Highlight")
- if rainbowESP then
- local c = getRainbowColor()
- h.FillColor = c
- h.OutlineColor = c
- else
- h.FillColor = espColor
- h.OutlineColor = espColor
- end
- h.FillTransparency = 0.5
- h.OutlineTransparency = 0
- h.Adornee = plr.Character
- h.Parent = plr.Character
- espObjects[plr] = h
- end
- --------------------------------------------------
- -- AIM SYSTEM (🔥 WITH WALL CHECK)
- --------------------------------------------------
- local function getClosestTarget()
- if not player.Character then return nil, nil end
- local root = player.Character:FindFirstChild("HumanoidRootPart")
- if not root then return nil, nil end
- local closestPlayer = nil
- local closestPart = nil
- local shortest = math.huge
- for _, p in ipairs(Players:GetPlayers()) do
- if p ~= player and p.Character then
- local targetRoot = p.Character:FindFirstChild("HumanoidRootPart")
- local targetAimPart = p.Character:FindFirstChild(aimPart)
- if targetRoot and targetAimPart then
- local dist = (root.Position - targetRoot.Position).Magnitude
- -- DISTANCE + WALL CHECK
- if dist <= maxDistance and isVisible(targetAimPart) then
- if dist < shortest then
- shortest = dist
- closestPlayer = p
- closestPart = targetAimPart
- end
- end
- end
- end
- end
- return closestPlayer, closestPart
- end
- --------------------------------------------------
- -- AUTO SHOOT SYSTEM
- --------------------------------------------------
- local function autoShoot(targetPlayer, targetPart)
- if not autoShootEnabled or not targetPlayer or not targetPart then return end
- local currentTime = tick()
- if currentTime - lastShotTime < shootDelay then return end
- -- Mouse click simulation for shooting
- mouse1press()
- task.wait(0.05)
- mouse1release()
- lastShotTime = currentTime
- -- Try different attack methods for Rivals
- local character = player.Character
- if character then
- -- Try to find a tool/weapon
- local Tool = character:FindFirstChildOfClass("Tool")
- if Tool then
- -- RemoteEvent-based weapons
- local remoteEvent = Tool:FindFirstChild("RemoteEvent") or Tool:FindFirstChild("Fire") or Tool:FindFirstChild("Attack")
- if remoteEvent then
- remoteEvent:FireServer("Fire", targetPart.Position)
- return
- end
- -- RemoteFunction-based weapons
- local remoteFunction = Tool:FindFirstChild("RemoteFunction") or Tool:FindFirstChild("FireFunction")
- if remoteFunction then
- remoteFunction:InvokeServer("Fire", targetPart.Position)
- return
- end
- -- Standard Attack (Tool Activate)
- Tool:Activate()
- end
- -- Direct damage fallback (if no tool found)
- if targetPlayer.Character and targetPlayer.Character:FindFirstChild("Humanoid") then
- local humanoid = targetPlayer.Character.Humanoid
- if humanoid.Health > 0 then
- humanoid:TakeDamage(35)
- end
- end
- end
- end
- --------------------------------------------------
- -- TRIGGER BOT SYSTEM (FIXED)
- --------------------------------------------------
- local function triggerBotCheck()
- if not triggerBot then return end
- local currentTime = tick()
- if currentTime - lastTriggerTime < triggerBotDelay then return end
- -- More accurate raycast for TriggerBot
- local rayOrigin = Camera.CFrame.Position
- local rayDirection = Camera.CFrame.LookVector * maxDistance
- local raycastParams = RaycastParams.new()
- raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
- if player.Character then
- raycastParams.FilterDescendantsInstances = {player.Character}
- else
- raycastParams.FilterDescendantsInstances = {}
- end
- raycastParams.IgnoreWater = true
- local rayResult = Workspace:Raycast(rayOrigin, rayDirection, raycastParams)
- if rayResult and rayResult.Instance then
- local hitPart = rayResult.Instance
- local hitModel = hitPart.Parent
- -- Check if we hit a player character
- for _, p in ipairs(Players:GetPlayers()) do
- if p ~= player and p.Character and hitModel == p.Character or hitModel:IsDescendantOf(p.Character) then
- -- Auto-Shoot when aiming at enemy
- mouse1press()
- task.wait(0.05)
- mouse1release()
- lastTriggerTime = currentTime
- lastShotTime = currentTime
- -- Attack methods
- if player.Character then
- local Tool = player.Character:FindFirstChildOfClass("Tool")
- if Tool then
- Tool:Activate()
- end
- end
- return true -- Found target, stop checking
- end
- end
- end
- return false -- No target found
- end
- --------------------------------------------------
- -- AIM LOOP (OPTIMIZED)
- --------------------------------------------------
- RunService.RenderStepped:Connect(function()
- -- TriggerBot Check (independent from aimEnabled)
- triggerBotCheck()
- if not aimEnabled then return end
- -- CLICK CHECK (only for Aim Assist, not for TriggerBot)
- if clickAim and not UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then
- return
- end
- local targetPlayer, targetPart = getClosestTarget()
- if not targetPart then return end
- -- Smooth aiming with lerp
- local camPos = Camera.CFrame.Position
- -- Calculate target position with slight offset for headshots
- local targetPos = targetPart.Position
- if aimPart == "Head" then
- targetPos = targetPos + Vector3.new(0, 0.5, 0) -- Small offset for better head aiming
- end
- local goal = CFrame.new(camPos, targetPos)
- Camera.CFrame = Camera.CFrame:Lerp(goal, smoothness)
- -- Auto-Shoot after aiming (only if not already shooting from TriggerBot)
- if autoShootEnabled and tick() - lastShotTime >= shootDelay then
- autoShoot(targetPlayer, targetPart)
- end
- end)
- --------------------------------------------------
- -- ESP LOOP (OPTIMIZED)
- --------------------------------------------------
- task.spawn(function()
- while true do
- task.wait(0.2) -- Reduced frequency for better performance
- if espEnabled then
- for _, plr in ipairs(Players:GetPlayers()) do
- if plr ~= player then
- if plr.Character and plr.Character:FindFirstChild("Humanoid") then
- applyESP(plr)
- else
- -- Remove ESP if player has no character
- if espObjects[plr] then
- espObjects[plr]:Destroy()
- espObjects[plr] = nil
- end
- end
- end
- end
- else
- -- Clear all ESP when disabled
- for plr, obj in pairs(espObjects) do
- if obj then
- obj:Destroy()
- espObjects[plr] = nil
- end
- end
- end
- -- Update rainbow ESP color if enabled
- if rainbowESP and espEnabled then
- for plr, obj in pairs(espObjects) do
- if obj and plr.Character then
- local c = getRainbowColor()
- obj.FillColor = c
- obj.OutlineColor = c
- end
- end
- end
- end
- end)
- print("Rivals Combat Script mit Rayfield UI geladen!")
- print("Stabiler TriggerBot, Auto-Shoot, Aim Assist und ESP aktiviert")
- print("TriggerBot Delay: " .. triggerBotDelay .. " Sekunden")
RAW Paste Data
Copied
