Advertisement
HowToRoblox

LightAttackServer

Apr 10th, 2022
2,810
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.58 KB | None | 0 0
  1. local cooldown = 5
  2. local cooldowns = {}
  3.  
  4.  
  5. game.ReplicatedStorage.LightAttackRE.OnServerEvent:Connect(function(plr, hit)
  6.    
  7.     if cooldowns[plr] or not hit then return end
  8.     cooldowns[plr] = true
  9.    
  10.     plr.Character.HumanoidRootPart.Anchored = true
  11.    
  12.     local part = game.ServerStorage.LightAttackPart:Clone()
  13.     part.CFrame = CFrame.new(plr.Character.HumanoidRootPart.Position + hit.LookVector * 2, hit.Position)
  14.  
  15.     local ring = part.LightAttackGui.Ring
  16.     local circle = part.LightAttackGui.Circle
  17.  
  18.     circle.Size, part.LightAttackGuiBack.Ring.Size = UDim2.new(0,0,0,0), UDim2.new(0,0,0,0)
  19.     ring.Size, part.LightAttackGuiBack.Circle.Size = UDim2.new(0,0,0,0), UDim2.new(0,0,0,0)
  20.  
  21.  
  22.     local lightParticles = part.LightParticles
  23.     for i, p in pairs(lightParticles:GetChildren()) do
  24.         p.Enabled = false
  25.     end
  26.     lightParticles.Core.Size = NumberSequence.new(0)
  27.  
  28.  
  29.     local light = part.PointLight
  30.     light.Brightness = 0
  31.  
  32.  
  33.     part.Parent = plr.Character.HumanoidRootPart
  34.  
  35.  
  36.     spawn(function()
  37.         while wait() do
  38.             ring.Rotation, part.LightAttackGuiBack.Ring.Rotation = ring.Rotation + 1, ring.Rotation + 1
  39.             circle.Rotation, part.LightAttackGuiBack.Circle.Rotation = circle.Rotation - 1, circle.Rotation - 1
  40.         end
  41.     end)
  42.  
  43.     wait(0.5)
  44.  
  45.     circle:TweenSize(UDim2.new(1, 0, 1, 0), "Out", "Quint")
  46.     part.LightAttackGuiBack.Ring:TweenSize(UDim2.new(1, 0, 1, 0), "Out", "Quint")
  47.     ring:TweenSize(UDim2.new(1, 0, 1, 0), "Out", "Back")
  48.     part.LightAttackGuiBack.Circle:TweenSize(UDim2.new(1, 0, 1, 0), "Out", "Back")
  49.  
  50.     wait(0.3)
  51.  
  52.  
  53.  
  54.     lightParticles.Core.Enabled = true
  55.  
  56.     local ts = game:GetService("TweenService")
  57.  
  58.  
  59.     for i, p in pairs(lightParticles:GetChildren()) do
  60.         p.Enabled = true
  61.     end
  62.    
  63.     part.ChargeSound:Play()
  64.  
  65.     local i = 0
  66.     while i < 1.5 do
  67.         i += 0.01
  68.         lightParticles.Core.Size = NumberSequence.new(i)
  69.         wait()
  70.     end
  71.        
  72.     wait(0.3)
  73.        
  74.     ts:Create(part, TweenInfo.new(0.1, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Size = Vector3.new(0, 0, 0)}):Play()
  75.        
  76.     while i > 0 do
  77.         i -= 0.5
  78.         lightParticles.Core.Size = NumberSequence.new(i)
  79.         wait()
  80.     end
  81.        
  82.        
  83.     local beam = game.ServerStorage.Beam:Clone()
  84.        
  85.     local distance = 30
  86.  
  87.     local raycastParams = RaycastParams.new()
  88.     raycastParams.FilterDescendantsInstances = {part}
  89.  
  90.     local raycastResult = workspace:Raycast(part.Position, part.CFrame.LookVector * distance)
  91.  
  92.     if raycastResult then distance = raycastResult.Distance end
  93.        
  94.        
  95.     local sizes = {
  96.         Vector3.new(beam.Beam.Size.X, beam.Beam.Size.Y, distance),
  97.         Vector3.new(beam.WhiteSpiral.Size.X, beam.WhiteSpiral.Size.Y, distance),
  98.         Vector3.new(beam.YellowSpiral.Size.X, beam.YellowSpiral.Size.Y, distance)  
  99.     }
  100.        
  101.  
  102.     spawn(function()
  103.         while beam.Parent ~= nil do
  104.             beam.WhiteSpiral.Rotation += Vector3.new(0, 0, 5)
  105.             beam.YellowSpiral.Rotation -= Vector3.new(0, 0, 5)
  106.             beam.Head.Rotation += Vector3.new(0, 0, 5)
  107.             wait()
  108.         end
  109.     end)
  110.        
  111.     beam:SetPrimaryPartCFrame(part.CFrame + (part.CFrame.LookVector * (distance/2)))
  112.        
  113.        
  114.     beam.Beam.Size = Vector3.new(0, 0, distance)
  115.     beam.WhiteSpiral.Size = Vector3.new(0, 0, distance)
  116.     beam.YellowSpiral.Size = Vector3.new(0, 0, distance)
  117.     beam.Head.CFrame = beam.Beam.CFrame
  118.        
  119.     ts:Create(beam.Beam, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Size = sizes[1]}):Play()
  120.     ts:Create(beam.WhiteSpiral, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Size = sizes[2]}):Play()
  121.     ts:Create(beam.YellowSpiral, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Size = sizes[3]}):Play()
  122.     ts:Create(beam.Head, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {CFrame = beam.Beam.CFrame + (beam.Beam.CFrame.LookVector * (distance/2))}):Play()
  123.        
  124.     beam.Parent = workspace
  125.        
  126.     ts:Create(light, TweenInfo.new(0.1, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Brightness = 10}):Play()
  127.    
  128.     part.BeamSound:Play()
  129.        
  130.     for i = 1, 100 do
  131.        
  132.         wait(0.05)
  133.        
  134.         local raycastParams = RaycastParams.new()
  135.         raycastParams.FilterType = Enum.RaycastFilterType.Whitelist
  136.         local chars = {}
  137.         for i, plrLoop in pairs(game.Players:GetPlayers()) do
  138.             if plr ~= plrLoop.Character then table.insert(chars, plrLoop.Character) end
  139.         end
  140.         raycastParams.FilterDescendantsInstances = chars
  141.        
  142.         local raycastResult = workspace:Raycast(part.Position, part.CFrame.LookVector * (distance + 1))
  143.        
  144.         if raycastResult and raycastResult.Instance.Parent:FindFirstChild("Humanoid") then
  145.            
  146.             raycastResult.Instance.Parent.Humanoid:TakeDamage(1.5)
  147.            
  148.             if game.Players:GetPlayerFromCharacter(raycastResult.Instance.Parent) then
  149.                 game.ReplicatedStorage.LightAttackRE:FireClient(game.Players:GetPlayerFromCharacter(raycastResult.Instance.Parent))
  150.             end
  151.         end
  152.        
  153.         game.ReplicatedStorage.LightAttackRE:FireClient(plr)
  154.     end
  155.  
  156.     ts:Create(beam.Beam, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Size = Vector3.new()}):Play()
  157.     ts:Create(beam.WhiteSpiral, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Size = Vector3.new()}):Play()
  158.     ts:Create(beam.YellowSpiral, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Size = Vector3.new()}):Play()
  159.     ts:Create(beam.Head, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Transparency = 1}):Play()
  160.  
  161.     ts:Create(light, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {Brightness = 0}):Play()
  162.    
  163.     plr.Character.HumanoidRootPart.Anchored = false
  164.        
  165.     wait(0.3)
  166.     beam:Destroy()
  167.        
  168.     for i, p in pairs(lightParticles:GetChildren()) do
  169.         p.Enabled = false
  170.     end
  171.    
  172.     wait(cooldown)
  173.     cooldowns[plr] = nil
  174. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement