Pex чем открыть skyrim

Обновлено: 06.07.2024

Перевод - это великое дело, но что делать, если переводимый текст записан в функции MessageBox "ля ля - фа фа", а исходника (.psc файла) этого скрипта злобный автор не предоставил.

Не унываем - выход есть: Bethesda снабдила нас возможностью дезассемблировать скрипты, просто не сказала нам об этом. Итак, как это сделать:

  • Ну это в принципе ясно - ставим "конструктор"
  • Находим папку %gamedir%\Papyrus Compiler и обращаем в ней внимание на файл PapyrusAssembler.exe - это и есть ассемблер скриптов, а он-же и дезассемблер, если задать соответствующий ключ.

Как им пользоватся? А всё просто:

  • Устанавливаем рабочую папку в папку с .pex файлом, который нужно дезассемлбировать

Ну, это сделать так, чтоб в утилите cmd перед курсором писалось например e:\Skyrim\data\Scripts, короче путь к интересующей нас папке. Это можно сделать набором команд cd или перейти в файлменеджере (напр. Total commander) в нужную папку и в командной строке набрать cmd и нажать "ввод".
В командной строке (можно, даже лучше, создать .bat файл) пишем:

"%gamedir%\Papyrus Compiler\PapyrusAssembler" -D

  • Жмём ввод.
  • Итого, если всё написано правильно т. е. если программа написала:
  • То ищем в папке с .pex файлом файл формата "имя нашего pex файла.disassemble.pas" - это и есть дезассемблированный файл, который хоть и имеет специфический формат, сильно отличающийся от формата psc файла, но уже являющийся текстовым и его можно редактировать.

Итак. Редактировать. А что редактировать? А то же (названия функций принципиально не изменены т. е. забивай в поиск название функции напр. MessageBox (или Message), находи строку, в которой она встречается и редактируй текст в "кавычках".

Оригинальный скрипт

Дезассемблированный скрипт

Просмотрел? Увидел строку

CallStatic debug MessageBox ::nonevar "Привет, мир!" ;@line 6

Это и есть интересующее нас место. Что тут менять - это и ежу понятно: "Привет мир!" (кавычки сохраняем - они - техническая часть текста)

Ну поменяли. А что дальше? Да всё просто - ассемблируем!

  • стираем из имени файла участок .disassemble
  • и пишем всё то же, что и при дезассемблировании, только без ключа -D :

"%gamedir%\Papyrus Compiler\PapyrusAssembler"

Если всё введено правильно то программа выдаст:

PapyrusAssembler

Использование: PapyrusAssembler файл [-D] [-V] [-Q] [-A] [-S] [-?]

Файл имя файла (путь берётся только из "рабочей папки", больше никак), который будет скомпилирован или декомпилирован. файл должен указыватся без расширения! Компилятор ищет файл с расширением ".pas". Декомпилятор ищет расширение ".pex". Внимание! декомпиляция не происходит, если имя файла скрипта не совпадает со стокой, начинающейся с байта 0Х12h в теле скрипта! (в нормальном состоянии строка дублирует имя файла)

  • -D Дезассемблировать объект, если не указан - ассемблирует его.
  • -V Включить подробный режим. (выводит туеву хучу всякой техинфы)
  • -Q Включает тихий режим. (выводятся только сообжения об ошибках)
  • -A Только анализ. Ассемблирование/дезассемблирование не производится.
  • -S Удаляет отладочную информацию из скомпилированного (.pex) файла. Нельзя использовать с -A или -D
  • -? Выводит справочную информацию

PapyrusCompiler

Объект

  • Файл Указывает файл для компиляции. (-all не указан)
  • папка Указывает папку для компиляции. (-all указан)

Аргументы

Один или несколько из следующих:

  • -debug -d Включает режим отладки компилятора, на экран выводится техническая информация.
  • -optimize -op Включает режим оптимизации кода скрипта.
  • -output -o= Указвает каталог для записи скомпилированных скриптов.
  • -import -i= Указвыает папки для импорта библиотек (тоже psc файлы) компилятором, разделённые ";". Обязателен для указания. Путь по умолчанию %gamedir%\data\scripts\source\
  • -flags -f= Указывает путь к файлу с флагами, определёнными пользователем. Обязателен для указания. "дефолтный" файл флагов лежит по пути %gamedir%\data\scripts\source\TESV_Papyrus_Flags.flg
  • -all -a Задаёт компилятору скомпилировать все psc файлы в заданной папке. (в качестве объекта должна быть заданна папка).
  • -quiet -q Тихий режим. Отображаются сообжения только об ошибках.
  • -noasm Ассемблер не вызывается и не производится ассемблирование скрипта. (короче только анализ)
  • -keepasm Сохраняет ассемблер файл после завершения работы ассембера. (сохраняет pas файл)
  • -asmonly Создаёт ассемблер файл, но не вызывает ассемблер. (создаёт pas файл, но не создаёт pex файл)
  • -? Выводит справочную информацию.

Файл TESV_Papyrus_Flags.flg (по умолчанию лежит в %gamedir%\data\scripts\source\TESV_Papyrus_Flags.flg. Начинка по умолчанию и её описание:

/*
Формат строк задаётся следующим образом (пробелы игнорируются, index должен содержать 0 - 31 символов):
Flag // Флаг применяется для всех типов
или:
Flag < >// флаг применяется только для указанных типов
*/

// Список флагов для TESV - НЕ РЕДАКТИРОВАТЬ

// Флаг прячет скрипт или параметр от игрового редактора. (ну небось типа в редакторе не отображается)
Flag Hidden 0
Script
Property
>

// Флаг на объекте определяет его как скрипт, который будет рассматривать система состояний.
// Флаг на переменоой определяет переменную скрипта как исследуемую системой состояний.
// Сам нихера не понял, что это значит, но самый близкий перевод.
Flag Conditional 1
Script
Variable
>


Часть 1. Диффузная карта.

Итак, здесь я расскажу базовую информацию относительно текстур для Skyrim.
Возьмем к примеру мантию архимага. Открываем в Nifscope (программа для чтения .nif файлов, отвечающих за объемную модель, форму, т.е. меш. Подробней о ней я вероятно расскажу в другой статье).


Как мы видим на скрине, здесь присутствует ветка NiTriShape, к которой привязаны ветки - BSDismemberSkinInstance, NiTriShapeData и BSLightingShaderProperty.
В этом уроке нас будет интересовать ветка BSLightingShaderProperty, которая разворачивается и открывает нам еще одну вкладку BSShaderTextureSet.

Именно ветка BSLightingShaderProperty отвечает за текстуры модели и их поведение в игре, где ветка BSShaderTextureSet собственно собирает все текстуры, которые так или иначе влияют на 3д модель.

На скрине у нас на данный кусок меша (ветка NiTriShape) влияют две текстуры, о которых далее речь пойдет подробнее, - это robes.dds и robes_n.dds.

robes.dds является диффузной картой, то есть она является базовой картой, основной текстурой, без которой наша модель будет "голой". Иногда такая текстура обозначается модмейкерами приставкой _d (было бы, например, robes_d.dds). Но данное действие не обязательно. Игра все равно "понимает" текстуру без _d как диффузную.

Итак, вот как выглядит диффузная текстура:


Вторая текстура с приставкой _n (в нашем примере это и robes_n.dds) называется картой нормалей. Она накладывается на диффузную и отвечает за ее объемность. Отсюда второе название этой карты - карта высот.
Вот как выглядит карта нормалей:


Для работы с текстурами нам понадобится графический редактор.

Я использую Adobe Photoshop CS2 (с надстройкой для чтения dds файлов, которая называется NVIDIA tools) и ACD FotoCanvas V 2.0, второй нужен мне для одной очень полезной функции, о которой я расскажу ниже.

Текстура изначально может быть создана в любом формате - jpg, png. Здесь все зависит от вашего желания, усидчивости и фантазии. Поэтому создание непосредственно текстуры я оставляю вам на самостоятельное изучение.

Для того, чтобы вашу текстуру видела игра, необходимо перевести ее в формат dds.
Здесь у фотошопа есть несколько вариантов сохранения текстуры:


Рекомендуется сжатие DXT5 Interpolated Alpha, хотя допустимо также использовать DXT3 Explicit alpha. Со сжатием DXT3 Explicit alpha размер получаемого dds файла будет меньше, но DXT5 Interpolated Alpha обеспечивает лучшее качество текстуры.

Кроме того, хочу обратить внимание, что рекомендуемые размеры текстур для Skyrim для лучшей работы игры, это:
128х128
256х256
512х512,
1024х1024,
2048х2048.

Кроме того, следует иметь в виду, что высота и ширина текстуры, при ее конвертации в dds, должны быть кратными четырем, иначе программа не сможет выполнить конвертацию.

Часть 2. Карта нормалей.

С диффузной картой мы разобрались. Теперь перейдем к карте нормалей. К слову сказать то, что было описано относительно размера и формата сжатия диффузной карты, к карте нормалей также применимо.

Итак, карта нормалей может быть создана следующим образом.

Берем нашу текстуру, которую мы уже перевели в dds и открываем в фотошопе.

Затем переходим во вкладку Filter как показано на скрине и в NVIDIA tools выбираем normal map filter.


Нам открывается меню:


Я выставляю значение 1, поскольку если выставить больше, то текстура становиться более "рельефной" и "шерховатой".


Но такая карта нормалей при наложении даст сильный блеск. Нужно "затемнить" её, используя альфа-канал.

И тут нам понадобиться программа ACD FotoCanvas V 2.0.

В ней мы открываем нашу текстуру из формата .jpg или .jpg, а затем делаем переход к серой палитре как показано на скрине:




Затем мы копируем данное изображение (copy) и открываем в фотошопе карту нормалей, переходим в альфа канал и вставляем на него то, что мы скопировали:


Всё! Теперь диффузная текстура не будет сплошь блестеть при наложении на нее карты нормалей.

A tool for modifying compiled .PEX files that can later be loaded by placing them in your /SCRIPTS/ folder.

Author's instructions

File credits

This author has not credited anyone else in this file

Donation Points system

This mod is not opted-in to receive Donation Points

Version 0.2.1

  • Fixed a bug causing invalid code to be displayed by the decompiler.
  • Fixed an issue with the instruction editor that could cause invalid arguments.
  • Fixed a bug causing PexInspector to sometimes crash when modifying instructions.
  • Updated so that the decompiler re-runs whenever you modify the instructions.
  • Updated the syntax highlighting to be a bit prettier and cover more keywords.

Version 0.2.0

PexInspector v0.2.1 Alpha Release
================================
Description
-----------
A Tool to modify Compiled Papyrus Scripts (.PEX) files
Works for both Fallout 4 and Skyrim.

Warning:
This tool is still in alpha and may contain a lot of unknown bugs so use with caution.
All scripts that you save will automatically have a backup created, so in worst case scenario you can just revert back.

Changelog
---------
Version 0.2.1
* Fixed a bug causing invalid code to be displayed by the decompiled.
* Fixed an issue with the instruction editor that could cause invalid arguments.
* Fixed a bug causing PexInspector to sometimes crash when modifying instructions.
* Updated so that the decompiler re-runs whenever you modify the instructions.
* Updated the syntax highlighting to be a bit prettier and cover more keywords.

To Come In The Future
---------------------
* Edit / Add Properties
* Edit / Add Methods
* Edit / Remove / Add Structs (Fallout 4 only)
* Pex Validator ( Verify the PEX files to make sure that they will work )

PexInspector contains a ported and modified version of this decompiler.
Full source code is available on github as well.


Интересная вещица. Возможно, мне пригодится. Пакость молодец.


Похоже что мой GUI уже морально устарел, хе.


Похоже что мой GUI уже морально устарел, хе.

Нет, он куда удобнее и проще. Тут сам черт ногу сломит.


Мне надо было наверное поставить смайлик. Мой сарказм опять не не понят.


Проще пользоваться Champollion. При дизасемблировании даже разметку сохраняет.


Я посмотрел этот Champollion, возможно что я обновлю мой GUI для использования и его тоже. Будет возможно использовать оба метода.

Когда-то разговаривал, с автором программы Champollion, так он и не стал ее доводить до ума и сделать хоть какую-то понятную оболочку, но в свое время когда она только вышла, написал что у нее есть проблемы с диссамбелированием скриптов PEX поддерживающие MCM-меню, быстро обновил и исправил, все стало нормально диссамбелировать, но так до конца и не понял как проводить ассембелирование отредактированного файла PAS, чтобы собрать назад скрипт PEX. Написал снова, но так ответа больше и не дождался, видимо он свалил. После увидел надпись что его ник забанен и связаться с ним не получилось. Может у кого есть версия этой программы старше версии 1.01 с поддержкой 64-х разрядной операционной системы, выложите ссылку, буду очень признателен. За программу спасибо, буду разбираться с ней тоже.


Когда-то разговаривал, с автором программы Champollion, так он и не стал ее доводить до ума и сделать хоть какую-то понятную оболочку, но в свое время когда она только вышла, написал что у нее есть проблемы с диссамбелированием скриптов PEX поддерживающие MCM-меню, быстро обновил и исправил, все стало нормально диссамбелировать, но так до конца и не понял как проводить ассембелирование отредактированного файла PAS, чтобы собрать назад скрипт PEX. Написал снова, но так ответа больше и не дождался, видимо он свалил. После увидел надпись что его ник забанен и связаться с ним не получилось. Может у кого есть версия этой программы старше версии 1.01 с поддержкой 64-х разрядной операционной системы, выложите ссылку, буду очень признателен. За программу спасибо, буду разбираться с ней тоже.

Версия 1.0.1 работает нормально (программа предназначена только для дизассемблирования).

Ассемблировать скрипты проще всего настроив Notepad++


Кербер тут главная ценность не в дизассемблере а в редакторе pex. таковой есть в транслейтере но он карявый.

У меня уже бошка трещит. Всё что связано с PEX заморочено на куче команд и утилит. Есть хоть одна программа которая просто открывает PEX редактирует и сохраняет?

У меня уже бошка трещит. Всё что связано с PEX заморочено на куче команд и утилит. Есть хоть одна программа которая просто открывает PEX редактирует и сохраняет?

Нет конечно что и обидно, ибо все скриптёры полные му.ки, те ещё жо.ы, они ленивые дол..яшеры, что даже леняться сделать меню, и автор этого поста тоже полный му.ак ибо так никто не описывает: "ассоцийруте" кто так пишет а? ты чё умник что ли? пиши нормльным понятным языкам, а не умными словами. так а теперь Kapral, нет к сожелению нет таких прог даже к сегодняшнему моменту, все ленивые никто ничего не может, проще самому написать скрипт, он будет в 10 раз кароче декомпилируемого, ну а чтоб его написать нужно знать основы C++, и это бессмысленно

Читайте также: