Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

My Delete/Replace Item Script Doesn't Work?

local player = game.Players.LocalPlayer
local character = game.Players.LocalPlayer.Character

character.ChildAdded:Connect(function(tool)
	if tool:IsA("Tool") and tool.Name:is("sharpness") then
		player.Backpack.ClassicSword:Destroy()
		game.ServerStorage.ClassicSword2:Clone().Parent = player.Backpack
	end
end)

I don't fully understand why this script isn't working- I'm trying to make it so that when "sharpness" is equipped, "ClassicSword" is deleted from the player's backpack and "ClassicSword2" is cloned into their backpack. Why isn't my script working?

1 answer

ServerStorage can only be accessed by the server. You're going to have to fire a remote event and have a server script parent the sword for you.

Make a RemoteEvent and place it in ReplicatedStorage.

local remoteEvent = game.ReplicatedStorage.RemoteEvent

character.ChildAdded:Connect(function(tool)
	remoteEvent:FireServer(tool) --it's more secure to run the check through the server, because hackers or whatever
end)

In a server Script placed in ServerScriptStorage:

local remoteEvent = game.ReplicatedStorage.RemoteEvent

remoteEvent.OnServerEvent:Connect(function(player,tool) -- first parameter is always player, second parameter is what you sent through the remote event from the local script which in this case is the child that has been added to the character
	if tool:IsA("Tool") and tool.Name:is("sharpness") then
		player.Backpack.ClassicSword:Destroy()
		game.ServerStorage.ClassicSword2:Clone().Parent = player.Backpack
	end
end)

Let me know if you run into any issues.

This discussion is preserved as it was. New answers, comments, and votes are closed.