generated from simtactics/ts4-workspace
Initial commit
This commit is contained in:
commit
e4d291a1a1
17 changed files with 3220 additions and 0 deletions
62
Utilities/__init__.py
Normal file
62
Utilities/__init__.py
Normal file
|
@ -0,0 +1,62 @@
|
|||
from zipfile import PyZipFile, ZIP_STORED
|
||||
|
||||
import shutil
|
||||
|
||||
import io
|
||||
from Utilities.unpyc3 import decompile
|
||||
import fnmatch
|
||||
import os
|
||||
|
||||
|
||||
def decompile_dir(rootPath):
|
||||
pattern = '*.pyc'
|
||||
for root, dirs, files in os.walk(rootPath):
|
||||
for filename in fnmatch.filter(files, pattern):
|
||||
p = str(os.path.join(root, filename))
|
||||
try:
|
||||
py = decompile(p)
|
||||
with io.open(p.replace('.pyc', '.py'), 'w') as output_py:
|
||||
for statement in py.statements:
|
||||
output_py.write(str(statement) + '\r')
|
||||
print(p)
|
||||
except Exception as ex:
|
||||
print("FAILED to decompile %s" % p)
|
||||
|
||||
|
||||
script_package_types = ['*.zip', '*.ts4script']
|
||||
|
||||
|
||||
def extract_subfolder(root, filename, ea_folder):
|
||||
src = os.path.join(root, filename)
|
||||
dst = os.path.join(ea_folder, filename)
|
||||
if src != dst:
|
||||
shutil.copyfile(src, dst)
|
||||
zip = PyZipFile(dst)
|
||||
out_folder = os.path.join(ea_folder, os.path.splitext(filename)[0])
|
||||
zip.extractall(out_folder)
|
||||
decompile_dir(out_folder)
|
||||
pass
|
||||
|
||||
|
||||
def extract_folder(ea_folder, gameplay_folder):
|
||||
for root, dirs, files in os.walk(gameplay_folder):
|
||||
for ext_filter in script_package_types:
|
||||
for filename in fnmatch.filter(files, ext_filter):
|
||||
extract_subfolder(root, filename, ea_folder)
|
||||
|
||||
|
||||
def compile_module(creator_name, root, mods_folder,mod_name=None):
|
||||
src = os.path.join(root, 'Scripts')
|
||||
if not mod_name:
|
||||
mod_name=os.path.basename(os.path.normpath(os.path.dirname(os.path.realpath('__file__'))))
|
||||
|
||||
mod_name = creator_name + '_' + mod_name
|
||||
ts4script = os.path.join(root, mod_name + '.ts4script')
|
||||
|
||||
ts4script_mods = os.path.join(os.path.join(mods_folder), mod_name + '.ts4script')
|
||||
|
||||
zf = PyZipFile(ts4script, mode='w', compression=ZIP_STORED, allowZip64=True, optimize=2)
|
||||
for folder, subs, files in os.walk(src):
|
||||
zf.writepy(folder)
|
||||
zf.close()
|
||||
shutil.copyfile(ts4script, ts4script_mods)
|
64
Utilities/compiler.py
Normal file
64
Utilities/compiler.py
Normal file
|
@ -0,0 +1,64 @@
|
|||
import fnmatch
|
||||
import os
|
||||
from zipfile import PyZipFile, ZIP_STORED
|
||||
|
||||
import shutil
|
||||
|
||||
import io
|
||||
from Utilities.unpyc3 import decompile
|
||||
import fnmatch
|
||||
import os
|
||||
|
||||
|
||||
def decompile_dir(rootPath):
|
||||
pattern = '*.pyc'
|
||||
for root, dirs, files in os.walk(rootPath):
|
||||
for filename in fnmatch.filter(files, pattern):
|
||||
p = str(os.path.join(root, filename))
|
||||
try:
|
||||
py = decompile(p)
|
||||
with io.open(p.replace('.pyc', '.py'), 'w', encoding='utf-8') as output_py:
|
||||
for statement in py.statements:
|
||||
output_py.write(str(statement) + '\r')
|
||||
print(p)
|
||||
except Exception as ex:
|
||||
print("FAILED to decompile %s" % p)
|
||||
|
||||
|
||||
script_package_types = ['*.zip', '*.ts4script']
|
||||
|
||||
|
||||
def extract_subfolder(root, filename, ea_folder):
|
||||
src = os.path.join(root, filename)
|
||||
dst = os.path.join(ea_folder, filename)
|
||||
if src != dst:
|
||||
shutil.copyfile(src, dst)
|
||||
zip = PyZipFile(dst)
|
||||
out_folder = os.path.join(ea_folder, os.path.splitext(filename)[0])
|
||||
zip.extractall(out_folder)
|
||||
decompile_dir(out_folder)
|
||||
pass
|
||||
|
||||
|
||||
def extract_folder(ea_folder, gameplay_folder):
|
||||
for root, dirs, files in os.walk(gameplay_folder):
|
||||
for ext_filter in script_package_types:
|
||||
for filename in fnmatch.filter(files, ext_filter):
|
||||
extract_subfolder(root, filename, ea_folder)
|
||||
|
||||
|
||||
def compile_module(creator_name, root, mods_folder,mod_name=None):
|
||||
src = os.path.join(root, 'Scripts')
|
||||
if not mod_name:
|
||||
mod_name=os.path.basename(os.path.normpath(os.path.dirname(os.path.realpath('__file__'))))
|
||||
|
||||
mod_name = creator_name + '_' + mod_name
|
||||
ts4script = os.path.join(root, mod_name + '.ts4script')
|
||||
|
||||
ts4script_mods = os.path.join(os.path.join(mods_folder), mod_name + '.ts4script')
|
||||
|
||||
zf = PyZipFile(ts4script, mode='w', compression=ZIP_STORED, allowZip64=True, optimize=2)
|
||||
for folder, subs, files in os.walk(src):
|
||||
zf.writepy(folder)
|
||||
zf.close()
|
||||
shutil.copyfile(ts4script, ts4script_mods)
|
2649
Utilities/unpyc3.py
Normal file
2649
Utilities/unpyc3.py
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue