Exemple #1
0
        public virtual void Read(BinaryReaderExt r)
        {
            EntryFlags  = r.ReadInt64();
            EntryNumber = r.ReadInt32();

            bool hasString = r.ReadBoolean();

            EntryName = r.ReadString(0x38);

            bool hasLabel = r.ReadBoolean();

            EntryLabel = r.ReadString(0x40);

            bool hasStartPosition = r.ReadBoolean();

            StartPosition    = new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle());
            UseStartPosition = r.ReadBoolean();

            // Unknown
            r.Skip(1);
            UnknownIndex2 = r.ReadInt32();

            r.Skip(1);
            UnknownVector = new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle());
            UnknownIndex  = r.ReadInt32();

            r.Skip(1);
            BoneName = r.ReadString(0x40);
        }
Exemple #2
0
 public void Unserialize(BinaryReaderExt reader)
 {
     Id            = reader.ReadInt64();
     MarkId        = reader.ReadInt64();
     Name          = reader.ReadUnicodeStatic(13);
     Description   = reader.ReadUnicodeStatic(61);
     Url           = reader.ReadAsciiStatic(33);
     CreateDate    = reader.ReadUInt32();
     CloseDate     = reader.ReadUInt32();
     BanishDate    = reader.ReadUInt32();
     OwnChannel    = reader.ReadAsciiStatic(24);
     State         = reader.ReadAsciiStatic(2);
     Ranking       = reader.ReadUInt32();
     Point         = reader.ReadUInt32();
     ChannelWinCnt = reader.ReadUInt32();
     MemberCnt     = reader.ReadUInt32();
     TotalExp      = reader.ReadInt64();
     TotalMoney    = reader.ReadInt64();
     Version       = reader.ReadUInt32();
     OwnerId       = reader.ReadInt64();
     LeaderId      = reader.ReadInt64();
     OwnerName     = reader.ReadUnicodeStatic(21);
     LeaderName    = reader.ReadUnicodeStatic(21);
 }
Exemple #3
0
        public void UserInfoAnswerTest()
        {
            var packet = new UserInfoAnswerPacket()
            {
                Permissions = Utilities.Rand.Next(),
                Characters  = new []
                {
                    new Character()
                    {
                        Name            = "TestChar",
                        Id              = Utilities.Rand.NextUInt32(),
                        Avatar          = 2,
                        Level           = 10,
                        ActiveVehicleId = Utilities.Rand.NextUInt32(),
                        CreationDate    = Utilities.Rand.Next(),
                        CrewId          = Utilities.Rand.NextUInt32(),
                        ActiveCar       = new Vehicle() // Normally this points to an object in GarageVehicles.
                        {
                            CarType   = Utilities.Rand.NextUInt32(),
                            BaseColor = Utilities.Rand.NextUInt32()
                        },
                        Crew = new Crew
                        {
                            Name   = "TestTeam",
                            MarkId = Utilities.Rand.NextInt64()
                        }
                    }
                },
                Username = "******"
            };
            var bytes = packet.GetBytes();

            // +2 here since packet id is 2 bytes aka short.
            Assert.IsTrue(bytes.Length + 2 == packet.ExpectedSize(), $"Packet Size mismatch {bytes.Length+2} vs expected {packet.ExpectedSize()}");

            using (var ms = new MemoryStream(bytes))
            {
                using (var bs = new BinaryReaderExt(ms))
                {
                    var permissions = bs.ReadInt32();
                    Assert.AreEqual(packet.Permissions, permissions);

                    var characterCount = bs.ReadInt32();
                    Assert.AreEqual(packet.Characters.Length, characterCount);

                    var username = bs.ReadUnicodeStatic(18);
                    Assert.AreEqual(packet.Username, username);

                    var long1 = bs.ReadInt64(); // Always 0
                    Assert.AreEqual(0, long1);

                    var long2 = bs.ReadInt64(); // Always 0
                    Assert.AreEqual(0, long2);

                    var long3 = bs.ReadInt64(); // Always 0
                    Assert.AreEqual(0, long3);

                    var int1 = bs.ReadInt32(); // Always 0
                    Assert.AreEqual(0, int1);

                    for (int i = 0; i < characterCount; i++)
                    {
                        var characterName = bs.ReadUnicodeStatic(21);
                        StringAssert.AreEqualIgnoringCase(packet.Characters[i].Name, characterName);

                        var charId = bs.ReadUInt64();
                        Assert.AreEqual(packet.Characters[i].Id, charId);

                        var avatar = bs.ReadInt32();
                        Assert.AreEqual(packet.Characters[i].Avatar, avatar);

                        var level = bs.ReadInt32();
                        Assert.AreEqual(packet.Characters[i].Level, level);

                        var currentCarId = bs.ReadUInt32();
                        Assert.AreEqual(packet.Characters[i].ActiveVehicleId, currentCarId);

                        var carType = bs.ReadUInt32();
                        Assert.AreEqual(packet.Characters[i].ActiveCar.CarType, carType);

                        var baseColor = bs.ReadUInt32();
                        Assert.AreEqual(packet.Characters[i].ActiveCar.BaseColor, baseColor);

                        var creationDate = bs.ReadInt32();
                        Assert.AreEqual(packet.Characters[i].CreationDate, creationDate);

                        var tid = bs.ReadInt64(); // TeamId!!!
                        Assert.AreEqual(packet.Characters[i].CrewId, tid);

                        var teamMarkId = bs.ReadInt64();
                        Assert.AreEqual(packet.Characters[i].Crew.MarkId, teamMarkId);

                        var teamName     = bs.ReadUnicodeStatic(13);
                        var expectedName = packet.Characters[i].Crew.Name;
                        if (expectedName.Length > 13)
                        {
                            expectedName = expectedName.Substring(0, 13);
                        }
                        StringAssert.AreEqualIgnoringCase(expectedName, teamName);
                    }
                }
            }
        }