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 = tool: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 = tool:WaitForChild("BallRE")
local first_time = true
local cooldown = false
local ps = game:GetService("PhysicsService")
if first_time == true then
first_time = false
ps:CreateCollisionGroup("Ball")
ps:CreateCollisionGroup("Character")
ps:CollisionGroupSetCollidable("Character", "Ball", false)
end
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)
What do you mean by “breaks”? Does it not work? Does it not work as intended? Whenever you clone a script, the script’s execution state doesn’t clone with it, meaning that the script will completely restart when cloned. That may be the source of your problem.
It doesn’t work at all when you click after you reset
This happended to me too, but I found out the Solution for this. On the LocalScript, do
local tool = script.Parent
local re = tool:WaitForChild("BallRE")
local mouse = game.Players.LocalPlayer:GetMouse()
tool.Activated:Connect(function()
local player = game.Players:GetPlayerFromCharacter(tool.Parent)
if player then
local mouse = player:GetMouse()
re:FireServer(player, mouse.Hit)
end
end)
Then on the ServerScript
local tool = script.Parent
local re = tool:WaitForChild("BallRE")
local first_time = true
local cooldown = false
local ps = game:GetService("PhysicsService")
if first_time == true then
first_time = false
ps:CreateCollisionGroup("Ball")
ps:CreateCollisionGroup("Character")
ps:CollisionGroupSetCollidable("Character", "Ball", false)
end
re.OnServerEvent:Connect(function(local, 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)
I tried this and now the script doesn’t work at all (I changed the local, plr, mouseHit to plr, mouseHit) instead of just when I reset