new version and proto++
@@ -1,9 +1,9 @@
|
||||
<Zwift
|
||||
version="1.0.100427"
|
||||
sversion="1.22.1 (100427)"
|
||||
gbranch="build/100427-rc-1.22.1.3-1.22.1"
|
||||
gcommit="6768a1823bc9db8f5b0baa2077d421429bc685e7"
|
||||
version="1.0.100456"
|
||||
sversion="1.22.4 (100456)"
|
||||
gbranch="build/100456-rc-1.22.4.3-1.22.4"
|
||||
gcommit="e69aa1e00e3650b9e26593fd3102b4957de7075d"
|
||||
GAME_URL="https://us-or-rly101.zwift.com"
|
||||
manifest="ZwiftMac_1.0.100427_0acf466a_manifest.xml"
|
||||
manifest_checksum="-406929445"
|
||||
ver_cur_checksum="-282448884"/>
|
||||
manifest="ZwiftMac_1.0.100456_3289e03b_manifest.xml"
|
||||
manifest_checksum="453629562"
|
||||
ver_cur_checksum="1312611185"/>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<Zwift
|
||||
version="1.0.100427"
|
||||
sversion="1.22.1 (100427)"
|
||||
gbranch="build/100427-rc-1.22.1.3-1.22.1"
|
||||
gcommit="6768a1823bc9db8f5b0baa2077d421429bc685e7"
|
||||
version="1.0.100456"
|
||||
sversion="1.22.4 (100456)"
|
||||
gbranch="build/100456-rc-1.22.4.3-1.22.4"
|
||||
gcommit="e69aa1e00e3650b9e26593fd3102b4957de7075d"
|
||||
GAME_URL="https://us-or-rly101.zwift.com"
|
||||
manifest="Zwift_1.0.100427_0acf466a_manifest.xml"
|
||||
manifest_checksum="36781012"
|
||||
ver_cur_checksum="85416406"/>
|
||||
manifest="Zwift_1.0.100456_3289e03b_manifest.xml"
|
||||
manifest_checksum="-779407785"
|
||||
ver_cur_checksum="1582609789"/>
|
||||
|
||||
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 178 KiB |
|
After Width: | Height: | Size: 138 KiB |
|
After Width: | Height: | Size: 145 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 174 KiB |
@@ -3,18 +3,18 @@ syntax = "proto2";
|
||||
message Goal {
|
||||
optional uint64 id = 1;
|
||||
optional uint64 player_id = 2;
|
||||
optional uint32 f3 = 3; /* Q: status or sport? A: I see zwift::protobuf::Sport_IsValid */
|
||||
optional string name = 4;
|
||||
optional uint32 type = 5; /* 0=distance, 1=time */
|
||||
optional uint32 periodicity = 6; /* 0=weekly, 1=monthly */
|
||||
optional int64 f3 = 3; /* TODO: rename to sport; int64 on wire, stored as int32 */
|
||||
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 minutes. is also set for dur goals? */
|
||||
optional float actual_duration = 10; /* in meters. is also set 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; /* status or sport? */
|
||||
//optional string f14 = 14;
|
||||
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? */
|
||||
}
|
||||
|
||||
message Goals {
|
||||
|
||||
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\ngoal.proto\"\x80\x02\n\x04Goal\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\tplayer_id\x18\x02 \x01(\x04\x12\n\n\x02\x66\x33\x18\x03 \x01(\r\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0c\n\x04type\x18\x05 \x01(\r\x12\x13\n\x0bperiodicity\x18\x06 \x01(\r\x12\x17\n\x0ftarget_distance\x18\x07 \x01(\x02\x12\x17\n\x0ftarget_duration\x18\x08 \x01(\x02\x12\x17\n\x0f\x61\x63tual_distance\x18\t \x01(\x02\x12\x17\n\x0f\x61\x63tual_duration\x18\n \x01(\x02\x12\x12\n\ncreated_on\x18\x0b \x01(\x04\x12\x17\n\x0fperiod_end_date\x18\x0c \x01(\x04\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x04\"\x1d\n\x05Goals\x12\x14\n\x05goals\x18\x01 \x03(\x0b\x32\x05.Goal')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\ngoal.proto\"\x80\x02\n\x04Goal\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\tplayer_id\x18\x02 \x01(\x04\x12\n\n\x02\x66\x33\x18\x03 \x01(\x03\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0c\n\x04type\x18\x05 \x01(\x03\x12\x13\n\x0bperiodicity\x18\x06 \x01(\x03\x12\x17\n\x0ftarget_distance\x18\x07 \x01(\x02\x12\x17\n\x0ftarget_duration\x18\x08 \x01(\x02\x12\x17\n\x0f\x61\x63tual_distance\x18\t \x01(\x02\x12\x17\n\x0f\x61\x63tual_duration\x18\n \x01(\x02\x12\x12\n\ncreated_on\x18\x0b \x01(\x04\x12\x17\n\x0fperiod_end_date\x18\x0c \x01(\x04\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x04\"\x1d\n\x05Goals\x12\x14\n\x05goals\x18\x01 \x03(\x0b\x32\x05.Goal')
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ syntax = "proto2";
|
||||
message TcpAddress {
|
||||
optional string ip = 1;
|
||||
optional int32 port = 2;
|
||||
optional int32 f3 = 3;
|
||||
optional int32 f4 = 4;
|
||||
optional int32 f3 = 3; //TcpAddressService::updateAddresses
|
||||
optional int32 f4 = 4; //TcpAddressService::updateAddresses: cluster id?
|
||||
}
|
||||
|
||||
message TcpConfig {
|
||||
@@ -22,5 +22,5 @@ message PerSessionInfo {
|
||||
optional PartnersUrls apis = 2;
|
||||
optional uint64 time = 3;
|
||||
optional TcpConfig nodes = 4;
|
||||
optional int32 f5 = 5;
|
||||
optional int32 maxSegmSubscrs = 5; //if received, sub_718DE99570 puts log message "Received max allowed segment subscriptions from session: %d", m_maxSegmSubscrs and stores it into GlobalState...
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16per-session-info.proto\">\n\nTcpAddress\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"\'\n\tTcpConfig\x12\x1a\n\x05nodes\x18\x01 \x03(\x0b\x32\x0b.TcpAddress\"A\n\x0cPartnersUrls\x12\x16\n\x0etodaysplan_url\x18\x01 \x01(\t\x12\x19\n\x11trainingpeaks_url\x18\x02 \x01(\t\"u\n\x0ePerSessionInfo\x12\x11\n\trelay_url\x18\x01 \x02(\t\x12\x1b\n\x04\x61pis\x18\x02 \x01(\x0b\x32\r.PartnersUrls\x12\x0c\n\x04time\x18\x03 \x01(\x04\x12\x19\n\x05nodes\x18\x04 \x01(\x0b\x32\n.TcpConfig\x12\n\n\x02\x66\x35\x18\x05 \x01(\x05')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16per-session-info.proto\">\n\nTcpAddress\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"\'\n\tTcpConfig\x12\x1a\n\x05nodes\x18\x01 \x03(\x0b\x32\x0b.TcpAddress\"A\n\x0cPartnersUrls\x12\x16\n\x0etodaysplan_url\x18\x01 \x01(\t\x12\x19\n\x11trainingpeaks_url\x18\x02 \x01(\t\"\x81\x01\n\x0ePerSessionInfo\x12\x11\n\trelay_url\x18\x01 \x02(\t\x12\x1b\n\x04\x61pis\x18\x02 \x01(\x0b\x32\r.PartnersUrls\x12\x0c\n\x04time\x18\x03 \x01(\x04\x12\x19\n\x05nodes\x18\x04 \x01(\x0b\x32\n.TcpConfig\x12\x16\n\x0emaxSegmSubscrs\x18\x05 \x01(\x05')
|
||||
|
||||
|
||||
|
||||
@@ -59,6 +59,6 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_TCPCONFIG._serialized_end=129
|
||||
_PARTNERSURLS._serialized_start=131
|
||||
_PARTNERSURLS._serialized_end=196
|
||||
_PERSESSIONINFO._serialized_start=198
|
||||
_PERSESSIONINFO._serialized_end=315
|
||||
_PERSESSIONINFO._serialized_start=199
|
||||
_PERSESSIONINFO._serialized_end=328
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
||||
@@ -73,7 +73,7 @@ message Profile { // should be renamed (name from Zwift debug info: PlayerProfil
|
||||
|
||||
optional uint32 achievement_level = 49;
|
||||
optional bool use_metric = 50;
|
||||
optional bool f51 = 51; // isRunner ??? -> +45.455 to something (BikeEntity::CreateNamePlate)
|
||||
optional bool strava_premium = 51;
|
||||
optional uint32 power_source_model = 52;
|
||||
optional uint32 f53 = 53; //??? empty
|
||||
optional uint32 f54 = 54; //??? empty
|
||||
@@ -136,7 +136,7 @@ message Profile { // should be renamed (name from Zwift debug info: PlayerProfil
|
||||
optional uint32 run_achievement_level = 84;
|
||||
optional uint32 total_run_time_in_minutes = 85;
|
||||
optional Sport sport = 86;
|
||||
optional uint32 f87 = 87; //??? 360 or -360
|
||||
optional uint32 utc_offset_in_minutes = 87;
|
||||
optional bool connected_to_under_armour = 88;
|
||||
optional string preferred_language = 89;
|
||||
optional uint32 hair_colour = 90;
|
||||
|
||||
@@ -3,8 +3,8 @@ syntax = "proto2";
|
||||
message SegmentResult {
|
||||
optional uint64 id = 1;
|
||||
required uint64 player_id = 2;
|
||||
optional uint64 f3 = 3;
|
||||
optional uint64 f4 = 4;
|
||||
optional uint64 f3 = 3; //=g_CurrentServerRealmID
|
||||
optional uint64 f4 = 4; //=WorldID
|
||||
optional uint64 segment_id = 5;
|
||||
optional uint64 event_subgroup_id = 6;
|
||||
required string first_name = 7;
|
||||
@@ -12,16 +12,16 @@ message SegmentResult {
|
||||
optional uint64 world_time = 9;
|
||||
optional string finish_time_str = 10;
|
||||
required uint64 elapsed_ms = 11;
|
||||
optional sint64 f12 = 12;
|
||||
optional int64 f12 = 12; //stored as 32 bit; =1 if PowerMeter, =0 if zPower, also saw -1??? (in ZNETWORK_RegisterPlayerSegmentResult from m_bikeEntity->m_hasPowerMeter)
|
||||
optional uint32 f13 = 13; //weight_in_grams
|
||||
optional uint32 f14 = 14;
|
||||
optional uint32 f14 = 14; //:=0 in Leaderboards::SetPlayerSegmentResult
|
||||
optional uint32 f15 = 15; //avg_power
|
||||
optional bool f16 = 16;
|
||||
optional string f17 = 17;
|
||||
optional uint64 f18 = 18; //TODO: enum PlayerType
|
||||
optional uint32 f19 = 19;
|
||||
optional uint32 f20 = 20; //TODO: enum Sport
|
||||
//optional uint64 f21 = 21;
|
||||
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 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 uint64 f21 = 21; //:=activityId (may be -1)
|
||||
//optional bool f22 = 22;
|
||||
//optional string f23 = 23;
|
||||
}
|
||||
|
||||
@@ -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(\x12\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(\r\"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(\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')
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -64,10 +64,10 @@ message PlayerState {
|
||||
//field 19:
|
||||
//byte[0].bits[0,1]: HasPowerMeter, HasPhoneConnected
|
||||
//byte[0].bits[2,3]: RoadDirectionForward, ??? !BikeEntity.field_DCC || BikeEntity.disSteer
|
||||
//byte[0].bits[4]: ÷èòàåòñÿ â BikeEntity::ProcessNewPacket, èìååò îòíîøåíèå ê ðóëåíèþ
|
||||
//byte[0].bits[4]: read in BikeEntity::ProcessNewPacket, steering-related
|
||||
//byte[1]: =0 ???
|
||||
//byte[2]: fallback for world in getMapRevisionId
|
||||
//byte[3]: realRideons (not counted yet in BikeEntity::m_rideons) @ BikeEntity::UpdateRideOns
|
||||
//byte[3]: realRideons (not counted yet in BikeEntity::m_rideons) @ BikeEntity::UpdateRideOns, see also BikeEntity::Update
|
||||
optional uint32 f19 = 19;
|
||||
optional uint32 f20 = 20; //road_id: (f20 & 0xff00) >> 8 (=16777231 -> road_id = 0)
|
||||
optional uint32 progress = 21; // WorkoutMode = progress & 0xF
|
||||
@@ -85,8 +85,8 @@ message PlayerState {
|
||||
optional uint32 f33 = 33;
|
||||
optional float f34 = 34; //= BikeEntity.field_F00 (=219.56387 and incr if moving)
|
||||
optional int32 world = 35;
|
||||
optional uint32 f36 = 36; // = f(BikeEntity.field_2a28)
|
||||
optional uint32 f37 = 37; // = f(BikeEntity.field_2a28)
|
||||
optional uint32 f36 = 36; // = f(BikeEntity.field_2a28) BikeEntity::CreateNewPacket
|
||||
optional uint32 f37 = 37; // = f(BikeEntity.field_2a28) BikeEntity::CreateNewPacket
|
||||
optional bool canSteer = 38; // = BikeEntity.m_canSteer
|
||||
optional int32 route = 39;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
syntax = "proto2";
|
||||
//All decompiled. TODO: check
|
||||
message ZFile { // real name ZFileProto ?
|
||||
message ZFileProto {
|
||||
required uint64 id = 1;
|
||||
required string folder = 2;
|
||||
required string filename = 3;
|
||||
required uint64 timestamp = 4; // ZFileProto: uint64=5 and string=4...
|
||||
optional string f4 = 4; //NetworkClientImpl::generateZFileGzip: empty
|
||||
required uint64 timestamp = 5;
|
||||
}
|
||||
|
||||
message ZFilesProto {
|
||||
repeated ZFile zfiles = 1;
|
||||
repeated ZFileProto zfiles = 1;
|
||||
}
|
||||
|
||||
@@ -14,18 +14,18 @@ _sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0czfiles.proto\"H\n\x05ZFile\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x0e\n\x06\x66older\x18\x02 \x02(\t\x12\x10\n\x08\x66ilename\x18\x03 \x02(\t\x12\x11\n\ttimestamp\x18\x04 \x02(\x04\"%\n\x0bZFilesProto\x12\x16\n\x06zfiles\x18\x01 \x03(\x0b\x32\x06.ZFile')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0czfiles.proto\"Y\n\nZFileProto\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x0e\n\x06\x66older\x18\x02 \x02(\t\x12\x10\n\x08\x66ilename\x18\x03 \x02(\t\x12\n\n\x02\x66\x34\x18\x04 \x01(\t\x12\x11\n\ttimestamp\x18\x05 \x02(\x04\"*\n\x0bZFilesProto\x12\x1b\n\x06zfiles\x18\x01 \x03(\x0b\x32\x0b.ZFileProto')
|
||||
|
||||
|
||||
|
||||
_ZFILE = DESCRIPTOR.message_types_by_name['ZFile']
|
||||
_ZFILEPROTO = DESCRIPTOR.message_types_by_name['ZFileProto']
|
||||
_ZFILESPROTO = DESCRIPTOR.message_types_by_name['ZFilesProto']
|
||||
ZFile = _reflection.GeneratedProtocolMessageType('ZFile', (_message.Message,), {
|
||||
'DESCRIPTOR' : _ZFILE,
|
||||
ZFileProto = _reflection.GeneratedProtocolMessageType('ZFileProto', (_message.Message,), {
|
||||
'DESCRIPTOR' : _ZFILEPROTO,
|
||||
'__module__' : 'zfiles_pb2'
|
||||
# @@protoc_insertion_point(class_scope:ZFile)
|
||||
# @@protoc_insertion_point(class_scope:ZFileProto)
|
||||
})
|
||||
_sym_db.RegisterMessage(ZFile)
|
||||
_sym_db.RegisterMessage(ZFileProto)
|
||||
|
||||
ZFilesProto = _reflection.GeneratedProtocolMessageType('ZFilesProto', (_message.Message,), {
|
||||
'DESCRIPTOR' : _ZFILESPROTO,
|
||||
@@ -37,8 +37,8 @@ _sym_db.RegisterMessage(ZFilesProto)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
|
||||
DESCRIPTOR._options = None
|
||||
_ZFILE._serialized_start=16
|
||||
_ZFILE._serialized_end=88
|
||||
_ZFILESPROTO._serialized_start=90
|
||||
_ZFILESPROTO._serialized_end=127
|
||||
_ZFILEPROTO._serialized_start=16
|
||||
_ZFILEPROTO._serialized_end=105
|
||||
_ZFILESPROTO._serialized_start=107
|
||||
_ZFILESPROTO._serialized_end=149
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
||||
@@ -45,6 +45,15 @@ BOTS_DIR = '%s/bots' % SCRIPT_DIR
|
||||
PROXYPASS_FILE = "%s/cdn-proxy.txt" % STORAGE_DIR
|
||||
SERVER_IP_FILE = "%s/server-ip.txt" % STORAGE_DIR
|
||||
DISCORD_CONFIG_FILE = "%s/discord.cfg" % STORAGE_DIR
|
||||
if os.path.isfile(DISCORD_CONFIG_FILE):
|
||||
from discord_bot import DiscordThread
|
||||
discord = DiscordThread(DISCORD_CONFIG_FILE)
|
||||
else:
|
||||
class DummyDiscord():
|
||||
def send_message(self, msg, sender_id=None):
|
||||
pass
|
||||
discord = DummyDiscord()
|
||||
|
||||
MAP_OVERRIDE = deque(maxlen=16)
|
||||
|
||||
ghost_update_freq = 3
|
||||
@@ -503,7 +512,6 @@ def is_state_new_for(peer_player_state, player_id):
|
||||
|
||||
class UDPHandler(socketserver.BaseRequestHandler):
|
||||
def handle(self):
|
||||
global discord
|
||||
data = self.request[0]
|
||||
socket = self.request[1]
|
||||
recv = udp_node_msgs_pb2.ClientToServer()
|
||||
@@ -533,7 +541,7 @@ class UDPHandler(socketserver.BaseRequestHandler):
|
||||
|
||||
#Update player online state
|
||||
if state.roadTime:
|
||||
if (not player_id in online.keys()) and ('discord' in globals()):
|
||||
if (not player_id in online.keys()):
|
||||
discord.send_message('%s riders online' % (len(online) + 1))
|
||||
online[player_id] = state
|
||||
|
||||
@@ -697,13 +705,4 @@ botthreadevent = threading.Event()
|
||||
bot = threading.Thread(target=play_bots)
|
||||
bot.start()
|
||||
|
||||
if os.path.isfile(DISCORD_CONFIG_FILE):
|
||||
from discord_bot import DiscordThread
|
||||
discord = DiscordThread(DISCORD_CONFIG_FILE)
|
||||
else:
|
||||
class DummyDiscord():
|
||||
def send_message(self, msg, sender_id=None):
|
||||
pass
|
||||
discord = DummyDiscord()
|
||||
|
||||
zwift_offline.run_standalone(online, global_pace_partners, global_bots, global_ghosts, ghosts_enabled, save_ghost, player_update_queue, discord)
|
||||
|
||||
@@ -114,7 +114,7 @@ def sync(user, password):
|
||||
access_token, refresh_token = login(session, user, password)
|
||||
|
||||
events = get_gameinfo(session, access_token).decode('utf-8')
|
||||
with open('game_info.json', 'wb') as f:
|
||||
with open('game_info.txt', 'wb') as f:
|
||||
f.write(events.encode('utf-8-sig'))
|
||||
|
||||
logout(session, refresh_token)
|
||||
|
||||
@@ -75,7 +75,7 @@ if True:
|
||||
"runTimeHalfMarathonInSeconds": jsv0(profile, 'run_time_half_marathon_in_seconds'), "runTimeFullMarathonInSeconds": jsv0(profile, 'run_time_full_marathon_in_seconds'), "totalInKomJersey": jsv0(profile, 'total_in_kom_jersey'), "totalInSprintersJersey": jsv0(profile, 'total_in_sprinters_jersey'),
|
||||
"totalInOrangeJersey": jsv0(profile, 'total_in_orange_jersey'), "currentActivityId": jsf(profile, 'current_activity_id'), "enrolledZwiftAcademy": jsv0(profile, 'enrolled_program') == profile.EnrolledProgram.ZWIFT_ACADEMY, "runAchievementLevel": jsv0(profile, 'run_achievement_level'),
|
||||
"totalRunDistance": jsv0(profile, 'total_run_distance'), "totalRunTimeInMinutes": jsv0(profile, 'total_run_time_in_minutes'), "totalRunExperiencePoints": jsv0(profile, 'total_run_experience_points'), "totalRunCalories": jsv0(profile, 'total_run_calories'), "totalGold": jsv0(profile, 'total_gold_drops'),
|
||||
"profilePropertyChanges": jprofileFull.get('propertyChanges'), "cyclingOrganization": jsf(profile, 'cycling_organization'), "userAgent": "CNL/3.13.0 (Android 11) zwift/1.0.85684 curl/7.78.0-DEV", "stravaPremium": False, "profileChanges": False, "launchedGameClient": "09/19/2021 13:24:19 +0000",
|
||||
"profilePropertyChanges": jprofileFull.get('propertyChanges'), "cyclingOrganization": jsf(profile, 'cycling_organization'), "userAgent": "CNL/3.13.0 (Android 11) zwift/1.0.85684 curl/7.78.0-DEV", "stravaPremium": jsb0(profile, 'strava_premium'), "profileChanges": False, "launchedGameClient": "09/19/2021 13:24:19 +0000",
|
||||
"createdOn":"2021-09-19T13:24:17.783+0000", "likelyInGame": False, "address": None, "bt":"f97803d3-efac-4510-a17a-ef44e65d3071", "numberOfFolloweesInCommon": 0, "fundraiserId": None, "source": "Android", "origin": None, "licenseNumber": None, "bigCommerceId": None, "marketingConsent": None, "affiliate": None,
|
||||
"avantlinkId": None, "virtualBikeModel": bikeFrameToStr(profile.bike_frame), "connectedToWithings": jsb0(profile, 'connected_to_withings'), "connectedToRuntastic": jsb0(profile, 'connected_to_runtastic'), "connectedToZwiftPower": False, "powerSourceType": "Power Source", "powerSourceModel": powerSourceModelToStr(profile.power_source_model), "riding": False, "location": "", "publicId": "5a72e9b1-239f-435e-8757-af9467336b40",
|
||||
"mixpanelDistinctId": "21304417-af2d-4c9b-8543-8ba7c0500e84"}
|
||||
|
||||
@@ -1032,7 +1032,7 @@ def relay_race_event_starting_line_id(event_id):
|
||||
@app.route('/api/zfiles', methods=['POST'])
|
||||
def api_zfiles():
|
||||
# Don't care about zfiles, but shuts up some errors in Zwift log.
|
||||
zfile = zfiles_pb2.ZFile()
|
||||
zfile = zfiles_pb2.ZFileProto()
|
||||
zfile.id = int(random.getrandbits(31))
|
||||
zfile.folder = "logfiles"
|
||||
zfile.filename = "yep_took_good_care_of_that_file.txt"
|
||||
@@ -1201,7 +1201,7 @@ def do_api_profiles_me(is_json):
|
||||
"runTimeHalfMarathonInSeconds": jsv0(profile, 'run_time_half_marathon_in_seconds'), "runTimeFullMarathonInSeconds": jsv0(profile, 'run_time_full_marathon_in_seconds'), "totalInKomJersey": jsv0(profile, 'total_in_kom_jersey'), "totalInSprintersJersey": jsv0(profile, 'total_in_sprinters_jersey'),
|
||||
"totalInOrangeJersey": jsv0(profile, 'total_in_orange_jersey'), "currentActivityId": jsf(profile, 'current_activity_id'), "enrolledZwiftAcademy": jsv0(profile, 'enrolled_program') == profile.EnrolledProgram.ZWIFT_ACADEMY, "runAchievementLevel": jsv0(profile, 'run_achievement_level'),
|
||||
"totalRunDistance": jsv0(profile, 'total_run_distance'), "totalRunTimeInMinutes": jsv0(profile, 'total_run_time_in_minutes'), "totalRunExperiencePoints": jsv0(profile, 'total_run_experience_points'), "totalRunCalories": jsv0(profile, 'total_run_calories'), "totalGold": jsv0(profile, 'total_gold_drops'),
|
||||
"profilePropertyChanges": jprofileFull.get('propertyChanges'), "cyclingOrganization": jsf(profile, 'cycling_organization'), "userAgent": "CNL/3.13.0 (Android 11) zwift/1.0.85684 curl/7.78.0-DEV", "stravaPremium": False, "profileChanges": False, "launchedGameClient": "09/19/2021 13:24:19 +0000",
|
||||
"profilePropertyChanges": jprofileFull.get('propertyChanges'), "cyclingOrganization": jsf(profile, 'cycling_organization'), "userAgent": "CNL/3.13.0 (Android 11) zwift/1.0.85684 curl/7.78.0-DEV", "stravaPremium": jsb0(profile, 'strava_premium'), "profileChanges": False, "launchedGameClient": "09/19/2021 13:24:19 +0000",
|
||||
"createdOn":"2021-09-19T13:24:17.783+0000", "likelyInGame": False, "address": None, "bt":"f97803d3-efac-4510-a17a-ef44e65d3071", "numberOfFolloweesInCommon": 0, "fundraiserId": None, "source": "Android", "origin": None, "licenseNumber": None, "bigCommerceId": None, "marketingConsent": None, "affiliate": None,
|
||||
"avantlinkId": None, "virtualBikeModel": bikeFrameToStr(profile.bike_frame), "connectedToWithings": jsb0(profile, 'connected_to_withings'), "connectedToRuntastic": jsb0(profile, 'connected_to_runtastic'), "connectedToZwiftPower": False, "powerSourceType": "Power Source", "powerSourceModel": powerSourceModelToStr(profile.power_source_model), "riding": False, "location": "", "publicId": "5a72e9b1-239f-435e-8757-af9467336b40",
|
||||
"mixpanelDistinctId": "21304417-af2d-4c9b-8543-8ba7c0500e84"}
|
||||
@@ -2444,9 +2444,9 @@ def experimentation_v1_variant():
|
||||
('game_1_20_clickable_telemetry_box', True, None),
|
||||
('game_1_20_0_enable_stages_steering', None, False),
|
||||
('game_1_21_0_hud_highlighter', None, None),
|
||||
('game_1_21_default_activity_name_change', None, None),
|
||||
('game_1_21_default_activity_name_change', 1, None),
|
||||
('game_1_21_android_novus_ble_refactor', None, None),
|
||||
('game_1_21_0_gpu_deprecation_warning_message', None, None),
|
||||
('game_1_21_0_gpu_deprecation_warning_message', 1, None),
|
||||
('game_1_21_ftms_set_rider_weight', None, None),
|
||||
('game_1_21_ble_dll_v2', None, None),
|
||||
('game_1_22_allow_uturns_at_low_speed', None, None),
|
||||
|
||||