zoffline/zwift-offline

How can I customize the profile.bin ?

Closed this issue · 6 comments

How can I customize the profile.bin ? I don't want to use a level 50 attribute profile!

You can customize it in the "initials" icon (my profile) in the home screen (next to the exit icon) or in the "pencil" icon under your name in the pause menu.

You don't need to use a level 50 profile, start without a profile.bin and a new one will be created.

i meam how can i customize the file "profile.bin" .

Yes, the file profile.bin stores your profile data, which can be customized in the place I told you. Other than that, it stores your progress. What exactly do you want to customize?

If you wish to customize the avatar, it's in the "garage" icon.

Zwift.2023-11-14.09-53-27-1.mp4

profile.bin is a serialized PlayerProfile protobuf message

message PlayerProfile {

If you want to change fields that are not possible to change in Zwift interface you can do this (run from zoffline source directory):

Read and parse the file

import protobuf.profile_pb2
profile = protobuf.profile_pb2.PlayerProfile()
profile_file = 'storage/1/profile.bin'
with open(profile_file, 'rb') as f:
    profile.ParseFromString(f.read())

Change what you want, for example

profile.total_xp = 500000

Serialize and write back to file

with open(profile_file, 'wb') as f:
    f.write(profile.SerializeToString())

profile.bin is a serialized PlayerProfile protobuf message

message PlayerProfile {

If you want to change fields that are not possible to change in Zwift interface you can do this (run from zoffline source directory):

Read and parse the file

import protobuf.profile_pb2
profile = protobuf.profile_pb2.PlayerProfile()
profile_file = 'storage/1/profile.bin'
with open(profile_file, 'rb') as f:
    profile.ParseFromString(f.read())

Change what you want, for example

profile.total_xp = 500000

Serialize and write back to file

with open(profile_file, 'wb') as f:
    f.write(profile.SerializeToString())

OK,TKS a lot!