Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Code not removing "Clothe" from the player?

Asked by 6 years ago

The Goal For This Script Is To Run A Simple Game Loops, And Then Pick A Random Player. The issue is, the code seems to completely skip the part of removing all the players "clothing". But will continue with the loop for 'Game'.

--//Services//--
local players = game:GetService('Players')
--//Variables//--
local timeInt = 60
local intTime = 60
local pretime = 10

--//Round Objects//--
local status = game.ReplicatedStorage.Status
local spawnPoints = game.Workspace:FindFirstChild('Spawnpoints')
local lobbySpawns = game.Workspace:FindFirstChild('Lobbyspawns')

--//Main//--
while wait() do
    --//Return To Lobby//--
    for i,Player in pairs (players:GetPlayers()) do
        if Player.Character then
            Player.Character:SetPrimaryPartCFrame(lobbySpawns:FindFirstChild('Point' ..i).CFrame + Vector3.new(0,3,0))
        end
    end
    --//Intermission Time//--
    for i=intTime,1,-1 do
        wait(1)
        status.Value = 'intermission'
    end
    --//Bring Players To Map//--
    for i,Player in pairs (players:GetPlayers()) do
        Player.Character:SetPrimaryPartCFrame(spawnPoints:FindFirstChild('Point' ..i).CFrame + Vector3.new(0,3,0))
    end 
    --//Signal Prematch//--
    for i=pretime,1,-1 do
        status.Value = 'prematch'
        wait(1)
    end

    local currentPlayers = players:GetPlayers()
    local firstInfected = currentPlayers[math.random(#currentPlayers)]
    for _, child in pairs(firstInfected:GetChildren()) do
    if child:IsA('Hat') then
        child:Destroy()
     end
    if child:IsA('ShirtGraphic')then
        child:Destroy()
    end
    if child:IsA('Pants')then
        child:Destroy()
    end
    if child:IsA('Shirt')then
        child:Destroy()
    end
    if child.Name == "Torso" then
        for _, TorsoChild in pairs(child:GetChildren()) do
            if TorsoChild:IsA('Decal')then
                TorsoChild:Destroy()
            end
        end
    end
end 

    --//Signal Match//--
    for i=timeInt,1,-1 do
        wait(1)
        status.Value = 'game'
    end
end

Thanks!

1 answer

Log in to vote
0
Answered by 6 years ago
local firstInfected = currentPlayers[math.random(#currentPlayers)]

That is because that is the player object, and not that player's character. Fix:

local firstInfected = currentPlayers[math.random(#currentPlayers)].Character

Also, I would recommend using Accoutrement(All hats, accessories, etc.) instead of hat. So,

if child:IsA('Accoutrement') then
    child:Destroy()
end

instead of

if child:IsA('Hat') then
    child:Destroy()
end
Ad

Answer this question