This commit is contained in:
Fierelier 2022-10-27 23:18:12 +02:00
parent 907c2f98de
commit 2c8e6fd5fc
2 changed files with 5670 additions and 5738 deletions

File diff suppressed because it is too large Load Diff

View File

@ -394,6 +394,11 @@ update_field chassis replaceme TRAVEL Rear 12
update_field chassis replaceme_top TRAVEL Front 12
update_field chassis replaceme_top TRAVEL Rear 12
update_field chassis replaceme RIDE_HEIGHT Front 8.5
update_field chassis replaceme RIDE_HEIGHT Rear 8.5
update_field chassis replaceme_top RIDE_HEIGHT Front 7.65
update_field chassis replaceme_top RIDE_HEIGHT Rear 7.65
update_field tires replaceme GRIP_SCALE Front 0.8
update_field tires replaceme GRIP_SCALE Rear 0.8
@ -409,133 +414,9 @@ update_field tires replaceme_top YAW_CONTROL[3] 0.1
\
"""
ratioMult = 1.0
gearRatios = """update_field transmission 0x097c7b7d FINAL_GEAR 2.7
update_field transmission 0x6b4ce945 FINAL_GEAR 3
update_field transmission 0xe679f9cd FINAL_GEAR 3.9
update_field transmission 350z FINAL_GEAR 3.54
update_field transmission 911gt2 FINAL_GEAR 3.44
update_field transmission 911turbo FINAL_GEAR 3.44
update_field transmission 911turbo_top FINAL_GEAR 3.5
update_field transmission 997s FINAL_GEAR 3.2
update_field transmission 997s_top FINAL_GEAR 2.7
update_field transmission a3 FINAL_GEAR 4.235
update_field transmission a3_top FINAL_GEAR 3.4
update_field transmission a4 FINAL_GEAR 3.866
update_field transmission a4_top FINAL_GEAR 3.2
update_field transmission bmwm3gtr FINAL_GEAR 3.85
update_field transmission bmwm3gtre46 FINAL_GEAR 3.4
update_field transmission m3gtre46careerstart FINAL_GEAR 3.62
update_field transmission camaro FINAL_GEAR 3.07
update_field transmission carreragt FINAL_GEAR 4.3
update_field transmission carreragt_top FINAL_GEAR 3.71
update_field transmission caymans FINAL_GEAR 3.55
update_field transmission caymans_top FINAL_GEAR 2.9
update_field transmission clio FINAL_GEAR 3.94
update_field transmission clio_top FINAL_GEAR 3.2
update_field transmission clk500 FINAL_GEAR 3.1
update_field transmission clk500_top FINAL_GEAR 2.7
update_field transmission cobaltss FINAL_GEAR 4.05
update_field transmission cobaltss_top FINAL_GEAR 3.6
update_field transmission cops FINAL_GEAR 3.25
update_field transmission corvette FINAL_GEAR 3.42
update_field transmission corvette_top FINAL_GEAR 2.9
update_field transmission corvettec6r FINAL_GEAR 3.1
update_field transmission cts FINAL_GEAR 3.3
update_field transmission cts_top FINAL_GEAR 3.2
update_field transmission db9 FINAL_GEAR 3.54
update_field transmission db9_top FINAL_GEAR 3.3
update_field transmission eclipsegt FINAL_GEAR 3.5
update_field transmission eclipsegt_top FINAL_GEAR 2.8
update_field transmission elise FINAL_GEAR 4
update_field transmission elise_top FINAL_GEAR 3.2
update_field transmission fordgt FINAL_GEAR 3.36
update_field transmission fordgt_top FINAL_GEAR 3.5
update_field transmission gallardo FINAL_GEAR 3.82
update_field transmission gallardo_top FINAL_GEAR 3.5
update_field transmission gti FINAL_GEAR 3.94
update_field transmission gti_top FINAL_GEAR 3.1
update_field transmission gto FINAL_GEAR 3.46
update_field transmission gto_top FINAL_GEAR 3.3
update_field transmission imperzawrx FINAL_GEAR 3.6
update_field transmission imprezawrx_top FINAL_GEAR 3
update_field transmission is300 FINAL_GEAR 3.7
update_field transmission is300_top FINAL_GEAR 3
update_field transmission lancerevo8 FINAL_GEAR 3.6
update_field transmission lancerevo8_top FINAL_GEAR 3.4
update_field transmission monaro FINAL_GEAR 3.46
update_field transmission monaro_top FINAL_GEAR 3.46
update_field transmission murcielago FINAL_GEAR 3
update_field transmission murcielago_top FINAL_GEAR 3.05
update_field transmission mustanggt FINAL_GEAR 3.6
update_field transmission mustanggt_top FINAL_GEAR 3.3
update_field transmission punto FINAL_GEAR 3.7
update_field transmission punto_top FINAL_GEAR 2.5
update_field transmission rx7 FINAL_GEAR 3.6
update_field transmission rx7_top FINAL_GEAR 3.55
update_field transmission rx8 FINAL_GEAR 4.44
update_field transmission rx8_top FINAL_GEAR 3.5
update_field transmission semi FINAL_GEAR 5
update_field transmission sl500 FINAL_GEAR 2.82
update_field transmission sl500_top FINAL_GEAR 2.82
update_field transmission slr FINAL_GEAR 3.06
update_field transmission slr_top FINAL_GEAR 3.5
update_field transmission speedtest FINAL_GEAR 2.7
update_field transmission supra FINAL_GEAR 3.5
update_field transmission supra_top FINAL_GEAR 3
update_field transmission traffic FINAL_GEAR 3.44
update_field transmission tt FINAL_GEAR 4.2
update_field transmission tt_top FINAL_GEAR 3.3
update_field transmission viper FINAL_GEAR 3.07
update_field transmission viper_top FINAL_GEAR 3"""
carlist = ["911gt2","911turbo","997s","a3","a4","bmwm3gtr","bmwm3gtre46","camaro","carreragt","caymans","clio","clk500","cobaltss","corvette","corvettec6r","cts","db9","eclipsegt","elise","fordgt","gallardo","gti","gto","imprezawrx","is300","lancerevo8","monaro","murcielago","mustanggt","punto","rx7","rx8","sl500","sl65","slr","supra","tt","viper"]
carlist = ["911gt2","911turbo","997s","a3","a4","bmwm3gtr","bmwm3gtre46","camaro","carreragt","caymans","clio","clk500","cobaltss","corvette","corvettec6r","cts","db9","eclipsegt","elise","fordgt","gallardo","gti","gto","imprezawrx","is300","lancerevo8","monaro","murcielago","mustanggt","punto","rx7","rx8","rx8speedt","sl500","sl65","slr","supra","tt","viper"]
carlistNoTop = ["911gt2","bmwm3gtr","bmwm3gtre46","camaro","corvettec6r","rx8speedt","sl65"]
baseRideHeight = 8.5 # 7
correctedRideHeight = {
"911gt2": 1.3,
"911turbo": 1.3,
"997s": 1.0,
"a3": 1.2,
"a4": 1.3,
"bmwm3gtr": 1.3,
"bmwm3gtre46": 1.1,
"camaro": 0.9,
"carreragt": 1.1,
"caymans": 1.2,
"clio": 1.1,
"clk500": 1.1,
"cobaltss": 1.35,
"corvette": 1.4,
"corvettec6r": 0.8,
"cts": 0.9,
"db9": 0.9,
"eclipsegt": 1.3,
"elise": 0.9,
"fordgt": 0.8,
"gallardo": 1.1,
"gti": 1.3,
"gto": 1.3,
"imprezawrx": 1.1,
"is300": 1.1,
"lancerevo8": 1.1,
"monaro": 1.15,
"murcielago": 0.9,
"mustanggt": 1.1,
"punto": 0.9,
"rx7": 1.2,
"rx8": 1.0,
"rx8speedt": 1.0,
"sl500": 1.0,
"sl65": 1.1,
"slr": 1.1,
"supra": 1.0,
"tt": 1.3,
"viper": 0.85
}
rideHeightMultTop = 0.8
topBias = {
"911gt2": 0.8,
"911turbo": 0.6,
@ -578,9 +459,95 @@ topBias = {
"viper": 0.4
}
gripScale = {
"elise": 0.7
}
nfsmsMods = {}
nfsmsModsTop = {}
for car in carlist:
nfsmsMods[car] = {}
nfsmsMods[car]["chassis"] = {}
nfsmsMods[car]["tires"] = {}
# Ride height scale
nfsmsMods["911gt2"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["911gt2"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["911turbo"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["911turbo"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["997s"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["997s"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["a3"]["chassis"]["RIDE_HEIGHT Rear"] = 1.2
nfsmsMods["a3"]["chassis"]["RIDE_HEIGHT Front"] = 1.2
nfsmsMods["a4"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["a4"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["bmwm3gtr"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["bmwm3gtr"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["bmwm3gtre46"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["bmwm3gtre46"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["camaro"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["camaro"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["carreragt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["carreragt"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["caymans"]["chassis"]["RIDE_HEIGHT Rear"] = 1.2
nfsmsMods["caymans"]["chassis"]["RIDE_HEIGHT Front"] = 1.2
nfsmsMods["clio"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["clio"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["clk500"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["clk500"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["cobaltss"]["chassis"]["RIDE_HEIGHT Rear"] = 1.35
nfsmsMods["cobaltss"]["chassis"]["RIDE_HEIGHT Front"] = 1.35
nfsmsMods["corvette"]["chassis"]["RIDE_HEIGHT Rear"] = 1.4
nfsmsMods["corvette"]["chassis"]["RIDE_HEIGHT Front"] = 1.4
nfsmsMods["corvettec6r"]["chassis"]["RIDE_HEIGHT Rear"] = 0.8
nfsmsMods["corvettec6r"]["chassis"]["RIDE_HEIGHT Front"] = 0.8
nfsmsMods["cts"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["cts"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["db9"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["db9"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["eclipsegt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["eclipsegt"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["elise"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["elise"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["fordgt"]["chassis"]["RIDE_HEIGHT Rear"] = 0.8
nfsmsMods["fordgt"]["chassis"]["RIDE_HEIGHT Front"] = 0.8
nfsmsMods["gallardo"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["gallardo"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["gti"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["gti"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["gto"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["gto"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["imprezawrx"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["imprezawrx"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["is300"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["is300"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["lancerevo8"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["lancerevo8"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["monaro"]["chassis"]["RIDE_HEIGHT Rear"] = 1.15
nfsmsMods["monaro"]["chassis"]["RIDE_HEIGHT Front"] = 1.15
nfsmsMods["murcielago"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["murcielago"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["mustanggt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["mustanggt"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["punto"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["punto"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["rx7"]["chassis"]["RIDE_HEIGHT Rear"] = 1.2
nfsmsMods["rx7"]["chassis"]["RIDE_HEIGHT Front"] = 1.2
nfsmsMods["rx8"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["rx8"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["rx8speedt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["rx8speedt"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["sl500"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["sl500"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["sl65"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["sl65"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["slr"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["slr"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["supra"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["supra"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["tt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["tt"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["viper"]["chassis"]["RIDE_HEIGHT Rear"] = 0.85
nfsmsMods["viper"]["chassis"]["RIDE_HEIGHT Front"] = 0.85
# Grip scale
nfsmsMods["elise"]["tires"]["GRIP_SCALE"] = 0.7
parsedVlt = []
for line in properties.split("\n"):
@ -601,66 +568,60 @@ for line in properties.split("\n"):
if len(args) > 0:
parsedVlt.append(args)
#parsedVlt = {}
#for line in properties.split("\n"):
# line = line.strip(" \t\r")
# output = parsedVlt
# arg = ""
# for c in line:
# if c == "#": break
# if c in [" ","\t"]:
# if arg != "":
# if not arg in output:
# output[arg] = {}
# output = output[ærg]
# arg = ""
# continue
# arg = arg + c
# if arg != "":
# if not arg in output:
# output[arg] = {}
# output = output[arg]
for car in carlist:
if not car in correctedRideHeight:
print("car doesn't have height adjusted: " +car)
def findTopLine(parsedVlt,fline):
flength = len(fline)
fline = fline.copy()[:-1]
iVehicle = fline.index("replaceme")
for line in reversed(parsedVlt):
if not len(line) == flength: continue
try:
if line[iVehicle] != "replaceme_top":
continue
except:
continue
def findLine(linef,ls):
linef = linef.copy()
linef.pop(-1)
linef.pop(2)
linefLength = len(linef)
for line in reversed(ls):
length = len(line) - 2
if length != linefLength: continue
lineo = line
line = line.copy()
line.pop(-1)
line.pop(2)
index = 0
success = True
while index < flength - 1:
if index == iVehicle:
index = index + 1
continue
if line[index] != fline[index]:
while index < length:
if linef[index] != line[index]:
success = False
break
index = index + 1
if success == False:
continue
return line
index += 1
if success == False: continue
return lineo
return False
file = open(nfsmsScript,"w")
properties = properties.split("\n")
def lineToPropPair(line):
line = line.copy()
cat = line[1]
line.pop(0)
line.pop(0)
line.pop(0)
line.pop(-1)
line = " ".join(line)
return [cat,line]
def getNfsmsMod(car,line,isTop = False):
prop = lineToPropPair(line)
if isTop:
if car in nfsmsModsTop:
if prop[0] in nfsmsModsTop[car]:
if prop[1] in nfsmsModsTop[car][prop[0]]:
return nfsmsModsTop[car][prop[0]][prop[1]]
if car in nfsmsMods:
if prop[0] in nfsmsMods[car]:
if prop[1] in nfsmsMods[car][prop[0]]:
return nfsmsMods[car][prop[0]][prop[1]]
return False
nfsmsMisc = []
nfsmsCars = {}
for car in carlist:
for line in parsedVlt:
line = line.copy()
length = len(line)
isCarLine = False
isTopLine = False
if "replaceme" in line:
@ -669,58 +630,55 @@ for car in carlist:
isCarLine = True
isTopLine = True
if isCarLine and isTopLine and car in carlistNoTop:
if isCarLine == False:
nfsmsMisc.append(line)
continue
if line[0] == "update_field":
if not (line[1] in ["ecar","pvehicle"]) and isCarLine:
val = float(line[-1])
tval = val
if not isTopLine:
tline = findTopLine(parsedVlt,line)
if tline == None:
print(" ".join(line))
tval = float(tline[-1])
val = val + ((tval - val) * topBias[car])
if car in gripScale:
if line[3] == "GRIP_SCALE":
val = val * gripScale[car]
tval = tval * gripScale[car]
line[-1] = str(val)
if not car in nfsmsCars:
nfsmsCars[car] = [[],[]]
index = 0
while index < length:
line[index] = line[index].replace("replaceme",car,1)
index = index + 1
if not isTopLine:
nfsmsCars[car][0].append(line)
else:
nfsmsCars[car][1].append(line)
for car in nfsmsCars:
for line in nfsmsCars[car][0]:
if line[0] != "update_field": continue
mult = getNfsmsMod(car,line)
if mult == False: continue
line[-1] = str(float(line[-1]) * mult)
for line in nfsmsCars[car][1]:
if line[0] != "update_field": continue
mult = getNfsmsMod(car,line,True)
if mult == False: continue
line[-1] = str(float(line[-1]) * mult)
for car in nfsmsCars:
if not (car in topBias): continue
for line in nfsmsCars[car][0]:
if line[0] != "update_field": continue
if line[1] in ["ecar","pvehicle"]: continue
topLine = findLine(line,nfsmsCars[car][1])
if topLine == False:
print("Warning, no top line found: " +(" ".join(line)))
continue
topLine = topLine.copy()
topLine[-1] = float(topLine[-1])
line[-1] = float(line[-1])
line[-1] = str(line[-1] + ((topLine[-1] - line[-1])*topBias[car]))
file = open(nfsmsScript,"w")
for car in nfsmsCars:
for line in nfsmsCars[car][0]:
if line[2] == "replaceme": line[2] = car
file.write(" ".join(line) + "\n")
if car in carlistNoTop: continue
for line in nfsmsCars[car][1]:
if line[2] == "replaceme_top": line[2] = car + "_top"
file.write(" ".join(line) + "\n")
gearRatios = gearRatios.split("\n")
for line in gearRatios:
line = line.split(" ")
line[-1] = str(float(line[-1]) * ratioMult)
line = " ".join(line)
file.write(line + "\n")
for car in carlist:
file.write("update_field chassis " +car+ " RIDE_HEIGHT Front " +str(baseRideHeight)+ "\n")
file.write("update_field chassis " +car+ " RIDE_HEIGHT Rear " +str(baseRideHeight)+ "\n")
if car in carlistNoTop: continue
file.write("update_field chassis " +car+ "_top RIDE_HEIGHT Front " +str(baseRideHeight)+ "\n")
file.write("update_field chassis " +car+ "_top RIDE_HEIGHT Rear " +str(baseRideHeight)+ "\n")
for car in correctedRideHeight:
rhTop = (baseRideHeight * correctedRideHeight[car]) * rideHeightMultTop
rh = baseRideHeight * correctedRideHeight[car]
rh = rh + ((rhTop - rh) * topBias[car])
file.write("update_field chassis " +car+ " RIDE_HEIGHT Front " +str(rh)+ "\n")
file.write("update_field chassis " +car+ " RIDE_HEIGHT Rear " +str(rh)+ "\n")
if car in carlistNoTop: continue
file.write("update_field chassis " +car+ "_top RIDE_HEIGHT Front " +str(rhTop)+ "\n")
file.write("update_field chassis " +car+ "_top RIDE_HEIGHT Rear " +str(rhTop)+ "\n")
for line in nfsmsMisc:
file.write(" ".join(line) + "\n")
file.close()