Раздел:
Max Payne II: Моддинг

Введение.

Задача -> создание конфигуратора, способного редактировать дочерний текстовый файл, содержащий такие характеристики, как типы игровых моделей, используемых для управления игроком. Движок игры ограничен по количеству игровых карт, а каждой карте можно прописать только одну модель игрока (скин), по этой причине много моделек в него не добавить. Как же быть, если скинов у вас много и каждый хочется испытать в игре? Это ограничение можно обойти. Один из способов - вынести отдельный дочерний *.h файл, содержащий характеристики моделей в игровую директорию и создать удобный конфигуратор для быстрого внесения в него изменений.

Для работы потребуются:


  • Блокнот, либо любой другой текстовый редактор.
  • Любой графический редактор, умеющий сохранять в формате *.ico (не обязательно).
  • Архиватор WinRar.

Создание внешнего дочернего *.h файла выбора персонажей

В главной директории игры создадим новую папку и назовем ее произвольно. Можно создать *.h файл и без отдельной папки, но в случае с папкой легче будет найти и удалить его после удаления вашего мода. Файл должен содержать запись следующего вида:
#define		DEFAULT_MAXPAYNE                "MaxPayne"
#define		HOME_MAXPAYNE			"MaxPayne_Home"
#define		HOSPITAL_MAXPAYNE		"MaxPayne_Hospital"
#define		DREAM_MAXPAYNE		        "MaxPayne_Dream"
Как видно, это определения моделей Макса Пейна, соответствующие разным картам в игре. Например DREAM_MAXPAYNE будет использоваться на уровнях со сновидениями, HOSPITAL_MAXPAYNE - в клинике, и тд... Запись в кавычках -> ID самой модели-скина, а количество записей и моделек может соответсвовать всем имеющимся игровым картам. Подобный список лучше создать как простой текстовый файл, после чего переправить ему расширение c *.txt на *.h.

Назначение определений моделей картам и подключение файла *.h

