Главный Форум по Князю

Народный Форум Князя

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Народный Форум Князя » Князь - вопросы по игре » Князь 2 Файлы RES


Князь 2 Файлы RES

Сообщений 1 страница 7 из 7

1

Пишу и не надеюсь на ответ  :'(  Понимаю, что тема сложная и, судя по количеству модов для Князя, возможно, решения нет в принципе, но всё же попробую спросить.

Давно уже мечтаю изменить портреты в игре. Может, они крутые, но не в моём вкусе. Я не программист, я фотошоп но что-то мне подсказывает, что картинки с ними запакованы где-то в файлах RES. Потратила целый вечер на это, но не смогла найти прогу, которая их открывает. Одни видят, но отказываются открывать, другие даже открывают, но сделать ничего не получается, ну и т.д.

В общем, если у кого-то есть хоть какая-то инфа, как это сделать: где искать, какая программа подойдёт (и как её юзать >.<), что угодно - буду очень признательна.

Поможите, чем сумеете, короче  :D  Замучилась.

2

Каждый .res файл устроен по особому. Картинки поменять пока нет нормальной возможности. Можно только подправить файл палитры, т.е. поменять цвета изображений.

3

Поистине печально...

Но спасибо за пояснение :) Что ж, хотя бы пойду теперь играть, а не выносить себе моск.

4

Здравствуйте.
Тема не то что невозможная, она скорее крайне геморная. Вряд ли сильно ошибусь в предположении, что работа с каждым ресурсом захардкожена, и все основновные параметры определены прямо в экзешнике.
В отличие от логичной упаковки группы файлов в единый ресурс с возможностью обращения к нужному файлу по имени, в Князе данные располагаются последовательно, один за другим. Но это было бы полбеды.
В NEWHERO.RES файлы хранятся в одном формате, в SOUNDS.RES - в другом. И этих форматов более двух, из-за чего нужно описывать отдельную логику под каждый ресурс (да, некоторые повторяются, но сильно легче от этого не становится). Кроме того, из-за отсутствия «имён файлов» внутри ресурса, что обращение к конкретному файлу происходит по порядковому номеру, что-что вроде: возьми файл № 3 из NEWHERO.RES и выведи его на экран в позицию [X, Y].

Чтобы подготовить Вас к ужасу, могу рассказать про формат ресурса NEWHERO.RES
В нём содержится 11 изображений, которые игрок видит на странице новой игры (выбор персонажа). Порядок файлов внутри строго задан, обозначение веду с нуля ибо у прогов так принято:
0 - общий фон
1 - Ратибор (портрет при выборе героя, чуть ярче картинка)
2 - Велиславна
3 - Эйнар
4 - Хельга
5 - Александр
6 - Анастасия
7 - кнопка Отмена
8 - кнопка Отмена при клике на неё
9 - кнопка ОК
10 - кнопка ОК при клике на неё

Файлы следуют друг за дружкой. Формат такой:
4 байт - размер «файла» в ресурсе - SIZE.
Далее в буфер считывается полученное число байт, которые тоже нужно парсить. Формат следующий:
Widht - 2 байта - ширина_картинки
Height - 2 байта - высота_картинки
LENGHTS[] - (2 * Height) байт - последовательно: длина каждой строки в упакованном виде
DATA - строки изображения в упакованном виде - до конца буфера.

Как работать со строками. Читаем из DATA количество байт, полученных в LENGHTS[0]. Строка представляет собой вариацию RLE, для распаковки данных:
1) Читаем 1 байт - BYTE. Формируем строку изображения - LINE.
2) Если BYTE равен нулю - конец данных
3) Если он больше 127, записать (BYTE - 127) прозрачных символов в LINE. Прозрачный символ - строка из 2 байтов: 0x1F и 0x7C.
4) Если BYTE < 128 - прочитать (BYTE * 2) следующих символов в в LINE.
5) Читаем следующий байт. Переходим на 2)

С первой строкой закончили. Переходим ко второй: читаем из DATA следую порцию данных, количество байт из LENGHTS[1].
Парсим строку.
И т. д., пока не закончится это изображение.

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

Продолжаем пока файл не закончится. На выходе будем иметь распакованные данные изображения.

Несколько моментов.
a) Байты в файле пишутся в машинном виде (обратный порядок).
b) Изображения (именно в этом ресурсе, в других может быть не так) в формате hi-color, т. е. 2 байта на пиксель. В двоичном виде это выглядит как: 0rrrrrgg gggbbbbb. В true-color на каждый пиксель приходится по 3 байта, это уже знакомые нам компоненты красного, зелёного, синего.
Перевод к hi-color довольно тривиальная операция: сначала нужно уменьшит количество битов с 8 до 5 (сдвигом вправо на 3: R >> 3 = rrrrr, G >> 3 = ggggg, B >> 3 = bbbbb), а потом разбросать их по компьютерному слову (word), что делается легко через те же сдвиги, но уже влево: (rrrrr << 10) + (ggggg << 5) + bbbbb
Эти рассуждения пригодятся, если захочется написать сборщик ресурсов. Подготавливаете группу файлов (полноцветные png или bmp или ещё что) последовательной нумерации, после чего поочерёдно упаковываете и размещаете друг за дружкой в ресурсе.
В итоге может получиться что-то вроде этого:

https://upforme.ru/uploads/0012/8c/4d/313/t988740.jpg
https://upforme.ru/uploads/0012/8c/4d/313/t672288.jpg

5

andi написал(а):

записать (BYTE - 127) прозрачных символов в LINE

Пардон, облажался. Нужно сбросить старший бит, это:
(BYTE - 128)
или (BYTE & 0x7F)

6

andi
Огромное спасибо, что потратили столько времени на объяснения) Я ничерта не поняла, но, возможно, кому-то с теми же вопросами это пригодится и не придётся спрашивать снова.
Единственное, так и не понятно, каким инструментом можно эти файлы ковырять. Вы вроде описываете принцип работы, а не прогу, в которой это делается %)

Также: портреты главгероев как раз ОК (может, кроме Насти). Мне хотелось портреты соратников изменить. Они ведь в другом файле?

П.с.: клёвый выбор фоток :D Особенно Эйнар и Ратибор))

7

Княжна
Всегда пожалуйста.
Прога - свой скрипт. Мне, как веб-прогу, проще на PHP сделать. Хотя некоторые моменты ощутимо проще было бы на C запилить, поскольку работа с байтами там на порядок мощней организована.
Здесь описан пример "вскрытия" и "упаковки" одного ресурса. Для основной массы остальных это не подойдёт, т. к. разных вариантов ресурсов штук 5 или даже больше.
К тому же, если ещё картинки героев, помимо иконок. Одним местечком не обойтись, увы.


Вы здесь » Народный Форум Князя » Князь - вопросы по игре » Князь 2 Файлы RES