Output: 12:05:05.820 - ServerScriptService.SSJScript:31: '}' expected (to close '{' at line 29) near 'Parent'
game is filtering enabled this is a script in serverscriptservice that recieves the event when a localscript in startercharacterscripts fires it.
left out most of it so it won't get leaked only left part that needed fixing
THIS SCRIPT ISNT THE SCRIPT I STARTED WITH WHEN I MADE THIS QUESTION
--//Variables hatsRemoved = false local rp = game:GetService("ReplicatedStorage") local ssjHair = rp:WaitForChild("SSJ1").SSJ local ssjParticles = rp:WaitForChild("SSJ1").SSJparticles --local camScript = script.camScript --//Instances local anim = Instance.new("Animation") anim.AnimationId = "http://www.roblox.com/Asset?ID=1226733054" animTrack = nil local offanim = Instance.new("Animation") offanim.AnimationId = "http://www.roblox.com/Asset?ID=1226813026" --//Events --local ssjEvent = rp:WaitForChild("SSJEvent") --local offEvent = rp:WaitForChild("SSJOffEvent") local ssjEvent = Instance.new("RemoteEvent", rp) ssjEvent.Name = "SSJEvent" --//Make rocks fly up with an animation facing up and not so loud ahhhhh sound --//Thunder sounds local lightningValues = { -- 1 { Name = "EndPoint"; Parent = game.Workspace.partChooserEnd; CFrame = char.RightFoot.CFrame + Vector3.new(-1, 0 , 0); }; -- 2 { Name = "StartPoint" Parent = game.Workspace.partChooserStart CFrame = char.Head.CFrame + Vector3.new(0, 100, 0) CFrame2 = CFrame.new(lightningp2.Position, Vector3.new(0,90,0)) }; -- 3 { Name = "EndPoint2" Parent = game.Workspace.partChooserEnd CFrame = char.RightFoot.CFrame + Vector3.new(-3, 1 , 0) }; -- 4 { Name = "StartPoint2" Parent = game.Workspace.partChooserStart CFrame = char.Head.CFrame + Vector3.new(2, 100, 0) CFrame2 = CFrame.new(lightningp2.Position, Vector3.new(0,90,0)) }; -- 5 { Name = "EndPoint3" Parent = game.Workspace.partChooserEnd CFrame = char.RightFoot.CFrame + Vector3.new(5, 1 , 0) }; -- 6 { Name = "StartPoint3" Parent = game.Workspace.partChooserStart CFrame = char.Head.CFrame + Vector3.new(-4, 100, 0) CFrame2 = CFrame.new(lightningp2.Position, Vector3.new(0,90,0)) }; -- The following ones repeat ones above, if you want me to add these DM me on Discord, Era#5724 -- { -- lightningp5.Name = "EndPoint4" -- lightningp5.Parent = game.Workspace.partChooserEnd -- lightningp5.CFrame = char.RightFoot.CFrame + Vector3.new(2, 1 , 0) -- }; -- { -- lightningp6.Name = "StartPoint4" -- lightningp6.Parent = game.Workspace.partChooserStart -- lightningp6.CFrame = char.Head.CFrame + Vector3.new(2, 100, 0) -- lightningp6.CFrame = CFrame.new(lightningp2.Position, Vector3.new(0,90,0)) -- } }; local function ssjFired(plr) print("Event recieved") local char = game.Workspace:FindFirstChild(plr.Name) local namee = plr.Name local urFolder = rp:WaitForChild(namee) local ssjE = urFolder:FindFirstChild("SSJenabled") local plrNameValue = script.plrName plrNameValue.Value = namee local ssjFound = rp:WaitForChild(namee) local SSJenabled = ssjFound:FindFirstChild("Value") char.Humanoid.Health = math.huge char.Humanoid.WalkSpeed = 0 char.Humanoid.JumpPower = 0 wait() animTrack = plr.Character.Humanoid:LoadAnimation(anim) animTrack:Play() -- camScript.Disabled = false wait() for i = 1,#lightningValues do local part = Instance.new("Part") part.Name = lightningValues[i].Name part.Parent = lightningValues[i].Parent part.CFrame = lightningValues[i].CFrame if lightningValues[i].CFrame2 then part.CFrame = lightningValues[i].CFrame2 end part.Anchored = true part.Locked = true part.CanCollide = false part.Transparency = 1 part.Size = Vector3.new(1,1,1) end local bolt = Instance.new("Part") bolt.Name = "LightningBolt" bolt.BrickColor = BrickColor.new(255, 255, 0) bolt.Material = "Neon" bolt.FormFactor = "Custom" bolt.CanCollide = false bolt.Anchored = true bolt.Size = Vector3.new(1, 1, 1) local p = Instance.new("Part") p.Parent = char p.Anchored = true p.CanCollide = false p.Transparency = 0 p.formFactor = "Symmetric" p.Size = Vector3.new(0, 0, 0) p.TopSurface = "Smooth" p.BottomSurface = "Smooth" p.Name = "Sharingan" p.Shape = "Ball" p.Material = "Neon" p.CFrame = char.UpperTorso.CFrame p.BrickColor = BrickColor.new("New Yeller") function shootElectrode(from, to) local lastPos = from local step = 16 local off = 32 --local range = 500 local distance = (from-to).magnitude --if distance > range then distance = range end for i = 0,distance, step do local from = lastPos local offset = Vector3.new( math.random(-off,off), math.random(-off,off), math.random(-off,off) )/10 local to = from + -(from-to).unit*step + offset local p = bolt:Clone() p.Parent = game.Workspace.ExtraParts p.Size = Vector3.new(p.Size.X, p.Size.Y, (from-to).magnitude) p.CFrame = CFrame.new( from:Lerp(to,.5) , to ) game.Debris:AddItem(p,.3) lastPos = to wait() end end for i = 1,7 do wait(0.05) p.Size = p.Size + Vector3.new(4, 4, 4) p.Transparency = p.Transparency + 0.2 p.CFrame = char.UpperTorso.CFrame end p.Size = Vector3.new(24, 24, 24) p.Transparency = 0 local growingS = script.growingScript growingS.Disabled = false for l = 1,10 do wait() local partChooser = workspace.partChooserStart local partChooser2 = workspace.partChooserEnd local random1 = partChooser:children()[math.random(1,#partChooser:children())] local random2 = partChooser2:children()[math.random(1,#partChooser2:children())] -- print(random1.Name) -- print(random2.Name) local from = random1.Position local to = random2.Position shootElectrode(from, to) local partChooser = workspace.partChooserStart local partChooser2 = workspace.partChooserEnd local random1 = partChooser:children()[math.random(1,#partChooser:children())] local random2 = partChooser2:children()[math.random(1,#partChooser2:children())] -- print(random1.Name) -- print(random2.Name) local from = random1.Position local to = random2.Position shootElectrode(from, to) end end ssjEvent.OnServerEvent:connect(ssjFired)
To help with what's in the comments, I'm not sure how good you are with FE and scripting as a whole but I wrote some of the server side for you, condensing it a bit.
-- // Server Script \\ -- // Variables \\ local replicatedStorage = game:GetService("ReplicatedStorage") local hatsRemoved = false local event = Instance.new("RemoteEvent") local rfunction = Instance.new("RemoteFunction") event.Parent = game.ReplicatedStorage event.Name = "event" rfunction.Name = "function" local lightningValues = { -- 1 { Name = "EndPoint"; Parent = game.Workspace.partChooserEnd; CFrame = char.RightFoot.CFrame + Vector3.new(-1, 0 , 0); }; -- 2 { Name = "StartPoint" Parent = game.Workspace.partChooserStart CFrame = char.Head.CFrame + Vector3.new(0, 100, 0) CFrame2 = CFrame.new(lightningp2.Position, Vector3.new(0,90,0)) }; -- 3 { Name = "EndPoint2" Parent = game.Workspace.partChooserEnd CFrame = char.RightFoot.CFrame + Vector3.new(-3, 1 , 0) }; -- 4 { Name = "StartPoint2" Parent = game.Workspace.partChooserStart CFrame = char.Head.CFrame + Vector3.new(2, 100, 0) CFrame2 = CFrame.new(lightningp2.Position, Vector3.new(0,90,0)) }; -- 5 { Name = "EndPoint3" Parent = game.Workspace.partChooserEnd CFrame = char.RightFoot.CFrame + Vector3.new(5, 1 , 0) }; -- 6 { Name = "StartPoint3" Parent = game.Workspace.partChooserStart CFrame = char.Head.CFrame + Vector3.new(-4, 100, 0) CFrame2 = CFrame.new(lightningp2.Position, Vector3.new(0,90,0)) }; -- The following ones repeat ones above, if you want me to add these DM me on Discord, Era#5724 -- { -- lightningp5.Name = "EndPoint4" -- lightningp5.Parent = game.Workspace.partChooserEnd -- lightningp5.CFrame = char.RightFoot.CFrame + Vector3.new(2, 1 , 0) -- }; -- { -- lightningp6.Name = "StartPoint4" -- lightningp6.Parent = game.Workspace.partChooserStart -- lightningp6.CFrame = char.Head.CFrame + Vector3.new(2, 100, 0) -- lightningp6.CFrame = CFrame.new(lightningp2.Position, Vector3.new(0,90,0)) -- } }; -- // Functions \\ function ssj(args) wait(1) local plr = args[1] local char = plr.Character local humanoid = char:WaitForChild("Humanoid") local name = plr.Name local ssjEvent = replicatedStorage:WaitForChild("SSJ1") local ssjHair = ssjEvent.SSJ local ssjParticles = ssjEvent.SSJparticles local ssjFound = replicatedStorage:WaitForChild(name) local ssjEnabled = ssjFound:FindFirstChild("Value") local offEvent = rp:WaitForChild("SSJOffEvent") local anim = Instance.new("Animation") local offAnim = Instance.new("Animation") anim.AnimationId = "rbxassetid://1226733054" animTrack = nil offAnim.AnimationId = "rbxassetid://1226813026" animTrack = plr.Character.Humanoid:LoadAnimation(anim) animTrack:Play() humanoid.Health = math.huge humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 wait() for i = 1,#lightningValues do local part = Instance.new("Part") part.Name = lightningValues[i].Name part.Parent = lightningValues[i].Parent part.CFrame = lightningValues[i].CFrame if lightningValues[i].CFrame2 then part.CFrame = lightningValues[i].CFrame2 end part.Anchored = true part.Locked = true part.CanCollide = false part.Transparency = 1 part.Size = Vector3.new(1,1,1) end local bolt = Instance.new("Part") bolt.Name = "LightningBolt" bolt.BrickColor = BrickColor.new(255, 255, 0) bolt.Material = "Neon" bolt.FormFactor = "Custom" bolt.CanCollide = false bolt.Anchored = true bolt.Size = Vector3.new(1, 1, 1) local p = Instance.new("Part") p.Parent = char p.Anchored = true p.CanCollide = false p.Transparency = 0 p.formFactor = "Symmetric" p.Size = Vector3.new(0, 0, 0) p.TopSurface = "Smooth" p.BottomSurface = "Smooth" p.Name = "Sharingan" p.Shape = "Ball" p.Material = "Neon" p.CFrame = char.UpperTorso.CFrame p.BrickColor = BrickColor.new("New Yeller") end function shootElectrode(from, to, bolt) local lastPos = from local step = 16 local off = 32 --local range = 500 local distance = (from-to).magnitude --if distance > range then distance = range end for i = 0,distance, step do local from = lastPos local offset = Vector3.new( math.random(-off,off), math.random(-off,off), math.random(-off,off) )/10 local to = from + -(from-to).unit*step + offset local p = bolt:Clone() p.Parent = game.Workspace.ExtraParts p.Size = Vector3.new(p.Size.X, p.Size.Y, (from-to).magnitude) p.CFrame = CFrame.new( from:Lerp(to,.5) , to ) game:GetService("Debris"):AddItem(p,.3) lastPos = to wait() end end -- // Events \\ rfunction.OnServerInvoke = ssj() event.OnServerEvent:Connect(function(plr) end)