Добавление текстур в interface.u

Rolo

Верховньій Интерлюд Викинг
Викинги Рулона
Победитель в номинации 2023
Старожил I степени
Признанный автор
Знаток Lineage2
Разработчик
За знание датапака
За знание ядра
Просветитель
Медаль Благодарности
За заслуги перед форумом
Преподаватель
За веру и верность форуму
Веселый флудер
Медаль за активность на Форуме
Клиент разработчик
Магистр реакций
Стальной Визионер
Знаток письма
Архивариус
Победитель в номинации 2022
Победитель в номинации 2021
Мастер реакций
Стратег Данных
Любитель реакций
Куратор Данных
Неукротимое пламя
Победитель в номинации 2020
Сообщения
899
Розыгрыши
6
Решения
28
Репутация
1 960
Реакции
2 253
Баллы
1 063
Здравствуйте! Увидел в интерфейсе от Neophron интересную вещь - все (или многие) текстуры с него хранятся в самом interface.u сразу, не подскажете куда копнуть, чтобы такое же сделать? Добавление текстур с разными форматами в Classes очевидно не работает. :D Я так понимаю, в компиляторе где-то нужно найти подтягиваемые ним папки и форматы компилируемых файлов? Направьте, пожалуйста, туда ли я копаю. )
 
Здравствуйте! Увидел в интерфейсе от Neophron интересную вещь - все (или многие) текстуры с него хранятся в самом interface.u сразу, не подскажете куда копнуть, чтобы такое же сделать? Добавление текстур с разными форматами в Classes очевидно не работает. :D Я так понимаю, в компиляторе где-то нужно найти подтягиваемые ним папки и форматы компилируемых файлов? Направьте, пожалуйста, туда ли я копаю. )

Как сделать через UCC:
1. Сам ucc должен лежать в папке system от lineage.
2. Разложить правильно в папке исходники для примера: Interface -> Classes где будут лежать все .uc
3. Текстуры которые будет нужно запаковать перенести рядом к папке Classes в формате test.utx, test.usx, test.ukx для примера.
4. В коде где прописан раньше был путь до текстур в package теперь нужно указать правильно на test.
5. Для примера в коде: Texture=Texture'test'
6. Далее нужно указать в ucc как компилировать через батник.
7. В основной класс из папки Classes прописать в коде самого начала файла следующее:
#exec OBJ LOAD FILE="test.utx" Package="Interface"
#exec OBJ LOAD FILE="test.usx" Package="Interface"
#exec OBJ LOAD FILE="test.ukx" Package="Interface"

8. Перед запуском компиляции желательно удалить файлы: Interface.u и Interface.ucl
9. После компиляции все текстуры будут упакованы в .u
 
Maksim, спасибо большое за ответ! Подскажите, пожалуйста, по пункту 4, Вы имели ввиду непосредственное использование текстур, как например:
C++:
Было:
    case IME_KOR:
        texture = "L2UI_CH3.chatting_imeen";
        break;

Записываем:
    case IME_KOR:
        texture = "test.texture1";
        break;
А в пункте 7 под основным классом имеется ввиду тот, где вызывается текстура? Как например, в классе ChatWnd.uc из примера выше сделать что-то вроде:
C++:
class ChatWnd extends UICommonAPI;
#exec OBJ LOAD FILE="test.utx" Package="Interface"
После данных изменений у меня почему-то выдает ошибку совсем в другом классе, который я никак не трогал:
Log: Parsing Shortcut
Log: Parsing ShortcutWnd
Critical: UObject::StaticFindObject
Critical: UObject::StaticAllocateObject
Critical: (Function OnNextBtn)
Critical: FScriptCompiler::pushNest
Critical: Function/Operator
Critical: FScriptCompiler::CompileDeclaration
Critical: FScriptCompiler::CompileStatement
Critical: FirstPass
Critical: TryCompile
Critical: FScriptCompiler::CompileScript
Critical: (Class Interface.ShortcutWnd, Pass 0, Line 450)
Critical: MakeScript
Critical: MakeScript
Critical: MakeScript
Critical: MakeScript
Critical: MakeScript
Critical: MakeScript
Critical: DoScripts
Critical: UEditorEngine::MakeScripts
Critical: UMakeCommandlet::Main
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Log: Waiting for file streaming thread to finish...
Init: CPU FP precision changed from 53 to 64-bit
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 05/08/21 10:43:17
 
