Lucas Alfare
New Member
- Joined
- May 20, 2019
- Messages
- 6
- Reaction score
- 1
I'm working in some parsers and I wondering to know if this can be used to read the bytes of the 8.6 version.
Also, by following the link, I tried perform the protobuf file and got this:
However, this made got some exceptions after using the generated file from the protobuf compiler, such this:
Then, someone can help fix this or even present me the real 8.6 dat structure?
Thanks in advance!
Also, by following the link, I tried perform the protobuf file and got this:
Code:
syntax = "proto2";
message DatFile {
repeated Appearance objects = 1;
repeated Appearance outfits = 2;
repeated Appearance effects = 3;
repeated Appearance missiles = 4;
}
message Appearance {
required uint32 clientID = 1;
repeated FrameGroup frameGroups = 2;
required Attributes attributes = 3;
}
message FrameGroup {
required uint32 fixedFrameGroup = 1; // ?
required uint32 id = 2; // ?
required SpriteInfo spriteInfo = 3;
message SpriteInfo {
required uint32 patternX = 1;
required uint32 patternY = 2;
required uint32 patternZ = 3;
required uint32 layers = 4;
repeated uint32 spriteIDs = 5;
repeated SpriteAnimation animations = 6;
optional uint32 cropSize = 7;
optional bool isOpaque = 8;
optional Size size = 9; // size does not seem to appear at all
message SpriteAnimation {
enum ANIMATION_LOOP_TYPE {
ANIMATION_LOOP_TYPE_PINGPONG = -1;
ANIMATION_LOOP_TYPE_INFINITE = 0;
ANIMATION_LOOP_TYPE_COUNTED = 1;
}
optional uint32 startPhase = 1;
optional bool synced = 2;
optional bool randomStartPhase = 3 [default=false];
required ANIMATION_LOOP_TYPE loopType = 4;
optional uint32 loopCount = 5;
repeated SpritePhase phases = 6;
message SpritePhase {
required uint32 minDuration = 1;
required uint32 maxDuration = 2;
}
}
message Size {
required uint32 width = 1;
required uint32 height = 2;
}
}
}
//all the flags I took from topic above
//note that doesn't exists any market data there/here
message Attributes {
optional Ground groundTile = 0x1;
optional bool onTop = 0x2;
optional bool walkThroughA = 0x3;
optional bool walkThroughB = 0x4;
optional bool container = 0x5;
optional bool stackable = 0x6;
optional bool ladder = 0x7;
optional bool usable = 0x8;
optional bool rune = 0x9;
optional Writable writable = 0xa;
optional Readable readable = 0xb;
optional bool fluidContainer = 0xc;
optional bool splash = 0xd;
optional bool blocking = 0xe;
optional bool immovable = 0xf;
optional bool blockMissile = 0x10;
optional bool blockMonsterMovement = 0x11;
optional bool equipable = 0x12;
optional bool hangableWallItem = 0x13;
optional bool horizontalWallItem = 0x14;
optional bool verticalWallItem = 0x15;
optional bool rotateable = 0x16;
optional Light lightInfo = 0x17;
optional bool unknown1 = 0x18;
optional bool floorChangeDown = 0x19;
optional DrawOffset drawOffset = 0x1a;
optional Height height = 0x1b;
//big to hold description..
optional bool drawWithHeightOffsetForAllParts2x2OfTheSprite = 0x1c;
optional bool offsetLifeBarForLArgeMonsters = 0x1d;
optional MinimapColor minimapColor = 0x1e;
optional FloorChange floorChange = 0x1f;
optional bool unknown2 = 0x20;
message Ground {
required uint32 speed = 1;
}
message Writable {
required uint32 maxTextLength = 1;
}
message Readable {
required uint32 maxTextLength = 1;
}
message Light {
required uint32 level = 1;
required uint32 color = 2;
}
message DrawOffset {
required uint32 xOffset = 1;
required uint32 yOffset = 2;
}
message Height {
required uint32 drawHeight = 1;
}
message MinimapColor {
required uint32 color = 1;
}
message FloorChange {
//big to hold the description..
required uint32 openableHole86canBeUsedToGoDown77canBeUsedToGoUp76stairsUp82switch79 = 1;
required uint32 thisMustAlwaysReturn4 = 2;
}
}
However, this made got some exceptions after using the generated file from the protobuf compiler, such this:
Code:
Exception in thread "main" com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.
Then, someone can help fix this or even present me the real 8.6 dat structure?
Thanks in advance!