当前位置: 首页>>代码示例>>C#>>正文


C# Packet.PutBin方法代码示例

本文整理汇总了C#中Aura.Shared.Network.Packet.PutBin方法的典型用法代码示例。如果您正苦于以下问题:C# Packet.PutBin方法的具体用法?C# Packet.PutBin怎么用?C# Packet.PutBin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Aura.Shared.Network.Packet的用法示例。


在下文中一共展示了Packet.PutBin方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: SkillInfo

		/// <summary>
		/// Sends SkillInfo to creature's client.
		/// </summary>
		/// <param name="client"></param>
		/// <param name="creature"></param>
		/// <param name="skill"></param>
		public static void SkillInfo(Creature creature, Skill skill)
		{
			var packet = new Packet(Op.SkillInfo, creature.EntityId);
			packet.PutBin(skill.Info);

			creature.Client.Send(packet);
		}
开发者ID:ripxfrostbite,项目名称:aura,代码行数:13,代码来源:Send.Skills.cs

示例2: CreatureBodyUpdate

        /// <summary>
        /// Broadcasts CreatureBodyUpdate in range of creature.
        /// </summary>
        /// <param name="creature"></param>
        public static void CreatureBodyUpdate(Creature creature)
        {
            var packet = new Packet(Op.CreatureBodyUpdate, creature.EntityId);
            packet.PutBin(creature.Body);

            creature.Region.Broadcast(packet, creature);
        }
开发者ID:,项目名称:,代码行数:11,代码来源:

示例3: NpcTalk

        /// <summary>
        /// Sends NpcTalk to creature's client.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="xml"></param>
        public static void NpcTalk(Creature creature, string xml)
        {
            var packet = new Packet(Op.NpcTalk, creature.EntityId);
            packet.PutString(xml);
            packet.PutBin();

            creature.Client.Send(packet);
        }
开发者ID:pie3467,项目名称:aura,代码行数:13,代码来源:Send.NPCs.cs

示例4: EquipmentChanged

        /// <summary>
        /// Broadcasts EquipmentChanged in creature's range.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="item"></param>
        public static void EquipmentChanged(Creature creature, Item item)
        {
            var packet = new Packet(Op.EquipmentChanged, creature.EntityId);
            packet.PutBin(item.Info);
            packet.PutByte(1);

            creature.Region.Broadcast(packet, creature);
        }
开发者ID:pie3467,项目名称:aura,代码行数:13,代码来源:Send.Items.cs

示例5: SkillRankUp

		/// <summary>
		/// Sends SkillRankUp to creature's client.
		/// </summary>
		/// <param name="client"></param>
		/// <param name="creature"></param>
		/// <param name="skill"></param>
		public static void SkillRankUp(Creature creature, Skill skill)
		{
			var packet = new Packet(Op.SkillRankUp, creature.EntityId);
			packet.PutByte(1);
			packet.PutBin(skill.Info);
			packet.PutFloat(0);

			creature.Client.Send(packet);
		}
开发者ID:ripxfrostbite,项目名称:aura,代码行数:15,代码来源:Send.Skills.cs

示例6: DyePickColorR

        /// <summary>
        /// Sends DyePickColorR to creature's client.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="success"></param>
        public static void DyePickColorR(Creature creature, bool success)
        {
            var packet = new Packet(Op.DyePickColorR, creature.EntityId);
            packet.PutByte(success);
            if (success)
                packet.PutBin(creature.Temp.RegularDyePickers);

            creature.Client.Send(packet);
        }
开发者ID:pie3467,项目名称:aura,代码行数:14,代码来源:Send.Items.cs

