Как правильно подключать свои папки проектов для компиляции .u пакетов. А так же мы скомпилируем простой скрипт. Что нам понадобится:
1) Unreal Runtime так как он наиболее подходит по схожести стандартных функций.
2) Декомпилятор .u пакетов или просмотерщик классов, такие как UE Explorer или WOTgreal Package Exporter
3) Текстовый редактор, я использую Notepad++ и плагин для подсветки UnrealScript
Приступим:
1) Первым делом нам понадобится скрипт/класс который мы будем собирать, я использую клиент Lineage II Epic Tales of Aden – Infinite Odyssey: Shadow of Light part 2 и декомпилятор WOTgreal Package Exporter. Открываем декомпилятором папку систем и выбираем к примеру LineageMonster7.u и в появившемся списке классоф ищем класс clock_work_cucuru, это ездовая птица, которая у нас появилась в клиенте GOD, после того как нашли и выбрали у нас с права появится код, его мы и будем использовать.
1) Unreal Runtime так как он наиболее подходит по схожести стандартных функций.
2) Декомпилятор .u пакетов или просмотерщик классов, такие как UE Explorer или WOTgreal Package Exporter
3) Текстовый редактор, я использую Notepad++ и плагин для подсветки UnrealScript
Приступим:
1) Первым делом нам понадобится скрипт/класс который мы будем собирать, я использую клиент Lineage II Epic Tales of Aden – Infinite Odyssey: Shadow of Light part 2 и декомпилятор WOTgreal Package Exporter. Открываем декомпилятором папку систем и выбираем к примеру LineageMonster7.u и в появившемся списке классоф ищем класс clock_work_cucuru, это ездовая птица, которая у нас появилась в клиенте GOD, после того как нашли и выбрали у нас с права появится код, его мы и будем использовать.
class clock_work_cucuru extends LineageRidePawn; function PostBeginPlay() { Super.PostBeginPlay(); SimulationCollisionObjects.length = 3; SimulationCollisionObjects[0] = new class'SimulationCylinderCollision'; SimulationCylinderCollision( SimulationCollisionObjects[0] ).BoneIndexA = 39; SimulationCylinderCollision( SimulationCollisionObjects[0] ).BoneIndexB = 41; SimulationCylinderCollision( SimulationCollisionObjects[0] ).Radius = 3.f; SimulationCylinderCollision( SimulationCollisionObjects[0] ).SphereA = false; SimulationCylinderCollision( SimulationCollisionObjects[0] ).SphereB = false; SimulationCollisionObjects[1] = new class'SimulationCylinderCollision'; SimulationCylinderCollision( SimulationCollisionObjects[1] ).BoneIndexA = 67; SimulationCylinderCollision( SimulationCollisionObjects[1] ).BoneIndexB = 26; SimulationCylinderCollision( SimulationCollisionObjects[1] ).Radius = 10.f; SimulationCylinderCollision( SimulationCollisionObjects[1] ).SphereA = false; SimulationCylinderCollision( SimulationCollisionObjects[1] ).SphereB = false; SimulationCollisionObjects[2] = new class'SimulationCylinderCollision'; SimulationCylinderCollision( SimulationCollisionObjects[2] ).BoneIndexA = 67; SimulationCylinderCollision( SimulationCollisionObjects[2] ).BoneIndexB = 88; SimulationCylinderCollision( SimulationCollisionObjects[2] ).Radius = 10.f; SimulationCylinderCollision( SimulationCollisionObjects[2] ).SphereA = false; SimulationCylinderCollision( SimulationCollisionObjects[2] ).SphereB = false; } defaultproperties { GroundMaxSpeed=170.00 GroundMinSpeed=26.00 bSpineRotation=True CollisionRadius=20.00 CollisionHeight=40.00 }
2) Что нам нужно что б скомпилировать наш пакет с классом который мы выбрали для компиляции: Создать папку в главном каталоге рунтайма с названием будущего пакета .u который мы хотим получить. И в данной папке создать папку Classes. Classes - папка в которой будут лежать наши исходные классы для компиляции в .uc формате. Теперь нам необходимо создать любым текстовым редактором класс clock_work_cucuru с форматом .uc и вставить в него код который мы выбрали в нашем декомпиляторе. Сохраняем и закрываем.
3) После того как мы создали папку нашего проекта с нужным классом нам необходимо подключить её для компиляции в нашем редакторе, для этого нам необходимо найти в папке system, файл UE2Runtime.ini и открыть его. В данном файле мы будем подключать наш проект для компиляции, для этого нам необходимо найти секцию [Editor.EditorEngine] и ниже в конце секции будет параметры EditPackages= , они и отвечают за подключение. После самого нижнего EditPackages= в нашей секции добавляем строку EditPackages=Имя Нашей Папки Проекта Но так как наш класс использует класс LineageRidePawn и многие другие класс используют LineagePawn, нам необходимо подключить пакет LineageWarrior.u, для этого берём из папки систем нашего клиента наш пакет и декриптером l2decrypt.exe прогоняем, полученный файл переименовуем в оригинальное название и закидываем в папку system нашего редактора. И в нашем конфиге выше EditPackages=Имя Нашей Папки Проекта Добавляем строку EditPackages=LineageWarrior, именно выше так как наши скрипты используют классы и методы из пакета LineageWarrior а компилятор ла2 работает только последовательно! Так же вы можете подключить наши скрипты в редактор, для этого ищем в этом же конфиге секцию [UnrealEd.UnrealEdEngine] и так же после нижнего EditPackages= добавляем наши выше добавленные строки. Всё теперь мы можем сохранить документ и закрыть.
4) Теперь мы можем приступать к компиляции, делается это довольно просто. Что б не издеватся над собой и каждый раз не прописывать код пути к нашей папке систем, мы сразу в системе создаём бат(.bat) файл с любым названием и пишем в него cmd. После чего сохраняем и закрываем. Теперь запустите его и напишите make ucc и компиляция нашего .u пакета начнётся. Если вы хотите упростить компиляцию, можете в нашем бат файле сразу прописать make ucc и просто запускать его! Так же перед перекомпиляцией не забываем удалять наш скомпилированный .u пакет из папки system.
Автор Phantom-Dev