Example #1
0
if os.path.isdir(updateDir):
    #First, extract all DLC.
    for dir in os.listdir(updateDir):
        if dir == "Patch":
            continue

        print("Extracting DLC %s..." % dir)
        dumpRoot(os.path.join(updateDir, dir, "Data"), patchDir,
                 targetDirectory)

#Now extract the base game.
print("Extracting main game...")
dumpRoot(dataDir, patchDir, targetDirectory)

#Write GUID table.
print("Writing EBX GUID table...")
ebx.writeGuidTable(targetDirectory)

#MOH:WF hack: extract driving levels assets.
if os.path.isdir(os.path.join(gameDirectory, "game", "Speed")):
    print("Extracting MOH:WF driving assets...")
    gameDirectory = os.path.join(gameDirectory, "game")
    dataDir = os.path.join(gameDirectory, "Speed")
    updateDir = os.path.join(gameDirectory, "Update")
    patchDir = os.path.join(updateDir, "Patch", "Speed")
    dumpRoot(dataDir, patchDir, os.path.join(targetDirectory, "speed"))

    #Write GUID table.
    print("Writing EBX GUID table...")
    ebx.writeGuidTable(os.path.join(targetDirectory, "speed"))
Example #2
0
    #New version with multiple cats split into install groups, seen in 2015 and later games.
    #Appears to always use cas.cat and never use delta bundles, patch just replaces bundles fully.
    dataDir=os.path.join(gameDirectory,"Data")
    updateDir=os.path.join(gameDirectory,"Update")
    patchDir=os.path.join(gameDirectory,"Patch")

    #Detect cat version.
    if tocLayout.getSubObject("installManifest").get("maxTotalSize")!=None:
        readCat=cas.readCat2
    else:
        readCat=cas.readCat3

    if os.path.isdir(updateDir):
        #First, extract all DLC.
        for dir in os.listdir(updateDir):
            print("Extracting DLC %s..." % dir)
            dir=os.path.join(updateDir,dir,"Data")
            findCats(dir,patchDir,readCat)
            dumpRoot(dir,patchDir,targetDirectory)

    #Now extract the base game.
    print("Extracting main game...")
    findCats(dataDir,patchDir,readCat)
    dumpRoot(dataDir,patchDir,targetDirectory)

#Write GUID table.
print("Writing EBX GUID table...")
ebx.writeGuidTable(targetDirectory)

payload.zstdCleanup()