public static void Handle_StartLoading(ClientConnection Client, PacketReader reader, byte last) { Account User = Client.CurrentAccount; NormalRoom room = Rooms.GetRoom(User.CurrentRoomId); int mapid = reader.ReadLEInt32(); //mapid int randseed = reader.ReadLEInt32(); //00 92 D1 00 randseed reader.ReadByte(); //00 //Log.Info("startLoading(randseed = {0})", randseed); if (MapHolder.MapInfos.TryGetValue(mapid, out MapInfo mapinfo)) { room.RuleType = mapinfo.RuleType; if (!room.is8Player && !room.CheckReadyPlayerNum(out int err)) { if (err > 0) { Client.SendAsync(new GameRoom_StartError(err, last)); } room.isPlaying = false; return; } if (room.GameMode == 2) { List <Account> notReadyPlayers = room.Players.FindAll(p => !p.IsReady && p.RoomPos != room.RoomMasterIndex); foreach (Account notReadyPlayer in notReadyPlayers) { GameRoomEvent.KickPlayer(notReadyPlayer, room, last); } } else if (room.GameMode == 3) { List <Account> notReadyPlayers = room.Players.FindAll(p => !p.IsReady); foreach (Account notReadyPlayer in notReadyPlayers) { GameRoomEvent.KickPlayer(notReadyPlayer, room, last); } } room.PlayingMapNum = mapid; room.BroadcastToAll(new GameRoom_StartLoading(mapid, randseed, last)); room.StartWaitAllSyncThread(); room.SetRewardGroupList(); } }