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


C# PacketReader.CopyBytes方法代码示例

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


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

示例1: OnCompressedGump

 private static void OnCompressedGump(PacketReader p, PacketHandlerEventArgs e)
 {
     p.MoveToData();
     uint sender = p.ReadUInt32();
     uint id = p.ReadUInt32();
     if (id == responseID)
         _responseSender = sender;
     if (id != compressedID)
         return;
     p.Seek(19, SeekOrigin.Begin);
     p.Seek(p.ReadInt32(), SeekOrigin.Current);
     int lines = p.ReadInt32(), cLen = p.ReadInt32(), dLen = p.ReadInt32();
     if (cLen < 5)
         return;
     byte[] buffer = new byte[dLen];
     ZLib.uncompress(buffer, ref dLen, p.CopyBytes(p.Position, cLen - 4), cLen - 4);
     string afk = string.Empty;
     for (int i = 0, pos = 0; i < lines; i++)
     {
         int strLen = (buffer[pos++] << 8) | buffer[pos++];
         string str = Encoding.BigEndianUnicode.GetString(buffer, pos, strLen * 2);
         int index = str.IndexOf('>');
         if (index != -1 && index < str.Length - 1)
             afk += str[index + 1].ToString().ToUpper().Normalize(NormalizationForm.FormD)[0];
         pos += strLen * 2;
     }
     afk = afk.Trim();
     if (afk.Length == 5 && _responseSender != 0)
     {
         /*ClientCommunication.SendToClient(new CloseGump(responseID));
         WorldEx.SendToServer(new GumpResponse(responseSender, responseID, 0x310, new int[0], new[] { new GumpTextEntry(0x310, afk) }));
         responseSender = 0;*/
         WorldEx.OverHeadMessage(afk);
     }
 }
开发者ID:jaryn-kubik,项目名称:RazorEx,代码行数:35,代码来源:AFK.cs

示例2: OnCompressedGump

        private static void OnCompressedGump(PacketReader p, PacketHandlerEventArgs e)
        {
            p.Seek(7, SeekOrigin.Begin);
            if (p.ReadUInt32() != 0x1105B263)
                return;

            p.Seek(19, SeekOrigin.Begin);
            p.Seek(p.ReadInt32() + 4, SeekOrigin.Current);
            int cLen = p.ReadInt32(), dLen = p.ReadInt32();
            byte[] buffer = new byte[dLen];
            ZLib.uncompress(buffer, ref dLen, p.CopyBytes(p.Position, cLen - 4), cLen - 4);
            int strLen = (buffer[0] << 8) | buffer[1];
            string[] str = Encoding.BigEndianUnicode.GetString(buffer, 2, strLen * 2).Split(',');

            string[] lat = str[0].Split('°');
            int yLat = int.Parse(lat[0]);
            int yMins = int.Parse(lat[1].Split('\'')[0]);
            bool ySouth = lat[1][lat[1].Length - 1] == 'S';

            string[] lon = str[1].Split('°');
            int xLong = int.Parse(lon[0]);
            int xMins = int.Parse(lon[1].Split('\'')[0]);
            bool xEast = lon[1][lon[1].Length - 1] == 'E';

            const int xWidth = 5120;
            const int yHeight = 4096;
            const int xCenter = 1323;
            const int yCenter = 1624;

            double absLong = xLong + ((double)xMins / 60);
            double absLat = yLat + ((double)yMins / 60);

            if (!xEast)
                absLong = 360.0 - absLong;

            if (!ySouth)
                absLat = 360.0 - absLat;

            int x = xCenter + (int)((absLong * xWidth) / 360);
            int y = yCenter + (int)((absLat * yHeight) / 360);

            if (x < 0)
                x += xWidth;
            else if (x >= xWidth)
                x -= xWidth;

            if (y < 0)
                y += yHeight;
            else if (y >= yHeight)
                y -= yHeight;

            onGump(x, y);
        }
开发者ID:jaryn-kubik,项目名称:RazorEx,代码行数:53,代码来源:SOS.cs

示例3: CustomHouseInfo

        private static void CustomHouseInfo( PacketReader p, PacketHandlerEventArgs args )
        {
            p.ReadByte(); // compression
            p.ReadByte(); // Unknown

            Item i = World.FindItem( p.ReadUInt32() );
            if ( i != null )
            {
                i.HouseRevision = p.ReadInt32();
                i.HousePacket = p.CopyBytes( 0, p.Length );
            }
        }
开发者ID:herculesjr,项目名称:razor,代码行数:12,代码来源:Handlers.cs

示例4: ForwardPacket

        // ZIPPY REV 80
        /*
        internal static void ForwardPacket( byte *data, int len )
        {
            if ( length > 0 )
            {
                int total = 0;
                FwdMutex.WaitOne();
                CopyToBuffer( m_OutFwd, data, len );
                total = m_OutFwd->Length;
                FwdMutex.ReleaseMutex();

                PostMessage( m_FwdWnd, WM_FWDPACKET, (IntPtr)len, (IntPtr)total );
            }
        }
        */
        internal static Packet MakePacketFrom( PacketReader pr )
        {
            byte[] data = pr.CopyBytes( 0, pr.Length );
            return new Packet( data, pr.Length, pr.DynamicLength );
        }
开发者ID:herculesjr,项目名称:razor,代码行数:21,代码来源:ClientComm.cs


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