Jump to content
Alloder.pro: about Allods with love
Search In
  • More options...
Find results that contain...
Find results in...

New program for writers

We turn from quantity to quality and tell you how we will supplement the Allods Team program with rewards in rubles.

More

The new Updater

Let us to introduce the new addon updater software and to share the details

Read more

Alloder 2.0

We have started the process of project evolve, and this relates not only, and not even primarily of the site's view

Read more

Копаем игровые ресурсы


Guest skillcoder
 Share

Recommended Posts

  • 2 weeks later...
  • Replies 98
  • Created
  • Last Reply

Top Posters In This Topic

Guest gsomgsom

Формат файла \data\Packs\BaseLocrus.pak -> Bin\pack.loc:

Файл запакован ZLib (уровень сжатия 6)

После распаковки:

Заголовок + таблица_имён_файлов + имена_файлов + блок 1 + таблица_размеров + блок 2 + данные

Заголовок (16 байт):

int32 unknown1 = 0x00

int32 sizes_pos // позиция таблицы размеров

int32 unknown2 = 0x08

int32 item_count // количество файлов

таблица_имён_файлов (по 12 байт):

int32 pos // позиция имени (относительно заголовка)

int32 size // размер строки

int32 id // идентификатор

имена_файлов (длинна зависит от таблицы_имён_файлов):

строка file_name // имя файла (строка завершается нулями; количество нулей добивается до кратности 4)

непонятный блок 1

int32 unknown1 = 0x01

int32 item_count = item_count * 2

таблица_размеров (по 8 байт):

int32 pos // позиция (должна быть кратна 4)

int32 size // размер файла / 2

непонятный блок 2

int32 unknown1 = 0x02

int32 file_sizes = размер всех файлов (с учётом подгонки кратности 4)

int32 unknown2 = 0x00

int32 unknown3 = 0x00

int32 unknown4 = 0x00

int32 unknown5 = 0x00

Распакованные ресурсы в архиве:

rus.pack.loc.1.0.3.19.rar (8,5 Mb)

Распаковщик ресурсов, версия 0.2 (PHP):

loc.extracter.zip (1 Kb)

Компилятор ресурсов, версия 0.4 (PHP):

loc.compiler.zip (1,5 Kb)

Примечание к компилятору:

Тормозит... выполняется 10 минут... Нужно оптимизировать по скорости

Файлы ресурсов в кодировке UTF-16 (Unicode).

Можно, в принципе перекодировать. Но так они хранятся изначально.

---

Спасибо, kosh, что навёл на мысль это всё осилить)

А также за подсказки по формату файлов.

UPD

ДА! Наконец-таки компилятор стал компилировать!!!!

УРА!!!

Link to comment
Share on other sites

Guest gsomgsom

Ну... ковырнул немного... увлёкся...

Раньше, кстати, ковырял другие игрушки. Так что опыт ковыряния есть)

Link to comment
Share on other sites

Guest gsomgsom

Ахахаха... Ковыряюсь тут... пасхалок и приколов много в ресурсах.

Например:

\Tests\Abilities\Faction\Ability_Desc.txt:

Code:
<html>Воруй, убивай</html>
Link to comment
Share on other sites

Guest gsomgsom

Пишу тут компилятор ресурсов...

Очень смешно получилось, когда создал пустой pack.loc и зашёл в игру:

00dfea6fa8c7x.jpg

Link to comment
Share on other sites

Guest gsomgsom

Вообщем, с запаковкой пока ничего непонятно...

Разобрался опытным путём, что используется ZLib сжатие $f=gzcompress($f, 6);

А заголовок 78 9C - это лишь один из заголовков ZLib. Так что добавлять заголовок к упакованному файлу не требуется.

Вторая мысль возникла после внимательного пересмотра распакованного оригинального pack.loc файла.

Имена файлов "добиты" нулями, чтобы размер строки был кратный 4.

Т.е. формаат как-бы выравнивает до 4-х байт всё, что находится внутри.

Прикладываю архив с последней версией компилятора.

Мозг взрывается. Пойду, посплю...

UPD:

Компилятор заработал. Ура, товарищи!

Последняя версия тут:

http://ui9.ru/forum/3/topic/5#c231

Link to comment
Share on other sites

Guest gsomgsom

Компилятор теперь всё правильно запаковывает.

Кто может - тестируем)

Ещё раз спасибо kosh ))

--

Если всё работает вообщем-то нормально, постараюсь найти время, переписать на Си, например.

Не у всех же стоит дома настроеный веб-сервер с ПХП ))

Хотя, если кто найдёт в себе силы перписать сам, я буду только рад)

Link to comment
Share on other sites