示例7: EntitiesAppear

        /// <summary>
        /// Sends EntitiesAppear to client, unless entities is empty.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="entities"></param>
        public static void EntitiesAppear(ChannelClient client, IEnumerable<Entity> entities)
        {
            var count = (short)entities.Count();
            if (count < 1)
                return;

            var packet = new Packet(Op.EntitiesAppear, MabiId.Broadcast);
            packet.PutShort(count);
            foreach (var entity in entities)
            {
                var data = Packet.Empty().AddPublicEntityInfo(entity).Build(false);

                packet.PutShort((short)entity.DataType);
                packet.PutInt(data.Length);
                packet.PutBin(data);
            }

            client.Send(packet);
        }
开发者ID:Kuukrow,项目名称:aura,代码行数:24,代码来源:Send.World.cs

示例8: EntitiesAppear

		/// <summary>
		/// Sends EntitiesAppear to client, unless entities is empty.
		/// </summary>
		/// <param name="client"></param>
		/// <param name="entities"></param>
		public static void EntitiesAppear(ChannelClient client, IEnumerable<Entity> entities)
		{
			// Count() is much faster then creating a list, speed being
			// important in this method.
			var count = (short)entities.Count();
			if (count < 1)
				return;

			var packet = new Packet(Op.EntitiesAppear, MabiId.Broadcast);
			packet.PutShort(count);
			foreach (var entity in entities)
			{
				var data = Packet.Empty().AddPublicEntityInfo(entity).Build();

				packet.PutShort((short)entity.DataType);
				packet.PutInt(data.Length);
				packet.PutBin(data);
			}

			client.Send(packet);
		}
开发者ID:tkiapril,项目名称:aura,代码行数:26,代码来源:Send.World.cs

示例9: CombatAction


//.........这里部分代码省略.........
				packet.PutLong(pack.ShieldCasterId);
			}

			// Actions
			packet.PutInt(pack.Actions.Count);
			Packet actionPacket = null;
			foreach (var action in pack.Actions)
			{
				var pos = action.Creature.GetPosition();

				if (actionPacket == null)
					actionPacket = new Packet(Op.CombatAction, action.Creature.EntityId);
				else
					actionPacket.Clear(Op.CombatAction, action.Creature.EntityId);
				actionPacket.PutInt(pack.Id);
				actionPacket.PutLong(action.Creature.EntityId);
				actionPacket.PutByte((byte)action.Flags);
				actionPacket.PutShort(action.Stun);
				actionPacket.PutUShort((ushort)action.SkillId);
				actionPacket.PutUShort((ushort)action.SecondarySkillId);

				// Official name for CombatAction is CombatScene, and both Actions are Combatant.
				// Official client distinguish between Attacker and Defender simply by checking Flags. tachiorz

				// AttackerAction
				//if ((action.Flags & CombatActionFlags.Attacker) != 0)
				if (action.Category == CombatActionCategory.Attack)
				{
					var aAction = action as AttackerAction;

					actionPacket.PutLong(aAction.TargetId);
					actionPacket.PutUInt((uint)aAction.Options);
					actionPacket.PutByte(aAction.UsedWeaponSet);
					actionPacket.PutByte(aAction.WeaponParameterType); // !aAction.Has(AttackerOptions.KnockBackHit2) ? 2 : 1)); // ?
					actionPacket.PutInt(pos.X);
					actionPacket.PutInt(pos.Y);

					if ((aAction.Options & AttackerOptions.Dashed) != 0)
					{
						actionPacket.PutFloat(0); // DashedPosX
						actionPacket.PutFloat(0); // DashedPosY
						actionPacket.PutUInt(0); // DashDelay
					}

					if ((aAction.Options & AttackerOptions.PhaseAttack) != 0)
						actionPacket.PutByte(aAction.Phase);

					if ((aAction.Options & AttackerOptions.UseEffect) != 0)
						actionPacket.PutLong(aAction.PropId);
				}
				// TargetAction
				//if ((action.Flags & CombatActionFlags.TakeHit) != 0)
				else if (action.Category == CombatActionCategory.Target && !action.Is(CombatActionType.None))
				{
					var tAction = action as TargetAction;

					// Target used Defense or Counter
					if ((action.Flags & CombatActionType.Attacker) != 0)
					{
						actionPacket.PutLong(tAction.Attacker.EntityId);
						actionPacket.PutInt(0); // attacker Options
						actionPacket.PutByte(tAction.UsedWeaponSet);
						actionPacket.PutByte(tAction.WeaponParameterType);
						actionPacket.PutInt(pos.X);
						actionPacket.PutInt(pos.Y);
					}

					actionPacket.PutUInt((uint)tAction.Options);
					actionPacket.PutFloat(tAction.Damage);
					actionPacket.PutFloat(tAction.Wound);
					actionPacket.PutInt((int)tAction.ManaDamage);

					actionPacket.PutFloat(attackerPos.X - pos.X);
					actionPacket.PutFloat(attackerPos.Y - pos.Y);
					if (tAction.IsKnockBack)
					{
						actionPacket.PutFloat(pos.X);
						actionPacket.PutFloat(pos.Y);

						// [190200, NA203 (22.04.2015)]
						{
							actionPacket.PutInt(0);
						}
					}

					if ((tAction.Options & TargetOptions.MultiHit) != 0)
					{
						actionPacket.PutUInt(0); // MultiHitDamageCount
						actionPacket.PutUInt(0); // MultiHitDamageShowTime
					}
					actionPacket.PutByte((byte)tAction.EffectFlags);
					actionPacket.PutInt(tAction.Delay);
					actionPacket.PutLong(tAction.Attacker.EntityId);
				}

				packet.PutBin(actionPacket);
			}

			pack.Attacker.Region.Broadcast(packet, pack.Attacker);
		}
