Работа с конвертированными картами
Материал из Pocket Fallout для КПК на PDA PC PPC Mobile.
После того, как программа-конвертер создала скрипт строительства карты следует сделать следующие :
- Нужно открыть созданный конвертером файл map_build.pfs в редакторе скриптов (ну или в другом текстовом редакторе)
- Изменить все строковые идентификаторы, которые создала система, на значения понятные человеку.
Содержание |
Пример именования объектов
Программа создала юнита (см. procedure mInitUnits() ) и назвала его ACVillgr_name_60 :
m_obj.AddAsUnit("warrior", "ACVillgr_name_60",87, 79); //Де-евен¦ина
Вам следует его переименовать значение ACVillgr_name_60 в другое. Как видно из комментария - это создание "деревенщины". Мы можем тогда дать этому юниту идентификатор "yokel" (деревенщина) :
m_obj.AddAsUnit("warrior", "yokel",87, 79); //Деревенщина
И заменить ВО ВСЕМ ТЕКСТЕ МОДУЛЯ значение ACVillgr_name_60 на yokel. Это важно, т.к. этот идентификатор может использоваться в других процедурах/функциях модуля.
Пример замены имен объектов
procedure OnCreateInventory(object_name)
var item = CreateObject("InventoryItem");
if (object_name=="ACVillgr_name_60") then
item.NewItem("spear", "", "spear_item");
item.AddToObject(object_name);
item.Free();
return
endif
....
endprocedure
- Пункт 2 выполнить с придельным вниманием. В особенности для содержимого процедур mInitUnits() и mInitObjects().
- Сохранить файл
- Методом проб и ошибок (загружая игру в debug-режиме) исправить смещения для объектов созданных AddAsMisc (это касается каких-либо изображений)
- Методом проб и ошибок (загружая игру в debug-режиме) подправить положение зон выхода (процедура mInitMisc())
- Расстанавливаем точки выхода (можно пользоваться скриптами из кары default)
- Сохранить файл
Описатели объектов
После того, как исправлен скрипт строительства карты нужно исправить текст в файле description.txt.
Открываем его в любом текстовом редакторе и по логике начинаем его исправлять (это очень похоже на игру "Поле чудес"). Почему не автоматизировано? Потому что в оригинальном Fallout какая-то не понятная OEM кодировка, которая не поддается изучению.
Пример
Исходный файл :
22={Какое--о п¦--¬нное -а--ение.}
35={В как-¦-е не- ни¬его о-обенного.}
64={П-о--ой ков-ик. Его делал -алан-лив¬й ¬еловек.}
95={П-о--ой ков-ик. Его делал -алан-лив¬й ¬еловек.}
Правим его ручками и получаем файл :
22={Какое-то пустынное растение.}
35={В кактусе нет ничего особенного.}
64={Половой коврик. Его делал талантливый человек.}
95={Половой коврик. Его делал талантливый человек.}
P.S. Если текст вообще не понятный, можно посмотреть изображение объекта, к которому он принадлежит. Думаю, что все станет на свои места.
Последние приготовления
Все. Теперь скрипт строительства карты - готов. Мы можем его сохранить в бинарный файл (этот файл будет грузиться раз в 5 быстрее скрипта).
Для этого необходимо :
- Создать папку с именем карты в каталоге Resource\maps\. И перекопировать файлики map_build.pfs (сгенерированный скрипт), map_events.pfs, unit_enets.pfs.
- В Процедуре procedure BuildMap(inMapName) скрипта map_build.pfs в конце добавить строчку: m_build.SaveMap();
procedure BuildMap(inMapName)
m_build.InitLevelMap(75, 83);
mInitTileImages();
mInitFloor();
mInitRoof();
mInitWallImages();
mInitWalls();
mInitBypassPoints();
mInitObjects();
mInitUnits();
mInitMisc();
m_build.AddMapViewPort(-1024, 1374, -330, 2507);
m_build.SetHeroPosition(92, 75);
m_build.ScrollMapToObject("hero");
m_build.SaveMap();
endprocedure
- Запустить игру в debug-режиме и установить нашу карту для загрузки по умолчанию. Скрипт автоматически сохранит карту в файл.
- После этого смело закрываем игру и видем рядом с файлом map_build.pfs файлик <имя_карты>.map
- Создаем новый файл map_build.pfs, в котором можно создать всего лишь один метод - procedure BuildMap(in_map) в котором Вы загружаете карту :
m_build.LoadMap();
И пишите логику размещения на карте героя, в зависимости от вызвавшей эту карту местности. Что-то вроде :
if in_map=="имя_карты" then
m_build.SetHeroPosition(12, 32);
endif
И также не забываем о второстепенных моментах, таких как например музыка.