SHOW:
|
|
- or go back to the newest paste.
| 1 | if getgenv().ValiantAimHacks then return getgenv().ValiantAimHacks end | |
| 2 | ||
| 3 | -- // Services | |
| 4 | local Players = game:GetService("Players")
| |
| 5 | local Workspace = game:GetService("Workspace")
| |
| 6 | local GuiService = game:GetService("GuiService")
| |
| 7 | local RunService = game:GetService("RunService")
| |
| 8 | ||
| 9 | -- // Vars | |
| 10 | local Heartbeat = RunService.Heartbeat | |
| 11 | local LocalPlayer = Players.LocalPlayer | |
| 12 | local CurrentCamera = Workspace.CurrentCamera | |
| 13 | local Mouse = LocalPlayer:GetMouse() | |
| 14 | ||
| 15 | -- // Silent Aim Vars | |
| 16 | getgenv().ValiantAimHacks = {
| |
| 17 | SilentAimEnabled = true, | |
| 18 | ShowFOV = true, | |
| 19 | VisibleCheck = true, | |
| 20 | TeamCheck = true, | |
| 21 | FOV = 60, | |
| 22 | HitChance = 100, | |
| 23 | Selected = LocalPlayer, | |
| 24 | - | TargetPart = "Head", |
| 24 | + | TargetPart = "Head", "UpperTorso", "LowerTorso", "RightFoot", "LeftFoot", |
| 25 | BlacklistedTeams = {
| |
| 26 | {
| |
| 27 | Team = LocalPlayer.Team, | |
| 28 | TeamColor = LocalPlayer.TeamColor, | |
| 29 | }, | |
| 30 | }, | |
| 31 | BlacklistedPlayers = {LocalPlayer},
| |
| 32 | WhitelistedPUIDs = {91318356},
| |
| 33 | } | |
| 34 | ||
| 35 | -- // Show FOV | |
| 36 | local circle = Drawing.new("Circle")
| |
| 37 | circle.Transparency = 0 | |
| 38 | circle.Thickness = 2 | |
| 39 | circle.Color = Color3.fromRGB(231, 84, 128) | |
| 40 | circle.NumSides = 12 | |
| 41 | circle.Filled = false | |
| 42 | function ValiantAimHacks.updateCircle() | |
| 43 | if (circle) then | |
| 44 | -- // Set Circle Properties | |
| 45 | circle.Visible = ValiantAimHacks.ShowFOV | |
| 46 | circle.Radius = (ValiantAimHacks.FOV * 3) | |
| 47 | circle.Position = Vector2.new(Mouse.X, Mouse.Y + GuiService:GetGuiInset().Y) | |
| 48 | ||
| 49 | -- // Return circle | |
| 50 | return circle | |
| 51 | end | |
| 52 | end | |
| 53 | ||
| 54 | -- // Custom Functions | |
| 55 | calcChance = function(percentage) | |
| 56 | percentage = math.floor(percentage) | |
| 57 | local chance = math.floor(Random.new().NextNumber(Random.new(), 0, 1) * 100) / 100 | |
| 58 | return chance <= percentage/100 | |
| 59 | end | |
| 60 | ||
| 61 | -- // Customisable Checking Functions: Is a part visible | |
| 62 | function ValiantAimHacks.isPartVisible(Part, PartDescendant) | |
| 63 | -- // Vars | |
| 64 | local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() | |
| 65 | local Origin = CurrentCamera.CFrame.Position | |
| 66 | local _, OnScreen = CurrentCamera:WorldToViewportPoint(Part.Position) | |
| 67 | ||
| 68 | -- // If Part is on the screen | |
| 69 | if (OnScreen) then | |
| 70 | -- // Vars: Calculating if is visible | |
| 71 | local raycastParams = RaycastParams.new() | |
| 72 | raycastParams.FilterType = Enum.RaycastFilterType.Blacklist | |
| 73 | raycastParams.FilterDescendantsInstances = {Character, CurrentCamera}
| |
| 74 | ||
| 75 | local Result = Workspace:Raycast(Origin, Part.Position - Origin, raycastParams) | |
| 76 | local PartHit = Result.Instance | |
| 77 | local Visible = (not PartHit or PartHit:IsDescendantOf(PartDescendant)) | |
| 78 | ||
| 79 | -- // Return | |
| 80 | return Visible | |
| 81 | end | |
| 82 | ||
| 83 | -- // Return | |
| 84 | return false | |
| 85 | end | |
| 86 | ||
| 87 | -- // Check teams | |
| 88 | function ValiantAimHacks.checkTeam(targetPlayerA, targetPlayerB) | |
| 89 | -- // If player is not on your team | |
| 90 | if (targetPlayerA.Team ~= targetPlayerB.Team) then | |
| 91 | ||
| 92 | -- // Check if team is blacklisted | |
| 93 | for i = 1, #ValiantAimHacks.BlacklistedTeams do | |
| 94 | local v = ValiantAimHacks.BlacklistedTeams | |
| 95 | ||
| 96 | if (targetPlayerA.Team ~= v.Team and targetPlayerA.TeamColor ~= v.TeamColor) then | |
| 97 | return true | |
| 98 | end | |
| 99 | end | |
| 100 | end | |
| 101 | ||
| 102 | -- // Return | |
| 103 | return false | |
| 104 | end | |
| 105 | ||
| 106 | -- // Check if player is blacklisted | |
| 107 | function ValiantAimHacks.checkPlayer(targetPlayer) | |
| 108 | for i = 1, #ValiantAimHacks.BlacklistedPlayers do | |
| 109 | local v = ValiantAimHacks.BlacklistedPlayers[i] | |
| 110 | ||
| 111 | if (v ~= targetPlayer) then | |
| 112 | return true | |
| 113 | end | |
| 114 | end | |
| 115 | ||
| 116 | -- // Return | |
| 117 | return false | |
| 118 | end | |
| 119 | ||
| 120 | -- // Check if player is whitelisted | |
| 121 | function ValiantAimHacks.checkWhitelisted(targetPlayer) | |
| 122 | for i = 1, #ValiantAimHacks.WhitelistedPUIDs do | |
| 123 | local v = ValiantAimHacks.WhitelistedPUIDs[i] | |
| 124 | ||
| 125 | if (targetPlayer.UserId == v) then | |
| 126 | return true | |
| 127 | end | |
| 128 | end | |
| 129 | ||
| 130 | -- // Return | |
| 131 | return false | |
| 132 | end | |
| 133 | ||
| 134 | -- // Get the Direction, Normal and Material | |
| 135 | function ValiantAimHacks.findDirectionNormalMaterial(Origin, Destination, UnitMultiplier) | |
| 136 | if (typeof(Origin) == "Vector3" and typeof(Destination) == "Vector3") then | |
| 137 | -- // Handling | |
| 138 | if (not UnitMultiplier) then UnitMultiplier = 1 end | |
| 139 | ||
| 140 | -- // Vars | |
| 141 | local Direction = (Destination - Origin).Unit * UnitMultiplier | |
| 142 | local RaycastResult = Workspace:Raycast(Origin, Direction) | |
| 143 | ||
| 144 | if (RaycastResult ~= nil) then | |
| 145 | local Normal = RaycastResult.Normal | |
| 146 | local Material = RaycastResult.Material | |
| 147 | ||
| 148 | return Direction, Normal, Material | |
| 149 | end | |
| 150 | end | |
| 151 | ||
| 152 | -- // Return | |
| 153 | return nil | |
| 154 | end | |
| 155 | ||
| 156 | -- // Get Character | |
| 157 | function ValiantAimHacks.getCharacter(Player) | |
| 158 | return Player.Character | |
| 159 | end | |
| 160 | ||
| 161 | -- // Check Health | |
| 162 | function ValiantAimHacks.checkHealth(Player) | |
| 163 | local Character = ValiantAimHacks.getCharacter(Player) | |
| 164 | local Humanoid = Character:FindFirstChildWhichIsA("Humanoid")
| |
| 165 | ||
| 166 | local Health = (Humanoid and Humanoid.Health or 0) | |
| 167 | return Health > 0 | |
| 168 | end | |
| 169 | ||
| 170 | -- // Check if silent aim can used | |
| 171 | function ValiantAimHacks.checkSilentAim() | |
| 172 | return (ValiantAimHacks.SilentAimEnabled == true and ValiantAimHacks.Selected ~= LocalPlayer) | |
| 173 | end | |
| 174 | ||
| 175 | -- // Silent Aim Function | |
| 176 | function ValiantAimHacks.getClosestPlayerToCursor() | |
| 177 | -- // Vars | |
| 178 | local ClosestPlayer = nil | |
| 179 | local Chance = calcChance(ValiantAimHacks.HitChance) | |
| 180 | local ShortestDistance = 1/0 | |
| 181 | ||
| 182 | -- // Chance | |
| 183 | if (not Chance) then | |
| 184 | ValiantAimHacks.Selected = (Chance and LocalPlayer or LocalPlayer) | |
| 185 | ||
| 186 | return (Chance and LocalPlayer or LocalPlayer) | |
| 187 | end | |
| 188 | ||
| 189 | -- // Loop through all players | |
| 190 | local AllPlayers = Players:GetPlayers() | |
| 191 | for i = 1, #AllPlayers do | |
| 192 | local Player = AllPlayers[i] | |
| 193 | local Character = ValiantAimHacks.getCharacter(Player) | |
| 194 | ||
| 195 | if (not ValiantAimHacks.checkWhitelisted(Player) and ValiantAimHacks.checkPlayer(Player) and Character and Character:FindFirstChild(ValiantAimHacks.TargetPart) and ValiantAimHacks.checkHealth(Player)) then | |
| 196 | -- // Team Check | |
| 197 | if (ValiantAimHacks.TeamCheck and not ValiantAimHacks.checkTeam(Player, LocalPlayer)) then continue end | |
| 198 | ||
| 199 | -- // Vars | |
| 200 | local TargetPart = Character[ValiantAimHacks.TargetPart] | |
| 201 | local PartPos, _ = CurrentCamera:WorldToViewportPoint(TargetPart.Position) | |
| 202 | local Magnitude = (Vector2.new(PartPos.X, PartPos.Y) - Vector2.new(Mouse.X, Mouse.Y)).Magnitude | |
| 203 | ||
| 204 | -- // Check if is in FOV | |
| 205 | if (circle.Radius > Magnitude and Magnitude < ShortestDistance) then | |
| 206 | -- // Check if Visible | |
| 207 | if (ValiantAimHacks.VisibleCheck and not ValiantAimHacks.isPartVisible(TargetPart, Character)) then continue end | |
| 208 | ||
| 209 | -- // | |
| 210 | ClosestPlayer = Player | |
| 211 | ShortestDistance = Magnitude | |
| 212 | end | |
| 213 | end | |
| 214 | end | |
| 215 | ||
| 216 | -- // End | |
| 217 | ValiantAimHacks.Selected = (Chance and ClosestPlayer or LocalPlayer) | |
| 218 | end | |
| 219 | ||
| 220 | -- // Heartbeat Function | |
| 221 | Heartbeat:Connect(function() | |
| 222 | ValiantAimHacks.updateCircle() | |
| 223 | ValiantAimHacks.getClosestPlayerToCursor() | |
| 224 | end) | |
| 225 | ||
| 226 | return ValiantAimHacks | |
| 227 | ||
| 228 | --[[ | |
| 229 | Examples: | |
| 230 | ||
| 231 | --// Namecall Version // -- | |
| 232 | -- // Metatable Variables | |
| 233 | local mt = getrawmetatable(game) | |
| 234 | local backupindex = mt.__index | |
| 235 | setreadonly(mt, false) | |
| 236 | ||
| 237 | -- // Load Silent Aim | |
| 238 | local ValiantAimHacks = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/Stefanuk12/ROBLOX/master/Universal/Experimental%20Silent%20Aim%20Module.lua"))()
| |
| 239 | ||
| 240 | -- // Hook | |
| 241 | mt.__namecall = newcclosure(function(...) | |
| 242 | -- // Vars | |
| 243 | local args = {...}
| |
| 244 | local method = getnamecallmethod() | |
| 245 | ||
| 246 | -- // Checks | |
| 247 | if (method == "FireServer") then | |
| 248 | if (args[1].Name == "RemoteNameHere") then | |
| 249 | -- change args | |
| 250 | ||
| 251 | -- // Return changed arguments | |
| 252 | return backupnamecall(unpack(args)) | |
| 253 | end | |
| 254 | end | |
| 255 | ||
| 256 | -- // Return | |
| 257 | return backupnamecall(...) | |
| 258 | end) | |
| 259 | ||
| 260 | -- // Revert Metatable readonly status | |
| 261 | setreadonly(mt, true) | |
| 262 | ||
| 263 | -- // Index Version // -- | |
| 264 | -- // Metatable Variables | |
| 265 | local mt = getrawmetatable(game) | |
| 266 | local backupindex = mt.__index | |
| 267 | setreadonly(mt, false) | |
| 268 | ||
| 269 | -- // Load Silent Aim | |
| 270 | local ValiantAimHacks = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/Stefanuk12/ROBLOX/master/Universal/Experimental%20Silent%20Aim%20Module.lua"))()
| |
| 271 | ||
| 272 | -- // Hook | |
| 273 | mt.__index = newcclosure(function(t, k) | |
| 274 | -- // Check if it trying to get our mouse's hit or target | |
| 275 | if (t:IsA("Mouse") and (k == "Hit" or k == "Target")) then
| |
| 276 | -- // If we can use the silent aim | |
| 277 | if (ValiantAimHacks.checkSilentAim()) then | |
| 278 | -- // Vars | |
| 279 | local CPlayer = ValiantAimHacks.Selected | |
| 280 | local Character = ValiantAimHacks.getCharacter(CPlayer) -- // good practice to use this to get the character | |
| 281 | ||
| 282 | -- // Return modded val | |
| 283 | return (k == "Hit" and Character.Head.CFrame or Character.Head) | |
| 284 | end | |
| 285 | end | |
| 286 | ||
| 287 | -- // Return | |
| 288 | return backupindex(t, k) | |
| 289 | end) | |
| 290 | ||
| 291 | -- // Revert Metatable readonly status | |
| 292 | setreadonly(mt, true) | |
| 293 | ]] |