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

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

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

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


Вы здесь » Народный Форум Князя » Князь - вопросы по игре » Князь 2.5 редактирование сохранений


Князь 2.5 редактирование сохранений

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

1

В виду того, что по данной теме нет практически инфы, и savegame editor отсутствует, на меня напал strange mood, и /me сделал некоторое препарирование файлов сейвов. Что получилось - выразил в виде карты, может пригодится кому.

Замечания:
[~] изначально целью было добавление в отряд животных, но это не было достигнуто (м.б, нужно тщательней варьировать параметры голова портрета, тело портрета, id героя (что изменяет модель), шкурку на модель, но очень это утомительно).
[~] можно добавлять персонажей в отряд "с нуля". Для этого нужно установить счетчик человек в отряде (включая героя), и затем добавить соответствующие блоки-описатели по 100h байт сразу после блока-описателя гл. игрока.  Можно добавлять кучу двойников гл. героя (напр., организовать атаку клонов велиславен), можно добавлять других героев в отряд таким же образом. Можно добавлять npc таким же образом.  Но назиру добавлять только к изарку, иначе бесконечный глюк с диалогом.
[~] Характеристики спутников (и снаряжение) можно изменять аналогично правкам в блоке-описателе гл. героя - они по структуре такие же, идут следом.
[~] организация save файла отличается от того, что был в князе 2 - где-то добавили, что-то убрали, но немного похоже
[~] коды предметов (по крайней мере большинство) не соответствуют кодам из князя 2
[~] данные расположены в byte big endian

Карта savegame файла:

0x26050 (byte) - тек. локация
0x26064 (byte) - количество бойцов в отряде (вкл. героя)

///////////////////////////////////////////////////////////////////////////////

; 0x4e9d0 - Начало блока-описателя персонажа 1 (героя)
; Размер блока: 256 байт  (100h)

; положение героя
0x4e9e2 (2 bytes) - координата на экране (y)
0x4e9e4 (2 bytes) - координата на экране (x)

0x4e9f8 (4 bytes) - золото (signed int, endianess ?)
0x4e9ff (byte)    - текстура куклы героя, цвет рубахи, основа портрета
; 0x8a - роз. платье
; 0x8c - красный, рубаха
; 0x8e - зеленый
; 0x90 - синий
; 0x92 - желтый
; 0x94 - бежевый

0x4ea1f (1 byte?) - здоровье героя

; снаряжение героя
0x4ea28 (2 bytes) - оружие в руке
0x4ea2a (2 bytes)  - оружие в руке 2 (лук)
0x4ea2c (2 bytes)  - броня одетая
0x4ea2e (2 bytes)  - шлем одетый
0x4ea30 (2 bytes)  - щит одетый
;
0x4ea32 (2 bytes)  - начало инвентарных вещей (по 2 байта)
; найденные значения вещей:
; 0x8d 0x02 - парамерион отравленный
; 0x9a 0x0a - белый корень
; 0xba 0x00 - земляной орех
; 0xb3 0x00 - трактат о торговле
; 0xbc 0x0a - свиток кузнеца
;
; 0x3c 0x01 - камень ловкости
; 0x3e 0x02 - камень ловкости
; 0x3c 0x04 - лопата
;
; 0xce 0x01 - сакс меч
; 0xe0 0x01 - двур. меч
; 0xef 0x01 - обоюдоостр. секира
; 0x3e 0x05 - составной лук
;
; 0x3f 0x05 - щит длинный с шипами
; 0xc8 0x01 - щит воина повелителя
; 0xbc 0x01 - щит воина повелителя
;
; 0xe7 0x01 - простая кольчуга
; 0xff 0x01 - желтая кольчуга
; 0xd4 0x01 - желт. кольчуга укрепл.
; 0x3d 0x09 - кливанион
; 0xc6 0x01 - доспех воина повелителя
;
; 0xbc 0x04 - рогатый шлем
; 0xdf 0x01 - датский шлем

; 0x4ea90 (byte) - харизма
; 0x4ea91 (byte) - ловкость
; 0x4ea92 (byte) - интеллект
; 0x4ea93 (byte) - обучаемость
; 0x4ea94 (byte) - сила
; 0x4ea95 (byte) - выносливость
;
; 0x4eaa4 (byte) - смертельный удар
; 0x4eaa5 (byte) - владение мечом
; 0x4eaad (byte) - знахарство
; 0x4eaae (byte) - приготовление смесей
; 0x4eab2 (byte) - волхвование
; 0x4eab3 (byte) - кузнечное дело
; 0x4eab4 (byte) - строит. навыки
; 0x4eab5 (byte) - управление деревней
;
; 0x4eabf (byte) - голова портрета
; 2ch - годная женская (слав)
; 30h - женск тюрк
;
; 0x4eac0 (byte) - имя
;
; 0x4eac1 (byte) - погоняло / фамилия
;   0x1 - косой
;   0x2 - кривой
;   0x4 - слепой
;   0x7 - медведь
;   0x8 - ворон
;   0xe - рыжий
;   0xf - счастливый
;   0x10 - собака
;   0x11 - тюлень
;   0x14 - рваный
;
; 0x4eacc (byte) - кто из героев; кукла
; 0x1 - велиславна
; 0x2 - драгомир
; 0x1h - слав жен
; 0x7h - тюрк жен [x]
; [~] именно "герои" идут с 0 по 0x3. Старшие более номера (не обязательно
; подряд) - различные персонажи

2

Ну что же, неплохой разбор.

3

Вот теперь еще бы сделать редактор сейвов, и было бы здорово).

4

Бустрофедон написал(а):

Вот теперь еще бы сделать редактор сейвов, и было бы здорово).


Такое реально было, но тогда давно... Просто потому, что было лучше с вдохновением :)

5

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Новые описываемые поля блока-описателя персонажа (размер - 256 байт):
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Offset            Description
0x1a (byte)  content category id
0x1b interaction, selection mode

0x12 (2 bytes) ; коорд 1
0x14 (2 bytes) ; коорд 2

0xf2 (byte) id самоидентификации персонажа, в т.ч для квестов

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Общее.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Хотелось бы поставить точку в вопросе добавления в отряд монстров.
Кратко - как членов отряда добавлять монстров в нормальной игре _нельзя_.
При попытке добавления в отряд игра вылетает (м.б иконок не хватает, м.б
звуков, неизвестно). (Конкретно почему - им требуется соответствующее значение
в 0x1b interaction type - content id, у которого, похоже, нет требуемых
ресурсов для отображения/нахождения в отряде)

Однако, нашел некоторые смежные возможности касательно монстров.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Чтобы поиграться с монстром
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Вообще, правильней бы склонировать персонажа в отряде, отпустить его в
деревне, сохранить, найти его в сейв файле, поменять содержимое
блока-описателя на блок монстра (в деревне атаковать не будет).
Но можно и настоящего найти, правда, скорее всего, запорется прохождение.
(мне удобней искать было по последним 10h байтам блока-описателя, а именно
первым 4-м из них (имя, прозвище, id, и ещё что-то))

Для того, чтобы монстр был управляемым, нужно в блоке-описателе задать по
смещению от его начала 0x1b (byte) установить 0. Это поле типа взаимодействия
с персонажем, в т.ч и выделения мышкой. Значение 0 соответствует типу
взаимодействия "герой", т.е, всегда доступно для выбора. Правда, в данном
случае, в отряде его все равно не будет.
Проделав данное, можно смотерть характеристики монстра, инвентарь (но он пуст
почти у всех), можно дать ему команду атаковать кого-либо. Вот только бегать
монстры не умеют - только ходят. При не отключенном беге они будут пытаться
бежать, и игра будет вылетать.

К слову, оружия и брони у них нет, экипировать их не могут, броня -
"натуральная", как и удар.
http://sf.uploads.ru/t/nT9Kj.png

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Замена вспомогательных npc на монстров
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Можно, чисто для красоты, заменить некоторых персонажей (которых нельзя
нанимать! И которые не будут бегать) на монстров.
Для примера - купцы, старосты (хотя они бегают).
Ищем им соответствующий блок в сейв файле по соответствующей им
последовательности байт.
Запоминаем их оригинального блока поля:
0x12 (2 bytes) ; коорд 1
0x14 (2 bytes) ; коорд 2
0xf2 (byte) id самоидентификации персонажа, в т.ч для квестов

Далее заменяем полностью блок персонажа на блок монстра, записываем по соотв.
смещениям сохраненные координаты и id.
Всё.

http://s9.uploads.ru/t/2vTz0.png
http://s1.uploads.ru/t/fjHJC.png
http://sa.uploads.ru/t/zkJs9.png

PS:
Ни бессмертных монстров, ни шлемов бессмертия обнаружено в процессе поиска ни
у кого не было. Жаль.

6

Недурно :)

7

Отличная работа. В Князе 1 можно было сделать то же самое. Нанять и в деревню выпустить или изменить персонажа в самой деревне с возможностью нанять. При попытке загрузить сейв-файл
с монстрами в отряде игра вылетала. Может, выложу скрины какие.

8

Насколько  разобрался
Карта в Save  в диапазоне 0xD1670-0xD230F
Статус квадрата карты     
              закрыт открыт
суша          00h  40h
берег        10h  50h
квестовый 90h  70h
Если поставить
0xd1c47(лагерь ж.собак)    -  00h
0xd1d3f(лагерь драгомира) - 00h
0xd1afb([холмогорье) -10h
то их можно найти при обычном передвижении по карте
При игре за Велиславну если прийти в лагерь Драгомира раньше времени то там будет пусто :)
за остальных не смотрел.


Вы здесь » Народный Форум Князя » Князь - вопросы по игре » Князь 2.5 редактирование сохранений