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


C# Mobile.GetPacketFlags方法代码示例

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


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

示例1: MobileMoving

        public static GenericPacket MobileMoving( Mobile m, int noto )
        {
            GenericPacket p = GenericPacket.Instantiate( 0x77, 17 );

            Point3D loc = m.Location;

            int hue = m.Hue;

            if ( m.SolidHueOverride >= 0 )
                hue = m.SolidHueOverride;

            p.Stream.Write( (int) m.Serial );
            p.Stream.Write( (short) ( (int) m.Body ) );
            p.Stream.Write( (short) loc.X );
            p.Stream.Write( (short) loc.Y );
            p.Stream.Write( (sbyte) loc.Z );
            p.Stream.Write( (byte) m.Direction );
            p.Stream.Write( (short) hue );
            p.Stream.Write( (byte) m.GetPacketFlags() );
            p.Stream.Write( (byte) noto );

            return p;
        }
开发者ID:Ravenwolfe,项目名称:xrunuo,代码行数:23,代码来源:GenericPackets.cs

示例2: UnkD3

        public UnkD3( Mobile beholder, Mobile beheld )
            : base(0xD3)
        {
            this.EnsureCapacity( 256 );

            //int
            //short
            //short
            //short
            //byte
            //byte
            //short
            //byte
            //byte
            //short
            //short
            //short
            //while ( int != 0 )
            //{
            //short
            //byte
            //short
            //}

            m_Stream.Write( (int) beheld.Serial );
            m_Stream.Write( (short) beheld.Body );
            m_Stream.Write( (short) beheld.X );
            m_Stream.Write( (short) beheld.Y );
            m_Stream.Write( (sbyte) beheld.Z );
            m_Stream.Write( (byte) beheld.Direction );
            m_Stream.Write( (ushort) beheld.Hue );
            m_Stream.Write( (byte) beheld.GetPacketFlags() );
            m_Stream.Write( (byte) Notoriety.Compute( beholder, beheld ) );

            m_Stream.Write( (short) 0 );
            m_Stream.Write( (short) 0 );
            m_Stream.Write( (short) 0 );

            m_Stream.Write( (int) 0 );
        }
开发者ID:BackupTheBerlios,项目名称:sunuo-svn,代码行数:40,代码来源:Packets.cs

示例3: MobileUpdate

        public MobileUpdate( Mobile m )
            : base(0x20, 19)
        {
            int hue = m.Hue;

            if ( m.SolidHueOverride >= 0 )
                hue = m.SolidHueOverride;

            m_Stream.Write( (int) m.Serial );
            m_Stream.Write( (short) m.Body );
            m_Stream.Write( (byte) 0 );
            m_Stream.Write( (short) hue );
            m_Stream.Write( (byte) m.GetPacketFlags() );
            m_Stream.Write( (short) m.X );
            m_Stream.Write( (short) m.Y );
            m_Stream.Write( (short) 0 );
            m_Stream.Write( (byte) m.Direction );
            m_Stream.Write( (sbyte) m.Z );
        }
开发者ID:BackupTheBerlios,项目名称:sunuo-svn,代码行数:19,代码来源:Packets.cs

示例4: MobileMoving

        public MobileMoving( Mobile m, int noto/*Mobile beholder, Mobile beheld*/ )
            : base(0x77, 17)
        {
            Point3D loc = m.Location;

            int hue = m.Hue;

            if ( m.SolidHueOverride >= 0 )
                hue = m.SolidHueOverride;

            m_Stream.Write( (int) m.Serial );
            m_Stream.Write( (short) m.Body );
            m_Stream.Write( (short) loc.m_X );
            m_Stream.Write( (short) loc.m_Y );
            m_Stream.Write( (sbyte) loc.m_Z );
            m_Stream.Write( (byte) m.Direction );
            m_Stream.Write( (short) hue );
            m_Stream.Write( (byte) m.GetPacketFlags() );
            m_Stream.Write( (byte) noto );//Notoriety.Compute( beholder, beheld ) );
        }
开发者ID:BackupTheBerlios,项目名称:sunuo-svn,代码行数:20,代码来源:Packets.cs

