Guest koster Posted November 8, 2009 Share Posted November 8, 2009 У кого нибудь получилось достать иконки скиллов, оружия, итп из игры? Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted November 9, 2009 Share Posted November 9, 2009 да Quote Link to comment Share on other sites More sharing options...
Guest koster Posted November 9, 2009 Share Posted November 9, 2009 как? Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted November 9, 2009 Share Posted November 9, 2009 Иконки хранятся в файле Interface.pak. После распаковки, иконки вещей находятся тут: \Interface\Icons\Equipment\ Разберём на примере кольца: Interface\Icons\Equipment\Jewelry\TheRing.(UITexture).bin Распакуем ZLib, и получим файл, размером 2056 байт. По сути, файл является DDS файлом с отрезанным заголовком. Содержимое размером 2048 байт и заголовок 128 байт. 8 байт уже есть. Вот, недостающая часть, 120 байт: Code: 0000000000: 44 44 53 20 7C 00 00 00 │ 07 10 08 00 40 00 00 00 DDS | •►◘ @0000000010: 40 00 00 00 00 08 00 00 │ 00 00 00 00 00 00 00 00 @ ◘ 0000000020: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00 0000000030: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00 0000000040: 00 00 00 00 00 00 00 00 │ 00 00 00 00 20 00 00 00 0000000050: 04 00 00 00 44 58 54 31 │ 00 00 00 00 00 00 00 00 ♦ DXT1 0000000060: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 10 00 00 ► 0000000070: 00 00 00 00 00 00 00 00 │ Склеиваем заголовок и данные, и получаем DDS файл, который легко открывается и конвертируется. Например, DDS-tools от NVidia (во вложении) File: dds-tools.zip Quote Link to comment Share on other sites More sharing options...
Guest koster Posted November 9, 2009 Share Posted November 9, 2009 распаковал винраром, вставил заголовок в хекс редакторе, получилось это Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted November 9, 2009 Share Posted November 9, 2009 Надо просто ZLib - ом. Это библиотека упаковки-распаковки. Подробнее о ZLib на wiki: http://ru.wikipedia.org/wiki/Zlib Quote Link to comment Share on other sites More sharing options...
Guest koster Posted November 9, 2009 Share Posted November 9, 2009 питон Code: import zlib, sysname = sys.argv [1] file = open(name, 'rb').read() decompressed = zlib.decompress(file) dds_header = open('D:/allods_pak/header.bin','rb').read() n_file = open('D:/allods_pak/texture.bin', 'wb') n_file.write(dds_header+decompressed) n_file.close()) огромное спасибо! PS а как сделать фон прозрачным, или его нельзя сделать прозрачным? PPS некоторые файлы почемуто распаковываются такими , я как понял это от неправильного размера картинки указаного в ддс хедере, где взять размер иконки? Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted November 9, 2009 Share Posted November 9, 2009 Заголовок сделан для метода сжатия DXT1. Файлы могут быть сжаты с помощью DXT3, DXT5. Отличить DXT1 от DXT3 и DXT5 можно по размеру, а DXT3 от DXT5 только по результату. Прозрачный (альфа) канал уже зашит в эти текстуры. Поставь плагин для Photoshop-а, с помощью него можно конвертить DDS в PNG, например. В игре, размеры текстур и тип сжатия прописаны в файле pack.bin. Но, к сожалению, пока мы его не расшифровали полностью. Если есть руки и желание, то помогай) Quote Link to comment Share on other sites More sharing options...
Guest koster Posted November 10, 2009 Share Posted November 10, 2009 я никогда этим не занимался, могу пару скриптов только написать, Quote Link to comment Share on other sites More sharing options...
Guest koster Posted November 10, 2009 Share Posted November 10, 2009 в хекс редакторе можно поменять тип сжатия и распаковать такие иконки Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted November 12, 2009 Share Posted November 12, 2009 Странно... у меня хэкс-редактор ничего не сжимает. Можно поподробнее? Quote Link to comment Share on other sites More sharing options...
Guest koster Posted November 12, 2009 Share Posted November 12, 2009 всмысле в заголовке Quote Link to comment Share on other sites More sharing options...
Guest DmitriyMX Posted November 12, 2009 Share Posted November 12, 2009 использовал сокращенную версию вашего скрипта Code: import zlib, sysfile = open('D:/Games/Allods Online/data/Packs/Interface.pak', 'rb').read() decompressed = zlib.decompress(file) выдал такое сообщение: Code: Traceback (most recent call last): File "C:\Python26\test.py", line 3, in <module> decompressed = zlib.decompress(file) zlib.error: Error -3 while decompressing data: incorrect header check С питоном я мало знаком, сразу говорю. Мне просто нужен инструмент для декомпрессии .pak файлов, чтобы можно было с текстурами разбираться Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted November 12, 2009 Share Posted November 12, 2009 ну ты дал) *.pak - это обычные ZIP-архивы) А вот уже там внутри... Quote Link to comment Share on other sites More sharing options...
kosh Posted November 12, 2009 Share Posted November 12, 2009 я себе вчера таким способом установил "Vinдoвз ХП"... очень быстренько бегает... Quote Link to comment Share on other sites More sharing options...
Guest DmitriyMX Posted November 15, 2009 Share Posted November 15, 2009 то что эти ЗИП я знаю. Но тогда скажите как мне правильно распаковать эти зипы, чтобы можно было получить нормальные dds без заголовков? Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted November 20, 2009 Share Posted November 20, 2009 Вот софтинка если кому нужна - указываем папку с *.bin файлами иконок (64х64) и на выходе получаем готовые иконки. определяется 99.9% нормально. если положить в папку nvdecompress.exe то он его подцепит и получите еще и переконвертированный вариант File: bin2dds.zip Quote Link to comment Share on other sites More sharing options...
SLA Posted November 21, 2009 Share Posted November 21, 2009 Valltron, первый баг в твоей программе: она пытается сконвертировать ВСЕ файлы в указанной директории. Как только ей попался .RAR архив, она и его попробовала сконвертировать, и, естественно, вылетела. В общем, перед открытием файла, она должна проверять, есть ли в нём сигнатура ZLib (hex: "78 9С"). P.S. Что-то не понял, из-за каких-то багов форума, не появляется моё сообщение. Придётся дописать здесь: Ура, товарищи! Формат текстур ПОЛНОСТЬЮ разобран. Креатив скоро будет: http://ui9.ru/forum/develop/topic/54 Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted November 22, 2009 Share Posted November 22, 2009 Ну я и непытался какойто продукт законченный сделать. оно и не к чему. делал для себя, чисто рабочий продукт, чтоб побыстрее иконки повыдергивать. никаких проверок, никаких защит естественно нет. Мне помогла и ладно, выложил для всех - может кому полезна будет. а найти способов как программу уронить всегда можно найти много Quote Link to comment Share on other sites More sharing options...
Guest backdrift Posted April 4, 2011 Share Posted April 4, 2011 Есть ли где-нибудь база соответствий itemId и иконок из Interface.pak/Interface/Icons/Equipment? Идентификаторы целочисленные, ясно-понятно. Но иконки хранятся с именами типа "Interface.pak/Interface/Icons/Equipment/Leather/BeltLeatherCrude.(UITexture).bin" Quote Link to comment Share on other sites More sharing options...
Nikon Posted April 4, 2011 Share Posted April 4, 2011 Quote: соответствий itemId и иконок А с чего ты решил что они есть? Quote Link to comment Share on other sites More sharing options...
Guest backdrift Posted April 4, 2011 Share Posted April 4, 2011 Потому что это принцип любой базы данных. Грубо говоря, есть таблица с предметами, где у каждого свой ID и все остальные атрибуты (имя, тип, уровень и т.п.). Есть таблица с иконками, где у каждой свой ID и остальные атрибуты (имя файла в паке, например). И есть таблица связей между ними. Либо в таблице предметов явно указано в поле "ID иконки" идентификатор этой самой иконки. И вот в API есть такая функция GetItemInfo(), которая помимо прочего возвращает свойство icon - это и есть ID иконки, если я правильно понял мануал. В общем это подтверждает мою догадку, но свойство это доступно только в UI и я не очень понимаю, что это значит. Но например в лог эту информацию не выведешь. Ну либо я ошибаюсь и есть только таблица предметов, в которой явно строкой указано имя файла иконки. В любом случае хотелось бы как-то получить эту информацию. Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted April 4, 2011 Share Posted April 4, 2011 GetItemInfo выдает "ссылку на иконку" в формате USERDATA. то есть это иконка, которая хранится в самом клиенте, и которую через API ты можешь использовать в UI... короче чтобы вывести на экран. визуализировать... в общем как то так. никаких ID у иконки нет. так вот оно реализовано... Quote Link to comment Share on other sites More sharing options...
Guest backdrift Posted April 4, 2011 Share Posted April 4, 2011 Тогда подходит последний абзац из моего сообщения. Каким-то же образом налажена связь между "Бушлат краеведа ИВО" и FurryUndershirt.(UITexture).bin? Совпадения случайны, просто для примера привёл два первых попавшихся названия. Quote Link to comment Share on other sites More sharing options...
Guest gsomgsom Posted April 4, 2011 Share Posted April 4, 2011 Если бы всё было так просто, уже давно бы аналог wowhead-а нормальный состряпали. Нет никакого item id, айдишники возвращаются для сеансовых экземпляров предметов в клиенте. Впрочем, где-то внутри, на сервере Нивалов, оно всё как-то хранится, и скорее всего шаблолны предметов с айдишниками там есть. Quote: Каким-то же образом налажена связь между "Бушлат краеведа ИВО" и FurryUndershirt.(UITexture).bin? Соответствие скорее всего описано в файле pack.bin, но к сожалению этот файл пока не поддался распаковке. В этом файле запакованы некоторые таблицы игровой механики, и также, например, xdb файлы, отвечающие за отображение текстур (ширина, высота, некоторые атрибуты). Если сможешь расколупать файл, будешь первым, кто сможет описать соответствия предметов и их иконок. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.