import os
import shutil
import subprocess
import sys
def version2e(bspfile):
with open(bspfile, "r+b") as f:
if f.read(4) != b"IBSP":
return False
f.seek(4)
f.write(bytes([0x2e]))
return True
if len(sys.argv) < 2:
sys.exit()
#add extension if necessary
bspfile = sys.argv[1]
if os.path.splitext(bspfile)[1].lower() != ".bsp":
bspfile += ".bsp"
mapname = os.path.splitext(bspfile)[0]
#copy bsp from baseq3 to pk3 folder
#should use os.path.join but fuck it
if not os.path.isdir(mapname + "/maps"):
os.makedirs(mapname + "/maps")
shutil.copy2("../baseq3/maps/" + bspfile, mapname + "/maps/" + bspfile)
#make bspfile point to the actual location of the copied bsp
bspfile = mapname + "/maps/" + bspfile
#change bsp version
if version2e(bspfile) != True:
print("Unable to change BSP version. Exiting...")
sys.exit()
#export entities
subprocess.call(['q3map2', '-exportents', bspfile])
#replace advertisement entities
with open(mapname + "/maps/" + mapname + ".ent", "r+b") as f:
data = f.read().replace(b'advertisement', b'func_static')
with open(mapname + "/maps/" + mapname + ".ent", "wb") as f:
f.write(data)
#put entities back into bsp
subprocess.call(['q3map2', '-onlyents', mapname + "/maps/" + mapname+".ent"])
os.remove(mapname + "/maps/" + mapname + ".ent")
JS 2014