Да да gsomgsom - на Си нада *))) Настроеный ПХП сревер - далеко не у всех есть ! *))))) А ктонить уже пробовал добавить произволный шаблон ? Например для выделения другим цветом гилдейцов по рагну ? или для добавления просто "Хелло <Имя>" при в ходе в игру ? если да ток как делать ?

Link to comment
Share on other sites

Guest gsomgsom

Единственное, что я делал в качестве проверки загрузки изменённого pack.loc - изменил файл /Client/Watermark.txt

Сейчас прямо немного нет времени колупаться дальше (работа не волк, но голод - всё же не тётка).

Поэтому призываю поэкспериментировать всех, кто может на данный момент)

Link to comment
Share on other sites

не расстраивайтесь... специально для вас я делаю исполняемый файлик не требующий ни пхп не темболее сервера

если тест пройдет успешно, я соберу все это добро и выложу здесь..

Link to comment
Share on other sites

затык.. опять же.. все прекрасно работает, но если добавлять новое - не работает вернее стандарт работает, а добавленное нет... =( копаемся дальше

Link to comment
Share on other sites

КАПА-А-А-АТЬ!!!!

короче.. есть мысль...

на ЗБТ вспоминался файлик pack.bin он в data/Packs/Bin.pak/bin/

так вот.. у меня подозрение на то, что это и есть файлик где описано что загружать из ресурсов...

немного поясню вводную суть:

почти все ресурсы в АО расположены в пакетах...

они делятся на несколько групп

каждая группа образует свою виртуальную файловую систему...

в то же время... в этих виртуакалках есть файлы образующие виртуалки второго уровня (к примеру тот же pack.loc)

возможно в фаликах виртуалки первого уровня есть списки какие загружать файлики из виртуалок второго уровня

думаю суть понятна

это все предположение

Link to comment
Share on other sites

А смысл? В будущем это все равно будет не нужно.

Нивал не позволит менять ресурсы клиента. Подменять другими, к примеру, скрипты - это да. Для собственных скриптов текст скорее всего откуда-то из спец-места грузиться будет, иначе могут возникнуть проблемы совместимости разных аддонов. Аддон должен быть самостоятельным и не должен менять при этом оригинальных ресурсов игры.

Именно исходя из этой логики, я не стал делать "компилятор". Он просто бесполезен. Единственное место его приложения я вижу только если у себя _локально_ хочется поправить текст какой-то, к примеру. Тогда да, он может пригодиться. Но ради этого стоит ли городить огород?

Ко всему прочему, у вас там че-то уж очень много "неизвестностей" в ваших описаниях. В loc-файле нет никаких "ненужных" полей.

И если уж хотите действительно полезное дело сделать, расковыряйте лучше файл AO\data\packs\bin.pak\bin\pack.bin. Там очень _похожая_ на pack.loc структура, но, к сожалению, не _такая же_.

Link to comment
Share on other sites

смысл в том, что я очень "рад" за Нивал...

лок-файл мы пока оставили в покое... да менять там нет смыла, а добавлять?

на счет pack.bin: а что по-твоему мы делаем?

присоединяйся

Link to comment
Share on other sites

Его вообще как-либо модифицировать нет смысла. Если ты туда что-то и добавишь, оно все равно будет неиспользуемо в массовом варианте. Клиент цепляет только один loc-файл и только целиком.

А что будет, если человек захочет поставить два мода, каждый из которых добавляет какие-то тексты? Если у каждого в архиве будет свой pack.loc, то игра загрузит только один, а второй мод останется без добавленных текстов. Если же в архиве будут только сырые тексты, а пользователь при установке будет "запаковывать" эти тексты в pack.loc, то это блин какой-то очень крутой пользователь, который вполне способен сам и мод наваять. Даже если все это будет автоматом, выглядеть это все будет очень ненадежно и ошибкоопасно. Далеко мы все так не уедем.

Нивал скорее всего даст возможность тексты каким-то дополнительным образом "добавлять" к пользовательским аддонам. Если не даст, значит ПРИДЕТСЯ обходиться только тем, что есть в составе оригинального pack.loc.

И еще немаловажный момент. Согласно моим текущим изысканиям (они конечно не факт, что 100% истина, чисто догадки), каждому интерфейсному аддону соответствует некоторый набор текстовых файлов из виртуального каталога pack.loc. Соответствие это задается как раз в pack.bin и определяется жестко. Если соответствия у конкретного текстового файла с аддоном нет, то загрузить этот текст функцией GetAddonRelatedText() или аналогами не получится. И мне думается, что уж pack.bin Нивал точно не даст "править" и "подменять".

Link to comment
Share on other sites

Ты все описал что мне уже известно...

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

а вот Тебе смысл:

если нивал ничего не сделает для текстов

при добавлении/изменении на этом ресурсе мода, будет собираться пак.лок файлик для всех опубликованных, юзверу остается скачать сам мод и лок-файлик, в этом есть какая-то сложность?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use