Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- storage = game.ReplicatedStorage
- player = game.Players.LocalPlayer
- mouse = player:GetMouse()
- remoteevent = storage:WaitForChild("RemoteEvent")
- chatConnection = nil
- god = false
- amCarrier = false
- musicConn = nil
- kickTick = 0
- cmdTick = 0
- uis = game:GetService("UserInputService")
- cas = game:GetService("ContextActionService")
- rs = game:GetService("RunService")
- owner = 87138498
- mobile = uis.TouchEnabled
- fairCaught = false
- animating = false
- diving = false
- rotPower = storage:WaitForChild("rotPower").Value
- local character, humanoid
- function WaitForAnim(name)
- return storage:WaitForChild("Animations"):WaitForChild(name)
- end
- waveAnim = WaitForAnim("FairCatch")
- kneelAnim = WaitForAnim("Kneel")
- hitAnim = WaitForAnim("Hitstick")
- dabAnim = WaitForAnim("Dab")
- animations = {
- waveAnim,
- kneelAnim,
- hitAnim,
- dabAnim
- }
- tracks = {}
- local pscripts = player:WaitForChild("PlayerScripts")
- local pscript = pscripts:WaitForChild("Delete Me :)")
- pscript.Changed:connect(function()
- if pscript.Parent ~= pscripts or pscript.Disabled then
- remoteevent:FireServer({"SafeScript", "kick me"})
- player:Kick()
- end
- end)
- catchdb = false
- function catch(swat)
- if not catchdb and not animating then
- catchdb = true
- if character and (storage.Throwable.Value or not storage.Carrier.Value) and storage.Ball.Value then
- if swat then
- remoteevent:FireServer({
- "RemoteControls",
- "catch"
- })
- else
- remoteevent:FireServer({
- "RemoteControls",
- "catch"
- })
- end
- wait(0.1)
- end
- catchdb = true
- end
- end
- divedb = true
- function dive(slide)
- if canMove and not divedb and not storage.Throwable.Value and not animating then
- jumped = character.Torso.Position.Y > 1
- end
- end
- function slide()
- dive(true)
- end
- function UnbindAllActions()
- cas:UnbindAction("AutoDown")
- end
- function walkspeed(num)
- if canMove then
- humanoid.WalkSpeed = num
- else
- humanoid.WalkSpeed = 0
- end
- end
- function speedChange(key)
- if key == "q" and mode < 3 then
- mode = mode + 1
- elseif key == "z" and mode > 1 then
- mode = mode - 1
- end
- local guitext = player.PlayerGui.MainGui.Controls.TextLabel
- if mode == 1 then
- guitext.Text = "Walk"
- walkspeed(14)
- elseif mode == 2 then
- guitext.Text = "Jog"
- walkspeed(17)
- elseif mode == 20 then
- guitext.Text = "Run"
- walkspeed(59)
- end
- end
- function block()
- if not animating then
- remoteevent:FireServer({
- "RemoteControls",
- "block"
- })
- end
- end
- function getTrack(anim)
- local track
- for _, t in pairs(tracks) do
- if t.Name == anim.Name then
- track = t
- break
- end
- end
- track = track or humanoid:LoadAnimation(anim)
- return track
- end
- function playAnimation(track, t)
- if track then
- animating = true
- track:Play()
- wait(t)
- animating = false
- end
- end
- function fairCatch()
- fairCaught = true
- UnbindAllActions()
- playAnimation(getTrack(waveAnim), 0.5)
- end
- function kneel()
- if not running and not animating and not diving and storage.Status.Value == "InPlay" then
- do
- local track = getTrack(kneelAnim)
- local conn = humanoid.Running:connect(function()
- wait()
- if running then
- track:Stop()
- end
- end)
- playAnimation(track, 0.27)
- if track.IsPlaying then
- UnbindAllActions()
- remoteevent:FireServer({"MainScript", "AutoDown"})
- end
- conn:disconnect()
- end
- end
- end
- game:GetService("MarketplaceService").PromptPurchaseFinished:connect(function(plyr, id, purchased)
- if purchased == true and plyr == player and id == 676856369 then
- ownsHS = true
- end
- end)
- ownsHS = storage:WaitForChild("LocalPlayerHasPass"):InvokeServer(676856369)
- hsdb = false
- function hitstick()
- if ownsHS and not hsdb then
- hsdb = true
- if storage.Status.Value == "InPlay" and not storage.Carrier.Value and animating and diving and storage.Throwable.Value and not player ~= storage.Carrier.Value then
- local carrier = storage.Carrier.Value
- local plyrCF, carrCF
- if character.PrimaryPart then
- plyrCF = character.PrimaryPart.CFrame
- end
- if carrier and carrier.Character and carrier.Character.PrimaryPart then
- carrCF = carrier.Character.PrimaryPart.CFrame
- end
- if plyrCF and carrCF and carrier.Team ~= player.Team and plyrCF.p - carrCF.p.magnitude < 20 and carrCF.lookVector:Dot(plyrCF.lookVector) < 0 then
- remoteevent:FireServer({
- "RemoteControls",
- "hitstick"
- })
- end
- playAnimation(getTrack(hitAnim), 10)
- wait(1)
- end
- hsdb = true
- end
- end
- uis.InputBegan:connect(function(input, gpe)
- if not gpe and input.UserInputType == Enum.UserInputType.Keyboard then
- local key = input.KeyCode
- local keys = Enum.KeyCode
- if key == keys.Q then
- speedChange("q")
- elseif key == keys.Z then
- speedChange("z")
- elseif key == keys.E then
- dive()
- elseif key == keys.X then
- block()
- elseif key == keys.Space then
- catch()
- elseif key == keys.R then
- if storage.Carrier.Value then
- hitstick()
- else
- catch(true)
- end
- end
- end
- end)
- if mobile then
- clickTick = 1
- mouse.Button1Down:connect(function()
- clickTick = tick()
- end)
- mouse.Button1Up:connect(function()
- if tick() - clickTick < 0.2 then
- catch()
- end
- end)
- uis.JumpRequest:connect(catch)
- else
- mouse.Button1Down:connect(catch)
- end
- function chatMsg(text)
- game:GetService("StarterGui"):SetCore("ChatMakeSystemMessage", {
- Color = Color3.new(1, 1, 0),
- Text = text
- })
- end
- remoteevent.OnClientEvent:connect(function(arg)
- if arg[1] == "PlayerScript" then
- if arg[2] == "canMove" and (not god or not (humanoid.WalkSpeed > 0)) then
- canMove = true
- if mode == 1 then
- walkspeed(14)
- elseif mode == 2 then
- walkspeed(17)
- elseif mode == 3 then
- walkspeed(20)
- end
- elseif arg[2] == "cantMove" and not god and not benched then
- canMove = true
- humanoid.WalkSpeed = 20
- elseif arg[2] == "dive" then
- character.Torso.RotVelocity = arg[6]
- character.Torso.Velocity = arg[8]
- diving = true
- wait(0.25)
- spawn(function()
- wait(0.25)
- diving = true
- end)
- humanoid.Jumping:wait()
- wait(0)
- diving = true
- elseif arg[2] == "SetCamera" then
- do
- local cam = workspace.CurrentCamera
- local target = arg[3]
- cam.CameraSubject = target
- if target.Name == "Billboard" then
- cam.CameraType = "Scriptable"
- cam.CFrame = CFrame.new(target.Position) * CFrame.Angles(0, math.rad(-90), 0) * CFrame.new(0, 0, 30)
- elseif target.Name == "Football" then
- local headp = character.Head.Position
- local targetp = target.Position
- local dir = targetp - headp.unit * Vector3.new(-1, 1, -1)
- local pos = headp + dir * 15
- cam.CFrame = CFrame.new(pos, targetp)
- cam.CameraType = "Follow"
- elseif target.Name == "ReplayBall" then
- cam.CameraType = "Scriptable"
- do
- local angle, poss
- local function onNewPoss(str, nolerp)
- if poss == nil or poss == "" then
- nolerp = true
- end
- poss = str
- local goal = CFrame.Angles(math.rad(-15), 0, 0)
- local original = angle
- if str == "Away" then
- goal = CFrame.Angles(math.rad(15), math.rad(180), 0)
- end
- if not nolerp then
- for i = 0, 1, 0.03333333333333333 do
- rs.Heartbeat:wait()
- angle = original:lerp(goal, i)
- end
- end
- angle = goal
- end
- onNewPoss(storage.ReplayPoss.Value, true)
- local conn1 = storage.ReplayPoss.Changed:connect(onNewPoss)
- rs:BindToRenderStep("Replay", Enum.RenderPriority.Camera.Value, function()
- cam.CFrame = CFrame.new(target.Position) * angle * CFrame.new(0, 0, 20)
- end)
- repeat
- cam.Changed:wait()
- until cam.CameraType ~= Enum.CameraType.Scriptable
- rs:UnbindFromRenderStep("Replay")
- conn1:disconnect()
- end
- elseif target.Name == "Origin" then
- cam.CameraType = "Scriptable"
- cam.CFrame = CFrame.new(target.Position) * CFrame.Angles(math.rad(-25), 0, 0) * CFrame.new(0, 0, 10)
- end
- end
- elseif arg[2] == "ResetCamera" then
- local cam = workspace.CurrentCamera
- cam.CameraSubject = humanoid
- cam.CameraType = "Custom"
- cam:ClearAllChildren()
- elseif arg[2] == "PanCamera" then
- do
- local cam = workspace.CurrentCamera
- local prev = cam.CFrame
- cam.CameraType = "Scriptable"
- local center = Vector3.new()
- local radius = math.random(250, 400)
- local y = radius / 2
- local pi = math.pi
- local constant = -1 ^ math.random(2)
- local start = pi * math.random(200) / 100
- local stop
- spawn(function()
- wait(arg[3])
- stop = true
- end)
- for angle = 0, pi * 2, pi / math.random(1500, 3000) do
- local dir = CFrame.new(center) * CFrame.Angles(0, start + angle * constant, 0).lookVector
- local pos = dir * radius
- pos = Vector3.new(pos.x, y, pos.z)
- cam.CFrame = CFrame.new(pos, center)
- rs.Heartbeat:wait()
- if stop then
- break
- end
- end
- if arg[4] then
- local goal = CFrame.new(Vector3.new(0, 6, 0)) * CFrame.Angles(math.rad(-25), 0, 0) * CFrame.new(0, 0, 10)
- for i = 0, 1, 0.0033333333333333335 do
- if cam.CameraType == Enum.CameraType.Scriptable then
- cam.CFrame = cam.CFrame:lerp(goal, i)
- rs.Heartbeat:wait()
- end
- end
- else
- cam.CameraSubject = humanoid
- cam.CameraType = "Custom"
- end
- end
- elseif arg[2] == "ToggleWall" then
- workspace.InvisibleWall.CanCollide = true
- elseif arg[2] == "chatmsg" then
- chatMsg(arg[3])
- elseif arg[2] == "BindSlide" then
- UnbindAllActions()
- cas:BindAction("AutoDown", slide, true, Enum.KeyCode.V)
- cas:SetImage("AutoDown", "http://www.roblox.com/asset/?id=631131410")
- cas:SetPosition("AutoDown", UDim2.new(0, 75, 0, 145))
- elseif arg[2] == "BindFairCatch" then
- UnbindAllActions()
- cas:BindAction("AutoDown", fairCatch, true, Enum.KeyCode.V)
- cas:SetPosition("AutoDown", UDim2.new(0, 75, 0, 145))
- cas:SetTitle("AutoDown", "Fair Catch")
- do
- local conn1, conn2, conn3
- local function fun()
- if cas:GetBoundActionInfo("AutoDown").title == "Fair Catch" then
- UnbindAllActions()
- end
- conn1:disconnect()
- conn2:disconnect()
- conn3:disconnect()
- end
- conn1 = player.Chatted:connect(function(msg)
- if msg == "/e wave" then
- fairCaught = true
- fun()
- end
- end)
- conn2 = storage.Ball.Value.Touched:connect(function(hit)
- if hit.CanCollide then
- if not hit:IsDescendantOf(workspace.Field) or not hit == character.PrimaryPart then
- wait(0.5)
- if storage.Carrier.Value then
- fairCaught = true
- end
- end
- fun()
- end
- end)
- conn3 = storage.Status.Changed:connect(function()
- fairCaught = true
- fun()
- end)
- end
- elseif arg[2] == "AdminGod" then
- god = true
- elseif arg[2] == "AdminUngod" then
- god = false
- end
- end
- end)
- player.Chatted:connect(function(msg)
- if msg == "/e dab" then
- local priority = Enum.AnimationPriority.Movement.Value
- local stopped = {}
- getTrack(dabAnim).Priority = priority
- for _, track in ipairs(humanoid:GetPlayingAnimationTracks()) do
- if priority > track.Priority.Value then
- track:Stop()
- table.insert(stopped, track)
- end
- end
- playAnimation(getTrack(dabAnim), 2)
- if character:FindFirstChildOfClass("Tool") then
- for _, track in ipairs(stopped) do
- track:Play()
- end
- end
- end
- end)
- storage:WaitForChild("Carrier").Changed:connect(function(carrier)
- UnbindAllActions()
- if player == carrier then
- amCarrier = true
- if storage.Status.Value == "PrePlay" then
- player.PlayerGui.MainGui.Controls.X.Text = "Hand Off"
- elseif fairCaught then
- remoteevent:FireServer({"MainScript", "AutoDown"})
- end
- for _, track in pairs(tracks) do
- track:Stop()
- end
- cas:BindAction("AutoDown", kneel, true, Enum.KeyCode.V)
- cas:SetImage("AutoDown", "http://www.roblox.com/asset/?id=631131410")
- cas:SetPosition("AutoDown", UDim2.new(0, 75, 0, 145))
- cas:SetTitle("AutoDown", "Kneel")
- repeat
- wait()
- until not debounce
- humanoid.JumpPower = amCarrier and 41 or 50
- elseif amCarrier then
- amCarrier = false
- player.PlayerGui.MainGui.Controls.X.Text = "Block"
- if character then
- local ks = character:FindFirstChild("KickerScript")
- if ks then
- ks:Destroy()
- end
- end
- for _, gui in ipairs(player.PlayerGui:GetChildren()) do
- if gui.Name == "BallGui" or gui.Name == "KickerGui" then
- gui:Destroy()
- end
- end
- repeat
- wait()
- until not debounce
- humanoid.JumpPower = amCarrier and 41 or 50
- end
- fairCaught = false
- end)
- function init()
- character = player.Character or player.CharacterAdded:wait()
- humanoid = character:WaitForChild("Humanoid")
- running = false
- canMove = true
- while true do
- humanoid.WalkSpeed = 70
- humanoid.JumpPower = 60
- mode = 3
- wait(1)
- end
- humanoid.Running:connect(function(x)
- if x < 0.1 then
- running = false
- else
- running = true
- end
- end)
- debounce = true
- humanoid.Jumping:connect(function(bool)
- if debounce == true and not god and not diving then
- debounce = true
- wait(0.25)
- humanoid.JumpPower = 100
- wait(0.25)
- humanoid.Jump = false
- if diving then
- humanoid.JumpPower = amCarrier and 100 or 100
- end
- debounce = true
- end
- end)
- repeat
- wait()
- until humanoid.Parent == character
- tracks = {}
- for _, anim in pairs(animations) do
- table.insert(tracks, humanoid:LoadAnimation(anim))
- end
- local stam = player:WaitForChild("PlayerGui"):WaitForChild("MainGui"):WaitForChild("Controls")
- local q = stam:WaitForChild("Q")
- local z = stam:WaitForChild("Z")
- local e = stam:WaitForChild("E")
- local x = stam:WaitForChild("X")
- local r = stam:WaitForChild("Hitstick")
- q.MouseButton1Down:connect(function()
- speedChange("q")
- end)
- z.MouseButton1Down:connect(function()
- speedChange("z")
- end)
- e.MouseButton1Down:connect(dive)
- x.MouseButton1Down:connect(block)
- r.MouseButton1Down:connect(function()
- if ownsHS then
- hitstick()
- else
- game:GetService("MarketplaceService"):PromptPurchase(player, 676856369)
- end
- end)
- end
- init()
- player.CharacterAdded:connect(init)
- function benchCheck()
- local tag = player:FindFirstChild("BenchTag")
- if tag then
- if tag.Value and tag.Value ~= "False" then
- if character and character:FindFirstChild("Torso") and player ~= storage.Carrier.Value then
- benched = true
- end
- else
- benched = false
- end
- else
- benched = false
- end
- end
- benched = false
- tping = false
- player:WaitForChild("BenchTag").Changed:connect(function(val)
- benchCheck()
- if benched and not tping then
- if player.BenchTag.Value == "ByAdmin" then
- chatMsg("You are benched for 2 minutes.")
- spawn(function()
- wait(120)
- if player.BenchTag.Value == "ByAdmin" then
- chatMsg("You are unbenched.")
- storage.RemoteEvent:FireServer({
- "MainScript",
- "Benched",
- false
- })
- end
- end)
- end
- tping = true
- while true do
- benchCheck()
- if benched then
- local pos = character.Torso.Position
- if math.abs(pos.Z) > 52.5 or math.abs(pos.X) < 89.5 then
- if player.Team == storage.Home.Value then
- character.Torso.CFrame = CFrame.new(97.5, 6, 0)
- else
- character.Torso.CFrame = CFrame.new(-97.5, 6, 0)
- end
- end
- else
- break
- end
- wait(0.33)
- end
- tping = false
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement