Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Костылизация nwindow.dll
#11
Да возможно передавать картинку эмблем в клиент которые хранятся на сервере, такое делали хранили сами картинки в папке сервера(не помню в каком формате) и оттуда их передавали в клиент. Могу ошибаться но вы вроде это имели в виду?

У себя я это делал для отображения эмблем фракций вместо картинки альянса.
Gaikotsu: Маркетинг у скриптов на высшем уровне - могут и снег зимой эскимосу продать.
Ответ
#12
Kampina Написал:Да возможно передавать картинку эмблем в клиент которые хранятся на сервере, такое делали хранили сами картинки в папке сервера(не помню в каком формате) и оттуда их передавали в клиент. Могу ошибаться но вы вроде это имели в виду?

У себя я это делал для отображения эмблем фракций вместо картинки альянса.

Почти.
Только я хочу писать велосипеды, а не костыли. Smile

А размер текстуры удалось изменить ?
Ответ
#13
Решил попробовать пойти легким путем и передать нужное мне изображение через эмблему клана. Но тут появилась проблема, как заменить уже существующую в кэше эмблему, ибо клиент просто игнорирует пакет PledgeCrest с crestId который уже есть в кэше.
Ответ
#14
Triumvare Написал:Почти.
Только я хочу писать велосипеды, а не костыли. Smile

А размер текстуры удалось изменить ?

Размер меняется и в клиенте не только на сервере. Клиент я не трогаю.
Gaikotsu: Маркетинг у скриптов на высшем уровне - могут и снег зимой эскимосу продать.
Ответ
#15
Нашел в engine.dll функцию которая вроде как сохраняет эмблемы. Но больше понимания к тому как оно работает это мне не дало.


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

UCanvas::ImportCrestFile

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

За любую информацию, как всегда, буду благодарен.
Ответ
#16
Для того чтобы понять как удаляет - смотри обработку диалога где ставится/убирается значок - там вот скорее всего и дергается какая нибудь функция для удаления старой текустуры (или просто пометки что такая-то текстура удалена) в случае когда удаляется/меняется значок.
Ответ
#17
Сохраняет текстуру оно в пакет 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;

что в итоге превращается в установку флагов для обьекта что он удален.
Ответ
#18
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 или дайте свой.
Ответ
#19
Позже распишу варианты и постараюсь найти древние наработки которые генерит *.lib файлы с дллок л2 и публичные хедеры к ут2003 на которых в своё время запускал UCC на длл от прелюда.
Ответ
#20
Можешь на базе этого собрать себе нужные хедеры и либы.


Файлы вложений
.7z   SomeL2Stuff.7z (Размер: 427.33 KB / Загрузок: 121)
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  nwindow.dll для вин 8 под HF5 Sensation 53 13,235 10-17-2013, 09:45 PM
Последний пост: kingzor

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)