Открываем файл levels.txt вашей распакованной для моддинга игры, расположенный по адресу: game\data\database\levels. Напротив PlayerSkinName = прописываем определение из вашего нового файла *.h соответствующее данной карте. Получится примерно так:
PlayerSkinName  = DEFAULT_MAXPAYNE;
После этого подключаем ваш новый файл *.h в качестве включения (#include) в любом месте файл с новой строки. Удобнее всего сделать это в самом верху, чтобы проще было найти если потребуется. Должна получиться запись такого вида:
#include "..\..\..\Имя вашей папки\Имя вашего файла.h"
...Или такого вида, если новую папку вы не создавали, а кинули прямо в директорию игры:
#include "..\..\..\Имя вашего файла.h"

Создание пакетного исполняющего файла

Создаем в любом месте (лучше в отдельной папке) обычный текстовый файл *.txt, при помощи, например, блокнота. Прописываем в нем код, в котором все названия скинов моделек, а так-же имя нового *.h файла, должны быть вашими. На примере кода, подменяющего файл "Mod-skins.h", все наглядно видно. Вам после "set name=" вместо "Mod-skins" нужно будет везде переписать в коде на имя вашего файла *.h, который и будет заменяться конфигуратором.
Код
@echo off
chcp 1251
title Max Payne 2 Select skins for story mode
:main
cls
echo.
Ping -n 1 127.0.0.1 > nul
color 04
echo (1) Select skins
echo (2) Exit
echo.
echo Press key:
SET /p q=

if `%q%`==`1` goto select
if `%q%`==`2` goto exit

:exit
del %0
exit

:select
cls
echo Choose skin Max Payne
echo.
echo (1) Sam Lake
echo (2) Timothy Gibbs
echo (3) James G. McCaffrey
echo (4) Exit
echo.
echo Press key:
SET /p q=

if `%q%`==`4` goto exit
if `%q%`==`1` goto sammp
if `%q%`==`2` goto timmp
if `%q%`==`3` goto jammp

:sammp
cls
set name=Mod-skins
(Echo #define		DEFAULT_MAXPAYNE		"MaxPayne"
Echo #define		HOME_MAXPAYNE			"MaxPayne_Home"
Echo #define		HOSPITAL_MAXPAYNE		"MaxPayne_Hospital"
Echo #define		DREAMZONE_MAXPAYNE		"MaxPayne_Dream"
)>"%name%.h"
echo You have chosen the model Sam Lake!
echo.
echo (1) Back to menu
echo (2) Exit
echo.
echo Press key:
SET /p q=

if `%q%`==`2` goto exit
if `%q%`==`1` goto select

:timmp
cls
set name=Mod-skins
(Echo #define		DEFAULT_MAXPAYNE		"MaxPayne_Tim"
Echo #define		HOME_MAXPAYNE			"MaxPayne_Tim_Home"
Echo #define		HOSPITAL_MAXPAYNE		"MaxPayne_Tim_Hospital"
Echo #define		DREAMZONE_MAXPAYNE		"MaxPayne_Tim_Dream_zone"
)>"%name%.h"
echo You have chosen the model Timothy Gibbs!
echo.
echo (1) Back to menu
echo (2) Exit
echo.
echo Press key:
SET /p q=

if `%q%`==`2` goto exit
if `%q%`==`1` goto select

:jammp
cls
set name=Mod-skins
(Echo #define		DEFAULT_MAXPAYNE		"MaxPayne_Jam"
Echo #define		HOME_MAXPAYNE			"MaxPayne_Jam_Home"
Echo #define		HOSPITAL_MAXPAYNE		"MaxPayne_Jam_Hospital"
Echo #define		DREAMZONE_MAXPAYNE		"MaxPayne_Jam_Dream_zone"
)>"%name%.h"
echo You have chosen the model James G. McCaffrey!
echo.
echo (1) Back to menu
echo (2) Exit
echo.
echo Press key:
SET /p q=

if `%q%`==`2` goto exit
if `%q%`==`1` goto select
Меню конфигуратора выполнено в черно-красном макспейновом стиле, но цвет можно менять как вам вздумается. За это отвечает код:
Ping -n 1 127.0.0.1 > nul
color 04
Вы можете исправить цветовую гамму на свой вкус меняя значения после "color" используя следующую таблицу цветов:
Таблица атрибутов цветов
Первая цифра - задает цвет фона, а вторая задает - цвет текста. Каждая цифра может иметь следующие значения:
0 = Черный 8 = Серый 1 = Синий 9 = Светло-синий
2 = Зеленый A = Светло-зеленый 3 = Голубой B = Светло-голубой
4 = Красный C = Светло-красный 5 = Лиловый D = Светло-лиловый
6 = Желтый E = Светло-желтый 7 = Белый F = Ярко-белый
источник: www.docent777.ru
Как видно, данный исполнительный код написан под обычный пакетный файл (файл *.bat, или проще говоря "батник"). Осталось переписать его расширение с *.txt на *.bat, и дело сделано.

Создание иконки для конфигуратора. (Необязательный пункт).

Нарисуйте в любом графическом редакторе изображение размером не более 64x64 пикселя. Сохраните его в формате *.iso.
Вы можете взять и любую уже готовую иконку.

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

Создание удобного исполнимого файла *.exe

Теперь преобразуем наш новый "батник" в исполнимый файл с расширением *.exe. Хотя вернее сказать -> запакуем его в самораспаковывающийся архив.

  1. Выберем созданный файл с расширением *.bat правой кнопкой мыши и в контекстном меню выберем пункт "добавить в архив..."
  2. Отметим галкой пункт "создать SFX-архив".
  3. Во вкладке "дополнительно" нажимаем кнопку "Параметры SFX..."
  4. В строке "выполнить после распаковки" параметров SFX прописываем имя нашего файла с расширением *.bat.
  5. Во вкладке "Текст и графика" загрузите ваш значок SFX из файла -> новую иконку *.iso (если вы ее решили добавить).
  6. Во вкладке "Режимы" отметьте - "не показывать начальный диалог".
  7. Подтвердите ваши параметры SFX и жмите "ОК".
Ваш новый исполнимый файл готов! Для удобства можно создать ярлык и и вынести его на рабочий стол.

Тестирование нового конфигуратора.

Запустите ваш конфигуратор, кликнув по его иконке.
В командном окне, следуя пояснениям, вводите требуемую цифру и подтверждайте ваш выбор клавишей "Enter".
Вы увидите список ваших моделек, в котором станет возможно выбирать нужные.
Особенность кода батника такова, что после выполнения нужных команд он самоудалится при закрытии и не будет захламлять дисковое пространство вашего ПК.

Конфигуратор выбора игровых моделей готов.
Данное приложение сможет менять и другие конфигурации игры, способные улучшить геймплей. К примеру: вид главной камеры (от первого или от третьего лица); музыку и бэкграунд главного меню игры и тд... Вам потребуется лишь дописать код этого конфигуратора, а это не сложно.
`
ОЖИДАНИЕ РЕКЛАМЫ...