/// <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); }
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); }