Как создать модпак с измененными шкурками кораблей при помощи ModsAPI
Дата: 03.01.2017 00:01:04
Цитата Я так и понял. Я хочу сделать скин чисто для одного корабля
- Миссури. Вот так выглядит работающий Main.py:
API_VERSION = 'API_v1.0'
MOD_NAME = "Missouri_War"
SHIP_NAME = 'ASB509_Missouri'
contentSdk.registerShipMod(SHIP_NAME)
MOD_NAME = "Missouri_War"
SHIP_NAME = 'ASB509_Missouri'
contentSdk.registerShipMod(SHIP_NAME)
Kinhcotolom: Понятно. Попробуйте такой скрипт API_VERSION =
'API_v1.0' MOD_NAME = "Missouri_War"
SHIPS_LIST = ['ASB509_Missouri']
SETTINGS = {'installed':False, 'used':{}}
MOD_PATH = utils.getModDir() if utils.isPathExists(MOD_PATH + '/settings.cfg'):
with open('settings.cfg', 'rb') as f:
SETTINGS = utils.jsonDecode( f.read() ) SHIPS_LIST = dict( [[value, True] if value not in SETTINGS['used'] else (value, SETTINGS['used'][value]) for value in SHIPS_LIST] )
def install():
SHIPS_TO_BUILD = [
('ASB509_Missouri', 'content'),
]
FIX_COMMON_MODELS = set(['transparent_glass_alpha_a.tga'])
def writeFile(file, data):
with open(file, 'wb') as f:
f.write(data)
def readFile(file):
try:
with open(file, 'rb') as f:
data = f.readlines()
except:
return None
return list(data)
def build():
if SHIPS_TO_BUILD:
ship, oldMod = SHIPS_TO_BUILD.pop()
for dirname, dirnames, filenames in utils.walk( "%s/%s"%(MOD_PATH, ship) ):
for filename in filenames:
path = ('%s/%s'%(dirname, filename)).replace('\\', '/').replace('//', '/')
ext = filename[filename.rfind('.'):]
if ext == '.mfm':
data = readFile(path)
idx = -1
for line in data:
idx += 1
if 'content/gameplay/' in line:
for common_model in FIX_COMMON_MODELS:
if common_model in line:
toreplace = line.split('')[0]
replacestr = '\tcontent/gameplay/common/textures/%s\t'%common_model
data[idx] = line.replace(toreplace, replacestr)
writeFile(path, ''.join(data) )
contentSdk.buildMod(MOD_NAME, ship, oldMod)
if SHIPS_TO_BUILD:
next()
else:
SETTINGS['installed'] = True
writeConfig()
contentSdk.onDone(MOD_NAME) def next():
contentSdk.extractSources(MOD_NAME, SHIPS_TO_BUILD[-1][0], callback = build)
next()
def writeConfig():
with open('settings.cfg', 'wb') as f:
SETTINGS['used'] = SHIPS_LIST
f.write( utils.jsonEncode( SETTINGS ) ) if not SETTINGS['installed']:
install() в FIX_COMMON_MODELS пишите название файла с расширением *.tga
В файлах моделей прописаны *.tga, если игра не находит tga, то она ищет текстуру с тем-же именем, но с расширением dds Этот скрипт требует наличие ModsSDK. При первом запуске перезагрузит клиент, сам все извлечет. После этого вы можете поменять желаемые текстуры и раздавать людям содержимое целиком.
Но там будет изрядно лишних файлов, которые увеличивают размер мода.
Для уменьшения размера, вам нужно раздавать только Main.py и содержимое папки content. В папку content вам нужно положить те текстуры, которые вы изменили. Папку с файлами корабля и фаил settings.cfg нужно будет удалить. Размер мода значительно уменьшится.
У людей при первом запуске клиент извлечет файлы корабля в папку мода, заменит текстуры теми что лежат в content, создаст фаил settings.cfg, и перезапустится.
SHIPS_LIST = ['ASB509_Missouri']
SETTINGS = {'installed':False, 'used':{}}
MOD_PATH = utils.getModDir() if utils.isPathExists(MOD_PATH + '/settings.cfg'):
with open('settings.cfg', 'rb') as f:
SETTINGS = utils.jsonDecode( f.read() ) SHIPS_LIST = dict( [[value, True] if value not in SETTINGS['used'] else (value, SETTINGS['used'][value]) for value in SHIPS_LIST] )
def install():
SHIPS_TO_BUILD = [
('ASB509_Missouri', 'content'),
]
FIX_COMMON_MODELS = set(['transparent_glass_alpha_a.tga'])
def writeFile(file, data):
with open(file, 'wb') as f:
f.write(data)
def readFile(file):
try:
with open(file, 'rb') as f:
data = f.readlines()
except:
return None
return list(data)
def build():
if SHIPS_TO_BUILD:
ship, oldMod = SHIPS_TO_BUILD.pop()
for dirname, dirnames, filenames in utils.walk( "%s/%s"%(MOD_PATH, ship) ):
for filename in filenames:
path = ('%s/%s'%(dirname, filename)).replace('\\', '/').replace('//', '/')
ext = filename[filename.rfind('.'):]
if ext == '.mfm':
data = readFile(path)
idx = -1
for line in data:
idx += 1
if 'content/gameplay/' in line:
for common_model in FIX_COMMON_MODELS:
if common_model in line:
toreplace = line.split('')[0]
replacestr = '\tcontent/gameplay/common/textures/%s\t'%common_model
data[idx] = line.replace(toreplace, replacestr)
writeFile(path, ''.join(data) )
contentSdk.buildMod(MOD_NAME, ship, oldMod)
if SHIPS_TO_BUILD:
next()
else:
SETTINGS['installed'] = True
writeConfig()
contentSdk.onDone(MOD_NAME) def next():
contentSdk.extractSources(MOD_NAME, SHIPS_TO_BUILD[-1][0], callback = build)
next()
def writeConfig():
with open('settings.cfg', 'wb') as f:
SETTINGS['used'] = SHIPS_LIST
f.write( utils.jsonEncode( SETTINGS ) ) if not SETTINGS['installed']:
install() в FIX_COMMON_MODELS пишите название файла с расширением *.tga
В файлах моделей прописаны *.tga, если игра не находит tga, то она ищет текстуру с тем-же именем, но с расширением dds Этот скрипт требует наличие ModsSDK. При первом запуске перезагрузит клиент, сам все извлечет. После этого вы можете поменять желаемые текстуры и раздавать людям содержимое целиком.
Но там будет изрядно лишних файлов, которые увеличивают размер мода.
Для уменьшения размера, вам нужно раздавать только Main.py и содержимое папки content. В папку content вам нужно положить те текстуры, которые вы изменили. Папку с файлами корабля и фаил settings.cfg нужно будет удалить. Размер мода значительно уменьшится.
У людей при первом запуске клиент извлечет файлы корабля в папку мода, заменит текстуры теми что лежат в content, создаст фаил settings.cfg, и перезапустится.
Как создать модпак с измененными шкурками кораблей при помощи ModsAPI














