In serverstorage i have a beach ball with 2 scripts inside and by using print statements im pretty sure the localscript doesnt break but the other regular script isnt working after resetting. The ball gets cloned and put in the backpack and startergear when you purchase it with a GUI.
Explorer:
LocalScript (although it doesnt break)
local tool = script.Parent
local re = game.ReplicatedStorage:WaitForChild("BallRE")
local mouse = game.Players.LocalPlayer:GetMouse()
tool.Activated:Connect(function()
re:FireServer(mouse.Hit)
end)
Server script (The one that breaks)
local tool = script.Parent
local re = game.ReplicatedStorage:WaitForChild("BallRE")
local cooldown = false
local ps = game:GetService("PhysicsService")
ps:CreateCollisionGroup("Ball")
ps:CreateCollisionGroup("Character")
ps:CollisionGroupSetCollidable("Character", "Ball", false)
re.OnServerEvent:Connect(function(plr, mouseHit)
local char = plr.Character
local hum = char:FindFirstChild("Humanoid")
if hum and not cooldown then
cooldown = true
hum.Jump = true
local ballClone = tool.Handle:Clone()
ballClone.Transparency = 0
tool.Handle.Transparency = 1
for i, descendant in pairs(plr.Character:GetDescendants()) do
if descendant:IsA("BasePart") then ps:SetPartCollisionGroup(descendant, "Character") end
end
ps:SetPartCollisionGroup(ballClone, "Ball")
local velocity = mouseHit.Position + Vector3.new(0, game.Workspace.Gravity * 0.5, 0)
ballClone.Velocity = velocity
ballClone.CanCollide = true
ballClone.Parent = workspace
game:GetService("Debris"):AddItem(ballClone, 2)
wait(3)
ballClone.Velocity = Vector3.new(0, 0, 0)
tool.Handle.Transparency = 0
cooldown = false
end
end)
First thing I notice about this is that on your localscript, your firing the event in the tool, but on your serverscript, waiting for input from a event form replicated storage???
if I put local ps = game:GetService("PhysicsService") ps:CreateCollisionGroup("Ball") ps:CreateCollisionGroup("Character") ps:CollisionGroupSetCollidable("Character", "Ball", false) into a server script then what about the part of the script that goes for i, descendant in pairs(plr.Character:GetDescendants()) do if descendant:IsA("BasePart") then ps:SetPartCollisionGroup(descendant, "Character") end end ps:SetPartCollisionGroup(ballClone, "Ball")