How Can I Make This Script Smaller?

Can I Make This Smaller (Inside StarterPlayerScripts)

local RS = game.ReplicatedStorage
local Teams = RS:WaitForChild("Teams")
local player = game.Players.LocalPlayer
local PlayerGui = player:WaitForChild("PlayerGui")
local Lobby = PlayerGui:WaitForChild("Lobby")
local InviteFolderUI = Lobby:WaitForChild("Invite")
local InvitePlayers = InviteFolderUI:WaitForChild("InvitePlayers")
local PlayersInParty = InvitePlayers:WaitForChild("PlayersInParty")
local Player_Party = Teams:WaitForChild(player.Name.."_Party")

--- StringValues ---

local PartyLeader = Player_Party:WaitForChild("PartyLeader")
local player2 = Player_Party:WaitForChild("player2")
local player3 = Player_Party:WaitForChild("player3")
local player4 = Player_Party:WaitForChild("player4")

--- Frames ---

local Frame_Localplayer = PlayersInParty:WaitForChild("Localplayer")
local Frame_player2 = PlayersInParty:WaitForChild("Player2")
local Frame_player3 = PlayersInParty:WaitForChild("Player3")
local Frame_player4 = PlayersInParty:WaitForChild("Player4")

function Loader()
    if player2.Value == nil then
        Frame_player2.Username.Text = ""
    else
        Frame_player2.Username.Text = player2.Value
    end
    
    if player3.Value == nil then
        Frame_player3.Username.Text = ""
    else
        Frame_player3.Username.Text = player3.Value
    end
    
    if player4.Value == nil then
        Frame_player4.Username.Text = ""
    else
        Frame_player4.Username.Text = player4.Value
    end
    
end

Loader()

player2.Changed:Connect(function()
    Loader()
end)

player3.Changed:Connect(function()
    Loader()
end)

player4.Changed:Connect(function()
    Loader()
end)

looping

for i,v in ipairs player_party
v.Changed:Connect(function()
loader()

for i,v in ipairs player_party do
if v.Value == nil then
-- i recommend having something that works as a way of linking player to frame without spamming
-- work be efficient cuz say u wanted to increase party to 8 then ur just change a instance value or a 
attribute instead of spamming if statements which is unncessary

tldr if ur using if statements that do the same thing each time just find ways to use loops and 1 if statement

local RS = game.ReplicatedStorage
local Teams = RS:WaitForChild("Teams")
local player = game.Players.LocalPlayer
local PlayerGui = player:WaitForChild("PlayerGui")
local Lobby = PlayerGui:WaitForChild("Lobby")
local InviteFolderUI = Lobby:WaitForChild("Invite")
local InvitePlayers = InviteFolderUI:WaitForChild("InvitePlayers")
local PlayersInParty = InvitePlayers:WaitForChild("PlayersInParty")
local Player_Party = Teams:WaitForChild(player.Name.."_Party")

--- StringValues ---

local PartyLeader = Player_Party:WaitForChild("PartyLeader")
local player2 = Player_Party:WaitForChild("player2")
local player3 = Player_Party:WaitForChild("player3")
local player4 = Player_Party:WaitForChild("player4")

--- Frames ---

local Frame_Localplayer = PlayersInParty:WaitForChild("Localplayer")
local Frame_player2 = PlayersInParty:WaitForChild("Player2")
local Frame_player3 = PlayersInParty:WaitForChild("Player3")
local Frame_player4 = PlayersInParty:WaitForChild("Player4")

--- Player Tables ---

local playerTable = {player2, player3, player4}
local playerFrameTable = {Frame_player2, Frame_player3, Frame_player4}

function Loader()
	for i, v in pairs(playerFrameTable) do
		if v.Value == nil then
			v.Username.Text = ""
		end
	end
end

Loader()

for i, v in pairs(playerTable) do
	v.Changed:Connect(function()
		Loader()
	end)
end
1 Like

By the way, make sure to post this in Code Review next time, as it fits better there.

1 Like