public override void Write(BinaryWriterExt writer) { base.Write(writer); writer.Write((byte)1); writer.Write((int)Type); writer.Write(X); writer.Write(Y); writer.Write(Z); if (Type == LVDDamageShapeType.Sphere) { writer.Write(Radius); writer.Write(Dx); writer.Write(Dy); writer.Write(Dz); } if (Type == LVDDamageShapeType.Capsule) { writer.Write(Dx); writer.Write(Dy); writer.Write(Dz); writer.Write(Radius); } writer.Write(Unknown1); writer.Write(Unknown2); }
public void Serialize(BinaryWriterExt writer) { writer.Write(CarId); writer.Write(State); writer.Write(Slot); writer.Write(StackNum); writer.Write(LastCarId); writer.Write(AssistA); writer.Write(AssistB); writer.Write(AssistC); writer.Write(AssistD); writer.Write(AssistE); writer.Write(AssistF); writer.Write(AssistG); writer.Write(AssistH); writer.Write(AssistI); writer.Write(AssistJ); writer.Write(Box); writer.Write(Belonging); writer.Write(Upgrade); writer.Write(UpgradePoint); writer.Write(ExpireTick); writer.Write(Durability); // Only neo, -1 writer.Write(0); // Unk1?! writer.Write(TableIndex); writer.Write(InventoryIndex); writer.Write(Random); }
public void SerializeShort(BinaryWriterExt writer) { writer.Write(Id); writer.Write(MarkId); writer.WriteUnicodeStatic(Name, 14); writer.Write((ushort)0); // NLevel? }
public virtual void Write(BinaryWriterExt writer) { writer.Write(EntryFlags); writer.Write(EntryNumber); writer.Write((byte)1); writer.Write(EntryName); writer.Write(new byte[0x38 - EntryName.Length - 1]); writer.Write((byte)1); writer.Write(EntryLabel); writer.Write(new byte[0x40 - EntryLabel.Length - 1]); writer.Write((byte)1); writer.Write(StartPosition.X); writer.Write(StartPosition.Y); writer.Write(StartPosition.Z); writer.Write(UseStartPosition); writer.Write((byte)1); writer.Write(UnknownIndex2); writer.Write((byte)1); writer.Write(UnknownVector.X); writer.Write(UnknownVector.Y); writer.Write(UnknownVector.Z); writer.Write(UnknownIndex); writer.Write((byte)1); writer.Write(BoneName); writer.Write(new byte[0x40 - BoneName.Length - 1]); }
/* * struct XiPlayerInfo * { * wchar_t Cname[13]; * unsigned __int16 Serial; * unsigned __int16 Age; * __unaligned __declspec(align(1)) __int64 Cid; * unsigned __int16 Level; * unsigned int Exp; * __unaligned __declspec(align(1)) __int64 TeamId; * __unaligned __declspec(align(1)) __int64 TeamMarkId; * wchar_t TeamName[14]; * unsigned __int16 TeamNLevel; * XiVisualItem VisualItem; * float UseTime; * }; */ /// <summary> /// 216 length but 150 bytes used! /// Leaked files has 156 bytes :/ /// </summary> /// <param name="writer"></param> public void Serialize(BinaryWriterExt writer) { writer.WriteUnicodeStatic(Character.Name, 13, true); // 26 writer.Write(Serial); // 2 writer.Write(Age); // 2 writer.Write(Character.Id); // 8 writer.Write(Character.Level); // 2 writer.Write(Character.ExperienceInfo.BaseExp); // 4 //writer.Write(Character.TeamId); // 8 if (Character.Crew == null) { new Crew().SerializeShort(writer); } else { Character.Crew.SerializeShort(writer); /* * writer.Write(Character.Team.MarkId); // 8 * writer.WriteUnicodeStatic(Character.Team.Name, 14, true); * writer.Write(TeamNLevel); // 2 */ } writer.Write(VisualItem); // 50? writer.Write(UseTime); // 4 writer.Write(new byte[60]); //writer.Write(new byte[186]); }
public void Write(BinaryWriterExt writer) { writer.Write(new char[] { 'D', 'D', 'S', ' ' }); writer.Write(dwSize); writer.Write((int)dwFlags); writer.Write(dwHeight); writer.Write(dwWidth); writer.Write(dwPitchOrLinearSize); writer.Write(dwDepth); writer.Write(dwMipMapCount); foreach (var v in dwReserved1) { writer.Write(v); } ddspf.Write(writer); writer.Write((int)dwCaps); writer.Write((int)dwCaps2); writer.Write(dwCaps3); writer.Write(dwCaps4); writer.Write(dwReserved2); if (ddspf.dwFlags.HasFlag(DDPF.FOURCC) && ddspf.dwFourCC == 0x30315844) { DXT10Header.Write(writer); } }
public void TestTest() { var playerInfo = new XiPlayerInfo(); using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { playerInfo.Serialize(bs); } Assert.AreEqual(216, ms.ToArray().Length); } var team = new Crew(); using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { team.Serialize(bs); } Assert.AreEqual(0, ms.ToArray().Length); } var chara = new Character(); using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { chara.Serialize(bs); } Assert.AreEqual(0, ms.ToArray().Length); } }
public Packet(ushort id) { Writer = new BinaryWriterExt(new MemoryStream()); Id = id; Writer.Write(id); }
// We're still missing ~209 bytes of data /// <summary> /// TODO: Missing: 293 Bytes! /// </summary> /// <param name="writer"></param> public void Serialize(BinaryWriterExt writer) { writer.Write(Id); writer.Write(MarkId); writer.WriteUnicodeStatic(Name, 13); writer.WriteUnicodeStatic(Description, 61); writer.WriteAsciiStatic(Url, 33); writer.Write(CreateDate); writer.Write(CloseDate); writer.Write(BanishDate); writer.WriteAsciiStatic(OwnChannel, 24); writer.WriteAsciiStatic(State, 2); writer.Write(Ranking); writer.Write(Point); writer.Write(ChannelWinCnt); writer.Write(MemberCnt); writer.Write(TotalExp); writer.Write(TotalMoney); writer.Write(Version); writer.Write(OwnerId); writer.Write(LeaderId); writer.WriteUnicodeStatic(OwnerName, 21); writer.WriteUnicodeStatic(LeaderName, 21); writer.Write(new byte[293]); }
/// <summary> /// 346 Bytes missing /// /// packetId => 2 /// field_0 => 4 (CharId?) /// field_1 => 155 (0x6->0xA1) /// field_2 => 4 /// field_3 => 8 (0xA5->0xAD) /// field_4 => 4 /// field_5 => 146 (0xB1->0x143) - Char Info end?! (321) /// ----------------------------------------------------- /// field_6 => 50 (0x143->0x175) - VEHICLE INFO!! (50) /// ----------------------------------------------------- /// field_7 => 112 (0x175->0x1E5) - Statistic Info /// ----------------------------------------------------- /// field_8 => 4 - TeamId /// field_9 => 660 (0x1E9->0x47D) - Team /// ----------------------------------------------------- /// field_10 => 12 (0x47D->0x489) /// field_11 => 6 (0x489->0x48F) /// field_0 => 4 /// field_1 => 2 /// field_12 => 6 (0x48F->0x495) /// field_0 => 4 /// field_1 => 2 /// field_13 => 4 - LocType /// /// If LocType == 1 -> LocId == AreaId /// </summary> /// <returns></returns> public override byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { Character.Serialize(bs); // 321 here, 363 in rice. Vehicle.Serialize(bs); StatisticInfo.Serialize(bs); // 112 vs 80 -> 32 bytes missing? if (Crew == null) // Character is in not team. { bs.Write(new byte[664]); } else { Crew.Serialize(bs); } // field_10 bs.Write(new byte[12]); // field_11 bs.Write((int)0); bs.Write((short)0); // field_12 bs.Write((int)0); bs.Write((short)0); bs.Write(LocType); } return(ms.ToArray()); } }
/// <summary> /// /// </summary> /// <param name="Writer"></param> /// <param name="Value"></param> /// <param name="Type"></param> /// <param name="Scale"></param> private static void WriteData(BinaryWriterExt Writer, float Value, GXCompType Type, float Scale) { double Scaled = Value * Math.Pow(2, Scale); switch (Type) { case GXCompType.UInt8: Writer.Write((byte)Scaled); break; case GXCompType.Int8: Writer.Write((sbyte)Scaled); break; case GXCompType.UInt16: Writer.Write((ushort)Scaled); break; case GXCompType.Int16: Writer.Write((short)Scaled); break; case GXCompType.Float: Writer.Write(Scaled); break; default: Writer.Write((byte)Scaled); break; } }
/// <summary> /// writes quantanized value to stream /// </summary> /// <param name="d"></param> /// <param name="Value"></param> public void WriteValue(BinaryWriterExt d, float Value) { if (!Quantanized) { Quantanize(); } switch (ValueType) { case GXAnimDataFormat.HSD_A_FRAC_FLOAT: d.Write(Value * ValueScale); break; case GXAnimDataFormat.HSD_A_FRAC_S16: d.Write((short)(Quantanize(Value, ValueType, ValueScale))); break; case GXAnimDataFormat.HSD_A_FRAC_U16: d.Write((ushort)(Quantanize(Value, ValueType, ValueScale))); break; case GXAnimDataFormat.HSD_A_FRAC_S8: d.Write((sbyte)(Quantanize(Value, ValueType, ValueScale))); break; case GXAnimDataFormat.HSD_A_FRAC_U8: d.Write((byte)(Quantanize(Value, ValueType, ValueScale))); break; default: throw new Exception("Unknown GXAnimDataFormat " + ValueType.ToString()); } }
/* * Client expects: * * field_2 => 0x298u * field_6 => 0x1Cu * * 00000002 action dd ? * 00000006 charId db 8 dup(?) * 0000000E rank dd ? * 00000012 teamInfo db 664 dup(?) * 000002AA field_3 dw ? * 000002AC field_4 dd ? * 000002B0 field_5 dd ? */ public override byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { // MyTeamInfoAck always Action = lpbuffer+2 bs.Write(Action); // Action (1003, 1004, 1031, 1034) bs.Write(CharacterId); bs.Write(Rank); if (Crew == null) { bs.Write(new Crew()); } else { Crew.Serialize(bs); } bs.Write(Age); bs.Write(0); // field_4 bs.Write(0); // field_5 } return(ms.ToArray()); } }
public void SerializeShort(BinaryWriterExt writer) { writer.WriteUnicodeStatic(Name, 21); writer.Write(Id); writer.Write((int)Avatar); writer.Write((int)Level); writer.Write(ActiveVehicleId); writer.Write(ActiveCar.CarType); writer.Write(ActiveCar.BaseColor); writer.Write(CreationDate); writer.Write(CrewId); if (Crew != null) { writer.Write(Crew.MarkId); writer.WriteUnicodeStatic(Crew.Name, 13); writer.Write((short)CrewRank); } else { writer.Write(0L); // Is there a reason we send 0L here and not -1L? writer.WriteUnicodeStatic("", 13); writer.Write((short)0); // Crew rank } writer.Write(Guild); }
public override byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { bs.Write(ServerId); bs.Write(ServerStartTime); Character.Serialize(bs); bs.Write(Vehicles.Length); foreach (var vehicle in Vehicles) { bs.Write(vehicle.CarId); bs.Write(vehicle.CarType); bs.Write(vehicle.BaseColor); bs.Write(vehicle.Grade); bs.Write(vehicle.SlotType); bs.Write(vehicle.AuctionCnt); bs.Write(vehicle.Mitron); bs.Write(vehicle.Kmh); bs.Write(vehicle.Color); bs.Write(vehicle.Color2); bs.Write(vehicle.MitronCapacity); bs.Write(vehicle.MitronEfficiency); bs.Write(vehicle.AuctionOn); bs.Write(vehicle.SBBOn); } } return(ms.ToArray()); } }
public override byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { for (var i = 0; i < 16; ++i) { bs.Write(0); } bs.Write(1000); bs.Write(9001); bs.Write(9002); bs.Write(9003); bs.Write(new byte[76]); //StatisticInfo.Serialize(bs); //EnchantBonus.Serialize(bs); } return(ms.ToArray()); } /* Pulled from Rice: * var stat = new RicePacket(760); // StatUpdate * for (int i = 0; i < 16; ++i) * stat.Writer.Write(0); * stat.Writer.Write(1000); * stat.Writer.Write(9001); * stat.Writer.Write(9002); * stat.Writer.Write(9003); * stat.Writer.Write(new byte[76]); * packet.Sender.Send(stat); */ }
public override void Write(BinaryWriterExt writer) { base.Write(writer); writer.Write((byte)1); writer.Write(X); writer.Write(Y); }
public void Write(BinaryWriterExt writer) { writer.Write((int)dxgiFormat); writer.Write((int)resourceDimension); writer.Write(miscFlag); writer.Write(arraySize); writer.Write(miscFlags2); }
public override byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { bs.Write(262144); // First packet, 262145 would be 2nd, 3rd etc. bs.Write(InventoryItems.Length); foreach (var item in InventoryItems) { bs.Write(item); } } return(ms.ToArray()); } /* * var ack = new Packet(Packets.ItemListAck); * ack.Writer.Write( * (uint) 0x40000); // WHAT THE? unsigned int ListUpdate; <-- Multiple pages -> Multiple packets * //ack.Writer.Write((uint)0); // Count * ack.Writer.Write((uint) 1); // Count * // 52 bytes of data for each item * * ack.Writer.Write((uint) 4); // CarID * ack.Writer.Write((ushort) 0); // State // (0 = Inventory, 1 = Equip, 4 = Auction) * ack.Writer.Write((ushort) 1); // Slot * ack.Writer.Write((uint) 1); // StateVar * ack.Writer.Write(1); // StackNum * ack.Writer.Write(0); // Random * * ack.Writer.Write((uint) 0); // AssistA * ack.Writer.Write((uint) 0); // AssistB * ack.Writer.Write((uint) 0); // Box // 255 = drop rate 5.7??? * ack.Writer.Write((uint) 0); // Belonging (0 = , 1 = equip, 2 = get) * ack.Writer.Write(0); // Upgrade * ack.Writer.Write(0); // UpgradePoint * ack.Writer.Write((uint) 0); // ExpireTick * ack.Writer.Write((uint) 1); // TableIdx * ack.Writer.Write((uint) 0); // InvenIdx * ack.Writer.Write((uint) 0); // Is upgrade pack?? * ack.Writer.Write((uint) 0); // Tradeable? * //ack.Writer.Write(new byte[46]); // 94 * * /* Pulled from Rice: * byte[] testItem = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, * 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, * 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, * 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, * 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x91, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBF, * 0x00, 0x00, 0x00, 0x00, 0xD9, 0x04, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; * var ack = new RicePacket(401); * ack.Writer.Write(262144); // ListUpdate (262144 = First packet from list queue, 262145 = sequential) * ack.Writer.Write(1); // ItemNum * ack.Writer.Write(testItem); // Null Item (96 bytes per XiStrMyItem) * packet.Sender.Send(ack); */ }
public override void Write(BinaryWriterExt writer) { base.Write(writer); writer.Write((byte)1); writer.Write(ID); Shape.Write(writer); }
private void SaveAndWriteTdf(string fileName) { /*_tdfFile.Header.Col = (uint) listView1.Columns.Count; * _tdfFile.Header.Row = (uint) listView1.Items.Count; * //tdfFile.Header.Offset = tdfFile.Header.Col * tdfFile.Header.Row;*/ //_tdfFile.DataTable = new int[_tdfFile.Header.Col * _tdfFile.Header.Row]; if (changeDateToolStripMenuItem.Checked) { _tdfFile.Header.Date.Day = (char)DateTime.Now.Day; _tdfFile.Header.Date.Month = (char)DateTime.Now.Month; _tdfFile.Header.Date.Year = (ushort)DateTime.Now.Year; } if (increaseVersionToolStripMenuItem.Checked) { if (_tdfFile.Version.Minor < 9) { _tdfFile.Version.Minor++; } else { _tdfFile.Version.Major++; _tdfFile.Version.Minor = 0; } } var columns = (int)_tdfFile.Header.Col; var rows = (int)_tdfFile.Header.Row; var offset = (int)_tdfFile.Header.Offset; //var size = offset + (columns * 4 * rows + 24); var size = offset - (columns * 4 * rows + 24); _tdfFile.ResTable = new byte[size]; // Each column has only 4 bytes? using (var writer = new BinaryWriterExt(new MemoryStream(_tdfFile.ResTable))) { for (var row = 0; row < _tdfFile.Header.Row; row++) { for (var col = 1; col < _tdfFile.Header.Col + 1; col++) { var colText = listView1.Items[row].SubItems[col].Text; foreach (var c in colText) { Debug.WriteLineIf(row == 0, "Writing char: " + c); writer.Write(Encoding.ASCII.GetBytes(new[] { c })); writer.Write((byte)0); } writer.Write(new byte[2]); } } } _tdfFile.Save(fileName); }
/// <summary> /// /// </summary> /// <param name="writer"></param> public void Serialize(BinaryWriterExt writer) { writer.Write(Id); writer.WriteUnicodeStatic(Name, 21); writer.WriteUnicodeStatic(LastMessageFrom, 11); writer.Write(LastDate); writer.Write(Avatar); writer.Write(Level); writer.Write(ExperienceInfo); writer.Write(MitoMoney); if (Crew == null) { writer.Write(-1L); writer.Write(0L); writer.WriteUnicodeStatic("", 13); writer.Write(0); } else { writer.Write(Crew.Id); writer.Write(Crew.MarkId); writer.WriteUnicodeStatic(Crew.Name, 13); writer.Write(CrewRank); } writer.Write(PartyType); // possibly 65 when admin or cheatable writer.Write(PvpCount); writer.Write(PvpWinCount); writer.Write(PvpPoint); writer.Write(TeamPvpCount); writer.Write(TeamPvpWinCount); writer.Write(TeamPvpPoint); writer.Write(QuickCount); writer.Write(0); // unknown writer.Write(0); // unknown writer.Write(TotalDistance); // NOPE! TotalDistance says 62! writer.Write(Position); writer.Write(LastChannel); writer.Write(City); writer.Write(PosState); writer.Write(ActiveVehicleId); writer.Write(QuickSlot1); writer.Write(QuickSlot2); writer.Write(TeamJoinDate); writer.Write(TeamCloseDate); writer.Write(TeamLeaveDate); writer.Write(new byte[12]); // filler writer.Write(InventoryLevel); writer.Write(GarageLevel); writer.Write(new byte[42]); // filler writer.Write(Flags); writer.Write((int)Guild); //writer.Write(new byte[38]); // filler //writer.Write(GPTeam); // DCGP team }
public override void Write(BinaryWriterExt writer) { base.Write(writer); writer.Write((byte)1); writer.Write(Position.X); writer.Write(Position.Y); writer.Write(Angle); writer.Write(LineIndex); }
private void WriteAt(BinaryWriterExt ext, int pos, int value) { var tmp = ext.BaseStream.Position; ext.BaseStream.Position = pos; ext.Write(value); ext.BaseStream.Position = tmp; }
public override void Write(BinaryWriterExt writer) { base.Write(writer); writer.Write((byte)1); writer.Write(Left); writer.Write(Right); writer.Write(Top); writer.Write(Bottom); }
public virtual byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { } return(ms.ToArray()); } }
public override byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { bs.Write(Areas.Length); foreach (var area in Areas) { bs.Write(area.AreaId); bs.Write(area.CurrentPlayers); bs.Write(area.MaxPlayers); bs.Write(area.ChannelState); bs.Write(area.Tax); bs.Write(area.TeamId); bs.Write(area.TeamMarkId); bs.WriteUnicodeStatic(area.TeamName, 13); bs.Write(area.Ranking); bs.Write(area.Point); bs.Write(area.WinCount); bs.Write(area.MemberCount); bs.Write(area.OwnerId); bs.WriteUnicodeStatic(area.OwnerName, 21); bs.Write(area.TotalExp); bs.Write((long)0); // ?????? } } return(ms.ToArray()); } /* * var ack = new Packet(Packets.AreaListAck); * ack.Writer.Write((uint) 10); * for (var k = 0; k < 10; ++k) * { * ack.Writer.Write(k); // AreaId * ack.Writer.Write(0); // Current? * ack.Writer.Write(100); // Max? * ack.Writer.Write(1); // ChannelState * ack.Writer.Write((float) 0); // Tax? * * ack.Writer.Write((long) 0); // teamID? * ack.Writer.Write((long) 0); // teamMarkID * ack.Writer.WriteUnicodeStatic("Staff", 13); // TeamName * ack.Writer.Write((uint) 0); // Ranking * ack.Writer.Write((uint) 0); // Point * ack.Writer.Write((uint) 0); // WinCnt * ack.Writer.Write(20); // Membercnt * ack.Writer.Write((long) 1); // OwnerId * ack.Writer.WriteUnicodeStatic("Administrator", 21); // OwnerName * ack.Writer.Write((long) 0); // TotalExp * ack.Writer.Write((long) 0); // ???????? * } */ }
public override byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { bs.WriteUnicodeStatic(CharacterName, 21); } return(ms.ToArray()); } }
public override byte[] GetBytes() { using (var ms = new MemoryStream()) { using (var bs = new BinaryWriterExt(ms)) { bs.Write(Result); } return(ms.ToArray()); } }
public void Serialize(BinaryWriterExt writer) { writer.Write(CarId); writer.Write(ItemState); writer.Write(TableIdx); writer.Write(InvenIdx); writer.Write(PlateName); writer.Write(Period); writer.Write(UpdateTime); writer.Write(CreateTime); }