proto enum refactorings

no pro crowd any more...
This commit is contained in:
Юрий Першин
2022-02-21 15:35:42 +05:00
parent 914ca896cd
commit 4b8c3deb1f
19 changed files with 508 additions and 454 deletions

View File

@@ -25,21 +25,21 @@ message ClubAttribution {
message Activity {
optional uint64 id = 1;
required uint64 player_id = 2;
required uint64 f3 = 3; /* world_id or player_type_id */
required uint64 f3 = 3; // world_id or player_type_id
required string name = 4;
optional string f5 = 5;
//optional bool f6 = 6;
required string start_date = 7;
optional string end_date = 8;
optional float distance = 9; /* in meters */
optional float distance = 9; // in meters
optional float avg_heart_rate = 10;
optional float max_heart_rate = 11;
optional float avg_watts = 12;
optional float max_watts = 13;
optional float avg_cadence = 14;
optional float max_cadence = 15;
optional float avg_speed = 16; /* in m/s */
optional float max_speed = 17; /* in m/s */
optional float avg_speed = 16; // in m/s
optional float max_speed = 17; // in m/s
optional float calories = 18;
optional float total_elevation = 19;
optional uint32 strava_upload_id = 20;

View File

@@ -1,5 +1,6 @@
syntax = "proto2";
//All decompiled
import "profile.proto"; //enums PlayerType and Sport
message EventSubgroupProtobuf {
required uint64 id = 1; // 2395269
optional string description = 2; // "3R True2 Steady Ride [2.0w/kg avg] (C)"
@@ -26,7 +27,7 @@ message EventSubgroupProtobuf {
repeated uint64 leaders = 23; // or sweepers? tag440
optional fixed32 f24 = 24; //tag453
optional uint32 laps = 25; // 0, tag456
/* no 26-28 */
// no 26-28
optional uint32 startLocation = 29; // 13, tag488
optional uint32 label = 30; // 3, tag496
optional uint32 paceType = 31; // 1, tag504
@@ -94,7 +95,7 @@ message Event { //real name: EventProtobuf
optional string f19 = 19;
optional string f20 = 20;
optional string f21 = 21;
optional uint32 f22 = 22; //sport
optional Sport sport = 22;
optional uint64 f23 = 23;
optional uint32 f24 = 24;
optional uint64 f25 = 25;

View File

@@ -12,9 +12,10 @@ from google.protobuf import symbol_database as _symbol_database
_sym_db = _symbol_database.Default()
import profile_pb2 as profile__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x65vents.proto\"\xc6\x06\n\x15\x45ventSubgroupProtobuf\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\n\n\x02\x66\x33\x18\x03 \x01(\t\x12\n\n\x02\x66\x34\x18\x04 \x01(\r\x12\n\n\x02\x66\x35\x18\x05 \x01(\r\x12\n\n\x02\x66\x36\x18\x06 \x01(\r\x12\n\n\x02\x66\x37\x18\x07 \x01(\t\x12\x10\n\x08rules_id\x18\x08 \x01(\x04\x12\x19\n\x11registrationStart\x18\t \x01(\x04\x12\x1b\n\x13registrationStartWT\x18\n \x01(\x04\x12\x17\n\x0fregistrationEnd\x18\x0b \x01(\x04\x12\x19\n\x11registrationEndWT\x18\x0c \x01(\x04\x12\x13\n\x0blineUpStart\x18\r \x01(\x04\x12\x15\n\rlineUpStartWT\x18\x0e \x01(\x04\x12\x11\n\tlineUpEnd\x18\x0f \x01(\x04\x12\x13\n\x0blineUpEndWT\x18\x10 \x01(\x04\x12\x1a\n\x12\x65ventSubgroupStart\x18\x11 \x01(\x04\x12\x1c\n\x14\x65ventSubgroupStartWT\x18\x12 \x01(\x04\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\x04\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\x04\x12\x0b\n\x03\x66\x32\x31\x18\x15 \x01(\x08\x12\x10\n\x08route_id\x18\x16 \x02(\x04\x12\x0f\n\x07leaders\x18\x17 \x03(\x04\x12\x0b\n\x03\x66\x32\x34\x18\x18 \x01(\x07\x12\x0c\n\x04laps\x18\x19 \x01(\r\x12\x15\n\rstartLocation\x18\x1d \x01(\r\x12\r\n\x05label\x18\x1e \x01(\r\x12\x10\n\x08paceType\x18\x1f \x01(\r\x12\x0b\n\x03\x66\x33\x32\x18 \x01(\x07\x12\x0b\n\x03\x66\x33\x33\x18! \x01(\x07\x12\x10\n\x08\x64uration\x18\" \x01(\r\x12\x0b\n\x03\x66\x33\x35\x18# \x01(\r\x12\x12\n\njerseyHash\x18$ \x01(\x04\x12\x0b\n\x03\x66\x33\x37\x18% \x01(\x08\x12\x0b\n\x03\x66\x33\x38\x18& \x01(\x04\x12\r\n\x05\x61udio\x18\' \x01(\t\x12\x0b\n\x03\x66\x34\x30\x18( \x01(\x04\x12\x10\n\x08sweepers\x18) \x03(\x04\x12\x0b\n\x03\x66\x34\x32\x18* \x01(\x04\x12\x0b\n\x03\x66\x34\x33\x18+ \x01(\t\x12\x0b\n\x03\x66\x34\x34\x18, \x01(\x08\x12\x0c\n\x04tags\x18- \x01(\t\x12\x19\n\x11lateJoinInMinutes\x18. \x01(\r\x12\x0e\n\x06map_id\x18/ \x01(\x04\x12\x0b\n\x03\x66\x34\x38\x18\x30 \x01(\r\x12\x0b\n\x03\x66\x34\x39\x18\x31 \x01(\t\x12\x0b\n\x03\x66\x35\x30\x18\x32 \x03(\x05\x12\x0b\n\x03\x66\x35\x31\x18\x33 \x01(\x08\";\n\x15MicroserviceEventData\x12\n\n\x02\x66\x31\x18\x01 \x01(\t\x12\n\n\x02\x66\x32\x18\x02 \x01(\t\x12\n\n\x02\x66\x33\x18\x03 \x01(\x04\"9\n\x13\x45ventSeriesProtobuf\x12\n\n\x02\x66\x31\x18\x01 \x01(\x04\x12\n\n\x02\x66\x32\x18\x02 \x01(\t\x12\n\n\x02\x66\x33\x18\x03 \x01(\t\"S\n\x15\x45ventTimeTrialOptions\x12\n\n\x02\x66\x31\x18\x01 \x01(\r\x12\n\n\x02\x66\x32\x18\x02 \x01(\r\x12\n\n\x02\x66\x33\x18\x03 \x01(\r\x12\n\n\x02\x66\x34\x18\x04 \x01(\r\x12\n\n\x02\x66\x35\x18\x05 \x01(\x04\"\xb7\x05\n\x05\x45vent\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x10\n\x08world_id\x18\x02 \x01(\r\x12\r\n\x05title\x18\x03 \x02(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x12\n\neventStart\x18\x05 \x01(\x04\x12\n\n\x02\x66\x36\x18\x06 \x01(\t\x12\n\n\x02\x66\x37\x18\x07 \x01(\x07\x12\x0c\n\x04laps\x18\x08 \x01(\r\x12\n\n\x02\x66\x39\x18\t \x01(\r\x12(\n\x08\x63\x61tegory\x18\n \x03(\x0b\x32\x16.EventSubgroupProtobuf\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\t\x12\x0f\n\x07pic_url\x18\x0c \x01(\t\x12\x10\n\x08\x64uration\x18\r \x01(\r\x12\x10\n\x08route_id\x18\x0e \x01(\x04\x12\x10\n\x08rules_id\x18\x0f \x01(\x04\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\r\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\x08\x12\x0b\n\x03\x66\x31\x38\x18\x12 \x01(\x04\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\t\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\t\x12\x0b\n\x03\x66\x32\x31\x18\x15 \x01(\t\x12\x0b\n\x03\x66\x32\x32\x18\x16 \x01(\r\x12\x0b\n\x03\x66\x32\x33\x18\x17 \x01(\x04\x12\x0b\n\x03\x66\x32\x34\x18\x18 \x01(\r\x12\x0b\n\x03\x66\x32\x35\x18\x19 \x01(\x04\x12\x0b\n\x03\x66\x32\x36\x18\x1a \x01(\t\x12\x0b\n\x03\x66\x32\x37\x18\x1b \x01(\r\x12\x0b\n\x03\x66\x32\x38\x18\x1c \x01(\x08\x12\x0b\n\x03\x66\x32\x39\x18\x1d \x01(\x08\x12!\n\x03\x66\x33\x30\x18\x1e \x01(\x0b\x32\x14.EventSeriesProtobuf\x12\x0c\n\x04tags\x18\x1f \x01(\t\x12\x0b\n\x03\x66\x33\x32\x18 \x01(\x04\x12\x0b\n\x03\x66\x33\x33\x18! \x01(\x08\x12\x19\n\x11lateJoinInMinutes\x18\" \x01(\r\x12\x0e\n\x06map_id\x18# \x01(\x04\x12#\n\x03\x66\x33\x36\x18$ \x01(\x0b\x32\x16.EventTimeTrialOptions\x12\x0b\n\x03\x66\x33\x37\x18% \x01(\t\x12\x0b\n\x03\x66\x33\x38\x18& \x01(\t\x12\x0b\n\x03\x66\x33\x39\x18\' \x01(\r\x12#\n\x03\x66\x34\x30\x18( \x01(\x0b\x32\x16.MicroserviceEventData\x12\x0b\n\x03\x66\x34\x31\x18) \x03(\r\" \n\x06\x45vents\x12\x16\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x06.Event')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x65vents.proto\x1a\rprofile.proto\"\xc6\x06\n\x15\x45ventSubgroupProtobuf\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\n\n\x02\x66\x33\x18\x03 \x01(\t\x12\n\n\x02\x66\x34\x18\x04 \x01(\r\x12\n\n\x02\x66\x35\x18\x05 \x01(\r\x12\n\n\x02\x66\x36\x18\x06 \x01(\r\x12\n\n\x02\x66\x37\x18\x07 \x01(\t\x12\x10\n\x08rules_id\x18\x08 \x01(\x04\x12\x19\n\x11registrationStart\x18\t \x01(\x04\x12\x1b\n\x13registrationStartWT\x18\n \x01(\x04\x12\x17\n\x0fregistrationEnd\x18\x0b \x01(\x04\x12\x19\n\x11registrationEndWT\x18\x0c \x01(\x04\x12\x13\n\x0blineUpStart\x18\r \x01(\x04\x12\x15\n\rlineUpStartWT\x18\x0e \x01(\x04\x12\x11\n\tlineUpEnd\x18\x0f \x01(\x04\x12\x13\n\x0blineUpEndWT\x18\x10 \x01(\x04\x12\x1a\n\x12\x65ventSubgroupStart\x18\x11 \x01(\x04\x12\x1c\n\x14\x65ventSubgroupStartWT\x18\x12 \x01(\x04\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\x04\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\x04\x12\x0b\n\x03\x66\x32\x31\x18\x15 \x01(\x08\x12\x10\n\x08route_id\x18\x16 \x02(\x04\x12\x0f\n\x07leaders\x18\x17 \x03(\x04\x12\x0b\n\x03\x66\x32\x34\x18\x18 \x01(\x07\x12\x0c\n\x04laps\x18\x19 \x01(\r\x12\x15\n\rstartLocation\x18\x1d \x01(\r\x12\r\n\x05label\x18\x1e \x01(\r\x12\x10\n\x08paceType\x18\x1f \x01(\r\x12\x0b\n\x03\x66\x33\x32\x18 \x01(\x07\x12\x0b\n\x03\x66\x33\x33\x18! \x01(\x07\x12\x10\n\x08\x64uration\x18\" \x01(\r\x12\x0b\n\x03\x66\x33\x35\x18# \x01(\r\x12\x12\n\njerseyHash\x18$ \x01(\x04\x12\x0b\n\x03\x66\x33\x37\x18% \x01(\x08\x12\x0b\n\x03\x66\x33\x38\x18& \x01(\x04\x12\r\n\x05\x61udio\x18\' \x01(\t\x12\x0b\n\x03\x66\x34\x30\x18( \x01(\x04\x12\x10\n\x08sweepers\x18) \x03(\x04\x12\x0b\n\x03\x66\x34\x32\x18* \x01(\x04\x12\x0b\n\x03\x66\x34\x33\x18+ \x01(\t\x12\x0b\n\x03\x66\x34\x34\x18, \x01(\x08\x12\x0c\n\x04tags\x18- \x01(\t\x12\x19\n\x11lateJoinInMinutes\x18. \x01(\r\x12\x0e\n\x06map_id\x18/ \x01(\x04\x12\x0b\n\x03\x66\x34\x38\x18\x30 \x01(\r\x12\x0b\n\x03\x66\x34\x39\x18\x31 \x01(\t\x12\x0b\n\x03\x66\x35\x30\x18\x32 \x03(\x05\x12\x0b\n\x03\x66\x35\x31\x18\x33 \x01(\x08\";\n\x15MicroserviceEventData\x12\n\n\x02\x66\x31\x18\x01 \x01(\t\x12\n\n\x02\x66\x32\x18\x02 \x01(\t\x12\n\n\x02\x66\x33\x18\x03 \x01(\x04\"9\n\x13\x45ventSeriesProtobuf\x12\n\n\x02\x66\x31\x18\x01 \x01(\x04\x12\n\n\x02\x66\x32\x18\x02 \x01(\t\x12\n\n\x02\x66\x33\x18\x03 \x01(\t\"S\n\x15\x45ventTimeTrialOptions\x12\n\n\x02\x66\x31\x18\x01 \x01(\r\x12\n\n\x02\x66\x32\x18\x02 \x01(\r\x12\n\n\x02\x66\x33\x18\x03 \x01(\r\x12\n\n\x02\x66\x34\x18\x04 \x01(\r\x12\n\n\x02\x66\x35\x18\x05 \x01(\x04\"\xc1\x05\n\x05\x45vent\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x10\n\x08world_id\x18\x02 \x01(\r\x12\r\n\x05title\x18\x03 \x02(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x12\n\neventStart\x18\x05 \x01(\x04\x12\n\n\x02\x66\x36\x18\x06 \x01(\t\x12\n\n\x02\x66\x37\x18\x07 \x01(\x07\x12\x0c\n\x04laps\x18\x08 \x01(\r\x12\n\n\x02\x66\x39\x18\t \x01(\r\x12(\n\x08\x63\x61tegory\x18\n \x03(\x0b\x32\x16.EventSubgroupProtobuf\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\t\x12\x0f\n\x07pic_url\x18\x0c \x01(\t\x12\x10\n\x08\x64uration\x18\r \x01(\r\x12\x10\n\x08route_id\x18\x0e \x01(\x04\x12\x10\n\x08rules_id\x18\x0f \x01(\x04\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\r\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\x08\x12\x0b\n\x03\x66\x31\x38\x18\x12 \x01(\x04\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\t\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\t\x12\x0b\n\x03\x66\x32\x31\x18\x15 \x01(\t\x12\x15\n\x05sport\x18\x16 \x01(\x0e\x32\x06.Sport\x12\x0b\n\x03\x66\x32\x33\x18\x17 \x01(\x04\x12\x0b\n\x03\x66\x32\x34\x18\x18 \x01(\r\x12\x0b\n\x03\x66\x32\x35\x18\x19 \x01(\x04\x12\x0b\n\x03\x66\x32\x36\x18\x1a \x01(\t\x12\x0b\n\x03\x66\x32\x37\x18\x1b \x01(\r\x12\x0b\n\x03\x66\x32\x38\x18\x1c \x01(\x08\x12\x0b\n\x03\x66\x32\x39\x18\x1d \x01(\x08\x12!\n\x03\x66\x33\x30\x18\x1e \x01(\x0b\x32\x14.EventSeriesProtobuf\x12\x0c\n\x04tags\x18\x1f \x01(\t\x12\x0b\n\x03\x66\x33\x32\x18 \x01(\x04\x12\x0b\n\x03\x66\x33\x33\x18! \x01(\x08\x12\x19\n\x11lateJoinInMinutes\x18\" \x01(\r\x12\x0e\n\x06map_id\x18# \x01(\x04\x12#\n\x03\x66\x33\x36\x18$ \x01(\x0b\x32\x16.EventTimeTrialOptions\x12\x0b\n\x03\x66\x33\x37\x18% \x01(\t\x12\x0b\n\x03\x66\x33\x38\x18& \x01(\t\x12\x0b\n\x03\x66\x33\x39\x18\' \x01(\r\x12#\n\x03\x66\x34\x30\x18( \x01(\x0b\x32\x16.MicroserviceEventData\x12\x0b\n\x03\x66\x34\x31\x18) \x03(\r\" \n\x06\x45vents\x12\x16\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x06.Event')
@@ -69,16 +70,16 @@ _sym_db.RegisterMessage(Events)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_EVENTSUBGROUPPROTOBUF._serialized_start=17
_EVENTSUBGROUPPROTOBUF._serialized_end=855
_MICROSERVICEEVENTDATA._serialized_start=857
_MICROSERVICEEVENTDATA._serialized_end=916
_EVENTSERIESPROTOBUF._serialized_start=918
_EVENTSERIESPROTOBUF._serialized_end=975
_EVENTTIMETRIALOPTIONS._serialized_start=977
_EVENTTIMETRIALOPTIONS._serialized_end=1060
_EVENT._serialized_start=1063
_EVENT._serialized_end=1758
_EVENTS._serialized_start=1760
_EVENTS._serialized_end=1792
_EVENTSUBGROUPPROTOBUF._serialized_start=32
_EVENTSUBGROUPPROTOBUF._serialized_end=870
_MICROSERVICEEVENTDATA._serialized_start=872
_MICROSERVICEEVENTDATA._serialized_end=931
_EVENTSERIESPROTOBUF._serialized_start=933
_EVENTSERIESPROTOBUF._serialized_end=990
_EVENTTIMETRIALOPTIONS._serialized_start=992
_EVENTTIMETRIALOPTIONS._serialized_end=1075
_EVENT._serialized_start=1078
_EVENT._serialized_end=1783
_EVENTS._serialized_start=1785
_EVENTS._serialized_end=1817
# @@protoc_insertion_point(module_scope)

View File

@@ -1,20 +1,20 @@
syntax = "proto2";
//All decompiled. TODO: uncomment and use f14
//TODO: uncomment and use f14, rename fields in db
message Goal {
optional uint64 id = 1;
optional uint64 player_id = 2;
optional int64 f3 = 3; /* TODO: rename to sport; int64 on wire, stored as int32 */
optional int64 f3 = 3; //-> enum Sport sport
optional string name = 4; // i.e. "Monthly time goal"
optional int64 type = 5; /* 0=distance, 1=time; int64 on wire, stored as int32 */
optional int64 periodicity = 6; /* 0=weekly, 1=monthly; int64 on wire, stored as int32 */
optional float target_distance = 7; /* in meters. set to dur for dur goals */
optional float target_duration = 8; /* in minutes. set to dist for dist goals */
optional float actual_distance = 9; /* in meters. is also set for dur goals? */
optional float actual_duration = 10; /* in minutes. is also set for dist goals? */
optional uint64 created_on = 11; /* in ms since epoch */
optional int64 type = 5; //-> enum GoalType 0=distance, 1=time
optional int64 periodicity = 6; //-> enum GoalPeriod 0=weekly, 1=monthly
optional float target_distance = 7; //in meters. set to dur for dur goals
optional float target_duration = 8; //in minutes. set to dist for dist goals
optional float actual_distance = 9; //in meters. is also set for dur goals?
optional float actual_duration = 10; //in minutes. is also set for dist goals?
optional uint64 created_on = 11; //in ms since epoch
optional uint64 period_end_date = 12;
optional uint64 f13 = 13; /* TODO: rename to status (0=active, 1=retired); int64 on wire, stored as int32 */
//optional string f14 = 14; /* TODO: find usage: GoalsManager? */
optional uint64 f13 = 13; //-> enum GoalStatus 0=active, 1=retired
//optional string f14 = 14; // TODO: find usage: GoalsManager?
}
message Goals {

View File

@@ -1,5 +1,4 @@
syntax = "proto2";
//All decompiled. TODO: check
message HashSeed {
required uint32 seed1 = 1;
required uint32 seed2 = 2;

View File

@@ -1,6 +1,5 @@
syntax = "proto2";
/* XXX: This is a first approximation of login response. Not looked into or verified. */
//All decompiled.
import "per-session-info.proto";
message LoginResponse {

View File

@@ -1,5 +1,4 @@
syntax = "proto2";
// All decompiled.
message TcpAddress {
optional string ip = 1;
optional int32 port = 2;
@@ -8,7 +7,7 @@ message TcpAddress {
}
message TcpConfig {
/* First server: the TCP telemetry server (34.218.60.145) */
//First server: the TCP telemetry server (34.218.60.145)
repeated TcpAddress nodes = 1;
}

View File

@@ -1,5 +1,5 @@
syntax = "proto2";
//TODO: check if PeriodicInfo is TcpAddress
//TODO: check if used
message PeriodicInfo { // very similar to TcpAddress, did not found in ZwiftApp.exe yet
required string game_server_ip = 1;
optional uint32 f2 = 2;

View File

@@ -1,299 +1,296 @@
syntax = "proto2";
//All decompiled. TODO: answer ??? questions and saved_game format (zwift_profile.ksy)
message AchievementEntry { // name from Zwift debug info
required int32 id = 1;
//TODO: answer ??? questions and saved_game format (zwift_profile.ksy)
enum Sport {
CYCLING = 0;
RUNNING = 1;
ROWING = 2;
SPORT3 = 3;
SPORT4 = 4;
}
enum PlayerType {
PLAYERTYPE0 = 0;
NORMAL = 1;
PRO_CYCLIST = 2;
ZWIFT_STAFF = 3;
AMBASSADOR = 4;
VERIFIED = 5;
ZED = 6;
ZAC = 7;
PRO_TRIATHLETE = 8;
PRO_RUNNER = 9;
}
message AchievementEntry {
required int32 id = 1;
}
message Achievements {
repeated AchievementEntry achievements = 1;
repeated AchievementEntry achievements = 1;
}
message Profile { // should be renamed (name from Zwift debug info: PlayerProfile)
optional int64 id = 1;
optional int64 world_id = 2;
optional string email = 3;
optional string first_name = 4;
optional string last_name = 5;
optional bool is_male = 6;
optional string f7 = 7; //??? empty
/* no f8 exists */
optional uint32 weight_in_grams = 9;
optional uint32 ftp = 10;
optional uint32 f11 = 11; //??? empty
optional uint32 body_type = 12;
optional uint32 hair_type = 13;
optional uint32 facial_hair_type = 14;
optional uint32 ride_helmet_type = 15;
optional uint32 glasses_type = 16;
optional uint32 ride_shoes_type = 17;
optional uint32 ride_socks_type = 18;
optional uint32 ride_gloves = 19;
optional fixed32 ride_jersey = 20;
optional fixed32 f21 = 21; //??? empty
optional fixed32 bike_wheel_front = 22;
optional fixed32 bike_wheel_rear = 23;
optional fixed32 bike_frame = 24;
optional fixed32 f25 = 25; //??? empty
optional fixed32 f26 = 26; //??? empty
optional fixed64 bike_frame_colour = 27;
optional fixed64 f28 = 28; //??? empty
optional fixed64 f29 = 29; //??? empty
optional fixed64 f30 = 30; //??? empty
optional fixed64 f31 = 31; //??? empty
optional fixed64 f32 = 32; //??? empty
optional bytes saved_game = 33; //for format look at zwift_profile.ksy
optional uint32 country_code = 34;
optional uint32 total_distance_in_meters = 35;
optional uint32 elevation_gain_in_meters = 36;
optional uint32 time_ridden_in_minutes = 37;
optional uint32 total_in_kom_jersey = 38;
optional uint32 total_in_sprinters_jersey = 39;
optional uint32 total_in_orange_jersey = 40;
optional uint32 total_watt_hours = 41; // = calories * 0.3256381927080305
optional uint32 height_in_millimeters = 42;
optional string dob = 43;
optional uint32 max_heart_rate = 44;
optional bool connected_to_strava = 45;
optional uint32 total_xp = 46;
optional uint32 total_gold_drops = 47;
optional PlayerType player_type = 48;
enum PlayerType {
PLAYERTYPE0 = 0;
NORMAL = 1;
PRO_CYCLIST = 2;
ZWIFT_STAFF = 3;
AMBASSADOR = 4;
VERIFIED = 5;
ZED = 6;
ZAC = 7;
PRO_TRIATHLETE = 8;
PRO_RUNNER = 9;
}
optional uint32 achievement_level = 49;
optional bool use_metric = 50;
optional bool strava_premium = 51;
optional uint32 power_source_model = 52;
optional uint32 f53 = 53; //??? empty
optional uint32 f54 = 54; //??? empty
optional uint32 age = 55;
optional fixed32 f56 = 56; //??? empty
optional uint32 f57 = 57; //??? empty
optional string large_avatar_url = 58;
optional fixed64 privacy_bits = 59;
repeated ProfileEntitlement entitlements = 60;
optional SocialFacts social_facts = 61;
message SocialFacts {
optional int64 profile_id = 1;
optional int32 followers_count = 2;
optional int32 followees_count = 3;
optional int32 followees_in_common_with_logged_in_player = 4;
optional FollowStatus follower_status_of_logged_in_player = 5;
optional FollowStatus followee_status_of_logged_in_player = 6;
optional bool is_favorite_of_logged_in_player = 7;
}
optional FollowStatus follow_status = 62;
optional bool connected_to_training_peaks = 63;
optional bool connected_to_todays_plan = 64;
optional EnrolledProgram enrolled_program = 65;
enum EnrolledProgram {
ENROLLEDPROGRAM0 = 0;
ZWIFT_ACADEMY = 1;
ENROLLEDPROGRAM2 = 2;
ENROLLEDPROGRAM3 = 3;
ENROLLEDPROGRAM4 = 4;
}
optional string todayplan_url = 66;
optional uint32 f67 = 67; //??? empty
optional fixed32 run_shirt_type = 68;
optional fixed32 run_shorts_type = 69;
optional fixed32 run_shoes_type = 70;
optional fixed32 run_socks_type = 71;
optional fixed32 run_helmet_type = 72;
optional fixed32 run_arm_accessory = 73;
optional uint32 total_run_distance = 74;
optional uint32 total_run_experience_points = 75;
optional fixed32 f76 = 76; //??? empty
optional fixed32 f77 = 77; //??? empty
optional fixed32 f78 = 78; //??? empty
optional fixed32 f79 = 79; //??? empty
optional uint32 f80 = 80; //??? empty
optional uint32 f81 = 81; //??? empty
optional Subscription subscription = 82;
enum Sport {
CYCLING = 0;
RUNNING = 1;
ROWING = 2;
SPORT3 = 3;
SPORT4 = 4;
}
optional string mix_panel_distinct_id = 83;
optional uint32 run_achievement_level = 84;
optional uint32 total_run_time_in_minutes = 85;
optional Sport sport = 86;
optional uint32 utc_offset_in_minutes = 87;
optional bool connected_to_under_armour = 88;
optional string preferred_language = 89;
optional uint32 hair_colour = 90;
optional uint32 facial_hair_colour = 91;
optional uint32 f92 = 92; //??? empty
optional uint32 f93 = 93; //??? empty
optional uint32 run_shorts_length = 94;
optional uint32 f95 = 95; //??? empty
optional uint32 run_socks_length = 96;
optional uint32 f97 = 97; //??? empty
optional uint32 ride_socks_length = 98;
optional uint32 f99 = 99; //??? empty
optional uint32 f100 = 100; //??? empty
optional uint32 f101 = 101; //??? empty
optional uint32 f102 = 102; //??? empty
optional uint32 f103 = 103; //??? empty
optional uint32 f104 = 104; //??? empty
optional bool connected_to_withings = 105;
optional bool connected_to_fitbit = 106;
/* no 107 repeated bytes */
optional string launched_game_client = 108;
optional int64 current_activity_id = 109;
optional bool connected_to_garmin = 110;
message Reminder {
optional int64 f1 = 1;
optional string f2 = 2;
optional int64 f3 = 3;
message ReminderProperty {
optional int64 f1 = 1;
optional string f2 = 2;
optional string f3 = 3;
}
repeated ReminderProperty f4 = 4;
}
repeated Reminder reminders = 111;
optional bool f112 = 112; //??? empty
repeated Attribute private_attributes = 113;
repeated Attribute public_attributes = 114;
optional int32 total_run_calories = 115;
optional int64 f116 = 116; //??? empty
optional int32 run_time_1mi_in_seconds = 117;
optional int32 run_time_5km_in_seconds = 118;
optional int32 run_time_10km_in_seconds = 119;
optional int32 run_time_half_marathon_in_seconds = 120;
optional int32 run_time_full_marathon_in_seconds = 121;
optional int32 f122 = 122; //??? empty
enum CyclingOrganization {
NO_CYCLING_LICENSE = 0;
CYCLING_SOUTH_AFRICA = 1;
CYCLING_AUSTRALIA = 2;
CYCLING_NEW_ZEALAND = 3;
}
optional CyclingOrganization cycling_organization = 123;
optional string f124 = 124; /* org name? */
enum ActivityPrivacyType {
PUBLIC = 0;
PRIVATE = 1;
FRIENDS = 2;
}
optional ActivityPrivacyType default_activity_privacy = 125;
optional bool connected_to_runtastic = 126;
repeated PropertyChange property_changes = 127;
message PlayerProfile {
optional int64 id = 1;
optional int64 world_id = 2;
optional string email = 3;
optional string first_name = 4;
optional string last_name = 5;
optional bool is_male = 6;
optional string f7 = 7; //??? empty
// no f8 exists
optional uint32 weight_in_grams = 9;
optional uint32 ftp = 10;
optional uint32 f11 = 11; //??? empty
optional uint32 body_type = 12;
optional uint32 hair_type = 13;
optional uint32 facial_hair_type = 14;
optional uint32 ride_helmet_type = 15;
optional uint32 glasses_type = 16;
optional uint32 ride_shoes_type = 17;
optional uint32 ride_socks_type = 18;
optional uint32 ride_gloves = 19;
optional fixed32 ride_jersey = 20;
optional fixed32 f21 = 21; //??? empty
optional fixed32 bike_wheel_front = 22;
optional fixed32 bike_wheel_rear = 23;
optional fixed32 bike_frame = 24;
optional fixed32 f25 = 25; //??? empty
optional fixed32 f26 = 26; //??? empty
optional fixed64 bike_frame_colour = 27;
optional fixed64 f28 = 28; //??? empty
optional fixed64 f29 = 29; //??? empty
optional fixed64 f30 = 30; //??? empty
optional fixed64 f31 = 31; //??? empty
optional fixed64 f32 = 32; //??? empty
optional bytes saved_game = 33; //for format look at zwift_profile.ksy
optional uint32 country_code = 34;
optional uint32 total_distance_in_meters = 35;
optional uint32 elevation_gain_in_meters = 36;
optional uint32 time_ridden_in_minutes = 37;
optional uint32 total_in_kom_jersey = 38;
optional uint32 total_in_sprinters_jersey = 39;
optional uint32 total_in_orange_jersey = 40;
optional uint32 total_watt_hours = 41; // = calories * 0.3256381927080305
optional uint32 height_in_millimeters = 42;
optional string dob = 43;
optional uint32 max_heart_rate = 44;
optional bool connected_to_strava = 45;
optional uint32 total_xp = 46;
optional uint32 total_gold_drops = 47;
optional PlayerType player_type = 48;
optional uint32 achievement_level = 49;
optional bool use_metric = 50;
optional bool strava_premium = 51;
optional uint32 power_source_model = 52;
optional uint32 f53 = 53; //??? empty
optional uint32 f54 = 54; //??? empty
optional uint32 age = 55;
optional fixed32 f56 = 56; //??? empty
optional uint32 f57 = 57; //??? empty
optional string large_avatar_url = 58;
optional fixed64 privacy_bits = 59;
repeated ProfileEntitlement entitlements = 60;
optional SocialFacts social_facts = 61;
message SocialFacts {
optional int64 profile_id = 1;
optional int32 followers_count = 2;
optional int32 followees_count = 3;
optional int32 followees_in_common_with_logged_in_player = 4;
optional FollowStatus follower_status_of_logged_in_player = 5;
optional FollowStatus followee_status_of_logged_in_player = 6;
optional bool is_favorite_of_logged_in_player = 7;
}
optional FollowStatus follow_status = 62;
optional bool connected_to_training_peaks = 63;
optional bool connected_to_todays_plan = 64;
optional EnrolledProgram enrolled_program = 65;
enum EnrolledProgram {
ENROLLEDPROGRAM0 = 0;
ZWIFT_ACADEMY = 1;
ENROLLEDPROGRAM2 = 2;
ENROLLEDPROGRAM3 = 3;
ENROLLEDPROGRAM4 = 4;
}
optional string todayplan_url = 66;
optional uint32 f67 = 67; //??? empty
optional fixed32 run_shirt_type = 68;
optional fixed32 run_shorts_type = 69;
optional fixed32 run_shoes_type = 70;
optional fixed32 run_socks_type = 71;
optional fixed32 run_helmet_type = 72;
optional fixed32 run_arm_accessory = 73;
optional uint32 total_run_distance = 74;
optional uint32 total_run_experience_points = 75;
optional fixed32 f76 = 76; //??? empty
optional fixed32 f77 = 77; //??? empty
optional fixed32 f78 = 78; //??? empty
optional fixed32 f79 = 79; //??? empty
optional uint32 f80 = 80; //??? empty
optional uint32 f81 = 81; //??? empty
optional Subscription subscription = 82;
optional string mix_panel_distinct_id = 83;
optional uint32 run_achievement_level = 84;
optional uint32 total_run_time_in_minutes = 85;
optional Sport sport = 86;
optional uint32 utc_offset_in_minutes = 87;
optional bool connected_to_under_armour = 88;
optional string preferred_language = 89;
optional uint32 hair_colour = 90;
optional uint32 facial_hair_colour = 91;
optional uint32 f92 = 92; //??? empty
optional uint32 f93 = 93; //??? empty
optional uint32 run_shorts_length = 94;
optional uint32 f95 = 95; //??? empty
optional uint32 run_socks_length = 96;
optional uint32 f97 = 97; //??? empty
optional uint32 ride_socks_length = 98;
optional uint32 f99 = 99; //??? empty
optional uint32 f100 = 100; //??? empty
optional uint32 f101 = 101; //??? empty
optional uint32 f102 = 102; //??? empty
optional uint32 f103 = 103; //??? empty
optional uint32 f104 = 104; //??? empty
optional bool connected_to_withings = 105;
optional bool connected_to_fitbit = 106;
// no 107 repeated bytes
optional string launched_game_client = 108;
optional int64 current_activity_id = 109;
optional bool connected_to_garmin = 110;
message Reminder {
optional int64 f1 = 1;
optional string f2 = 2;
optional int64 f3 = 3;
message ReminderProperty {
optional int64 f1 = 1;
optional string f2 = 2;
optional string f3 = 3;
}
repeated ReminderProperty f4 = 4;
}
repeated Reminder reminders = 111;
optional bool f112 = 112; //??? empty
repeated Attribute private_attributes = 113;
repeated Attribute public_attributes = 114;
optional int32 total_run_calories = 115;
optional int64 f116 = 116; //??? empty
optional int32 run_time_1mi_in_seconds = 117;
optional int32 run_time_5km_in_seconds = 118;
optional int32 run_time_10km_in_seconds = 119;
optional int32 run_time_half_marathon_in_seconds = 120;
optional int32 run_time_full_marathon_in_seconds = 121;
optional int32 f122 = 122; //??? empty
enum CyclingOrganization {
NO_CYCLING_LICENSE = 0;
CYCLING_SOUTH_AFRICA = 1;
CYCLING_AUSTRALIA = 2;
CYCLING_NEW_ZEALAND = 3;
}
optional CyclingOrganization cycling_organization = 123;
optional string f124 = 124; // LICENSE_NUMBER/E_NUMBER
enum ActivityPrivacyType {
PUBLIC = 0;
PRIVATE = 1;
FRIENDS = 2;
}
optional ActivityPrivacyType default_activity_privacy = 125;
optional bool connected_to_runtastic = 126;
repeated PropertyChange property_changes = 127;
}
message Profiles {
repeated Profile profiles = 1;
message PlayerProfiles {
repeated PlayerProfile profiles = 1;
}
message ProfileEntitlement {
optional EntitlementType type = 1;
enum EntitlementType {
ENTITLEMENTTYPE0 = 0;
RIDE = 1;
RUN = 2;
ROW = 3;
USE = 4;
}
optional int64 f2 = 2; // always -1: legacy?
optional ProfileEntitlementStatus status = 3;
enum ProfileEntitlementStatus {
ENTITLEMENTSTATUS0 = 0;
EXPIRED = 1;
ACTIVE = 2;
CANCELED = 3;
INACTIVE = 4;
APPLIED_AS_SUBSCRIPTION_TRIAL_PERIOD = 5;
}
optional string period = 4; // 'P7D' = period of 7 days (Y, M also supported for year and month)
optional uint32 begin_time_unix = 5; //when period started
optional uint32 end_time_unix = 6; //when period ended
optional uint32 kilometers = 7; //25 every month
optional uint32 begin_total_distance = 8; //where every-month gift started
optional uint32 end_total_distance = 9; //where every-month gift should end
optional string source = 10; // for example, "strava.premium" ?
optional Platform platform = 11; // legacy?
enum Platform {
PLATFORM_OSX = 0;
PLATFORM_PC = 1;
PLATFORM_IOS = 2;
PLATFORM_ANDROID = 3;
PLATFORM_TVOS = 4;
PLATFORM5 = 5;
PLATFORM6 = 6;
}
optional uint32 renewal_date_unix = 12; //when next 25km gift renewed
optional bool new_trial_system = 13; //do not interrupt current track if trial ended
repeated Platform platforms = 14;
optional EntitlementType type = 1;
enum EntitlementType {
ENTITLEMENTTYPE0 = 0;
RIDE = 1;
RUN = 2;
ROW = 3;
USE = 4;
}
optional int64 f2 = 2; // always -1: legacy?
optional ProfileEntitlementStatus status = 3;
enum ProfileEntitlementStatus {
ENTITLEMENTSTATUS0 = 0;
EXPIRED = 1;
ACTIVE = 2;
CANCELED = 3;
INACTIVE = 4;
APPLIED_AS_SUBSCRIPTION_TRIAL_PERIOD = 5;
}
optional string period = 4; // 'P7D' = period of 7 days (Y, M also supported for year and month)
optional uint32 begin_time_unix = 5; //when period started
optional uint32 end_time_unix = 6; //when period ended
optional uint32 kilometers = 7; //25 every month
optional uint32 begin_total_distance = 8; //where every-month gift started
optional uint32 end_total_distance = 9; //where every-month gift should end
optional string source = 10; // for example, "strava.premium" ?
optional Platform platform = 11; // legacy?
enum Platform {
PLATFORM_OSX = 0;
PLATFORM_PC = 1;
PLATFORM_IOS = 2;
PLATFORM_ANDROID = 3;
PLATFORM_TVOS = 4;
PLATFORM5 = 5;
PLATFORM6 = 6;
}
optional uint32 renewal_date_unix = 12; //when next 25km gift renewed
optional bool new_trial_system = 13; //do not interrupt current track if trial ended
repeated Platform platforms = 14;
}
enum FollowStatus {
FOLLOWSTATUS0 = 0;
UNKNOWN = 1;
REQUESTS_TO_FOLLOW = 2;
IS_FOLLOWING = 3;
HAS_BEEN_DECLINED = 7;
IS_BLOCKED = 4;
NO_RELATIONSHIP = 5;
SELF = 6;
FOLLOWSTATUS0 = 0;
UNKNOWN = 1;
REQUESTS_TO_FOLLOW = 2;
IS_FOLLOWING = 3;
HAS_BEEN_DECLINED = 7;
IS_BLOCKED = 4;
NO_RELATIONSHIP = 5;
SELF = 6;
}
message Subscription {
optional Gateway gateway = 1;
enum Gateway {
BRAINTREE = 0;
APPLE = 1;
}
optional SubscriptionStatus status = 2;
enum SubscriptionStatus {
NEW = 0;
EXPIRED = 1;
ACTIVE = 2;
CANCELED = 3;
PAST_DUE = 4;
PENDING = 5;
SUBERROR = 6;
UNRECOGNIZED = 7;
UNKNOWN = 8;
ACTIVE_WITH_PAYMENT_FAILURE = 9;
ABANDONED = 10;
}
optional Gateway gateway = 1;
enum Gateway {
BRAINTREE = 0;
APPLE = 1;
}
optional SubscriptionStatus status = 2;
enum SubscriptionStatus {
NEW = 0;
EXPIRED = 1;
ACTIVE = 2;
CANCELED = 3;
PAST_DUE = 4;
PENDING = 5;
SUBERROR = 6;
UNRECOGNIZED = 7;
UNKNOWN = 8;
ACTIVE_WITH_PAYMENT_FAILURE = 9;
ABANDONED = 10;
}
}
message PropertyChange {
enum Id {
TYPE0 = 0;
DATE_OF_BIRTH = 1;
GENDER = 2;
}
required Id property_name = 1;
optional int32 change_count = 2;
optional int32 max_changes = 3;
enum Id {
TYPE0 = 0;
DATE_OF_BIRTH = 1;
GENDER = 2;
}
required Id property_name = 1;
optional int32 change_count = 2;
optional int32 max_changes = 3;
}
/*
Attribute ID is crc32 of it's name. Examples:
@@ -320,8 +317,8 @@ private
-1316403440="PACERBOTTUTORIAL" (1)
*/
message Attribute {
required int32 id = 1;
optional int64 number_value = 2;
optional float float_value = 3;
optional string string_value = 5;
required int32 id = 1;
optional int64 number_value = 2;
optional float float_value = 3;
optional string string_value = 5;
}

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,6 @@
syntax = "proto2";
//All decompiled. TODO: incorporate new fields
//import "profile.proto"; //enums PlayerType and Sport
//TODO: incorporate new fields, rename db fields
message SegmentResult {
optional uint64 id = 1;
required uint64 player_id = 2;
@@ -18,9 +19,9 @@ message SegmentResult {
optional uint32 f15 = 15; //avg_power
optional bool f16 = 16; //:= isMale
optional string f17 = 17; //ISO8601 time (magicLeaderboardBirthday := const @ ZNETWORK_Initialize)
optional uint64 f18 = 18; //TODO: enum PlayerType, stored as 32 bit
optional uint64 f18 = 18; //-> enum PlayerType player_type
optional uint32 f19 = 19; //avg_hr(ZNETWORK_RaceResultEntrySaveRequest):=m_computer.m_accumHeartRate/m_computer.m_accumTime @ZNETWORK_RegisterLocalPlayersSegmentResult (or 0.0)
optional uint64 f20 = 20; //TODO: enum Sport, stored as 32 bit
optional int64 f20 = 20; //-> enum Sport sport
//optional uint64 f21 = 21; //:=activityId (may be -1)
//optional bool f22 = 22;
//optional string f23 = 23;

View File

@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14segment-result.proto\"\xd2\x02\n\rSegmentResult\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\tplayer_id\x18\x02 \x02(\x04\x12\n\n\x02\x66\x33\x18\x03 \x01(\x04\x12\n\n\x02\x66\x34\x18\x04 \x01(\x04\x12\x12\n\nsegment_id\x18\x05 \x01(\x04\x12\x19\n\x11\x65vent_subgroup_id\x18\x06 \x01(\x04\x12\x12\n\nfirst_name\x18\x07 \x02(\t\x12\x11\n\tlast_name\x18\x08 \x02(\t\x12\x12\n\nworld_time\x18\t \x01(\x04\x12\x17\n\x0f\x66inish_time_str\x18\n \x01(\t\x12\x12\n\nelapsed_ms\x18\x0b \x02(\x04\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\x03\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\r\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\r\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x01(\r\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\x08\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\t\x12\x0b\n\x03\x66\x31\x38\x18\x12 \x01(\x04\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\r\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\x04\"z\n\x0eSegmentResults\x12\x10\n\x08world_id\x18\x01 \x02(\x04\x12\x12\n\nsegment_id\x18\x02 \x02(\x04\x12\x19\n\x11\x65vent_subgroup_id\x18\x03 \x01(\x04\x12\'\n\x0fsegment_results\x18\x04 \x03(\x0b\x32\x0e.SegmentResult')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14segment-result.proto\"\xd2\x02\n\rSegmentResult\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\tplayer_id\x18\x02 \x02(\x04\x12\n\n\x02\x66\x33\x18\x03 \x01(\x04\x12\n\n\x02\x66\x34\x18\x04 \x01(\x04\x12\x12\n\nsegment_id\x18\x05 \x01(\x04\x12\x19\n\x11\x65vent_subgroup_id\x18\x06 \x01(\x04\x12\x12\n\nfirst_name\x18\x07 \x02(\t\x12\x11\n\tlast_name\x18\x08 \x02(\t\x12\x12\n\nworld_time\x18\t \x01(\x04\x12\x17\n\x0f\x66inish_time_str\x18\n \x01(\t\x12\x12\n\nelapsed_ms\x18\x0b \x02(\x04\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\x03\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\r\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\r\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x01(\r\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\x08\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\t\x12\x0b\n\x03\x66\x31\x38\x18\x12 \x01(\x04\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\r\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\x03\"z\n\x0eSegmentResults\x12\x10\n\x08world_id\x18\x01 \x02(\x04\x12\x12\n\nsegment_id\x18\x02 \x02(\x04\x12\x19\n\x11\x65vent_subgroup_id\x18\x03 \x01(\x04\x12\'\n\x0fsegment_results\x18\x04 \x03(\x0b\x32\x0e.SegmentResult')

View File

@@ -1,25 +1,36 @@
syntax = "proto2";
// All decompiled. TODO: replace with originals, integrate enums and check
////////////////////////////////////////
// Initial TCP response below
////////////////////////////////////////
// Zwift companion protocol
//TODO: enum SocialPlayerActionType 0,1,2,3: SOCIAL_ACTION_UNKNOWN_TYPE=0, SOCIAL_TEXT_MESSAGE=1, SOCIAL_FLAG=3, SOCIAL_RIDE_ON=2
enum SocialPlayerActionType {
SOCIAL_ACTION_UNKNOWN_TYPE = 0;
SOCIAL_TEXT_MESSAGE = 1;
SOCIAL_RIDE_ON = 2;
SOCIAL_FLAG = 3;
}
enum FlagType {
FLAG_TYPE_UNKNOWN = 0;
FLAG_TYPE_HARASSMENT = 1;
FLAG_TYPE_FLIER = 2;
FLAG_TYPE_BAD_LANGUAGE = 3;
}
enum MessageGroupType {
MGT_UNKNOWN = 0;
MGT_GLOBAL = 1;
MGT_DIRECT = 2;
MGT_EVENT = 3;
MGT_CLUB = 4;
}
message SocialPlayerAction {
optional int64 player_id = 1;
optional int64 to_player_id = 2; // 0 if public message
optional int64 type = 3; // SocialPlayerActionType, stored as int32
optional SocialPlayerActionType spa_type = 3;
optional string firstName = 4;
optional string lastName = 5;
optional string message = 6;
optional string avatar = 7;
optional int32 countryCode = 8;
optional int64 flagType = 9; //stored as int32 FLAG_TYPE_BAD_LANGUAGE=3, FLAG_TYPE_FLIER=2, FLAG_TYPE_HARASSMENT=1
optional int64 mgType = 10; //enum MessageGroupType: CLUB=4, DIRECT=2, EVENT=3, GLOBAL=1, stored as int32
optional FlagType flagType = 9;
optional MessageGroupType mgType = 10;
optional int64 eventSubgroup = 11;
}
/*message MobileAlertResponse {
optional int64 f1 = 1;
optional int64 f2 = 2;

View File

@@ -2,6 +2,7 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: tcp-node-msgs.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
@@ -14,8 +15,27 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13tcp-node-msgs.proto\"\xdf\x01\n\x12SocialPlayerAction\x12\x11\n\tplayer_id\x18\x01 \x01(\x03\x12\x14\n\x0cto_player_id\x18\x02 \x01(\x03\x12\x0c\n\x04type\x18\x03 \x01(\x03\x12\x11\n\tfirstName\x18\x04 \x01(\t\x12\x10\n\x08lastName\x18\x05 \x01(\t\x12\x0f\n\x07message\x18\x06 \x01(\t\x12\x0e\n\x06\x61vatar\x18\x07 \x01(\t\x12\x13\n\x0b\x63ountryCode\x18\x08 \x01(\x05\x12\x10\n\x08\x66lagType\x18\t \x01(\x03\x12\x0e\n\x06mgType\x18\n \x01(\x03\x12\x15\n\reventSubgroup\x18\x0b \x01(\x03')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13tcp-node-msgs.proto\"\x9a\x02\n\x12SocialPlayerAction\x12\x11\n\tplayer_id\x18\x01 \x01(\x03\x12\x14\n\x0cto_player_id\x18\x02 \x01(\x03\x12)\n\x08spa_type\x18\x03 \x01(\x0e\x32\x17.SocialPlayerActionType\x12\x11\n\tfirstName\x18\x04 \x01(\t\x12\x10\n\x08lastName\x18\x05 \x01(\t\x12\x0f\n\x07message\x18\x06 \x01(\t\x12\x0e\n\x06\x61vatar\x18\x07 \x01(\t\x12\x13\n\x0b\x63ountryCode\x18\x08 \x01(\x05\x12\x1b\n\x08\x66lagType\x18\t \x01(\x0e\x32\t.FlagType\x12!\n\x06mgType\x18\n \x01(\x0e\x32\x11.MessageGroupType\x12\x15\n\reventSubgroup\x18\x0b \x01(\x03*v\n\x16SocialPlayerActionType\x12\x1e\n\x1aSOCIAL_ACTION_UNKNOWN_TYPE\x10\x00\x12\x17\n\x13SOCIAL_TEXT_MESSAGE\x10\x01\x12\x12\n\x0eSOCIAL_RIDE_ON\x10\x02\x12\x0f\n\x0bSOCIAL_FLAG\x10\x03*l\n\x08\x46lagType\x12\x15\n\x11\x46LAG_TYPE_UNKNOWN\x10\x00\x12\x18\n\x14\x46LAG_TYPE_HARASSMENT\x10\x01\x12\x13\n\x0f\x46LAG_TYPE_FLIER\x10\x02\x12\x1a\n\x16\x46LAG_TYPE_BAD_LANGUAGE\x10\x03*`\n\x10MessageGroupType\x12\x0f\n\x0bMGT_UNKNOWN\x10\x00\x12\x0e\n\nMGT_GLOBAL\x10\x01\x12\x0e\n\nMGT_DIRECT\x10\x02\x12\r\n\tMGT_EVENT\x10\x03\x12\x0c\n\x08MGT_CLUB\x10\x04')
_SOCIALPLAYERACTIONTYPE = DESCRIPTOR.enum_types_by_name['SocialPlayerActionType']
SocialPlayerActionType = enum_type_wrapper.EnumTypeWrapper(_SOCIALPLAYERACTIONTYPE)
_FLAGTYPE = DESCRIPTOR.enum_types_by_name['FlagType']
FlagType = enum_type_wrapper.EnumTypeWrapper(_FLAGTYPE)
_MESSAGEGROUPTYPE = DESCRIPTOR.enum_types_by_name['MessageGroupType']
MessageGroupType = enum_type_wrapper.EnumTypeWrapper(_MESSAGEGROUPTYPE)
SOCIAL_ACTION_UNKNOWN_TYPE = 0
SOCIAL_TEXT_MESSAGE = 1
SOCIAL_RIDE_ON = 2
SOCIAL_FLAG = 3
FLAG_TYPE_UNKNOWN = 0
FLAG_TYPE_HARASSMENT = 1
FLAG_TYPE_FLIER = 2
FLAG_TYPE_BAD_LANGUAGE = 3
MGT_UNKNOWN = 0
MGT_GLOBAL = 1
MGT_DIRECT = 2
MGT_EVENT = 3
MGT_CLUB = 4
_SOCIALPLAYERACTION = DESCRIPTOR.message_types_by_name['SocialPlayerAction']
@@ -29,6 +49,12 @@ _sym_db.RegisterMessage(SocialPlayerAction)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_SOCIALPLAYERACTIONTYPE._serialized_start=308
_SOCIALPLAYERACTIONTYPE._serialized_end=426
_FLAGTYPE._serialized_start=428
_FLAGTYPE._serialized_end=536
_MESSAGEGROUPTYPE._serialized_start=538
_MESSAGEGROUPTYPE._serialized_end=634
_SOCIALPLAYERACTION._serialized_start=24
_SOCIALPLAYERACTION._serialized_end=247
_SOCIALPLAYERACTION._serialized_end=306
# @@protoc_insertion_point(module_scope)

View File

@@ -1,11 +1,11 @@
syntax = "proto2";
//import "profile.proto"; //Profile
import "profile.proto"; //enums PlayerType and Sport
import "per-session-info.proto"; //TcpConfig
enum WA_TYPE {
WAT_LEAVE = 2; //proto::PlayerLeftWorld
WAT_RELOGIN = 3; //proto::PlayerLeftWorld
WAT_RIDEON = 4; //proto::RideOn
WAT_RIDE_ON = 4; //proto::RideOn
WAT_SPA = 5; //proto::SocialPlayerAction (chat message)
WAT_EVENT = 6; //proto::Event
WAT_JOIN_E = 7; //proto::PlayerJoinedEvent
@@ -35,7 +35,7 @@ enum WA_TYPE {
message WorldAttribute {
optional int64 f1 = 1; //587645624533328784, later 5876456 85771834256
optional int64 f2 = 2; //1
optional WA_TYPE type = 3; //stored as int32
optional WA_TYPE wa_type = 3; //stored as int32
optional bytes payload = 4; //not only protobuf
optional int64 world_time_born = 5;
optional int64 x = 6; //stored as int32
@@ -68,7 +68,7 @@ message World { //zwift.protobuf.World
}
message Player {
optional Profile player_profile = 1;
optional PlayerProfile player_profile = 1;
optional PlayerState player_state = 2;
}*/
@@ -110,7 +110,7 @@ message PlayerState {
optional int64 watchingRiderId = 28;
optional int64 groupId = 29;
// 30 absent at least in Android Game
optional int32 sport = 31;
optional Sport sport = 31;
optional float f32 = 32;
optional uint32 f33 = 33;
optional float f34 = 34; //= BikeEntity.field_F00 (=219.56387 and incr if moving)
@@ -223,7 +223,7 @@ message ServerToClient {
optional int64 f13 = 13;
optional int32 zwifters = 14;
optional int32 zc_local_port = 15;
optional int32 kind = 16;
optional int32 kind = 16; //TODO: enum; 2: TCP
optional int64 f17 = 17;
optional int32 num_msgs = 18;
optional int32 msgnum = 19;

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,6 @@
syntax = "proto2";
import "profile.proto"; //enums PlayerType and Sport
message DropInWorld {
required uint64 id = 1;
optional string name = 2;
@@ -25,8 +27,8 @@ message DropInPlayer {
optional uint64 distance = 4;
optional uint64 time = 5;
optional uint64 country_code = 6;
optional int64 player_type = 7; // PlayerType, stored as int32
optional uint64 sport = 8; //stored as int32
optional PlayerType player_type = 7;
optional Sport sport = 8;
optional bool f9 = 9;
optional bool f10 = 10;
optional uint64 f11 = 11;

View File

@@ -12,9 +12,10 @@ from google.protobuf import symbol_database as _symbol_database
_sym_db = _symbol_database.Default()
import profile_pb2 as profile__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bworld.proto\"\x9d\x02\n\x0b\x44ropInWorld\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tcourse_id\x18\x03 \x01(\x04\x12\n\n\x02\x66\x34\x18\x04 \x01(\x08\x12\x10\n\x08zwifters\x18\x05 \x01(\x04\x12\x12\n\nworld_time\x18\x06 \x01(\x04\x12\x11\n\treal_time\x18\x07 \x01(\x04\x12\"\n\x0bpro_players\x18\x08 \x03(\x0b\x32\r.DropInPlayer\x12 \n\tfollowees\x18\t \x03(\x0b\x32\r.DropInPlayer\x12\x1d\n\x06others\x18\n \x03(\x0b\x32\r.DropInPlayer\x12\x14\n\x0cmax_zwifters\x18\x0b \x01(\x04\x12!\n\npacer_bots\x18\x0c \x03(\x0b\x32\r.DropInPlayer\"/\n\x0f\x44ropInWorldList\x12\x1c\n\x06worlds\x18\x01 \x03(\x0b\x32\x0c.DropInWorld\"\xb5\x02\n\x0c\x44ropInPlayer\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x11\n\tfirstName\x18\x02 \x02(\t\x12\x10\n\x08lastName\x18\x03 \x02(\t\x12\x10\n\x08\x64istance\x18\x04 \x01(\x04\x12\x0c\n\x04time\x18\x05 \x01(\x04\x12\x14\n\x0c\x63ountry_code\x18\x06 \x01(\x04\x12\x13\n\x0bplayer_type\x18\x07 \x01(\x03\x12\r\n\x05sport\x18\x08 \x01(\x04\x12\n\n\x02\x66\x39\x18\t \x01(\x08\x12\x0b\n\x03\x66\x31\x30\x18\n \x01(\x08\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x04\x12\r\n\x05power\x18\x0c \x01(\x04\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x04\x12\t\n\x01x\x18\x0e \x01(\x02\x12\x10\n\x08\x61ltitude\x18\x0f \x01(\x02\x12\t\n\x01y\x18\x10 \x01(\x02\x12\r\n\x05route\x18\x11 \x01(\x05\x12\x12\n\nride_power\x18\x12 \x01(\r\x12\r\n\x05speed\x18\x13 \x01(\r')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bworld.proto\x1a\rprofile.proto\"\x9d\x02\n\x0b\x44ropInWorld\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tcourse_id\x18\x03 \x01(\x04\x12\n\n\x02\x66\x34\x18\x04 \x01(\x08\x12\x10\n\x08zwifters\x18\x05 \x01(\x04\x12\x12\n\nworld_time\x18\x06 \x01(\x04\x12\x11\n\treal_time\x18\x07 \x01(\x04\x12\"\n\x0bpro_players\x18\x08 \x03(\x0b\x32\r.DropInPlayer\x12 \n\tfollowees\x18\t \x03(\x0b\x32\r.DropInPlayer\x12\x1d\n\x06others\x18\n \x03(\x0b\x32\r.DropInPlayer\x12\x14\n\x0cmax_zwifters\x18\x0b \x01(\x04\x12!\n\npacer_bots\x18\x0c \x03(\x0b\x32\r.DropInPlayer\"/\n\x0f\x44ropInWorldList\x12\x1c\n\x06worlds\x18\x01 \x03(\x0b\x32\x0c.DropInWorld\"\xca\x02\n\x0c\x44ropInPlayer\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x11\n\tfirstName\x18\x02 \x02(\t\x12\x10\n\x08lastName\x18\x03 \x02(\t\x12\x10\n\x08\x64istance\x18\x04 \x01(\x04\x12\x0c\n\x04time\x18\x05 \x01(\x04\x12\x14\n\x0c\x63ountry_code\x18\x06 \x01(\x04\x12 \n\x0bplayer_type\x18\x07 \x01(\x0e\x32\x0b.PlayerType\x12\x15\n\x05sport\x18\x08 \x01(\x0e\x32\x06.Sport\x12\n\n\x02\x66\x39\x18\t \x01(\x08\x12\x0b\n\x03\x66\x31\x30\x18\n \x01(\x08\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x04\x12\r\n\x05power\x18\x0c \x01(\x04\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x04\x12\t\n\x01x\x18\x0e \x01(\x02\x12\x10\n\x08\x61ltitude\x18\x0f \x01(\x02\x12\t\n\x01y\x18\x10 \x01(\x02\x12\r\n\x05route\x18\x11 \x01(\x05\x12\x12\n\nride_power\x18\x12 \x01(\r\x12\r\n\x05speed\x18\x13 \x01(\r')
@@ -45,10 +46,10 @@ _sym_db.RegisterMessage(DropInPlayer)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_DROPINWORLD._serialized_start=16
_DROPINWORLD._serialized_end=301
_DROPINWORLDLIST._serialized_start=303
_DROPINWORLDLIST._serialized_end=350
_DROPINPLAYER._serialized_start=353
_DROPINPLAYER._serialized_end=662
_DROPINWORLD._serialized_start=31
_DROPINWORLD._serialized_end=316
_DROPINWORLDLIST._serialized_start=318
_DROPINWORLDLIST._serialized_end=365
_DROPINPLAYER._serialized_start=368
_DROPINPLAYER._serialized_end=698
# @@protoc_insertion_point(module_scope)

View File

@@ -1,5 +1,4 @@
syntax = "proto2";
//All decompiled. TODO: check
message ZFileProto {
required uint64 id = 1;
required string folder = 2;