[Roblox Scripting | en | vi] Remove all tools of a player when touching a part

Roblox 4 Th04 2022

To test this script, please create a Part in the Workspace (Roblox Studio) and a Script which its parent is the Part you created before. Then, copy the code below to your Script.

With English comment:

-- Function: remove all player's equipment
-- includes equipment being held by the player and equipped in the BackPack

-- DECLARE SERVICES
local Players = game.Players

-- DECLARE PATHS TO OBJECTS
local RemoveToolPart = script.Parent

-- DECLARE VARIABLES
local isInfoBeingDisplayed = false

-- DECLARE FUNCTION DISPLAYINFO()
function displayInfo(player, info)
	isInfoBeingDisplayed = true
	local InfoGui = Instance.new("ScreenGui")
	local InfoLabel = Instance.new("TextLabel")
	InfoLabel.Parent = InfoGui
	InfoGui.Parent = player.PlayerGui
	InfoLabel.Size = UDim2.new(0.35,0,0.2,0)
	InfoLabel.BorderSizePixel = 0 
	InfoLabel.BackgroundColor = BrickColor.new("White")
	InfoLabel.BackgroundTransparency = 0.3
	InfoLabel.TextSize = 18
	InfoLabel.AnchorPoint = Vector2.new(0.5,0.5)
	InfoLabel.Position = UDim2.new(0.5,0,0.2,0)
	InfoLabel.Text = info
	wait(4)
	InfoLabel:Remove()
	isInfoBeingDisplayed = false
end


-- DECLARE FUNCTION REMOVETOOL()
function removeAllTools(character)	
	-- Store equipment in the player's BackPack
	local currentTool = character:FindFirstChildWhichIsA("Tool")
	if (currentTool) then
		character.Humanoid:UnequipTools()
	end	
	
    -- Remove equipment from the player's BackPack
    -- then show a message on the player's screen
	local player = Players:GetPlayerFromCharacter(character)
	local tools = player.Backpack:GetChildren()
	
	if #tools > 0 then
		--Remove all equipment
		for i =1, #tools do
			tools[i]:Remove()
		end
        -- Show notifications
		if (not(isInfoBeingDisplayed)) then
			displayInfo(player, "You have lost all your equipment!")
		end	
	end
	
end

-- DECLARE FUNCTION CHECKIFPLAYERCHARACTER()
local function checkIfPlayerCharacter(touchedPart)
	local character = nil
    -- Check if the object is a player
    -- Remove all equipment if the object is a player
	if (touchedPart.Parent:findFirstChild("Humanoid")) then
		character = touchedPart.Parent
		print("Remove all tools of player " .. character.Name)
		removeAllTools(character)
	end
end

-- DECLARE FUNCTION CHECKIFPLAYERCHARACTER()
RemoveToolPart.Touched:Connect(checkIfPlayerCharacter)

With Vietnamese comment:

-- Chức năng: lấy tất cả các trang bị của người chơi
-- bao gồm trang bị đang được người chơi cầm và trang bị trong BackPack

-- KHAI BÁO SERVICE
local Players = game.Players

-- KHAI BÁO VẬT THỂ
local RemoveToolPart = script.Parent

-- KHAI BÁO BIẾN
local isInfoBeingDisplayed = false

-- KHAI BÁO FUNCTION DISPLAYINFO()
function displayInfo(player, info)
	isInfoBeingDisplayed = true
	local InfoGui = Instance.new("ScreenGui")
	local InfoLabel = Instance.new("TextLabel")
	InfoLabel.Parent = InfoGui
	InfoGui.Parent = player.PlayerGui
	InfoLabel.Size = UDim2.new(0.35,0,0.2,0)
	InfoLabel.BorderSizePixel = 0 
	InfoLabel.BackgroundColor = BrickColor.new("White")
	InfoLabel.BackgroundTransparency = 0.3
	InfoLabel.TextSize = 18
	InfoLabel.AnchorPoint = Vector2.new(0.5,0.5)
	InfoLabel.Position = UDim2.new(0.5,0,0.2,0)
	InfoLabel.Text = info
	wait(4)
	InfoLabel:Remove()
	isInfoBeingDisplayed = false
end


-- KHAI BÁO FUNCTION REMOVETOOL()
function removeAllTools(character)	
	-- Cất trang bị vào BackPack của người chơi
	local currentTool = character:FindFirstChildWhichIsA("Tool")
	if (currentTool) then
		character.Humanoid:UnequipTools()
	end	
	
	-- Xóa trang bị trong BackPack của người chơi
	-- sau đó hiện thông báo trên màn hình của người chơi
	local player = Players:GetPlayerFromCharacter(character)
	local tools = player.Backpack:GetChildren()
	
	if #tools > 0 then
		--Xóa trang bị
		for i =1, #tools do
			tools[i]:Remove()
		end
		-- Hiện thông báo
		if (not(isInfoBeingDisplayed)) then
			displayInfo(player, "Bạn đã mất hết trang bị!")
		end	
	end
	
end

-- KHAI BÁO FUNCTION CHECKIFPLAYERCHARACTER()
local function checkIfPlayerCharacter(touchedPart)
	local character = nil
	-- Kiểm tra xem vật thể có phải người chơi
	-- Xóa toàn bộ trang bị nếu vật thể là người chơi
	if (touchedPart.Parent:findFirstChild("Humanoid")) then
		character = touchedPart.Parent
		print("Remove all tools of player " .. character.Name)
		removeAllTools(character)
	end
end

-- KHAI BÁO FUNCTION ỨNG VỚI EVENT TOUCH
RemoveToolPart.Touched:Connect(checkIfPlayerCharacter)

Tags

Tony Phạm

Là một người thích vọc vạch và tò mò với tất cả các lĩnh vực từ khoa học tự nhiên, lập trình, thiết kế đến ... triết học. Luôn mong muốn chia sẻ những điều thú vị mà bản thân khám phá được.