Update bot editor

This commit is contained in:
oldnapalm
2024-02-14 16:49:13 -03:00
parent 4755866da8
commit b1e298248d
2 changed files with 24 additions and 63 deletions
+24 -39
View File
@@ -2,7 +2,8 @@
#
# Route ID can be found in http://cdn.zwift.com/gameassets/GameDictionary.xml (signature)
#
# To find new start line values type /startline in chat, the values will be printed in console
# Type .position in chat to find start road and roadTime, the values will be printed in console
# Choose a position where the bot passes both times at the same speed to have a smooth loop
import os
import sys
@@ -25,11 +26,6 @@ def is_forward(state):
def get_course(state):
return (state.f19 & 0xff0000) >> 16
def boolean(s):
if s.lower() in ['true', 'yes', '1']: return True
if s.lower() in ['false', 'no', '0']: return False
return None
def delete(s, i):
print('course %s road %s isForward %s roadTime %s' % (get_course(s[i]), road_id(s[i]), is_forward(s[i]), s[i].roadTime))
del s[i]
@@ -50,8 +46,7 @@ if file_exists(PROFILE_FILE):
p.last_name = input("Last name: ")
for a in p.public_attributes:
#0x69520F20=1766985504 - crc32 of "PACE PARTNER - ROUTE"
#TODO: -1021012238: figure out
if a.id == 1766985504 or a.id == -1021012238: #-1021012238 == 3273955058
if a.id == 1766985504:
a.number_value = int(input("Route ID: "))
with open(PROFILE_FILE, 'wb') as f:
f.write(p.SerializeToString())
@@ -61,37 +56,27 @@ if file_exists(ROUTE_FILE):
g = udp_node_msgs_pb2.Ghost()
with open(ROUTE_FILE, 'rb') as f:
g.ParseFromString(f.read())
START_LINES_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'bot_start_lines.csv')
if file_exists(START_LINES_FILE) and len(g.states) > 0:
f = open(START_LINES_FILE, 'r')
sl = [tuple(line) for line in csv.reader(f)]
f.close()
rt = [t for t in sl if t[0] == str(get_course(g.states[0])) and t[1] == str(road_id(g.states[0])) and (boolean(t[2]) == is_forward(g.states[0]) or not t[2])]
if rt:
start_road = int(rt[0][3])
start_rt = int(rt[0][4])
print('Start line: course %s road %s isForward %s roadTime %s\n' % (get_course(g.states[0]), start_road, is_forward(g.states[0]), start_rt))
print('Deleted records:\n')
try:
while road_id(g.states[0]) != start_road:
delete(g.states, 0)
while road_id(g.states[-1]) != start_road:
delete(g.states, -1)
if is_forward(g.states[0]):
while g.states[0].roadTime < start_rt or abs(g.states[0].roadTime - start_rt) > 500000:
delete(g.states, 0)
while g.states[-1].roadTime > start_rt or abs(g.states[-1].roadTime - start_rt) > 500000:
delete(g.states, -1)
else:
while g.states[0].roadTime > start_rt or abs(g.states[0].roadTime - start_rt) > 500000:
delete(g.states, 0)
while g.states[-1].roadTime < start_rt or abs(g.states[-1].roadTime - start_rt) > 500000:
delete(g.states, -1)
except IndexError:
pass
with open(ROUTE_FILE, 'wb') as f:
f.write(g.SerializeToString())
start_road = int(input("Start road: "))
start_rt = int(input("Start roadTime: "))
print('Deleted records:\n')
try:
while road_id(g.states[0]) != start_road:
delete(g.states, 0)
while road_id(g.states[-1]) != start_road:
delete(g.states, -1)
if is_forward(g.states[0]):
while g.states[0].roadTime < start_rt or abs(g.states[0].roadTime - start_rt) > 500000:
delete(g.states, 0)
while g.states[-1].roadTime > start_rt or abs(g.states[-1].roadTime - start_rt) > 500000:
delete(g.states, -1)
else:
print('Start line not found (course %s road %s isForward %s)' % (get_course(g.states[0]), road_id(g.states[0]), is_forward(g.states[0])))
while g.states[0].roadTime > start_rt or abs(g.states[0].roadTime - start_rt) > 500000:
delete(g.states, 0)
while g.states[-1].roadTime < start_rt or abs(g.states[-1].roadTime - start_rt) > 500000:
delete(g.states, -1)
except IndexError:
pass
with open(ROUTE_FILE, 'wb') as f:
f.write(g.SerializeToString())
print('\nDone')
-24
View File
@@ -1,24 +0,0 @@
course,spawnRoad,isForward,startRoad,roadTime,name
2,0,,0,996941,Richmond
6,0,,0,987711,Downtown
6,22,,23,788778,Volcano Circuit
6,36,,36,770795,Jungle start pens
6,36,,35,546940,Jungle Circuit (move up to replace start pens)
6,36,,43,23170,Road to Sky (move up to replace start pens)
6,81,True,81,30426,Desert Flats
6,81,False,81,913245,Titans Grove
7,0,,0,532687,London 1
7,7,,7,809519,London 2
8,4,,4,173378,New York
9,7,,7,157428,Innsbruck
10,9,,0,38105,Bologna cat A
11,0,,0,5068,Yorkshire
12,20,,0,348149,Crit City CW cat A
12,20,,19,845880,Crit City CCW cat A (move up to replace Crit City CW)
13,0,False,0,880828,Makuri Islands
13,0,True,0,497136,Makuri Islands 2
14,26,True,26,513383,France
14,26,True,26,536700,Ven-Top (move up to replace Roule Ma Poule and Tire-Bouchon)
14,26,False,26,487158,France 2
14,26,False,0,26185,Douce France (move up to replace Casse-Pattes / Petit Boucle / R.G.V.)
15,0,,0,485917,Paris
1 course spawnRoad isForward startRoad roadTime name
2 2 0 0 996941 Richmond
3 6 0 0 987711 Downtown
4 6 22 23 788778 Volcano Circuit
5 6 36 36 770795 Jungle start pens
6 6 36 35 546940 Jungle Circuit (move up to replace start pens)
7 6 36 43 23170 Road to Sky (move up to replace start pens)
8 6 81 True 81 30426 Desert Flats
9 6 81 False 81 913245 Titans Grove
10 7 0 0 532687 London 1
11 7 7 7 809519 London 2
12 8 4 4 173378 New York
13 9 7 7 157428 Innsbruck
14 10 9 0 38105 Bologna cat A
15 11 0 0 5068 Yorkshire
16 12 20 0 348149 Crit City CW cat A
17 12 20 19 845880 Crit City CCW cat A (move up to replace Crit City CW)
18 13 0 False 0 880828 Makuri Islands
19 13 0 True 0 497136 Makuri Islands 2
20 14 26 True 26 513383 France
21 14 26 True 26 536700 Ven-Top (move up to replace Roule Ma Poule and Tire-Bouchon)
22 14 26 False 26 487158 France 2
23 14 26 False 0 26185 Douce France (move up to replace Casse-Pattes / Petit Boucle / R.G.V.)
24 15 0 0 485917 Paris