в компиляторах из шары это не работает, там это сломано намеренно

а для общей справки всегда есть доки анриала
 
Maksim, спасибо большое за ответ! Подскажите, пожалуйста, по пункту 4, Вы имели ввиду непосредственное использование текстур, как например:
C++:
Было:
    case IME_KOR:
        texture = "L2UI_CH3.chatting_imeen";
        break;

Записываем:
    case IME_KOR:
        texture = "test.texture1";
        break;
А в пункте 7 под основным классом имеется ввиду тот, где вызывается текстура? Как например, в классе ChatWnd.uc из примера выше сделать что-то вроде:
C++:
class ChatWnd extends UICommonAPI;
#exec OBJ LOAD FILE="test.utx" Package="Interface"
После данных изменений у меня почему-то выдает ошибку совсем в другом классе, который я никак не трогал:
Log: Parsing Shortcut
Log: Parsing ShortcutWnd
Critical: UObject::StaticFindObject
Critical: UObject::StaticAllocateObject
Critical: (Function OnNextBtn)
Critical: FScriptCompiler::pushNest
Critical: Function/Operator
Critical: FScriptCompiler::CompileDeclaration
Critical: FScriptCompiler::CompileStatement
Critical: FirstPass
Critical: TryCompile
Critical: FScriptCompiler::CompileScript
Critical: (Class Interface.ShortcutWnd, Pass 0, Line 450)
Critical: MakeScript
Critical: MakeScript
Critical: MakeScript
Critical: MakeScript
Critical: MakeScript
Critical: MakeScript
Critical: DoScripts
Critical: UEditorEngine::MakeScripts
Critical: UMakeCommandlet::Main
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Log: Waiting for file streaming thread to finish...
Init: CPU FP precision changed from 53 to 64-bit
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 05/08/21 10:43:17
По 4 учитывая что текстура теперь лежит рядом с папкой Classes не нужно указывать название пакета, только название текстуры.
Было texture = "L2UI_CH3.chatting_imeen"; стало texture = "chatting_imeen"; для примера.

По 7 пункту я точно не помню, так как писал по памяти но для всех пакетов под unreal engine 2 или 2.5 в случае с l2 все одинаковое.
Попробуйте на 1 указать #exec OBJ LOAD FILE="test.utx" Package="Interface" и только после class ChatWnd extends UICommonAPI;

В общем идею как решить дал, думаю справитесь. :Coffee:
 
default_npc, Maksim, спасибо большое, без любого из ваших ответов я бы не разобрался!
Окончательно убедился, что компиляторы с шары (во всяком случае для ИЛа, другие не тестил), неспособны скомпилить текстуры вместе с интерфейсом, действительно нужен другой Engine самого компилятора. Если же Вы счастливый обладатель такого, то компилить по гайду с первого поста Maksim совсем не проблема. Рядом с Classes кидается наш пак текстур:
И в любом угодном классе и даже в любом месте (главное не внутри какой-то функции :D ) достаточно указать:
#exec OBJ LOAD FILE="test.utx" Package="Interface"
Чтобы применить текстуры зовутся они как обычные - по имени пака с текстурами и имени текстуры (выяснить как можно не указывать имя пака пока не удалось):
texture = "test.dual_mpsteal";

Нерешенным остался момент применения обфускатора - после него скрипты выглядят как и обычно после данного процесса, а вот наши текстурки переименовываются (их все еще можно смотреть через umodel без проблем, но вот игра уже будет вылетать с критом по типу этого:
 
Последнее редактирование:
Назад
Сверху Снизу