Im trying to sort player join order in a local script but I cant figure it out and I thought about this bbut I dont know how to make this can someone help me?
Hi, the table will already be sorted based on when people join. table.insert will add the player's name at the end of the table. The if statement you have inside of the playeradded function will not work as the player joining will always be the player you need to add to the array.
gtg so i didnt get to test this: Serverscript:
local sortedPlayers = {} local Text = "" function getIndex(playerName) for i = 1, #sortedPlayers do if(sortedPlayers[i] = playerName)then return i end end end game.Players.PlayerAdded:Connect(function(plr) --player who just entered will never not be player table.insert(sortedPlayers, plr.Name) end) game.Players.PlayerRemoving:Connect(function(plr) table.remove(sortedPlayers, getIndex(plr.Name)) end) while(wait(1))do Text = "Players: " --loop through the sorted list of players --i is the position in the table for i = 1, #sortedPlayers do Text = Text .. " " ..sortedPlayers[i] end print(Text) end
Script:
--By enes223 local Remote = game:GetService("ReplicatedStorage"):WaitForChild("UserSender") local Players = {} local Text = "" game.Players.PlayerAdded:Connect(function(plr) if not Players[plr.Name] then table.insert(Players,plr.Name) for i,v in pairs(Players) do Text = Text..v.."," Remote:FireClient(plr,Text) Remote:FireAllClients(Text) end end end) game.Players.PlayerRemoving:Connect(function(plr) if Players[plr.Name] then Players[plr.Name] = nil for i,v in pairs(Players) do Text = Text..v.."," Remote:FireAllClients(Text) end end end)
Local Script:
--By enes223 local Sorter = game:GetService("ReplicatedStorage"):WaitForChild("Sorter") local Remote = game:GetService("ReplicatedStorage"):WaitForChild("UserSender") local U1,U2,U3,U4,U5 = script.Parent.User1,script.Parent.User2,script.Parent.User3,script.Parent.User4,script.Parent.User5 local I1,I2,I3,I4,I5 = U1.Index,U2.Index,U3.Index,U4.Index,U5.Index local SortedTable = {} local Indexes = {I1,I2,I3,I4,I5} function Seperate(Text,Seperator) local SubNumber = 1 local Line = Text:sub(1,SubNumber) repeat Line = Text:sub(1,SubNumber) SubNumber = SubNumber + 1 until Line:find(Seperator) if Line:find(Seperator) then return Line:gsub(Seperator,"") end end function Init(Text) if not Text:find(",") then for i,v in pairs(SortedTable) do for j,k in pairs(Indexes) do local Index = #Indexes if k.Value == Index then k.Parent.Image = game.Players:GetUserThumbnailAsync(game.Players[v].UserId,Enum.ThumbnailType.HeadShot,Enum.ThumbnailSize.Size60x60) k.Parent.User.Text = v Index = Index - 1 end end end else if not SortedTable[Seperate(Text,",")] then SortedTable[Seperate(Text,",")] = Seperate(Text,",") Text = Text:gsub(Seperate(Text,",")..",","") Init(Text) end end end Remote.OnClientEvent:connect(function(Text) Init(Text) end)