[Roblox Scripting | en | vi] Remove all tools of a player when touching a part
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)