before you ask, i've looked over the place templates so many times FOR SOME REASON, this is giving incorrect player limits like a template set to 1 maximum player has 10 maximum players and multiplayer, which has 5 maximum players, sometimes has 1 then sometimes has 10 and massive multiplayer, which is 50 max, sometimes has 1 and 10, but if someone else tries to join it puts them in a completely different server. this script is messy, majority of it is worked off of the wiki
local ds = game:GetService("DataStoreService"):GetGlobalDataStore() local CDR = "4" local newPlaceId game.Players.PlayerAdded:connect(function(plr) if game:GetService("MarketplaceService"):PlayerOwnsAsset(plr,659770656) then game.Lighting.RemoteEvent:FireClient(plr,"Owns50") end end) game.Lighting.RemoteEvent.OnServerEvent:connect(function(player,arg1,arg2) if arg1 == "ResetSingle" then local playerIdentity = player.Name local playerKey = 'Singleplayer_' .. player.userId.."_"..CDR local playerData = { SinglepersonalPlaceId = 0 } ds:SetAsync(playerKey, playerData) end if arg1 == "ResetMulti" then local playerIdentity = player.Name local playerKey = 'Multiplayer_' .. player.userId.."_"..CDR local playerData = { personalPlaceId = 0 } ds:SetAsync(playerKey, playerData) end if arg1 == "ResetMass" then local playerIdentity = player.Name local playerKey = 'MassMultiplayer_' .. player.userId.."_"..CDR local playerData = { MassMultipersonalPlaceId = 0 } ds:SetAsync(playerKey, playerData) end if arg1 == "TpM" then local newPlaceId local playerIdentity = player.Name local playerKey = 'Multiplayer_' .. player.userId.."_"..CDR local playerData = ds:GetAsync(playerKey) if playerData then if playerData.personalPlaceId <= 0 then playerData = nil end end if not playerData then newPlaceId = game:GetService("AssetService"):CreatePlaceAsync(playerIdentity.." Multiplayer Server", 654935011) playerData = { personalPlaceId = newPlaceId } ds:SetAsync(playerKey, playerData) ds:SetAsync("PlaceOwner_"..newPlaceId,player.UserId) ds:SetAsync("PlaceType_"..newPlaceId,"Multiplayer") game:GetService('TeleportService'):Teleport(playerData.personalPlaceId, player) end if playerData and playerData.personalPlaceId then game:GetService('TeleportService'):Teleport(playerData.personalPlaceId, player) end end if arg1 == "TpMass" then local newPlaceId local playerIdentity = player.Name local playerKey = 'MassMultiplayer_' .. player.userId.."_"..CDR local DataMASS = ds:GetAsync(playerKey) if DataMASS then if DataMASS.MassMultipersonalPlaceId <= 0 then DataMASS = nil end end if not DataMASS then newPlaceId = game:GetService("AssetService"):CreatePlaceAsync(playerIdentity.." Massive Multiplayer Server", 659753796) DataMASS = { MassMultipersonalPlaceId = newPlaceId } ds:SetAsync(playerKey, DataMASS) ds:SetAsync("PlaceOwner_"..newPlaceId,player.UserId) ds:SetAsync("PlaceType_"..newPlaceId,"Multiplayer") game:GetService('TeleportService'):Teleport(DataMASS.MassMultipersonalPlaceId, player) end if DataMASS and DataMASS.MassMultipersonalPlaceId then game:GetService('TeleportService'):Teleport(DataMASS.MassMultipersonalPlaceId, player) end end if arg1 == "TpS" then local newPlaceId local playerIdentity = player.Name local playerKey = 'Singleplayer_' .. player.userId.."_"..CDR local DataSINGLE = ds:GetAsync(playerKey) if DataSINGLE then if DataSINGLE.SinglepersonalPlaceId <= 0 then DataSINGLE = nil end end if not DataSINGLE then newPlaceId = game:GetService("AssetService"):CreatePlaceAsync(playerIdentity.." Singleplayer Mode", 655017845) DataSINGLE = { SinglepersonalPlaceId = newPlaceId } ds:SetAsync(playerKey, DataSINGLE) ds:SetAsync("PlaceOwner_"..newPlaceId,player.UserId) ds:SetAsync("PlaceType_"..newPlaceId,"Singleplayer") game:GetService('TeleportService'):Teleport(DataSINGLE.SinglepersonalPlaceId, player) end if DataSINGLE and DataSINGLE.SinglepersonalPlaceId then game:GetService('TeleportService'):Teleport(DataSINGLE.SinglepersonalPlaceId, player) end end if arg1 == "Join" then local k =ds:GetAsync("PlaceType_"..tonumber(arg2)) if k then if k == "Multiplayer" then game.Lighting.RemoteEvent:FireClient(player,"Destroy") game:GetService('TeleportService'):Teleport(tonumber(arg2), player) else print("Invalid. Not multiplayer server.") end else print("Invalid. Game not found.") end end