Hi, I have a script that gives players a tool if they have bought a game pass, but I want it so that I can remove the tool from a specific players background when they get teleported to a round. I’m not sure how to do this to just a specific player rather than everyone who has the tool.
use a server script
game.Players["player name"].Backpack.ToolName:Destroy()
if the tool is equipped go to character instead of backpack
That will error if used like that.
game:GetService("Players").PlayerName.Backpack:FindFirstChild("ToolName"):Destroy()
If the player has equipped the tool you will have to do this instead
game:GetService("Players").PlayerName.Character:FindFirstChild("ToolName"):Destroy()
(with a check to see if .Character
is nil or not off course)
You should do both to be sure
Hi, thanks for the response, sorry how would I do the character check, and which tool destroy should I put inside it, the backpack one or the one that destroys it if its equipped?
Also, how would I get the player name because I keep getting the error message that ‘player1Name’ is not in Players.
local player1Name = player1.Name
local player2Name = player2.Name
game:GetService("Players").player1Name.Backpack:FindFirstChild("NoobSign"):Destroy()
game:GetService("Players").player2Name.Backpack:FindFirstChild("NoobSign"):Destroy()
game:GetService("Players").player1Name.Character:FindFirstChild("NoobSign"):Destroy()
game:GetService("Players").player2Name.Character:FindFirstChild("NoobSign"):Destroy()
maybe
local Players = game:GetService("Players")
player.Character.Humanoid:UnequipTools() -- paste my code in teleport script, so player is who you teleport
local sign = player.BackPack:FindFirstChild("NoobSign")
if sign ~= nil then -- if sign founded, then destroy
sign:Destroy()
end
this is where we use for loops
local players = game:GetService("Players")
for index,player in pairs(players:GetPlayers()) do --Get all the players in the game
--player is the player we are currently at
--index is not used and mostly used for tables (don't get confused here, we don't use index in this script)
local possibleTool = player.Backpack:FindFirstChild("ToolName")
local possibleTool2 = player.Character:FindFirstChild("ToolName")
if possibleTool then --if the tool is in the backpack
possibleTool:Destroy()
elseif possibleTool2 then --if it's equipped
possibleTool2:Destroy()
end
end
local players = game:GetService("Players")
for index,player in pairs(players:GetPlayers()) do --Get all the players in the game
--player is the player we are currently at
--index is not used and mostly used for tables (don't get confused here, we don't use index in this script)
local possibleTool = player.Backpack:FindFirstChild("ToolName")
local possibleTool2 = player.Character:FindFirstChild("ToolName")
if possibleTool then --if the tool is in the backpack
possibleTool:Destroy()
elseif possibleTool2 then --if it's equipped
possibleTool2:Destroy()
end
end
Although this is correct, I would argue that this is bad practice. Specifically, destroying the tool when it is equipped immediately. It’s a lot better to Unequip the tool before destroying it, so that your unequipping code can run. So:
elseif possibleTool2 then --if it's equipped
player.Character.Humanoid:UnequipTools()
possibleTool2:Destroy()
end
I want to add to this post and say that the simplest to way to do this is using the very handy or
local tool = player.Backpack:FindFirstChild("ToolName") or player.Character:FindFirstChild("ToolName")
if tool then
tool:Destroy()
end
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.