Exemplo n.º 1
0
 public override void Serialize(IoBuffer output, ISerializationContext context)
 {
     output.PutUInt16(LotLocation_X);
     output.PutUInt16(LotLocation_Y);
     output.PutPascalString(Name);
     output.PutBool(StartFresh);
 }
Exemplo n.º 2
0
 public override void Serialize(IoBuffer output, ISerializationContext context)
 {
     //IoBuffer result = Allocate(6);
     output.PutUInt16(HostReservedWords);
     output.PutUInt16(HostVersion);
     output.PutUInt16(ClientBufSize);
     //return result;
 }
Exemplo n.º 3
0
 public void Serialize(IoBuffer output, ISerializationContext context)
 {
     output.PutString(this.User, 112, Encoding.ASCII);
     output.PutString(this.AriesVersion, 80, Encoding.ASCII);
     output.PutString(this.Email, 40, Encoding.ASCII);
     output.PutString(this.Authserv, 84, Encoding.ASCII);
     output.PutUInt16(this.Product);
     output.Put(this.Unknown);
     output.PutString(this.ServiceIdent, 3, Encoding.ASCII);
     output.PutUInt16(this.Unknown2);
     output.PutString(this.Password, 32, Encoding.ASCII);
 }
Exemplo n.º 4
0
 public override void Serialize(IoBuffer output, ISerializationContext context)
 {
     output.PutUInt16(MajorVersion);
     output.PutUInt16(MinorVersion);
     output.PutUInt16(PointVersion);
     output.PutUInt16(ArtVersion);
     output.PutUInt64(this.Timestamp);
     output.Put(NumberOfAttempts);
     output.Put(LastExitCode);
     output.Put(LastFailureType);
     output.Put(FailureCount);
     output.Put(IsRunning);
     output.Put(IsReLogging);
 }
Exemplo n.º 5
0
        public override void Serialize(IoBuffer output, ISerializationContext context)
        {
            var len = 0;

            if (PlayerIds != null)
            {
                len = PlayerIds.Count;
            }

            output.PutUInt16((ushort)len);

            for (int i = 0; i < len; i++)
            {
                output.PutUInt32(PlayerIds[i]);
            }
        }
Exemplo n.º 6
0
        private void EncodeVoltronStylePackets(IoSession session, IProtocolEncoderOutput output, AriesPacketType ariesType, ushort packetType, IoBufferSerializable message)
        {
            var payload = IoBuffer.Allocate(512);

            payload.Order      = ByteOrder.BigEndian;
            payload.AutoExpand = true;
            message.Serialize(payload, Context);
            payload.Flip();

            int      payloadSize = payload.Remaining;
            IoBuffer headers     = IoBuffer.Allocate(18);

            headers.Order = ByteOrder.LittleEndian;

            /**
             * Aries header
             *  uint32	type
             *  uint32	timestamp
             *  uint32	payloadSize
             */
            uint timestamp = (uint)TimeSpan.FromTicks(DateTime.Now.Ticks - session.CreationTime.Ticks).TotalMilliseconds;

            headers.PutUInt32(ariesType.GetPacketCode());
            headers.PutUInt32(timestamp);
            headers.PutUInt32((uint)payloadSize + 6);

            /**
             * Voltron header
             *  uint16	type
             *  uint32	payloadSize
             */
            headers.Order = ByteOrder.BigEndian;
            headers.PutUInt16(packetType);
            headers.PutUInt32((uint)payloadSize + 6);

            if (payloadSize > 0)
            {
                headers.AutoExpand = true;
                headers.Put(payload);
            }

            headers.Flip();
            output.Write(headers);
            //output.Flush();
        }
Exemplo n.º 7
0
        private cTSOValue SerializeValue(uint type, object value)
        {
            var      result = new cTSOValue();
            IoBuffer buffer = null;

            switch (type)
            {
            case 0x48BC841E:
                if (!(value is sbyte) && !(value is Enum))
                {
                    return(null);
                }
                result.Type  = cTSOValue_sint8;
                result.Value = new sbyte[] { Convert.ToSByte(value) };
                break;

            case 0x74336731:
                if (!(value is ushort))
                {
                    return(null);
                }

                buffer = AbstractVoltronPacket.Allocate(2);
                buffer.PutUInt16((ushort)value);
                buffer.Flip();

                result.Type  = cTSOValue_uint16;
                result.Value = buffer;
                break;

            case 0xF192ECA6:
                if (!(value is short))
                {
                    return(null);
                }

                buffer = AbstractVoltronPacket.Allocate(2);
                buffer.PutInt16((short)value);
                buffer.Flip();

                result.Type  = cTSOValue_sint16;
                result.Value = buffer;
                break;

            case 0xE0463A2F:
                if (!(value is uint))
                {
                    return(null);
                }

                buffer = AbstractVoltronPacket.Allocate(4);
                buffer.PutUInt32((uint)value);
                buffer.Flip();

                result.Type  = cTSOValue_uint32;
                result.Value = buffer;
                break;

            case 0xA0587098:
                if (!(value is int))
                {
                    return(null);
                }

                buffer = AbstractVoltronPacket.Allocate(4);
                buffer.PutInt32((int)value);
                buffer.Flip();

                result.Type  = cTSOValue_sint32;
                result.Value = buffer;
                break;

            case 0x385070C9:
                if (!(value is ulong))
                {
                    return(null);
                }

                buffer = AbstractVoltronPacket.Allocate(8);
                buffer.PutUInt64((ulong)value);
                buffer.Flip();

                result.Type  = cTSOValue_uint64;
                result.Value = buffer;
                break;

            case 0x90D315F7:
                if (!(value is long))
                {
                    return(null);
                }

                buffer = AbstractVoltronPacket.Allocate(8);
                buffer.PutInt64((long)value);
                buffer.Flip();

                result.Type  = cTSOValue_sint64;
                result.Value = buffer;
                break;

            default:
                //It may be a struct
                var _struct = Format.Structs.FirstOrDefault(x => x.ID == type);
                if (_struct != null)
                {
                    var body = new cITSOProperty();
                    body.StructType   = _struct.ID;
                    body.StructFields = new List <cITSOField>();

                    foreach (var field in _struct.Fields)
                    {
                        object fieldValue = GetFieldValue(value, field.Name);
                        if (fieldValue == null)
                        {
                            continue;
                        }

                        body.StructFields.Add(new cITSOField {
                            ID    = field.ID,
                            Value = SerializeValue(field.TypeID, fieldValue)
                        });
                    }

                    result.Type  = cTSOValue_property;
                    result.Value = body;
                    return(result);
                }

                return(null);
            }

            return(result);
        }
Exemplo n.º 8
0
        public static void PutEnum <T>(this IoBuffer buffer, T enumValue)
        {
            ushort value = Convert.ToUInt16(enumValue);

            buffer.PutUInt16(value);
        }
Exemplo n.º 9
0
        public override void Serialize(IoBuffer output, ISerializationContext context)
        {
            //var result = Allocate(8);
            //result.AutoExpand = true;

            output.PutUInt32(StatusCode);
            output.PutPascalString(ReasonText);


            //Room Info
            output.PutPascalString("A 16318812");
            output.PutPascalString("1");
            output.Put((byte)0);

            //Owner
            output.PutPascalString("A 65538");
            output.PutPascalString("1");

            //Stage id
            output.PutPascalString("A 16318812");
            output.PutPascalString("1");

            //Currnet ocupancy
            output.PutUInt32(10);

            //Max occupancy
            output.PutUInt32(50);

            //pswd required
            output.Put((byte)0);

            //room type
            output.Put((byte)1);

            //Group
            output.PutPascalString("1");

            //Admin list
            output.PutUInt16(0);

            //m_EnabledFlag
            output.Put(0);

            //m_AdmitList
            output.PutUInt16(0);

            //m_EnabledFlag
            output.Put(0);

            //m_DenyList
            output.PutUInt16(0);

            //m_EnabledFlag
            output.Put(0);

            output.PutUInt32(0);
            output.PutUInt32(0);
            output.PutUInt32(0);

            //player info
            output.PutPascalString("A " + AvatarID.ToString());
            output.PutPascalString("");
            output.Put(0);
            output.Put(0);
            //return result;
        }
Exemplo n.º 10
0
 public void Serialize(IoBuffer output, object value, ISerializationContext serializer)
 {
     output.PutUInt16((ushort)value);
 }
