Костылизация nwindow.dll - Страница 2 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Игровой клиент

Игровой клиент Есть вопросы по поводу редактирования dat, utx и других файлов клиента, пожалуйста, задавайте их здесь.

Ответ
Опции темы
Непрочитано 16.09.2017, 01:49   #11
Аватар для Kampina
Пользователь

По умолчанию Re: Костылизация nwindow.dll

Да возможно передавать картинку эмблем в клиент которые хранятся на сервере, такое делали хранили сами картинки в папке сервера(не помню в каком формате) и оттуда их передавали в клиент. Могу ошибаться но вы вроде это имели в виду?

У себя я это делал для отображения эмблем фракций вместо картинки альянса.
__________________
Gaikotsu: Маркетинг у скриптов на высшем уровне - могут и снег зимой эскимосу продать.
Kampina вне форума Отправить сообщение для Kampina с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 16.09.2017, 18:21   #12
Аватар для Triumvare
Пользователь

Автор темы (Топик Стартер) Re: Костылизация nwindow.dll

Цитата:
Сообщение от Kampina Посмотреть сообщение
Да возможно передавать картинку эмблем в клиент которые хранятся на сервере, такое делали хранили сами картинки в папке сервера(не помню в каком формате) и оттуда их передавали в клиент. Могу ошибаться но вы вроде это имели в виду?

У себя я это делал для отображения эмблем фракций вместо картинки альянса.
Почти.
Только я хочу писать велосипеды, а не костыли.

А размер текстуры удалось изменить ?
Triumvare вне форума Ответить с цитированием
Непрочитано 17.09.2017, 14:01   #13
Аватар для Triumvare
Пользователь

Автор темы (Топик Стартер) Re: Костылизация nwindow.dll

Решил попробовать пойти легким путем и передать нужное мне изображение через эмблему клана. Но тут появилась проблема, как заменить уже существующую в кэше эмблему, ибо клиент просто игнорирует пакет PledgeCrest с crestId который уже есть в кэше.
Triumvare вне форума Ответить с цитированием
Непрочитано 18.09.2017, 00:49   #14
Аватар для Kampina
Пользователь

По умолчанию Re: Костылизация nwindow.dll

Цитата:
Сообщение от Triumvare Посмотреть сообщение
Почти.
Только я хочу писать велосипеды, а не костыли.

А размер текстуры удалось изменить ?
Размер меняется и в клиенте не только на сервере. Клиент я не трогаю.
__________________
Gaikotsu: Маркетинг у скриптов на высшем уровне - могут и снег зимой эскимосу продать.
Kampina вне форума Отправить сообщение для Kampina с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 18.09.2017, 23:34   #15
Аватар для Triumvare
Пользователь

Автор темы (Топик Стартер) Re: Костылизация nwindow.dll

Нашел в engine.dll функцию которая вроде как сохраняет эмблемы. Но больше понимания к тому как оно работает это мне не дало.


Из того что я понял:
На клиент приходить пакет PledgeCrest с dds файлом
клиент сохраняет его в папку ../crest/
затем, вызывается функция ImportCrestFile, которая подгружает файлы из crest в оперативку или если их много создает utx файл, но это лишь догадка, так как после вызова данной функции dds-ки пропадают, а crest.utx не всегда появляется.

UCanvas::ImportCrestFile:
Свернуть ↑Развернуть ↓


Собственно вопрос, как узнать куда оно сохраняет текстуру, и как ее оттуда удалить ?

За любую информацию, как всегда, буду благодарен.
Triumvare вне форума Ответить с цитированием
Непрочитано 18.09.2017, 23:39   #16
Аватар для Gaikotsu
Герой

По умолчанию Re: Костылизация nwindow.dll

Для того чтобы понять как удаляет - смотри обработку диалога где ставится/убирается значок - там вот скорее всего и дергается какая нибудь функция для удаления старой текустуры (или просто пометки что такая-то текстура удалена) в случае когда удаляется/меняется значок.
Gaikotsu вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 19.09.2017, 08:48   #17
Пользователь

