Реклама | Adv
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
Сообщения форума
Реклама | Adv

Как создать модпак с измененными шкурками кораблей при помощи 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)  

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, и перезапустится.

Реклама | Adv