Advertisement
HowToRoblox

CannonServer

Jul 2nd, 2022
651
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.10 KB | None
  1. local cannonCooldowns = {}
  2.  
  3.  
  4. game.ReplicatedStorage:WaitForChild("CannonRE").OnServerEvent:Connect(function(player, cannon, instruction, mouse)
  5.    
  6.     if cannon.Top.Seat.Occupant == player.Character.Humanoid then
  7.        
  8.         if instruction == "MOVE" then
  9.             cannon.Top:SetPrimaryPartCFrame(cannon.Top.PrimaryPart.CFrame * CFrame.Angles(0, -mouse.X/200, 0))
  10.            
  11.             cannon.Top.Gun:SetPrimaryPartCFrame(cannon.Top.Gun.PrimaryPart.CFrame * CFrame.Angles(0, mouse.Y/200, 0))
  12.            
  13.             if cannon.Top.Gun.PrimaryPart.Orientation.X > -65 then
  14.                 cannon.Top.Gun:SetPrimaryPartCFrame(cannon.Top.Gun.PrimaryPart.CFrame * CFrame.Angles(0, -mouse.Y/200, 0))
  15.             end
  16.            
  17.            
  18.         elseif instruction == "SHOOT" and not cannonCooldowns[cannon] then
  19.            
  20.             cannonCooldowns[cannon] = true
  21.  
  22.             local ball = game.ReplicatedStorage:WaitForChild("Cannonball"):Clone()
  23.             ball.CFrame = CFrame.new(cannon.Top.Gun.CannonballPositionPart.Position)
  24.            
  25.             local bv = Instance.new("BodyVelocity")
  26.             bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
  27.             bv.Parent = ball
  28.            
  29.             local distance = (mouse.LookVector * 500 - cannon.Top.Gun.CannonballPositionPart.Position).Magnitude
  30.             bv.Velocity = mouse.LookVector * 500
  31.            
  32.             ball.Touched:Connect(function(hit)
  33.                
  34.                 local cannonHit = false
  35.                 for i, descendant in pairs(cannon:GetDescendants()) do
  36.                     if descendant == hit then
  37.                         cannonHit = true
  38.                     end
  39.                 end
  40.                
  41.                 if not cannonHit then                  
  42.                     if hit.Parent:FindFirstChild("Humanoid") then
  43.                         ball:Destroy()
  44.                         hit.Parent.Humanoid:TakeDamage(80)
  45.                     end
  46.                 end
  47.             end)
  48.            
  49.             game:GetService("Debris"):AddItem(ball, 30)
  50.            
  51.             ball.Parent = workspace
  52.             game.ReplicatedStorage.CannonRE:FireClient(player, ball)
  53.            
  54.             cannon.Top.Gun.CannonballPositionPart.ShootSound:Play()
  55.             spawn(function()
  56.                 cannon.Top.Gun.CannonballPositionPart.ShootParticles.Enabled = true
  57.                 wait(0.1)
  58.                 cannon.Top.Gun.CannonballPositionPart.ShootParticles.Enabled = false
  59.             end)
  60.            
  61.             spawn(function()
  62.                 wait(0.1)
  63.                 bv:Destroy()
  64.             end)
  65.            
  66.             wait(2)
  67.            
  68.             cannonCooldowns[cannon] = false
  69.         end
  70.     end
  71. end)
Advertisement
RAW Paste Data Copied
Advertisement