Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local localPlayer = game:GetService("Players").LocalPlayer
- local currentCamera = game:GetService("Workspace").CurrentCamera
- local mouse = localPlayer:GetMouse()
- local function getClosestPlayerToCursor()
- local closestPlayer = nil
- local shortestDistance = math.huge
- for i, v in pairs(game:GetService("Workspace").enemies:GetChildren()) do
- if v:FindFirstChild("Humanoid") and v.Humanoid.Health ~= 0 and v:FindFirstChild("HumanoidRootPart") and v:FindFirstChild("Head") then
- local pos = currentCamera:WorldToViewportPoint(v.HumanoidRootPart.Position)
- local magnitude = (Vector2.new(pos.X, pos.Y) - Vector2.new(mouse.X, mouse.Y)).magnitude
- if magnitude < shortestDistance then
- closestPlayer = v
- shortestDistance = magnitude
- end
- end
- end
- return closestPlayer
- end
- local mt = getrawmetatable(game)
- local oldNamecall = mt.__namecall
- if setreadonly then setreadonly(mt, false) else make_writeable(mt, true) end
- local namecallMethod = getnamecallmethod or get_namecall_method
- local newClose = newcclosure or function(f) return f end
- mt.__namecall = newClose(function(...)
- local method = namecallMethod()
- local args = {...}
- if tostring(method) == "FireServer" and tostring(args[1]) == "Gun" and getClosestPlayerToCursor() then
- args[2]["Hit"] = getClosestPlayerToCursor().Head
- args[2]["Pos"] = getClosestPlayerToCursor().Head.Position
- return oldNamecall(unpack(args))
- end
- return oldNamecall(...)
- end)
- if setreadonly then setreadonly(mt, true) else make_writeable(mt, false) end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement