• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Редактирование SAVEDAT.SAV

zauron

Участник форума
Регистрация
26 Янв 2010
Сообщения
36
Благодарности
0
Баллы
150
  • Первое сообщение
  • #1
Доброго времени суток, уважаемые
Вот я, как начинающий скриптописатель, долгое время искал заготовки-шаблоны(кусочки скриптов) для упрощения процесса написания конечного скрипта.
Самому пришлось все выискивать в декомпилированных скриптах.
Теперь думаю оказать посильную помощь следующим поколениям скриптописателей в (кирпичиках).
Предлагаю и остальным Гуру присоединиться к помощи начинающим выкладыванием некоторых (примитивов)

Вот примерное прибавление +2часа к игровому времени
if(Wld_IsTime(5,0,21,59))
{
if(Wld_IsTime(5,0,5,59))
{
hours = 5;
}
else if(Wld_IsTime(6,0,6,59))
{
hours = 6;
}
else if(Wld_IsTime(7,0,7,59))
{
hours = 7;
}
else if(Wld_IsTime(8,0,8,59))
{
hours = 8;
}
else if(Wld_IsTime(9,0,9,59))
{
hours = 9;
}
else if(Wld_IsTime(10,0,10,59))
{
hours = 10;
}
else if(Wld_IsTime(11,0,11,59))
{
hours = 11;
}
else if(Wld_IsTime(12,0,12,59))
{
hours = 12;
}
else if(Wld_IsTime(13,0,13,59))
{
hours = 13;
}
else if(Wld_IsTime(14,0,14,59))
{
hours = 14;
}
else if(Wld_IsTime(15,0,15,59))
{
hours = 15;
}
else if(Wld_IsTime(16,0,16,59))
{
hours = 16;
}
else if(Wld_IsTime(17,0,17,59))
{
hours = 17;
}
else if(Wld_IsTime(18,0,18,59))
{
hours = 18;
}
else if(Wld_IsTime(19,0,19,59))
{
hours = 19;
}
else if(Wld_IsTime(20,0,20,59))
{
hours = 20;
}
else if(Wld_IsTime(21,0,21,59))
{
hours = 21;
};
if(Wld_IsTime(hours,0,hours,12))
{
minits = 6;
}
else if(Wld_IsTime(hours,12,hours,24))
{
minits = 18;
}
else if(Wld_IsTime(hours,24,hours,36))
{
minits = 30;
}
else if(Wld_IsTime(hours,36,hours,48))
{
minits = 42;
}
else if(Wld_IsTime(hours,48,hours,59))
{
minits = 54;
};
Wld_SetTime(hours + 2,minits);
};
(в период с 5 до 22ч прибавляет примерно 2ч) - дальше думайте ;)
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.801
Баллы
995
Ice, А на С++ не пробовал ее реализовать? ::)
 

Ice

Участник форума
Регистрация
5 Ноя 2009
Сообщения
32
Благодарности
1
Баллы
160
Программа для просмотра сохранений для Готик 2. Версия v.0.5a (viewer).
Програма является альфа версией, сордержит ошибки, но для просмотра файлов полностью безопасна.
Редактирование сейвов появится в будующих версиях.

Самыми полезными являются:
1. Вкладка (файл) [SAVEDAT] содержащая переменные и миссии.
2. Вкладка "Вобов" [Vobs], в каждой игровой локации своя, содержит состояние объектов игрового мира.
2.2. Персонаж искать по "имени" PC_HERO в колонке "contentName".
2.2. Сундуки имеют тип "oCMobContainer:eek:CMobInter:eek:CMOB:zCVob" - наберите container в фильтре.
2.3. Живые объекты имеют тип "oCNpc:zCVob" - достаточно набрать npc.
3. В режиме сравнения, для сокрытия неизменённых переменных отфильтруйте по столбцу "state" сняв флажок с "equal".
3.1 Повороты воба не считаются изменениями.

Начало обсуждения на предыдущей странице
Изменения:
1. Произведён разбор структуры NEWWORLD.SAV файла.
2. Произведён разбор большинства структур вобов (Vob) на основе сохранений "Ночи ворона" и "Тёмной саги".
3. Реализовано сравнение структур вобов.
Важно! При нажатии кнопки "Save" в папке открытого сохранения создаётся файл "SAVEDAT.SAV_DEBUG". Перед запуском игры удалите файл из папки сохранения!

FAQ
1. При нажатии на кнопку Открыть, Сравнить, ПКМ на заголовке таблицы программа не реагирует.
Ответ: Подождите 20 секунд, ничего не нажимайте. На Core i3 3.1Ghz операция сравнения занимает около 3 секунд, на Celeron (D) 2.4Ghz около 12 секунд.
Первое формирование списка фильтра на колонках с НЕповторяющимися значениями (Где фильтр и не нужен, колонка порядковых номеров, например) на Core i3 3.1Gh свыше МИНУТЫ (библиотечный функционал), соседняя колонка с повторяющимися значениями 6 секунд около 50 000 строк.

Рассмотрим работу на примере инвентаря главного героя (ГГ).
1. Откроем сохранение. [File]->[Open save]
Найдите папку сохранений C:\Program Files\Gothic II\saves\
Здесь лежат ПАПКИ сохранений т.е. одна папка = одно сохранение вида savegameНOМЕР.
Выберите, например C:\\Program Files\\Gothic II\\saves\\savegame1 выделив папку и нажмите кнопку [открыть].
(Если вы произвели 2клик отрыв её, то папка выглядит ПУСТОЙ - это нормально нажмите кнопку [открыть]).

2. Найдём главного героя (ГГ).
Если в игре несколько игровых локаций, то ГГ будет в одной из них. Определим в какой.
На вкладке фалов[SAVEINFO](1) на вкладке переменных [Var](2) посмотреть значение переменной "WorldName"(3).
По значению переменной найти вкладку файла.
Например. Если значение WorldName=NEWWORLD открываем вкладку файла [NEWWORLD].
Если значение WorldName=WORLD_DARKSAGA открываем вкладку файла [WORLD_DARKSAGA].

3. На вкладке локации (Например [NEWWORLD/WORLD_DARKSAGA]) (1) открываем вкладку [Vobs](2).
ПКМ (правой кнопкой мыши) на заголовке столбца "content name"(3).
Через НЕСКОЛЬКО секунд откроется окно фильтра (более 20 секунд ждать, наверное, не надо =)).
Начать вводить PC_HERO(4) (если подвисает и буквы невидны - продолжайте вводить =) Спасибо за понимание!)
ДВАЖДЫ щелкните на флажке(5) рядом с "PC_HERO" и нажмите ДВАЖДЫ[Apply] и [Cancel] (6) =) Да, пока вот так блин фильтрует.
В таблице останется только строка "PC_HERO", выделите её, справа отобразиться содержимое.
(Если окно выглядит пустым, перетащите ползунок прокрутки на первую строку таблицы, =) мне стыдно...
Ещё при багах фильтрации помогает свернуть и развернуть окно программы или окно сейва =) оскорбления приняты... )

4. Справа выбрать узел "Items" - содержимое рюкзака.
Пока, не все структуры воба удалось интерпретировать.
Поля типа WhatInt или WhatByte, unparsedContent и пр. тому свидетельство.
Очень буду благодарен если кто-то сможет определить назначение переменной, на пример по значению и его изменению или найдёт исходники классов...

Для работы программы необходима Java (скачать около 16 Мб )
Прога в аттаче GVEj.zip.
 

Вложения

  • SaveinfoN.jpg
    SaveinfoN.jpg
    50,6 KB · Просмотры: 532
  • PC_HERO.jpg
    PC_HERO.jpg
    84,4 KB · Просмотры: 618
  • GVEj.zip
    2,4 MB · Просмотры: 247
Сверху Снизу