[Мануал] Компилируем/Декомпилируем мутатор

Тема в разделе "Кодинг", создана пользователем kok-s, 7 июл 2013.

Метки:
  1. kok-s

    kok-s Консильери

    Компилируем/Декомпилируем мутатор

    Статья частично взята с proton-net.com
    Итак начнём!

    Первое что нам нужно это Killing Floor SDK, а именно чтоб в папке system был UCC.exe (UCC - это Исполнительная среда операционной системы Unreal). В любом правильном репаке с игрой SDK должен быть (если нет то нужно скачать).

    Для изменения кода мутатора необходимо обладать более-менее серьезными навыками программирования. Здесь лишь будет инструкция как "разобрать", а затем собрать мутатор. Само кодирование здесь не рассматривается.

    Например есть мутатор ClotsDay. Он состоит из 2-х файлов: ClotsDay.u и ClotsDay.ucl, находящихся в папке system . Для разбивки его на классы для редактирования кода, создаем в той же папке .bat файл с названием "Декомпилирование мутаторов", и в нем пишем:

    UCC.exe BatchExport ClotsDay Class uc ..\ClotsDay\Classes
    del steam_appid.txt
    pause

    В данном примере ClotsDay - это имя пакета (т.е если нужно разобрать допустим ServerPerksP, то вместо ClotsDay пишем ServerPerksP). Строчка del steam_appid.txt нужна нам для удаления данного файла т.к если вы компилируете на том же клиенте на котором и играете, то вы не сможете зайти на любой сервер после компиляции/декомпиляции.

    Если вы проделываете это на Русском клиенте, то находим killingfloor.ini и меняем там Language=rus на Language=int дабы избежать проблем с компиляцией в будущим. На самом деле есть намного лучший способ вам не узнать проблему при сборке мутатора, когда вместо False и True у вас в исходниках будет Ложь и Истина.

    Зайдите в папку System и откройте блокнотом файл "Core.rus" и замените его содержимое категории [General] на это:

    [General]
    Product="Unreal"
    Engine="Unreal Engine"
    Copyright="Copyright 2004 Epic Games, Inc."
    True="True"
    False="False"
    None="None"
    Yes="Yes"
    No="No"
    Из-за изменения текста в этих строчках происходит такой глюк (1с конечно на это наплевать).

    Далее запускаем этот .bat файл. После успешной разкомпиляции находим в корневой папке сервера папку ClotsDay, а в ней папку Classes, а в ней несколько файлов классов этого мутатора, которые можно успешно править тем же Notepad ++.

    Так же может понадобиться вытащить текстуры которые вшиты в пакет мутатора. Для этого создаём .bat файл с именем "Извлечение текстур", и в нем пишем:

    ucc batchexport ClotsDay.u Texture dds ..\ClotsDay\Textures

    Тут всё так же ClotsDay - это имя пакета из которого мы хотим вытащить текстуры. Хочу заметить формат текстур может быть другой.

    Или допустим нужно вытащить звуки которые вшиты в пакет мутатора. Для этого создаём .bat файл с именем "Извлечение звуков", и в нем пишем:

    UCC.exe BatchExport ClotsDay Sound wav ..\ClotsDay\Sounds

    ClotsDay - это имя пакета из которого мы хотим вытащить звуки в формате wav. Как и в случае выше нужно задать нужный формат.

    Если вы хотите разобрать код оружия или мутанта сначала нужно разложить нужные ресурсы по папкам (текстуры в папку Textures и т.д). Так как в коде есть так сказать отсылки к ресурсам, то компилятор не декомпилирует код без нужных ресурсов.

    Когда код подправили, то нужно мутатор опять собрать. Для этого удаляем из папки system старые 2 файла мутатора. Затем ищем в файле killingfloor.ini раздел [Editor.EditorEngine] и дописываем там строчку EditPackages=ClotsDay. Затем в той же папке system создаем .bat файл с названием "Компилирование мутаторов" следующего содержания:

    ucc.exe make
    del steam_appid.txt
    pause

    Таким образом компилятор соберёт всё, что прописано у вас в killingfloor.ini в строчках "EditPackages=".

    Важное отступление.
    Для сбора некоторых мутаторов нужно соблюдать порядок прописки в "EditPackages=". Например чтоб собрать мутатор ServerPerks (Version 7.10) нужно использовать такой порядок:
    EditPackages=ServerPerks
    EditPackages=ServerPerksP
    EditPackages=ServerPerksMut
    + полезно помнить про экспорт и импорт смайликов

    Порядок нужен потому, что один пакет напрямую зависит от ресурсов (классов, функций) другого пакета. В данном случае первым должен быть именно EditPackages=ServerPerks. У многих старые версии файла killingfloor.ini (точнее не добавлены некоторые стандартные пакеты в порядок компиляции) и от этого возникают ошибки.
    На данный момент порядок стандартных пакетов таков:
    EditPackages=Core
    EditPackages=Engine
    EditPackages=Fire
    EditPackages=Editor
    EditPackages=UnrealEd
    EditPackages=IpDrv
    EditPackages=UWeb
    EditPackages=GamePlay
    EditPackages=UnrealGame
    EditPackages=XGame
    EditPackages=XInterface
    EditPackages=XAdmin
    EditPackages=XWebAdmin
    EditPackages=GUI2K4
    EditPackages=xVoting
    EditPackages=UTV2004c
    EditPackages=UTV2004s
    EditPackages=ROEffects
    EditPackages=ROEngine
    EditPackages=ROInterface
    EditPackages=Old2k4
    EditPackages=KFMod
    EditPackages=KFChar
    EditPackages=KFGui
    EditPackages=GoodKarma
    EditPackages=KFMutators
    EditPackages=KFStoryGame
    EditPackages=KFStoryUI
    EditPackages=SideShowScript
    Это происходит при патче клиента (как правило файл настроек сохраняется намеренно). Иногда разработчики добавляют стандартные пакеты, потому и без нужного порядка не собрать любой кастомный пакет. Если вы задумали привязать кастомное оружие к мутатору ServerPerks, то "EditPackages=" оружия должен быть всегда выше.

    Ещё один момент. Допустим мы хотим вшить текстуру в .u пакет. Для этого соответственно нужно прописать её в коде и создать дополнительную папку Textures рядом с папкой Classes и положить туда нужную текстуру. Пример можно увидеть в том же ServerPerks 7.10. По аналогии и со звуками можно это проделать. Можно так же соединять пакеты с ресурсами и ещё много чего делать. Более подробней об этой теме можно найти на форуме (это имеет отношение уже к изменению кода).

    На этом закончим с отступлением и продолжим.

    Запускаем созданный нами .bat файл . если компиляция мутатора пройдет без ошибок, то в папке system опять появятся уже Ваши 2 файла мутатора: ClotsDay.u и ClotsDay.ucl. Если будут ошибки (если вы накосячили с кодом), то компилятор укажет в каком классе и в какой строчке и какая ошибка.

    Ещё хочу добавить. Что бы защитить свой мутатор от декомпиляции нужно после того как вы скомпилировали готовый мутатор создать .bat файл с именем "Защита мутатора" и в нем пишем:

    ucc Editor.StripSourceCommandlet ClotsDay.u
    pause

    После такой манипуляции ваш мутатор ClotsDay будет защищён от декомпиляции.

    Вот в принципе и всё что нужно знать. Удачи! :thumbsup:
     
    WipeMaster, KpblcKa_^^, Папка01 и 3 другим нравится это.
  2. Gwyn

    Gwyn Чудо Йогурт

    в батники на сборку/разбор нннада добавить
    Код:
    del steam_appid.txt
    
    иначе если сборка/разборка идет на клиенте, вы не сможете зайти на любой сервер.
     
    KpblcKa_^^, Папка01 и ЛОХМАТЫЙ нравится это.
  3. kok-s

    kok-s Консильери

    Не когда не компилировал на том же клиенте на котором играю. Как он мешает?

    Добавил в 1 пост.
     
  4. kok-s

    kok-s Консильери

    Ребят задался вопросом как звуки вытащить из .u пакета?
     
  5. 3xzet

    3xzet Мододел "Ы"

    Поиском
     
    LLIePLLIeHb и kok-s нравится это.
  6. kok-s

    kok-s Консильери

    Спс за ссыль)) Ответ на свой вопрос нашёл ниже в посте Flame. Можно чуть дополнить мануал))
     
  7. kok-s

    kok-s Консильери

    Прошу модераторов удалить все посты ниже темы т.к я дополнил мануал и эти посты больше не имеют смысла.
     
  8. w.a.l

    w.a.l Консильери

    Вообщето же надо utx ! wav=uax

    Сделал как tga файлы весят по 0 кб. Пустые.
    Сделал как dds собрал в utx. Сервер просит преустановить игру

    Как извлечь как utx,uax,ukx? мне нужны файлы не classes, в своём паке.

    Если я предположим не знаю какие ещё файлы и как были засунуты: в папках или просто рядом.

    Может есть команда расспаковать как было изначально ?

    e4eye4tye5.png

    Фиг же поймёшь на примере этого мутатора (рулетка), что должнобыть так!
     
  9. 3xzet

    3xzet Мододел "Ы"

    Никак не извлечь. Все эти файлы - это один и тотже формат, т.е. нет никакой разницы между *.utx *.uax *.u *.usx *.ukx. Можешь открыть свой u-файл в браузере текстур и делать что хочешь.
     
  10. w.a.l

    w.a.l Консильери

    Я там отредактировал сообщение

    браузере текстур u не отображается !!!!
     
  11. 3xzet

    3xzet Мододел "Ы"

    А выбрать все типы файлов не пробовал? На крайняк в строке выбора файла для открытия ввести *.* и нажать Enter
    Что и в каком формате должно лежать можно глянуть в коде.
    A вообще на рулетку исходники существуют, т.е. на слотмашину.
     
  12. w.a.l

    w.a.l Консильери

    Насчёт и сходников знаю. Это я привёл пример.
    Указал путь на u. Строка выбора текстуры пустая. Отображаются все тысячи файлов всех UTXов. U там нет .

    Вот эту же рулетку как распаковать правильно будет ?
     
  13. 3xzet

    3xzet Мододел "Ы"

    Ну не знаю.. выложи чтоль рулетку сюда, или что там у тебя..
     
  14. w.a.l

    w.a.l Консильери

    Отправил в ЛС
     
  15. Flame

    Flame -Заслуженый кодер форума-

    ох
    при чём тут utx ! wav=uax
    я же написал

    ну воспользуйся, например, этой программкой
    пример *.bat файла я там уже сделал
    прописываешь вместо KF_Wep_Claymore в бат файл то, что тебе надо и оно экспортируется

    но для *.uax эт не подходит
    там проще UCC.exe BatchExport *** Sound wav ..\***\Sounds использовать

    upd. А. Я ошибаюсь. -export -all -sounds для uax в umodel
    3xzet подсказал ))

    А подумать чуток?
    И поискать вкладку Actor Classes, открыть там и перейти в текстуры...
     
  16. prototype22

    prototype22 Солдат

    Вопрос такой:
    Как извлечь из .u именно .uax файл, а не wav?
    Проблематично собрать wav файлы в кучу (в .uax)
     
  17. Flame

    Flame -Заслуженый кодер форума-

    вроде никак
    открывай *.u в редакторе (Actor Classes), переходи на вкладку звуков, выбирай нужный пакет
    и переименовывай название пакета каждого звука
    хотя экспорт в wav и импорт пожалуй побыстрее )
     
    prototype22 нравится это.
  18. w.a.l

    w.a.l Консильери

    Ещё вопрос возник: Как собрать 2 зависимых пакета ?


    EditPackages=X
    EditPackages=Y

    где Х требует Y который не собран, а Y требует X который не собран
    Оба пакета обращаются друг к другу

    Вариант в 1 пакет - нельзя. Прчина - перестают работать некоторые муты
     
  19. LLIePLLIeHb

    LLIePLLIeHb Guest

    Нужно больше информации , здесь телепатов нет.
     
  20. w.a.l

    w.a.l Консильери

    EditPackages=пак мутаторов которые обращаються к перкам + оружие которое прописано в перках
    EditPackages=перки (прокачка\скидки оружия)