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

How do I make a developer team?

Asked by 5 years ago
Edited 5 years ago
while wait() do
    if script.Parent.Parent.Players:FindFirstChild(JakePlays_TV) then
        script.Parent.Parent.Players.JakePlays_TV.Team = Developer 
    end
end

I tried to use this script to make it so that I am in the developer team automatically. Is there any suggestions as to what I did wrong? This script is in the ServerScriptService

4 answers

Log in to vote
1
Answered by
xPolarium 1388 Moderation Voter
5 years ago
Edited 5 years ago

You're using a loop to check when ever JakePlays_TV appears inside of the Player's service. The way you're using FindFirstChild is technically wrong since you didn't use that as a string. FindFirstChild needs a string for it to search for a child called that.

If I wanted to find a part named Part in workspace:

local part = workspace:FindFirstChild("Part")

Instead of using an infinite while-loop, you could use PlayerAdded event which fires whenever a player joins the server. This event also provides us the joining player in it's parameter:

--Define services we are using.
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")

Players.PlayerAdded:Connect(function(player)
    --We compare strings here. Strings need quote marks " "
    if player.Name == "JakePlays_TV" then
        --if player is you
        player.Team = Teams:FindFirstChild("Developer") --Notice we use quotes
    end
end)

Let me know if this is what you needed.

Ad
Log in to vote
1
Answered by
yHasteeD 1819 Moderation Voter
5 years ago
Edited 5 years ago

For first, you dont need to use script.Parent.Parent, only use "game" example:

game.Players:FindFirstChild("...")

also your FindFirstChild is incorrect, you need to use a string. example:

workspace:FindFirstChild("Part") -- use "ObjName" not ObjName (add quotes)

and is not a good way to use a loop to check, you can detect on player added make this. example:

game.Players.PlayerAdded:Connect(function(player)
    print("the player: " .. player.Name .. " joined!")
end)

also you can use a table and a generic for loop to make developers. example:

-- Team service / Your team
local teams = game:GetService("Teams")
local team = teams:FindFirstChild("Developer") -- Team location
-- Players service
local Players = game:GetService("Players")

local developers = {"JakePlays_TV"}
-- You can put more, only put ' ,"PLAYER_NAME" '

Players.PlayerAdded:Connect(function(player) -- Detect on player added and get player
    for _,devName in pairs(developers) do -- Get all "strings" in developers by one per one
        if devName == player.Name and team then -- Check if player is a dev / check if devName is equal to playerName and check if your team exist
            player.Team = team -- Set team
        end
    end
end)

Hope it helped :)

Log in to vote
0
Answered by 5 years ago
Edited 5 years ago

You forgot to add these "" around JakePlays_TV in FindFirstChild() so you should change it to FindFirstChild("JakePlays_TV")

You need the "" because FindFirstChild takes a string input

while wait() do
    if script.Parent.Parent.Players:FindFirstChild("JakePlays_TV") then
        script.Parent.Parent.Players.JakePlays_TV.Team = Developer 
    end
end
0
Developer should also be a string DeceptiveCaster 3761 — 5y
Log in to vote
0
Answered by 5 years ago
Edited 5 years ago

The problem is simple. You forgot to add "" in :FindFirstChild() . It should be :FindFirstChild("JakePlays_TV") .

And also, it is not a good way to use a while true do loop even though you can use a game.Players.PlayerAdded() function.

The better way to achieve the same thing will be:

game.Players.PlayerAdded:Connect(function(player)
    if player.Name == "JakePlays_TV" then
        player.Team = Developer
    end
end)

If this answered your question then don't forget to click that "Accept Answer" button. :)

0
Developer should be a string DeceptiveCaster 3761 — 5y

Answer this question