示例5: MobileIncoming

        public MobileIncoming( Mobile beholder, Mobile beheld )
            : base(0x78)
        {
            m_Beheld = beheld;
            ++m_Version;

            ArrayList eq = beheld.Items;
            int count = eq.Count;

            this.EnsureCapacity( 23 + (count * 9) );

            int hue = beheld.Hue;

            if ( beheld.SolidHueOverride >= 0 )
                hue = beheld.SolidHueOverride;

            m_Stream.Write( (int) beheld.Serial );
            m_Stream.Write( (short) beheld.Body );
            m_Stream.Write( (short) beheld.X );
            m_Stream.Write( (short) beheld.Y );
            m_Stream.Write( (sbyte) beheld.Z );
            m_Stream.Write( (byte) beheld.Direction );
            m_Stream.Write( (short) hue );
            m_Stream.Write( (byte) beheld.GetPacketFlags() );
            m_Stream.Write( (byte) Notoriety.Compute( beholder, beheld ) );

            for ( int i = 0; i < count; ++i )
            {
                Item item = (Item)eq[i];

                byte layer = (byte) item.Layer;

                if ( !item.Deleted && beholder.CanSee( item ) && m_DupedLayers[layer] != m_Version )
                {
                    m_DupedLayers[layer] = m_Version;

                    hue = item.Hue;

                    if ( beheld.SolidHueOverride >= 0 )
                        hue = beheld.SolidHueOverride;

                    int itemID = item.ItemID & 0x3FFF;
                    bool writeHue = ( hue != 0 );

                    if ( writeHue )
                        itemID |= 0x8000;

                    m_Stream.Write( (int) item.Serial );
                    m_Stream.Write( (short) itemID );
                    m_Stream.Write( (byte) layer );

                    if ( writeHue )
                        m_Stream.Write( (short) hue );
                }
            }

            m_Stream.Write( (int) 0 ); // terminate
        }
开发者ID:BackupTheBerlios,项目名称:sunuo-svn,代码行数:58,代码来源:Packets.cs

