Hey guys!
So earlier today I was working on a new project of mine and decided to finally start organizing my code a bit better, so I created a bunch of functions inside my ModuleScript.
If a player would trigger a certain button, a script would then fire a specific function from the MainModule. This worked like two or three times, now it just refuses to execute.
MainModule
local Global = {}
--Variables
local rs = game:GetService("ReplicatedStorage")
local gdhats = game:GetService("ServerStorage").GuitarDude
local hhats = game:GetService("ServerStorage").HappyHank
--Tables (Shirt, Pants, Face)
GuitarClothes = {"http://www.roblox.com/asset/?id=398635080","http://www.roblox.com/asset/?id=382538502","rbxassetid://1016181246"}
GuitarHats = {gdhats.BackGuitar, gdhats.Bandito, gdhats.CheeseHat, gdhats.Necklace}
HankClothes = {"http://www.roblox.com/asset/?id=536299005","http://www.roblox.com/asset/?id=144076759","rbxassetid://616394568"}
HankHats = {hhats.Beard, hhats.DefaultioHair, hhats.Eyephones}
--Functions
function Global.GuitarAvatar()
game.Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function(char)
wait(1)
--Accessories
for i,v in pairs (char:GetChildren()) do
if v.ClassName == "Accessory" or v.ClassName == "Hat" then
v:Destroy()
end
end
GuitarHats[1]:Clone().Parent = char
GuitarHats[2]:Clone().Parent = char
GuitarHats[3]:Clone().Parent = char
GuitarHats[4]:Clone().Parent = char
--Face
char.Head.face.Texture = GuitarClothes[3]
--Shirt
if not char:FindFirstChild("Shirt") then
local shirt = Instance.new("Shirt")
shirt.Parent = char
shirt.ShirtTemplate = GuitarClothes[1]
else
local shirt = char:FindFirstChild("Shirt")
shirt.ShirtTemplate = GuitarClothes[1]
end
--Pants
if not char:FindFirstChild("Pants") then
local pants = Instance.new("Pants")
pants.Parent = char
pants.PantsTemplate = GuitarClothes[2]
else
local pants = char:FindFirstChild("Pants")
pants.PantsTemplate = GuitarClothes[2]
end
end)
end)
end
function Global.HankAvatar()
game.Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function(char)
wait(1)
--Accessories
for i,v in pairs (char:GetChildren()) do
if v.ClassName == "Accessory" or v.ClassName == "Hat" then
v:Destroy()
end
end
HankHats[1]:Clone().Parent = char
HankHats[2]:Clone().Parent = char
HankHats[3]:Clone().Parent = char
HankHats[4]:Clone().Parent = char
--Face
char.Head.face.Texture = HankClothes[3]
--Shirt
if not char:FindFirstChild("Shirt") then
local shirt = Instance.new("Shirt")
shirt.Parent = char
shirt.ShirtTemplate = HankClothes[1]
else
local shirt = char:FindFirstChild("Shirt")
shirt.ShirtTemplate = HankClothes[1]
end
--Pants
if not char:FindFirstChild("Pants") then
local pants = Instance.new("Pants")
pants.Parent = char
pants.PantsTemplate = HankClothes[2]
else
local pants = char:FindFirstChild("Pants")
pants.PantsTemplate = HankClothes[2]
end
end)
end)
end
--Events
rs.respawn.OnServerEvent:Connect(function(player)
player:LoadCharacter()
end)
return Global
Script
local Global = require(game.ServerScriptService.GlobalHandler)
game.Players.PlayerAdded:Connect(function(plr)
--Create Avatar
if not plr:FindFirstChild("avatar") then
local value = Instance.new("StringValue")
value.Parent = plr
value.Name = "avatar"
end
--Avatar Customization
plr.CharacterAdded:Connect(function(char)
local avatar = plr:WaitForChild("avatar")
if avatar.Value == "guitar" then
Global.GuitarAvatar()
elseif avatar.Value == "hank" then
Global.HankAvatar()
elseif avatar.Value == "secretary" then
Global.SecretaryAvatar()
elseif avatar.Value == "princess" then
Global.PrincessAvatar()
end
end)
end)
Any ideas or suggestions? Code improvement is also grealy appreciated, I am well-aware that my code is still somewhat of a mess!

4 comments
When you call the GuitarAvatar function you have a PlayerAdded event, so the function wont run until a player joins the server.
Remove the playeradded qnd characteradded event at the beginning of the function guitaravatar and try that
^. events and functions are asynchronous
Ah ofcourse! But then how would I make it recognize the player and character in the function?