开发者ID:tkiapril,项目名称:aura,代码行数:101,代码来源:Send.Combat.cs

示例10: PlayCutscene

		/// <summary>
		/// Sends PlayCutscene to creature's client.
		/// </summary>
		/// <param name="creature"></param>
		/// <param name="cutscene"></param>
		public static void PlayCutscene(Creature creature, Cutscene cutscene)
		{
			var packet = new Packet(Op.PlayCutscene, MabiId.Channel);
			packet.PutLong(creature.EntityId);
			packet.PutLong(cutscene.Leader.EntityId);
			packet.PutString(cutscene.Name);

			packet.PutInt(cutscene.Actors.Count);
			foreach (var actor in cutscene.Actors)
			{
				var subPacket = Packet.Empty();
				subPacket.AddCreatureInfo(actor.Value, CreaturePacketType.Public);
				var bArr = subPacket.Build();

				packet.PutString(actor.Key);
				packet.PutShort((short)bArr.Length);
				packet.PutBin(bArr);
			}

			packet.PutInt(1); // count?
			packet.PutLong(creature.EntityId);

			// TODO: Send to whole party?
			creature.Client.Send(packet);
		}
开发者ID:Rai,项目名称:aura,代码行数:30,代码来源:Send.Misc.cs

示例11: CombatAction

		/// <summary>
		/// Broadcasts CombatActionPack in range of pack's attacker.
		/// </summary>
		/// <param name="pack"></param>
		public static void CombatAction(CombatActionPack pack)
		{
			var attackerPos = pack.Attacker.GetPosition();

			var packet = new Packet(Op.CombatActionPack, MabiId.Broadcast);
			packet.PutInt(pack.Id);
			packet.PutInt(pack.PrevId);
			packet.PutByte(pack.Hit);
			packet.PutByte(pack.MaxHits);
			packet.PutByte(0);

			// Actions
			packet.PutInt(pack.Actions.Count);
			Packet actionPacket = null;
			foreach (var action in pack.Actions)
			{
				var pos = action.Creature.GetPosition();

				if (actionPacket == null)
					actionPacket = new Packet(Op.CombatAction, action.Creature.EntityId);
				else
					actionPacket.Clear(Op.CombatAction, action.Creature.EntityId);
				actionPacket.PutInt(pack.Id);
				actionPacket.PutLong(action.Creature.EntityId);
				actionPacket.PutByte((byte)action.Type);
				actionPacket.PutShort(action.Stun);
				actionPacket.PutUShort((ushort)action.SkillId);
				actionPacket.PutShort(0);

				// AttackerAction
				if (action.Category == CombatActionCategory.Attack)
				{
					var aAction = action as AttackerAction;

					actionPacket.PutLong(aAction.TargetId);
					actionPacket.PutUInt((uint)aAction.Options);
					actionPacket.PutByte(0);
					actionPacket.PutByte((byte)(!aAction.Has(AttackerOptions.KnockBackHit2) ? 2 : 1)); // ?
					actionPacket.PutInt(pos.X);
					actionPacket.PutInt(pos.Y);
					if (aAction.PropId != 0)
						actionPacket.PutLong(aAction.PropId);
				}
				// TargetAction
				else if (action.Category == CombatActionCategory.Target && !action.Is(CombatActionType.None))
				{
					var tAction = action as TargetAction;

					// Target used Defense or Counter
					if (tAction.Is(CombatActionType.Defended) || tAction.Is(CombatActionType.CounteredHit) || tAction.Is(CombatActionType.CounteredHit2))
					{
						actionPacket.PutLong(tAction.Attacker.EntityId);
						actionPacket.PutInt(0);
						actionPacket.PutByte(0);
						actionPacket.PutByte(1);
						actionPacket.PutInt(pos.X);
						actionPacket.PutInt(pos.Y);
					}

					actionPacket.PutUInt((uint)tAction.Options);
					actionPacket.PutFloat(tAction.Damage);
					actionPacket.PutFloat(0); // Related to mana damage?
					actionPacket.PutInt((int)tAction.ManaDamage);

					actionPacket.PutFloat(attackerPos.X - pos.X);
					actionPacket.PutFloat(attackerPos.Y - pos.Y);
					if (tAction.IsKnockBack)
					{
						actionPacket.PutFloat(pos.X);
						actionPacket.PutFloat(pos.Y);

						// [190200, NA203 (22.04.2015)]
						{
							actionPacket.PutInt(0);
						}
					}

					actionPacket.PutByte(0); // PDef? Seen as 0x20 in a normal attack (G18)
					actionPacket.PutInt(tAction.Delay);
					actionPacket.PutLong(tAction.Attacker.EntityId);
				}

				packet.PutBin(actionPacket);
			}

			pack.Attacker.Region.Broadcast(packet, pack.Attacker);
		}
开发者ID:xKamuna,项目名称:aura,代码行数:91,代码来源:Send.Combat.cs

示例12: CharacterInfoRequestR

		/// <summary>
		/// Sends xInfoRequestR to client.
		/// </summary>
		/// <param name="client"></param>
		/// <param name="op"></param>
		/// <param name="character"></param>
		/// <param name="items"></param>
		public static void CharacterInfoRequestR(LoginClient client, int op, Character character, List<Item> items)
		{
			var packet = new Packet(op, MabiId.Login);
			packet.PutByte(character != null);

			if (character != null)
			{
				packet.PutString(character.Server);
				packet.PutLong(character.EntityId);
				packet.PutByte(1);
				packet.PutString(character.Name);
				packet.PutString("");
				packet.PutString("");
				packet.PutInt(character.Race);
				packet.PutByte(character.SkinColor);
				packet.PutShort(character.EyeType);
				packet.PutByte(character.EyeColor);
				packet.PutByte(character.MouthType);
				packet.PutUInt((uint)character.State);
				packet.PutFloat(character.Height);
				packet.PutFloat(character.Weight);
				packet.PutFloat(character.Upper);
				packet.PutFloat(character.Lower);
				packet.PutInt(0);
				packet.PutInt(0);
				packet.PutInt(0);
				packet.PutByte(0);
				packet.PutInt(0);
				packet.PutByte(0);
				packet.PutInt((int)character.Color1);
				packet.PutInt((int)character.Color2);
				packet.PutInt((int)character.Color3);
				packet.PutFloat(0.0f);
				packet.PutString("");
				packet.PutFloat(49.0f);
				packet.PutFloat(49.0f);
				packet.PutFloat(0.0f);
				packet.PutFloat(49.0f);
				// [180800, NA196 (14.10.2014)] ?
				{
					packet.PutShort(0);
				}
				packet.PutInt(0);
				packet.PutInt(0);
				packet.PutShort(0);
				packet.PutLong(0);
				packet.PutString("");
				packet.PutByte(0);

				packet.PutInt(items.Count);
				foreach (var item in items)
				{
					packet.PutLong(item.Id);
					packet.PutBin(item.Info);
				}

				packet.PutInt(0);  // PetRemainingTime
				packet.PutLong(0); // PetLastTime
				packet.PutLong(0); // PetExpireTime
			}

			client.Send(packet);
		}