示例6: MobileIncoming

        public MobileIncoming( Mobile beholder, Mobile beheld )
            : base(0x78)
        {
            m_Beheld = beheld;
            ++m_Version;

            List<Item> eq = beheld.Items;
            int count = eq.Count;

            if( beheld.HairItemID > 0 )
                count++;
            if( beheld.FacialHairItemID > 0 )
                count++;

            this.EnsureCapacity( 23 + (count * 9) );

            int hue = beheld.Hue;

            if ( beheld.SolidHueOverride >= 0 )
                hue = beheld.SolidHueOverride;

            m_Stream.Write( (int) beheld.Serial );
            m_Stream.Write( (short) beheld.Body );
            m_Stream.Write( (short) beheld.X );
            m_Stream.Write( (short) beheld.Y );
            m_Stream.Write( (sbyte) beheld.Z );
            m_Stream.Write( (byte) beheld.Direction );
            m_Stream.Write( (short) hue );
            m_Stream.Write( (byte) beheld.GetPacketFlags() );
            m_Stream.Write( (byte) Notoriety.Compute( beholder, beheld ) );

            NetState ns = beholder.RawNetState;
            bool useHueFlag = ( ns == null || !ns.NewMobileIncoming );

            for ( int i = 0; i < eq.Count; ++i )
            {
                Item item = eq[i];

                byte layer = (byte) item.Layer;

                if ( !item.Deleted && beholder.CanSee( item ) && m_DupedLayers[layer] != m_Version )
                {
                    m_DupedLayers[layer] = m_Version;

                    hue = item.Hue;

                    if ( beheld.SolidHueOverride >= 0 )
                        hue = beheld.SolidHueOverride;

                    int itemID = item.ItemID & 0xFFFF;

                    if ( useHueFlag )
                    {
                        itemID &= 0x7FFF;

                        if ( hue != 0 )
                            itemID |= 0x8000;
                    }

                    m_Stream.Write( (int) item.Serial );
                    m_Stream.Write( (ushort) itemID );
                    m_Stream.Write( (byte) layer );

                    if ( !useHueFlag || hue != 0 )
                        m_Stream.Write( (short) hue );
                }
            }

            if( beheld.HairItemID > 0 )
            {
                if( m_DupedLayers[(int)Layer.Hair] != m_Version )
                {
                    m_DupedLayers[(int)Layer.Hair] = m_Version;
                    hue = beheld.HairHue;

                    if( beheld.SolidHueOverride >= 0 )
                        hue = beheld.SolidHueOverride;

                    int itemID = beheld.HairItemID & 0xFFFF;

                    if ( useHueFlag )
                    {
                        itemID &= 0x7FFF;

                        if ( hue != 0 )
                            itemID |= 0x8000;
                    }

                    m_Stream.Write( (int)HairInfo.FakeSerial( beheld ) );
                    m_Stream.Write( (ushort)itemID );
                    m_Stream.Write( (byte)Layer.Hair );

                    if ( !useHueFlag || hue != 0 )
                        m_Stream.Write( (short)hue );
                }
            }

            if( beheld.FacialHairItemID > 0 )
            {
                if( m_DupedLayers[(int)Layer.FacialHair] != m_Version )
//.........这里部分代码省略.........
开发者ID:Leorgrium,项目名称:runuo,代码行数:101,代码来源:Packets.cs

示例7: MobileIncoming

		public MobileIncoming(Mobile beholder, Mobile beheld)
			: base(0x78)
		{
			m_Beheld = beheld;
			++m_Version;

			//List<Item> eq = beheld.Items;
			//SMD: back-porting new runuo2.0 code to use our stuff (which still uses arraylists)
			ArrayList temparraylist = beheld.Items;
			List<Item> eq = new List<Item>();
			try
			{
				for (int i = 0; i < temparraylist.Count; i++)
				{
					Item a = temparraylist[i] as Item;
					if (a != null)
					{
						eq.Add(a);
					}
				}
			}
			catch (Exception ex) { EventSink.InvokeLogException(new LogExceptionEventArgs(ex)); }
			//SMD: done back-port

			int count = eq.Count;

			if (beheld.HairItemID > 0)
				count++;
			if (beheld.FacialHairItemID > 0)
				count++;

			this.EnsureCapacity(23 + (count * 9));

			int hue = beheld.Hue;

			if (beheld.SolidHueOverride >= 0)
				hue = beheld.SolidHueOverride;

			m_Stream.Write((int)beheld.Serial);
			m_Stream.Write((short)beheld.Body);
			m_Stream.Write((short)beheld.X);
			m_Stream.Write((short)beheld.Y);
			m_Stream.Write((sbyte)beheld.Z);
			m_Stream.Write((byte)beheld.Direction);
			m_Stream.Write((short)hue);
			m_Stream.Write((byte)beheld.GetPacketFlags());
			m_Stream.Write((byte)Notoriety.Compute(beholder, beheld));

			for (int i = 0; i < eq.Count; ++i)
			{
				Item item = eq[i];

				byte layer = (byte)item.Layer;

				if (!item.Deleted && beholder.CanSee(item) && m_DupedLayers[layer] != m_Version)
				{
					m_DupedLayers[layer] = m_Version;

					hue = item.Hue;

					if (beheld.SolidHueOverride >= 0)
						hue = beheld.SolidHueOverride;

					int itemID = item.ItemID & 0x3FFF;
					bool writeHue = (hue != 0);

					if (writeHue)
						itemID |= 0x8000;

					m_Stream.Write((int)item.Serial);
					m_Stream.Write((short)itemID);
					m_Stream.Write((byte)layer);

					if (writeHue)
						m_Stream.Write((short)hue);
				}
			}

			if (beheld.HairItemID > 0)
			{
				if (m_DupedLayers[(int)Layer.Hair] != m_Version)
				{
					m_DupedLayers[(int)Layer.Hair] = m_Version;
					hue = beheld.HairHue;

					if (beheld.SolidHueOverride >= 0)
						hue = beheld.SolidHueOverride;

					int itemID = beheld.HairItemID & 0x3FFF;

					bool writeHue = (hue != 0);

					if (writeHue)
						itemID |= 0x8000;

					//SMD: new runuo2.0 stuff - fake it
					//m_Stream.Write( (int)HairInfo.FakeSerial( beheld ) );
					m_Stream.Write((int)(0x7FFFFFFF - 0x400 - (beheld.Serial * 4)));


//.........这里部分代码省略.........
开发者ID:zerodowned,项目名称:angelisland,代码行数:101,代码来源:Packets.cs

示例8: MobileIncomingSA

		public MobileIncomingSA(Mobile beholder, Mobile beheld)
			: base(0x78)
		{
			m_Beheld = beheld;

			int m_Version = ++(m_VersionTL.Value);
			var m_DupedLayers = m_DupedLayersTL.Value;

			var eq = beheld.Items;
			int count = eq.Count;

			if (beheld.HairItemID > 0)
			{
				count++;
			}
			if (beheld.FacialHairItemID > 0)
			{
				count++;
			}

			EnsureCapacity(23 + (count * 9));

			int hue = beheld.Hue;

			if (beheld.SolidHueOverride >= 0)
			{
				hue = beheld.SolidHueOverride;
			}

			m_Stream.Write(beheld.Serial);
			m_Stream.Write((short)beheld.Body);
			m_Stream.Write((short)beheld.X);
			m_Stream.Write((short)beheld.Y);
			m_Stream.Write((sbyte)beheld.Z);
			m_Stream.Write((byte)beheld.Direction);
			m_Stream.Write((short)hue);
			m_Stream.Write((byte)beheld.GetPacketFlags());
			m_Stream.Write((byte)Notoriety.Compute(beholder, beheld));

			for (int i = 0; i < eq.Count; ++i)
			{
				Item item = eq[i];

				byte layer = (byte)item.Layer;

				if (!item.Deleted && beholder.CanSee(item) && m_DupedLayers[layer] != m_Version)
				{
					m_DupedLayers[layer] = m_Version;

					hue = item.Hue;

					if (beheld.SolidHueOverride >= 0)
					{
						hue = beheld.SolidHueOverride;
					}

					int itemID = item.ItemID & 0x7FFF;
					bool writeHue = (hue != 0);

					if (writeHue)
					{
						itemID |= 0x8000;
					}

					m_Stream.Write(item.Serial);
					m_Stream.Write((ushort)itemID);
					m_Stream.Write(layer);

					if (writeHue)
					{
						m_Stream.Write((short)hue);
					}
				}
			}

			if (beheld.HairItemID > 0)
			{
				if (m_DupedLayers[(int)Layer.Hair] != m_Version)
				{
					m_DupedLayers[(int)Layer.Hair] = m_Version;
					hue = beheld.HairHue;

					if (beheld.SolidHueOverride >= 0)
					{
						hue = beheld.SolidHueOverride;
					}

					int itemID = beheld.HairItemID & 0x7FFF;

					bool writeHue = (hue != 0);

					if (writeHue)
					{
						itemID |= 0x8000;
					}

					m_Stream.Write(HairInfo.FakeSerial(beheld));
					m_Stream.Write((ushort)itemID);
					m_Stream.Write((byte)Layer.Hair);

//.........这里部分代码省略.........
开发者ID:Ravenwolfe,项目名称:ServUO,代码行数:101,代码来源:Packets.cs

示例9: MobileMoving

		public MobileMoving(Mobile m, int noto)
			: base(0x77, 17)
		{
			Point3D loc = m.Location;

			int hue = m.Hue;

			if (m.SolidHueOverride >= 0)
			{
				hue = m.SolidHueOverride;
			}

			m_Stream.Write(m.Serial);
			m_Stream.Write((short)m.Body);
			m_Stream.Write((short)loc.m_X);
			m_Stream.Write((short)loc.m_Y);
			m_Stream.Write((sbyte)loc.m_Z);
			m_Stream.Write((byte)m.Direction);
			m_Stream.Write((short)hue);
			m_Stream.Write((byte)m.GetPacketFlags());
			m_Stream.Write((byte)noto);
		}
开发者ID:Ravenwolfe,项目名称:ServUO,代码行数:22,代码来源:Packets.cs

示例10: WorldItemHS

        public WorldItemHS(Mobile mob, PacketWriter stream)
            : base(0xF3, 26, stream)
        {
            stream.Write((short)0x1);

            stream.Write((byte)0x01);
            stream.Write((int)mob.Serial);
            stream.Write((ushort)mob.BodyValue);
            stream.Write((byte)0);

            int amount = 1;
            stream.Write((short)amount);
            stream.Write((short)amount);

            Point3D loc = mob.Location;
            int x = loc.m_X & 0x7FFF;
            int y = loc.m_Y & 0x3FFF;
            stream.Write((short)x);
            stream.Write((short)y);
            stream.Write((sbyte)loc.m_Z);

            stream.Write((byte)mob.LightLevel);
            stream.Write((short)mob.Hue);
            stream.Write((byte)mob.GetPacketFlags());

            stream.Write((short)0x00); // ??
        }
开发者ID:Ravenwolfe,项目名称:ServUO,代码行数:27,代码来源:Packets.cs

示例11: Write

		private static void Write(PacketWriter m_Stream, Mobile m, int noto) {
			Point3D loc = m.Location;

			int hue = m.Hue;

			if ( m.SolidHueOverride >= 0 )
				hue = m.SolidHueOverride;

			m_Stream.Write( (int) m.Serial );
			m_Stream.Write( (short) m.Body );
			m_Stream.Write( (short) loc.m_X );
			m_Stream.Write( (short) loc.m_Y );
			m_Stream.Write( (sbyte) loc.m_Z );
			m_Stream.Write( (byte) m.Direction );
			m_Stream.Write( (short) hue );
			m_Stream.Write( (byte) m.GetPacketFlags() );
			m_Stream.Write( (byte) noto );//Notoriety.Compute( beholder, beheld ) );
		}
开发者ID:kamronbatman,项目名称:DefianceUO-Pre1.10,代码行数:18,代码来源:Packets.cs

示例12: MobileIncoming

        public MobileIncoming(Mobile beholder, Mobile beheld)
            : base(0x78)
        {
            m_Beheld = beheld;

#if Framework_4_0
			int m_Version = ++(m_VersionTL.Value);
			int[] m_DupedLayers = m_DupedLayersTL.Value;
#else
            ++m_Version;
#endif

            List<Item> eq = beheld.Items;
            int count = eq.Count;

            if (beheld.HairItemID > 0)
                count++;
            if (beheld.FacialHairItemID > 0)
                count++;

            this.EnsureCapacity(23 + (count * 9));

            int hue = beheld.Hue;

            if (beheld.SolidHueOverride >= 0)
                hue = beheld.SolidHueOverride;

            m_Stream.Write((int)beheld.Serial);
            m_Stream.Write((short)beheld.Body);
            m_Stream.Write((short)beheld.X);
            m_Stream.Write((short)beheld.Y);
            m_Stream.Write((sbyte)beheld.Z);
            m_Stream.Write((byte)beheld.Direction);
            m_Stream.Write((short)hue);
            m_Stream.Write((byte)beheld.GetPacketFlags());
            m_Stream.Write((byte)Notoriety.Compute(beholder, beheld));

            for (int i = 0; i < eq.Count; ++i)
            {
                Item item = eq[i];

                byte layer = (byte)item.Layer;

                if (!item.Deleted && beholder.CanSee(item) && m_DupedLayers[layer] != m_Version)
                {
                    m_DupedLayers[layer] = m_Version;

                    hue = item.Hue;

                    if (beheld.SolidHueOverride >= 0)
                        hue = beheld.SolidHueOverride;

                    int itemID = item.ItemID & 0xFFFF;

                    m_Stream.Write((int)item.Serial);
                    m_Stream.Write((ushort)itemID);
                    m_Stream.Write((byte)layer);

                    m_Stream.Write((short)hue);
                }
            }

            if (beheld.HairItemID > 0)
            {
                if (m_DupedLayers[(int)Layer.Hair] != m_Version)
                {
                    m_DupedLayers[(int)Layer.Hair] = m_Version;
                    hue = beheld.HairHue;

                    if (beheld.SolidHueOverride >= 0)
                        hue = beheld.SolidHueOverride;

                    int itemID = beheld.HairItemID & 0xFFFF;

                    m_Stream.Write((int)HairInfo.FakeSerial(beheld));
                    m_Stream.Write((ushort)itemID);
                    m_Stream.Write((byte)Layer.Hair);

                    m_Stream.Write((short)hue);
                }
            }

            if (beheld.FacialHairItemID > 0)
            {
                if (m_DupedLayers[(int)Layer.FacialHair] != m_Version)
                {
                    m_DupedLayers[(int)Layer.FacialHair] = m_Version;
                    hue = beheld.FacialHairHue;

                    if (beheld.SolidHueOverride >= 0)
                        hue = beheld.SolidHueOverride;

                    int itemID = beheld.FacialHairItemID & 0xFFFF;

                    m_Stream.Write((int)FacialHairInfo.FakeSerial(beheld));
                    m_Stream.Write((ushort)itemID);
                    m_Stream.Write((byte)Layer.FacialHair);

                    m_Stream.Write((short)hue);
                }
//.........这里部分代码省略.........
开发者ID:greeduomacro,项目名称:UO-Forever,代码行数:101,代码来源:Packets.cs

示例13: MobileDirectionToOthersOnly

        public MobileDirectionToOthersOnly (Mobile m, int noto, Direction direction)
            : base(0x77, 17)
        {
            Point3D loc = m.Location;

            int hue = m.Hue;

            if (m.SolidHueOverride >= 0)
                hue = m.SolidHueOverride;

            m_Stream.Write((int)m.Serial);
            m_Stream.Write((short)m.Body);
            m_Stream.Write((short)loc.m_X);
            m_Stream.Write((short)loc.m_Y);
            m_Stream.Write((sbyte)loc.m_Z);
            m_Stream.Write((byte)direction);
            m_Stream.Write((short)hue);
            m_Stream.Write((byte)m.GetPacketFlags());
            m_Stream.Write((byte)noto);
        }
开发者ID:greeduomacro,项目名称:UO-Forever,代码行数:20,代码来源:Packets.cs

示例14: MobileUpdate

		public MobileUpdate( Mobile m ) : base( 0x20, 19 )
		{
			//int hue = m.Hue;
            int hue = m.GetHue(m);  // Scriptiz : hallucinations

			if ( m.SolidHueOverride >= 0 )
				hue = m.SolidHueOverride;

			m_Stream.Write( (int) m.Serial );
			//m_Stream.Write( (short) m.Body );
            m_Stream.Write((short)m.GetBody(m));    // Scriptiz : hallucinations
			m_Stream.Write( (byte) 0 );
			m_Stream.Write( (short) hue );
			m_Stream.Write( (byte) m.GetPacketFlags() );
			m_Stream.Write( (short) m.X );
			m_Stream.Write( (short) m.Y );
			m_Stream.Write( (short) 0 );
			m_Stream.Write( (byte) m.Direction );
			m_Stream.Write( (sbyte) m.Z );
		}
开发者ID:greeduomacro,项目名称:vivre-uo,代码行数:20,代码来源:Packets.cs

示例15: MobileMoving

		public MobileMoving( Mobile m, int noto, Mobile receiver ) : base( 0x77, 17 )
		{
			Point3D loc = m.Location;

			//int hue = m.Hue;
            int hue = receiver.GetHue(m);   // Scriptiz : hallucinations

			if ( m.SolidHueOverride >= 0 )
				hue = m.SolidHueOverride;

			m_Stream.Write( (int) m.Serial );
			//m_Stream.Write( (short) m.Body );
            m_Stream.Write((short)receiver.GetBody(m)); // Scriptiz : hallucinations
			m_Stream.Write( (short) loc.m_X );
			m_Stream.Write( (short) loc.m_Y );
			m_Stream.Write( (sbyte) loc.m_Z );
			m_Stream.Write( (byte) m.Direction );
			m_Stream.Write( (short) hue );
			m_Stream.Write( (byte) m.GetPacketFlags() );
			m_Stream.Write( (byte) noto );
		}
开发者ID:greeduomacro,项目名称:vivre-uo,代码行数:21,代码来源:Packets.cs


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