示例#1
0
        public static void OnCityInfoResponse(ProcessedPacket Packet)
        {
            byte NumCities = (byte)Packet.ReadByte();

            if (Packet.DecryptedLength > 1)
            {
                lock (NetworkFacade.Cities)
                {
                    for (int i = 0; i < NumCities; i++)
                    {
                        string         Name        = Packet.ReadString();
                        string         Description = Packet.ReadString();
                        string         IP          = Packet.ReadString();
                        int            Port        = Packet.ReadInt32();
                        byte           StatusByte  = (byte)Packet.ReadByte();
                        CityInfoStatus Status      = (CityInfoStatus)StatusByte;
                        ulong          Thumbnail   = Packet.ReadUInt64();
                        string         UUID        = Packet.ReadString();
                        ulong          Map         = Packet.ReadUInt64();

                        CityInfo Info = new CityInfo(false);
                        Info.Name        = Name;
                        Info.Description = Description;
                        Info.Thumbnail   = Thumbnail;
                        Info.UUID        = UUID;
                        Info.Map         = Map;
                        Info.IP          = IP;
                        Info.Port        = Port;
                        Info.Online      = true;
                        Info.Status      = Status;
                        NetworkFacade.Cities.Add(Info);
                    }
                }
            }
        }
示例#2
0
        public static void OnCityInfoResponse(ProcessedPacket Packet)
        {
            byte NumCities = (byte)Packet.ReadByte();

            if (Packet.DecryptedLength > 1)
            {
                for (int i = 0; i < NumCities; i++)
                {
                    string         Name        = Packet.ReadString();
                    string         Description = Packet.ReadString();
                    string         IP          = Packet.ReadString();
                    int            Port        = Packet.ReadInt32();
                    byte           StatusByte  = (byte)Packet.ReadByte();
                    CityInfoStatus Status      = (CityInfoStatus)StatusByte;
                    ulong          Thumbnail   = Packet.ReadUInt64();
                    string         UUID        = Packet.ReadString();
                    ulong          Map         = Packet.ReadUInt64();

                    CityInfo Info = new CityInfo(Name, Description, Thumbnail, UUID, Map, IP, Port);
                    Info.Online = true;
                    Info.Status = Status;
                    NetworkFacade.Cities.Add(Info);
                }
            }
        }
示例#3
0
        /// <summary>
        /// A cityserver logged in!
        /// </summary>
        public static void HandleCityServerLogin(NetworkClient Client, ProcessedPacket P)
        {
            Logger.LogInfo("CityServer logged in!\r\n");

            string         Name        = P.ReadString();
            string         Description = P.ReadString();
            string         IP          = P.ReadString();
            int            Port        = P.ReadInt32();
            CityInfoStatus Status      = (CityInfoStatus)P.ReadByte();
            ulong          Thumbnail   = P.ReadUInt64();
            string         UUID        = P.ReadString();
            ulong          Map         = P.ReadUInt64();

            CityInfo Info = new CityInfo(true);

            Info.Name        = Name;
            Info.Description = Description;
            Info.IP          = IP;
            Info.Port        = Port;
            Info.Status      = Status;
            Info.Thumbnail   = Thumbnail;
            Info.UUID        = UUID;
            Info.Map         = Map;
            Info.Client      = Client;
            Info.Online      = true;

            NetworkFacade.CServerListener.CityServers.Add(Info);
            NetworkFacade.CServerListener.PotentialLogins.TryTake(out Client);

            NetworkClient[] Clients = new NetworkClient[NetworkFacade.ClientListener.Clients.Count];
            NetworkFacade.ClientListener.Clients.CopyTo(Clients, 0);

            PacketStream ClientPacket = new PacketStream((byte)PacketType.NEW_CITY_SERVER, 0);

            ClientPacket.WriteString(Name);
            ClientPacket.WriteString(Description);
            ClientPacket.WriteString(IP);
            ClientPacket.WriteInt32(Port);
            ClientPacket.WriteByte((byte)Status);
            ClientPacket.WriteUInt64(Thumbnail);
            ClientPacket.WriteString(UUID);
            ClientPacket.WriteUInt64(Map);

            foreach (NetworkClient Receiver in Clients)
            {
                Receiver.SendEncrypted((byte)PacketType.NEW_CITY_SERVER, ClientPacket.ToArray());
            }
        }
        /// <summary>
        /// A cityserver logged in!
        /// </summary>
        public static void HandleCityServerLogin(NetworkClient Client, ProcessedPacket P)
        {
            CityServerClient CityClient = (CityServerClient)Client;

            Logger.LogInfo("CityServer logged in!\r\n");

            string         Name        = P.ReadString();
            string         Description = P.ReadString();
            string         IP          = P.ReadString();
            int            Port        = P.ReadInt32();
            CityInfoStatus Status      = (CityInfoStatus)P.ReadByte();
            ulong          Thumbnail   = P.ReadUInt64();
            string         UUID        = P.ReadString();
            ulong          Map         = P.ReadUInt64();

            CityInfo Info = new CityInfo(Name, Description, Thumbnail, UUID, Map, IP, Port);

            Info.Status           = Status;
            CityClient.ServerInfo = Info;

            //Client instance changed, so update it...
            NetworkFacade.CServerListener.UpdateClient(CityClient);
        }
示例#5
0
        public static void OnCityInfoResponse(PacketStream Packet)
        {
            byte Opcode          = (byte)Packet.ReadByte();
            byte Length          = (byte)Packet.ReadByte();
            byte DecryptedLength = (byte)Packet.ReadByte();

            Packet.DecryptPacket(PlayerAccount.EncKey, new DESCryptoServiceProvider(), DecryptedLength);

            byte NumCities = (byte)Packet.ReadByte();

            for (int i = 0; i < NumCities; i++)
            {
                string         Name        = Packet.ReadString();
                string         Description = Packet.ReadString();
                string         IP          = Packet.ReadString();
                int            Port        = Packet.ReadInt32();
                CityInfoStatus Status      = (CityInfoStatus)Packet.ReadByte();
                ulong          Thumbnail   = Packet.ReadUInt64();
                string         UUID        = Packet.ReadString();

                CityInfo Info = new CityInfo(Name, Description, Thumbnail, UUID, 0, IP, Port);
                NetworkFacade.Cities.Add(Info);
            }
        }