示例#1
0
        /// <summary>
        /// Sends SpecialLogin to creature's client.
        /// </summary>
        /// <remarks>
        /// One of those packets with a success parameter,
        /// that doesn't actually support failing.
        /// Sends character to a special, client-side-instanced region,
        /// where he is to meet the given NPC. EnterRegion isn't needed
        /// for this.
        /// </remarks>
        /// <param name="creature"></param>
        /// <param name="regionId"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="npcEntityId"></param>
        public static void SpecialLogin(Creature creature, int regionId, int x, int y, long npcEntityId)
        {
            var packet = new Packet(Op.SpecialLogin, MabiId.Channel);

            packet.PutByte(true);
            packet.PutInt(regionId);
            packet.PutInt(x);
            packet.PutInt(y);
            packet.PutLong(npcEntityId);
            packet.AddCreatureInfo(creature, CreaturePacketType.Private);

            creature.Client.Send(packet);
        }
        /// <summary>
        /// Sends ChannelCharacterInfoRequestR for creature to client.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature">Negative response if null</param>
        public static void ChannelCharacterInfoRequestR(ChannelClient client, Creature creature)
        {
            var packet = new Packet(Op.ChannelCharacterInfoRequestR, MabiId.Channel);

            packet.PutByte(creature != null);

            if (creature != null)
            {
                packet.AddCreatureInfo(creature, CreaturePacketType.Private);
            }

            client.Send(packet);
        }
示例#3
0
        public static Packet AddPublicEntityInfo(this Packet packet, Entity entity)
        {
            switch (entity.DataType)
            {
            case DataType.Creature: packet.AddCreatureInfo(entity as Creature, CreaturePacketType.Public); break;

            case DataType.Item: packet.AddItemInfo(entity as Item, ItemPacketType.Public); break;

            case DataType.Prop: packet.AddPropInfo(entity as Prop); break;

            default:
                throw new Exception("Unknown entity type '" + entity.GetType().ToString() + "', '" + entity.DataType + "'.");
            }

            return(packet);
        }