Exemplo n.º 11
0
        public void Serialize(IoBuffer output, ISerializationContext context)
        {
            output.PutUInt32(AvatarId);
            output.PutPascalVLCString("A");
            output.PutPascalVLCString("B");

            output.PutInt16(AvatarSkills_Logic);
            output.PutInt16(AvatarSkills_LockLv_Logic);
            output.PutInt16(AvatarSkills_Body);
            output.PutInt16(AvatarSkills_LockLv_Body);
            output.PutInt16(AvatarSkills_LockLv_Mechanical);
            output.PutInt16(AvatarSkills_LockLv_Creativity);
            output.PutInt16(AvatarSkills_LockLv_Cooking);
            output.PutInt16(AvatarSkills_Cooking);
            output.PutInt16(AvatarSkills_Charisma);
            output.PutInt16(AvatarSkills_LockLv_Charisma);
            output.PutInt16(AvatarSkills_Mechanical);
            output.PutInt16(AvatarSkills_Creativity);

            //Unknown
            output.PutUInt32(0x28292a2b);
            output.PutUInt32(0x2c2d2e2f);
            output.PutUInt32(0x30313233);
            output.PutUInt32(0x34353637);
            output.PutUInt32(0x38393a3b);
            output.PutUInt32(0x3c3d3e3f);
            output.PutUInt32(0x40414243);
            output.Put(0x44);
            output.Put(0x45);

            output.PutUInt32(Cash);

            //Unknown
            output.PutUInt32(0x4a4b4c4d);
            output.PutUInt32(0x4e4f5051);
            output.Put(0x52);

            output.PutPascalVLCString("C");
            output.PutPascalVLCString("D");
            output.PutPascalVLCString("E");
            output.PutPascalVLCString("F");
            output.PutPascalVLCString("G");

            output.PutUInt32(0x54555657);
            output.PutUInt32(0x58595A5B);
            output.PutUInt32(0x5C5D5E5F);
            output.PutUInt32(0x60616263);
            output.PutUInt32(0x64656667);
            output.PutUInt32(0x68696A6B);
            output.PutUInt32(0x6C6D6E6F);
            output.PutUInt32(0x70717273);
            output.PutUInt32(0x74757677);

            //Bonus count
            if (Bonus == null)
            {
                output.PutUInt32(0);
            }
            else
            {
                output.PutUInt32((uint)Bonus.Count);
                for (var i = 0; i < Bonus.Count; i++)
                {
                    var bonus = Bonus[i];

                    //Unknown
                    output.PutUInt32(0x7C7D7E7F);
                    output.PutUInt32(0x80818283);

                    //Sim bonus
                    output.PutUInt32(bonus.SimBonus);

                    //Property bonus
                    output.PutUInt32(bonus.PropertyBonus);

                    //Visitor bonus
                    output.PutUInt32(bonus.VisitorBonus);

                    //Date string
                    output.PutPascalVLCString(bonus.Date);
                }
            }


            //Unknown
            //count
            output.PutUInt32(0x01);
            output.PutUInt32(0x94959697);
            output.PutUInt64(0x98999a9b9c9d9e9f);

            //Unknown
            //count
            output.PutUInt32(0x01);
            output.PutUInt32(0xa5a6a7a8);
            output.PutUInt32(0xa9aaabac);

            //Unknown
            //count
            output.PutUInt32(0x01);
            output.PutUInt16(0xb1b2);
            output.PutUInt16(0xb3b4);
            output.PutUInt32(0xb5b6b7b8);
            output.PutUInt16(0xb9ba);

            output.PutUInt16(0xbbbc);
            output.PutUInt16(0xbdbe);
            output.PutUInt32(0xbfc0c1c2);
            output.PutUInt32(0xc3c4c5c6);

            //Unknown
            //count
            output.PutUInt32(0x01);
            output.PutUInt32(0xcbcccdce);
            output.PutUInt32(0xcfd0d1d2);
            output.PutUInt32(0xd3d4d5d6);
            output.Put(0xd7);
            output.Put(0xd8);
            output.PutUInt32(0xd9dadbdc);
            output.PutUInt32(0xdddedfe0);
            output.PutUInt32(0xe1e2e3e4);

            //Unknown
            //count
            output.PutUInt32(0x01);
            output.PutUInt32(0xe9eaebec);
            output.PutUInt32(0xedeeeff0);
            output.PutUInt32(0xf1f2f3f4);
            output.Put(0xf5);
            output.Put(0xf6);
            output.PutUInt32(0xf7f8f9fa);
            output.PutUInt32(0xfbfcfdfe);
            output.PutUInt32(0xff808182);

            //Unknown
            //count
            output.PutUInt32(0x01);

            output.PutUInt32(0x8788898a);
            output.PutUInt16(0x8b8c);
            output.PutUInt32(0x8d8e8f90);
            output.PutUInt32(0x91929394);
            output.PutUInt32(0x95969798);
            output.PutUInt32(0x999a9b9c);

            //Unknown
            //count
            output.PutUInt32(0x01);
            output.PutUInt16(0x7071);
            output.PutUInt64(0x7273747576777879);

            //Unknown
            output.PutUInt32(0x7a7b7c7d);
            output.PutUInt32(0x7e7f6061);
            output.PutUInt32(0x62636465);
            output.PutUInt32(0x66676869);
            output.PutUInt32(0x6a6b6c6d);
            output.PutUInt32(0x6e6f5051);
            output.PutUInt32(0x52535455);
            output.PutUInt32(0x56575859);
            output.PutUInt32(0x69f4d5e8);
            output.PutUInt32(0x5e5f4041);
        }