开发者ID:aura-project,项目名称:aura,代码行数:70,代码来源:Send.cs

示例13: SkillTrainingUp

        /// <summary>
        /// Sends SkillTrainingUp to creature's client.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="skill"></param>
        /// <param name="exp">Exp gained</param>
        public static void SkillTrainingUp(Creature creature, Skill skill, float exp, string bonus = "")
        {
            var packet = new Packet(Op.SkillTrainingUp, creature.EntityId);
            packet.PutBin(skill.Info);
            packet.PutFloat(exp);
            packet.PutByte(1);
            packet.PutString(bonus); // (Specialized Skill Bonus: x2)

            creature.Client.Send(packet);
        }
开发者ID:,项目名称:,代码行数:16,代码来源:

示例14: TailoringMiniGame

        /// <summary>
        /// Sends TailoringMiniGame to creature's client to start tailoring minigame.
        /// </summary>
        /// <remarks>
        /// The offsets specify the distance of the "stitch points" from the
        /// center of the 200x200px minigame field. X is 1:1 the distance
        /// from the center for each point, while Y gets added up.
        /// The point closest to the center is Y/2 px away, the second Y/2+Y,
        /// and the third Y/2+Y*2.
        /// 
        /// Deviation is an array of 6 values, one for each point, that specify
        /// the amount of pixels your clicks can deviate from the actual
        /// position you clicked. For example, if you click on 60x180 for the
        /// first point, and the first byte in deviation is 3, the actual
        /// position sent to the server is between 57x177 and 63x183,
        /// randomized by the client.
        /// If the deviation values are too big, the minigame glitches and is
        /// likely to fail, the biggest value seen in logs was 4.
        /// </remarks>
        /// <param name="creature"></param>
        /// <param name="item">Item that is to be finished.</param>
        /// <param name="xOffset">Offset of stitch points on the x-axis.</param>
        /// <param name="yOffset">Offset of stitch points on the y-axis.</param>
        /// <param name="deviation">Randomization for the 6 stitch points.</param>
        public static void TailoringMiniGame(Creature creature, Item item, int xOffset, int yOffset, byte[] deviation, byte deviation2)
        {
            if (deviation == null || deviation.Length != 6)
                throw new ArgumentException("rng needs exactly 6 values.");

            var packet = new Packet(Op.TailoringMiniGame, creature.EntityId);

            packet.PutShort((short)xOffset);
            packet.PutShort((short)yOffset);
            packet.PutBin(deviation);

            // Modifies cursor size, glitches the minigame if smaller than
            // deviation? Seems to be a general deviation that applies to
            // all points? Setting all deviations, incl this, to 0 gives
            // the most spot-on results.
            packet.PutByte(deviation2);

            packet.PutLong(0);
            packet.PutInt(0);
            packet.PutLong(item.EntityId);
            packet.PutInt(0);

            creature.Client.Send(packet);
        }
开发者ID:,项目名称:,代码行数:48,代码来源:


注:本文中的Aura.Shared.Network.Packet.PutBin方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。