Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How Do I make a hat that spawns to people who are in a group?

I really need help I guess I'll give it a try. :I

local groupId = 1087177
function RegisterPlayer( player ) 
if CheckInGroup(player, groupId) then 
HoldThreadForCharacter(player) 
local hat = 1309911
end 
end 
function CheckInGroup( player, id ) 
if player:IsInGroup(id) then 
return true 
end 
return false 
end 
function HoldThreadForCharacter( player ) 
repeat wait() until Workspace:FindFirstChild(player.Name) 
end 
Game.Players.PlayerAdded:connect(RegisterPlayer) 
for i,v in pairs(Game.Players:GetPlayers()) do 
RegisterPlayer(v) 
end 
game.Players.PlayerAdded:connect(function(player)
	player.CharacterAdded:connect(function(character)
		asset = game:GetService("InsertService"):LoadAsset(hat)
		give = game:GetService("InsertService"):Insert(asset)
		local children = asset:GetChildren()
		for i = 1, #children do
			children[i].Parent = character
			end
	end)
end)

500$ it's wrong please help me...

1 answer

✓ Accepted answer

Your indenting style and all of those seemingly useless functions are really confusing me.

Line 15 will error out - :FindFirstChild() tries to FIND the given child in a given object. Returns nil if it doesn't.

Line 23 will error out - hat will not be found anywhere. You might have the script intend to find it in line 5, but, unfortunately, it can only be accessed in the "if" statement in the RegisterPlayer() function since it is a local variable.

Notice that there are two links in "local."

What you wanted is a relatively easy feat to do, and it can be accomplished by around 12 lines or so.

Ignoring all of those functions above line 21, you might need to add the hat spawning code to let people receive their hat when they first get in the game. To do so, you have to put the code in between line 21 and line 22 in your case.

game.Players.PlayerAdded:connect(function (player)
	-- DO STUFF. If the character of the player is being manipulated, use 'player.Character.'
	player.CharacterAdded:connect(function (character)

The reason why you have to have some code before line 22 in order for it to work is because the .CharacterAdded event will not fire until after the first character is dead. I don't know why this happens. But it does.


:IsInGroup: Checks if the player is in a group. Returns true if it is. Accepts a set of integers that represents the group's ID.

EXAMPLE:

if game.Players.LocalPlayer:IsInGroup(7) then
	print("true")
else
	print("false")
end

game:GetService("InsertService"):LoadAsset(): Loads the given asset with a valid ID.

EXAMPLE:

local Item = game:GetService("InsertService"):LoadAsset(23220518)
Item.Parent = workspace

Now, all you have to do is try and utilize the two special terms I just mentioned.

Then try and replicate the code so that it is in two places:

  • Between lines 21 and 22 (with respect to your code).

  • In the anonymous function scope with the .CharacterAdded event.

Try and use the examples to help you in your scripting process.


NOTE:

To have characters wear a hat, just parent the hat object with the Handle basepart to the character itself. You don't have to do any special welding thing, a giver or anything like that.

2 comments

0

i dont understand @ Redbullusa

0

What do you not understand?

This discussion is preserved as it was. New answers, comments, and votes are closed.