private void HandleGameServerList(GameServerListPacket packet) { var server = packet.Servers.FirstOrDefault(x => x.Name.Equals(startConfig.ShardName, StringComparison.OrdinalIgnoreCase)); reloginInfo.SelectedServer = server ?? throw new InvalidOperationException($"Cannot find shard {startConfig.ShardName}."); reloginInfo.ServerListSystemFlag = packet.SystemInfoFlag; var selectServerRequest = packetRegistry.Instantiate <SelectServerRequest>(); selectServerRequest.ChosenServerId = server.Id; SendToServer(selectServerRequest.Serialize()); }
private void HandleLoginRequest(LoginRequest packet) { if (packet.Account.Equals(startConfig.AccountName) && packet.Password.Equals(this.startConfig.Password)) { var serverListPacket = new GameServerListPacket(); serverListPacket.Servers = new[] { new ServerListItem(0, reloginInfo.SelectedServer.Name, reloginInfo.SelectedServer.FullPercent, reloginInfo.SelectedServer.TimeZone, 0x7F000001) }; serverListPacket.SystemInfoFlag = reloginInfo.ServerListSystemFlag; SendToClient(serverListPacket.Serialize()); } else { throw new NotImplementedException("account/password mismatch"); } }
private void HandleGameServerList(GameServerListPacket packet) { servers = packet.Servers; }