Esempio n. 1
0
        private void ProfileByType(Session session, Packet packet)
        {
            var reply = new Packet(packet);

            string type;
            uint   id;

            try
            {
                type = packet.GetString().ToLowerInvariant();
                id   = packet.GetUInt32();
            }
            catch (Exception)
            {
                ReplyError(session, packet, Error.Unexpected);
                return;
            }

            if (type == "city")
            {
                ICity city;
                locker.Lock(id, out city).Do(() =>
                {
                    if (city == null)
                    {
                        ReplyError(session, reply, Error.PlayerNotFound);
                        return;
                    }

                    PacketHelper.AddPlayerProfileToPacket(city.Owner, reply);

                    session.Write(reply);
                });

                return;
            }

            if (type == "stronghold")
            {
                IStronghold stronghold;
                locker.Lock(id, out stronghold).Do(() =>
                {
                    if (stronghold == null || stronghold.StrongholdState == StrongholdState.Inactive)
                    {
                        ReplyError(session, reply, Error.ObjectNotFound);
                        return;
                    }

                    PacketHelper.AddStrongholdProfileToPacket(session, stronghold, reply);

                    session.Write(reply);
                });

                return;
            }

            ReplyError(session, packet, Error.Unexpected);
        }
Esempio n. 2
0
        private void ViewProfile(Session session, Packet packet)
        {
            var reply = new Packet(packet);

            uint   playerId;
            string playerName = string.Empty;

            try
            {
                playerId = packet.GetUInt32();
                if (playerId == 0)
                {
                    playerName = packet.GetString();
                }
            }
            catch (Exception)
            {
                ReplyError(session, packet, Error.Unexpected);
                return;
            }

            if (playerId == 0)
            {
                if (!world.FindPlayerId(playerName, out playerId))
                {
                    ReplyError(session, packet, Error.PlayerNotFound);
                    return;
                }
            }

            IPlayer player;

            locker.Lock(playerId, out player).Do(() =>
            {
                if (player == null)
                {
                    ReplyError(session, reply, Error.PlayerNotFound);
                    return;
                }

                PacketHelper.AddPlayerProfileToPacket(player, reply);

                session.Write(reply);
            });
        }