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


C# RealmPacketOut.InsertByteAt方法代码示例

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


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

示例1: SendGuildBankList

		private static void SendGuildBankList(Character chr, GameObject bank, byte tabId, bool hasTabNames, bool hasItemInfo)
		{
			if (bank == null) return;
			if (chr.Guild == null || chr.GuildMember == null) return;
			if (!bank.CanBeUsedBy(chr)) return;

			var guild = chr.Guild;
			var gBank = guild.Bank;

			using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_GUILD_BANK_LIST))
			{
				packet.Write(guild.Money);
				packet.Write(tabId);
				packet.Write(chr.GuildMember.Rank.BankTabRights[tabId].WithdrawlAllowance);
				var sendHasTabNames = tabId == 0 ? hasTabNames : false;
				packet.Write(sendHasTabNames);

				if (sendHasTabNames)
				{
					packet.Write((byte)guild.PurchasedBankTabCount);
					for (var i = 0; i < guild.PurchasedBankTabCount; ++i)
					{
						packet.Write(gBank[i].Name);
						packet.Write(gBank[i].Icon);
					}
				}

				if (!hasItemInfo)
				{
					chr.Client.Send(packet);
					return;
				}

				var bankTab = gBank[tabId];

				var bankTabItemCount = bankTab.ItemRecords.Where(record => record != null).Count();
				packet.Write((byte)bankTabItemCount);

				foreach (var item in bankTab.ItemRecords.Where(record => record != null))
				{
					packet.Write((byte)item.Slot);

					packet.Write(item.EntryId);

					packet.Write((uint)0);                  // 3.3.0 (0x8000, 0x8020)
					var randPropId = item.RandomProperty;
					packet.Write(randPropId);
					if (randPropId > 0)
					{
						packet.Write(item.RandomSuffix);
					}

					packet.Write(item.Amount);
					packet.Write((uint)0);
					packet.Write((byte)0);

					if (item.EnchantIds == null)
					{
						packet.Write((byte)0);
						continue;
					}

					var pos = packet.Position;
					var count = 0;
					for (var i = 0; i < 3; ++i)
					{
						if (item.EnchantIds[i] == 0) continue;
						packet.Write((byte)i);
						packet.Write(item.EnchantIds[i]);
						count++;
					}
					packet.InsertByteAt((byte)count, pos, true);

				}

				chr.Client.Send(packet);
			}
		}
开发者ID:remixod,项目名称:netServer,代码行数:78,代码来源:GuildHandler.cs

示例2: SendGuildBankTabContentUpdate

		private static void SendGuildBankTabContentUpdate(GuildMember member, byte tabId, int slot1, int slot2)
		{
			// lock-free synchronization
			// don't mess with it, unless you know what you are doing
			var guild = member.Guild;
			if (guild == null) return;

			var rank = member.Rank;
			if (rank == null) return;


			using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_GUILD_BANK_LIST))
			{
				packet.Write(guild.Money);
				packet.Write(tabId);

				packet.Write(rank.BankTabRights[tabId].WithdrawlAllowance);
				packet.Write(false); // hasTabnames = false;

				var list = new List<int> 
				{
					slot1
                };

				if (slot2 != -1)
				{
					list.Add(slot2);
					list.Sort();
				}

				packet.WriteByte((byte)list.Count);
				foreach (var slot in list)
				{
					packet.Write((byte)slot);
					var item = guild.Bank[tabId][slot];

					if (item == null)
					{
						packet.Write(0);
						continue;
					}
					packet.Write(item.EntryId);
					packet.Write((uint)0);

					var randomPropId = item.RandomProperty;
					packet.Write(randomPropId);
					if (randomPropId != 0)
					{
						packet.Write(item.RandomSuffix);
					}

					packet.Write(item.Amount);
					packet.Write((uint)0);
					packet.Write((byte)0);

					if (item.EnchantIds == null)
					{
						packet.Write((byte)0);
						continue;
					}

					var pos = packet.Position;
					var count = 0;
					for (var i = 0; i < 3; ++i)
					{
						if (item.EnchantIds[i] == 0) continue;
						packet.Write((byte)i);
						packet.Write(item.EnchantIds[i]);
						count++;
					}
					packet.InsertByteAt((byte)count, pos, true);

				} // end foreach

				guild.Send(packet);
			} // end using
		}
开发者ID:remixod,项目名称:netServer,代码行数:77,代码来源:GuildHandler.cs


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