В этой статье пойдет речь о портировании карт в Half-Life из других игр GoldSource (Counter-Strike, Team Fortress Classic, Day of Defeat и других.). Думаю, что тем кто любит что-то создавать для Half-Life эта статья придется по вкусу. Процесс портирования не будет скучен и однообразен. На портирование одной карты примерно уходит от 10 минут до одного часа.
Процесс портирование -- это раскидывание предметов Half-Life по карте -- оружия, точек спавна, и удаление предметов другой игры. Вся информация об объектах на карте хранится в текстовом виде, нам нужно лишь экспортировать эту информацию в текстовый файл, отредактировать его и импортировать обратно в карту.
Раскидывать предметы по карте мы будем в самой игре, очень удобно летать по карте и в подходящие места вставлять оружие. Делать это будем с помощью AMX плагина от GordonFreeman'а -- Weapon Factory. Переименуйте файл liblist.gam в liblist_backup.gam, он находится в директории valve. Теперь скачиваем архив ниже и копируем все содержимое в директорию valve, на все предложения о заменах нажимаем "Да".
Сам процесс портирования я продемонстрирую на карте для Counter-Strike -- fy_kano, автором которой является Burner. Скачал я ее с gamebanana.com, там же можно найти множество интересных карт.
Заходим в архив, видим там директорию cstrike, заходим в нее и распаковываем все содержимое в директорию valve, она находится в каталоге с игрой Half-Life (Например, D:\Games\Steam\steamapps\common\Half-Life). Распаковывать нужно содержимое, но не саму директорию cstrike.
При первом запуске карты в игре Half-Life я получил ошибку "Mod_NumForName: models/winebottle.mdl not found".
Подобные ошибки появляются, когда используемый ресурс (модель, звук, спрайт) не был найден. Есть два способа решения этой пробелемы. Первый способ -- скопировать используемые ресурсы карты из игры Counter-Strike в Half-Life. Второй способ -- удалить или заменить сведения об объектах из ent файла, в этом случае мы удалим объект на карте или просто заменим свойства объекта, и игра не станет его искать, либо загрузит другой файл. С этим способом нужно быть аккуратным и учитывать особенности карты, т.к. некоторые объекты могут быть очень важны. Если на карте есть какой-либо вертолет, дерево, бутылка, человек, то он может пропасть.
Рассмотрим второй способ, т.к. экспортировать сведения об объектах нам все равно придется. Для этого воспользуемся приложением RipEnt. В архиве, что я дал, имеется два bat файла, необходимо открыть их и исправить имя карты на свое, сохранить и запустить ripent_export.bat
После запуска, у нас появится новый ent файл с названием нашей карты. Открываем этот файл и удаляем ненужные объекты, каждый объект начинается с открывающей фигурной скобки "{", и заканчивается "}", между скобками находятся различные директивы со свойствами. Директива "classname" это название объекта, мы будем работать лишь с некоторыми:
cycler_sprite -- модель или спрайт на карте. env_sprite -- спрайт на карте (огонь или какой-то эффект). info_player_deathmatch -- точка спавна игроков в мультиплеере. В Counter-Strike точка спавна террористов. info_player_start -- точка спавна игрока в одиночном режиме. В Counter-Strike точка спавна спецназовцев. game_player_equip -- объект позволяет экипировать игрока нужным оружием. ambient_generic -- звук на карте.
На карте fy_kano я убрал все cycler_sprite, game_player_equip, и оставил по одному info_player_deathmatch и info_player_start, остальные спавны будут расставляться по всей карте. Также я переместил некоторые стандартные файлы из cstrike в valve. После редактирования ent файла, его нужно импортировать обратно, для этого в архиве есть ripent_import.bat. Импортируем свойства объектов, кидаем карту в папку valve/maps и пробуем запустить ее в игре.
После запуска можно заметить отсутствие различного оружия и предметов.
Теперь воспользуемся плагином "Weapon Factory". Вводим в консоли "wp_spawn" и видим появившееся слева меню.
Выбираем, какое оружие или предмет будем спавнить. Можно указать угол поворота нашего предмета. До перезагрузки карты все добавленные предметы будут иметь голографический эффект.
Помимо оружия и патронов, не забываем расставить места спавна игроков. В плагине "Weapon Factory" объекта info_player_deathmatch нет, вернее он есть, но не работает. Я обычно использую монтировку в качестве точки спавна, в текстовом файле entity потом можно исправить weapon_crowbar на info_player_deathmatch.
После того, как расставили все предметы и точки спана, перезагружаем карту ("restart" в консоли) и видим уже, что наша карта полна предметами. Но портирование на этом не закончено, все эти предметы хранятся в базе данных плагина "Weapon Factory", а нам нужно внедрить все предметы в саму карту.
Теперь нужно конвертировать данные "Weapon Factory" в данные, которые можно спокойно импортировать в карту. Переходим в директорию valve\addons\amxmodx\configs\weapon_factory, в ней должен находится ini-файл с названием нашей карты, в моем случае fy_kano.ini. Для конвертации воспользуемся моим конвертером EntConverter, копируем файл ent_converter.exe в директорию с ini файлами valve\addons\amxmodx\configs\weapon_factory и запускаем его. После этого должен появится ent-файл с названием нашей карты, в моем случае это fy_kano.ent, все содержимое этого файла нужно дописать в ent-файл, который мы экспортировали с помощью RipEnt.
Не забываем про наш костыль. Нужно заменить weapon_crowbar на info_player_deathmatch. В некоторых случаях игроки могут появиться в земле, поэтому нужно увеличить z-координату (высоту) объекта, не забываем, что числа могут быть отрицательными.
После сохранения конечного ent-файла, его нужно импортировать в карту, для этого нужно запустить файл "ripent_import.bat". Карта успешно портирована из Counter-Strike в Half-Life. Можно проверить, все ли работает. Перед этим не забываем удалить liblist.gam и переименовать liblist_backup.gam обратно в liblist.gam, этим самым мы отключим AmxModx и плагин "Weapon Factory", если этого не сделать, то все раскиданные нами предметы будут дублироваться.
Подобным образом можно портировать абсолютно все GoldSource карты. Помимо портирования, можно добавлять какие-то предметы в существующие карты Half-Life, исправить какие-то проблемы карт и т.п.
Администраторы серверов :
ET^NiK
ET^Pontiy
kissbb
NH.Kanm!!r
GordonFreeman
Kiler