По умолчанию Re: Костылизация nwindow.dll

Сохраняет текстуру оно в пакет crest.
Это видно с поиска пакета UObject::LoadPackage(0, L"crest", 0x10u, 0) или создания нового UObject::CreatePackage(0, L"crest").

далее оно делает что то типа:
ImportObject<UTexture>( Level, Pkg, TempName, RF_Public|RF_Standalone, TempFname );
ну и по сути вся соль импорта в этом вызове он сам найдет импортер для данного обьекта если таковой имееться. Если интиресно фабрику для импорта текстур можно найти в ИДА по строке "RLE compression of BMP images not supported".

а удалется обьект как то вот так:
UObject* Pkg = Object;
while( Pkg->GetOuter() )
Pkg = Pkg->GetOuter();
if( Pkg && Pkg->IsA(UPackage::StaticClass() ) )
((UPackage*)Pkg)->bDirty = 1;
unguard;

delete Object;

что в итоге превращается в установку флагов для обьекта что он удален.
lordofdest вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 19.09.2017, 18:56   #18
Аватар для Triumvare
Пользователь

Автор темы (Топик Стартер) Re: Костылизация nwindow.dll

Цитата:
Сообщение от Gaikotsu Посмотреть сообщение
Для того чтобы понять как удаляет - смотри обработку диалога где ставится/убирается значок - там вот скорее всего и дергается какая нибудь функция для удаления старой текустуры (или просто пометки что такая-то текстура удалена) в случае когда удаляется/меняется значок.
Хорошая идея.

Нажатие кнопки удаления эмблемы клана вызывает RequestClanUnregisterCrest() в NWindow.dll, а там:
execRequestClanUnregisteCrest:
Свернуть ↑Развернуть ↓


Но к сожалению я не понимаю что тут происходит.


Цитата:
Сообщение от lordofdest Посмотреть сообщение
Сохраняет текстуру оно в пакет crest.
Это видно с поиска пакета UObject::LoadPackage(0, L"crest", 0x10u, 0) или создания нового UObject::CreatePackage(0, L"crest").

далее оно делает что то типа:
ImportObject<UTexture>( Level, Pkg, TempName, RF_Public|RF_Standalone, TempFname );
ну и по сути вся соль импорта в этом вызове он сам найдет импортер для данного обьекта если таковой имееться. Если интиресно фабрику для импорта текстур можно найти в ИДА по строке "RLE compression of BMP images not supported".

а удалется обьект как то вот так:
UObject* Pkg = Object;
while( Pkg->GetOuter() )
Pkg = Pkg->GetOuter();
if( Pkg && Pkg->IsA(UPackage::StaticClass() ) )
((UPackage*)Pkg)->bDirty = 1;
unguard;

delete Object;

что в итоге превращается в установку флагов для обьекта что он удален.
А как мне это реализовать ? Как использовать объект UObject и его функции в моей dll ?

Стукните в скайп Triumvare или дайте свой.
Triumvare вне форума Ответить с цитированием
Непрочитано 19.09.2017, 19:43   #19
Пользователь

По умолчанию Re: Костылизация nwindow.dll

Позже распишу варианты и постараюсь найти древние наработки которые генерит *.lib файлы с дллок л2 и публичные хедеры к ут2003 на которых в своё время запускал UCC на длл от прелюда.
lordofdest вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 19.09.2017, 21:01   #20
Пользователь

По умолчанию Re: Костылизация nwindow.dll

Можешь на базе этого собрать себе нужные хедеры и либы.
Вложения
Тип файла: 7z SomeL2Stuff.7z (427.3 Кб, 116 просмотров)
lordofdest вне форума Ответить с цитированием
Сказали спасибо:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
nwindow.dll для вин 8 под HF5 Sensation Игровой клиент 53 17.10.2013 21:45


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 13:17. Часовой пояс GMT +3.

Вверх