示例#1
0
        //Shorthand for SubPacket with gamepacket type
        public SubPacket(GamePacketOpCode opCode, uint sourceId, uint targetId, byte[] data, SubPacketTypes spt)
        {
            header      = new SubPacketHeader();
            gameMessage = new GameMessageHeader();

            gameMessage.opcode = (ushort)opCode;
            header.sourceId    = sourceId;
            header.targetId    = targetId;

            gameMessage.timestamp = Utils.UnixTimeStampUTC();

            header.type                 = (ushort)spt;
            header.subpacketMisc        = 0x00;
            gameMessage.gamepacketMisc  = 0x0;
            gameMessage.gamepacketMisc2 = 0;
            gameMessage.gamepacketMisc3 = 0;

            this.data = data;

            header.subpacketSize = (ushort)(SUBPACKET_SIZE + GAMEMESSAGE_SIZE + data.Length);
        }
示例#2
0
        public SubPacket buildPacket(GamePacketOpCode opCode, ErrorCodes errorId, string message)
        {
            byte[]       msg         = Encoding.Unicode.GetBytes(message);
            var          errorIdConv = (ushort)errorId;
            MemoryStream memStream   = new MemoryStream();
            BinaryWriter binWriter   = new BinaryWriter(memStream);

            try
            {
                binWriter.Write(errorIdConv);
                binWriter.Write(msg);

                byte[] data = memStream.GetBuffer();
                memStream.Dispose();
                binWriter.Close();
                SubPacket subPacket = new SubPacket(opCode, 0, 0, data, SubPacketTypes.ErrorPacket);
                return(subPacket);
            }
            catch (Exception)
            {
                Console.WriteLine("something went wrong in writing to error packet, check buffers");
            }
            throw new Exception("something went wrong in writing to error packet, check buffers");
        }