Портирування карт без декомпіляції, goldsrc, ds-servers

Для портирования карт нам знадобиться:

  • RipEnt. Консольний додаток з набору компіляторів Zoner's Halflife Tools (ZHLT).
  • Гра Half-Life з налаштованим AmxModX і плагін "Weapon Factory". для зручного і швидкого розкидання предметів по карті.
  • EntConverter конвертер.
  • Необхідні Програми port_tools.zip
  • Процес портирование - це розкидання предметів Half-Life по карті - зброї, точок спавна, і видалення предметів іншої гри. Вся інформація про об'єкти на карті зберігається в текстовому вигляді, нам потрібно лише експортувати цю інформацію в текстовий файл, відредагувати його і імпортувати назад в карту.
Розкидати предмети по карті ми будемо в самій грі, дуже зручно літати по карті і в підходящі місця вставляти зброю. Робити це будемо з допомогою AMX плагіна від GordonFreeman'а - Weapon Factory.
Перейменуйте файл liblist.gam в liblist_backup.gam. він знаходиться в директорії valve.
  • Тепер завантажуємо архів нижче і копіюємо весь вміст в директорію valve, на все пропозиції про заміни натискаємо "Так".

    Сам процес портування я продемонструю на карті для Counter-Strike - fy_kano. Скачав я її з ds-servers.com, там же можна знайти безліч цікавих карт.

    Заходимо в архів, бачимо там директорію cstrike, заходимо в неї і розпаковуємо весь вміст в директорію valve, вона знаходиться в каталозі з грою Half-Life (Наприклад, D: \ Games \ Steam \ steamapps \ common \ Half-Life). Розпаковувати потрібно вміст, але не саму директорію cstrike.

  • Портирування карт без декомпіляції, goldsrc, ds-servers
  • При першому запуску карти в грі Half-Life я отримав помилку "Mod_NumForName: models / winebottle.mdl not found".

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Подібні помилки з'являються, коли використовуваний ресурс (модель, звук, спрайт) не був знайдений.
    Є два способи вирішення цієї пробелемамі. Перший спосіб - скопіювати використовувані ресурси карти з гри Counter-Strike в Half-Life.
    Другий спосіб - видалити або замінити відомості про об'єкти з ent файлу, в цьому випадку ми видалимо об'єкт на карті або просто замінимо властивості об'єкта, і гра не стане його шукати, або завантажить інший файл. З цим способом потрібно бути акуратним і враховувати особливості карти, тому що деякі об'єкти можуть бути дуже важливі. Якщо на карті є якийсь вертоліт, дерево, пляшка, чоловік, то він може пропасти.

    Розглянемо другий спосіб, тому що експортувати відомості про об'єкти нам все одно доведеться. Для цього скористаємося додатком RipEnt.
    В архіві, що я дав, є два bat файлу, необхідно відкрити їх і виправити ім'я карти на своє, зберегти і запустити ripent_export.bat

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Після запуску, у нас з'явиться новий ent файл з назвою нашої карти. Відкриваємо цей файл і видаляємо непотрібні об'єкти, кожен об'єкт починається з відкриває фігурної дужки "", між дужками знаходяться різні директиви з властивостями. Директива "classname" це назва об'єкта, ми будемо працювати лише з деякими:

    cycler_sprite - модель або спрайт на карті.
    env_sprite - спрайт на карті (вогонь або якийсь ефект).
    info_player_deathmatch - точка спавна гравців в мультіплеере. У Counter-Strike точка спавна терористів.
    info_player_start - точка спавна гравця в одиночному режимі. У Counter-Strike точка спавна спецназівців.
    game_player_equip - об'єкт дозволяє екіпірувати гравця за потрібне зброєю.
    ambient_generic - звук на карті.

    Портирування карт без декомпіляції, goldsrc, ds-servers

    На карті fy_kano я прибрав все cycler_sprite. game_player_equip. і залишив по одному info_player_deathmatch і info_player_start. інші спавн будуть розставлятися по всій карті. Також я перемістив деякі стандартні файли з cstrike в valve. Після редагування ent файлу, його потрібно імпортувати назад, для цього в архіві є ripent_import.bat. Імпортуємо властивості об'єктів, кидаємо карту в папку valve / maps і пробуємо запустити її в грі.

    Після запуску можна помітити відсутність різної зброї і предметів.

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Тепер скористаємося плагіном "Weapon Factory". Вводимо в консолі "wp_spawn" і бачимо з'явилося зліва меню

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Вибираємо, яку зброю або предмет будемо спавн. Можна вказати кут повороту нашого предмета. До перезавантаження карти все додані предмети будуть мати голографічний ефект.

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Крім зброї та набоїв, не забуваємо розставити місця спавна гравців. В плагіні "Weapon Factory" об'єкта info_player_deathmatch немає, вірніше він є, але не працює. Я зазвичай використовую монтировку в якості точки спавна, в текстовому файлі entity потім можна виправити weapon_crowbar на info_player_deathmatch.

    Після того, як розставили всі предмети і точки СПАНА, перезавантажуємо карту ( "restart" в консолі) і бачимо вже, що наша карта сповнена предметами. Але портирование на цьому не закінчено,
    всі ці предмети зберігаються в базі даних плагіна "Weapon Factory". а нам потрібно впровадити всі предмети в саму карту.

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Тепер потрібно конвертувати дані "Weapon Factory" в дані, які можна спокійно імпортувати в карту. Переходимо в директорію valve \ addons \ amxmodx \ configs \ weapon_factory. в ній повинен знаходиться ini-файл з назвою нашої карти, в моєму випадку fy_kano.in i. Для конвертації скористаємося конвертером EntConverter. копіюємо файл ent_converter.exe в директорію з ini файлами valve \ addons \ amxmodx \ configs \ weapon_factory і запускаємо його. Після цього повинен з'явиться ent-файл з назвою нашої карти, в моєму випадку це fy_kano.ent. весь вміст цього файлу потрібно дописати в ent-файл. який ми експортували за допомогою RipEnt.

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Не забуваємо про наш милицю. Потрібно замінити weapon_crowbar на info_player_deathmatch. У деяких випадках гравці можуть з'явитися в землі, тому потрібно збільшити z-координату (висоту) об'єкта, не забуваємо, що числа можуть бути негативними.

    Портирування карт без декомпіляції, goldsrc, ds-servers

    Портирування карт без декомпіляції, goldsrc, ds-servers

    • Після збереження кінцевого ent-файлу, його потрібно імпортувати в карту, для цього потрібно запустити файл "ripent_import.bat".
      Карта успішно перенесена з Counter-Strike в Half-Life. Можна перевірити, чи все працює. Перед цим не забуваємо видалити liblist.gam і перейменувати liblist_backup.gam назад в liblist.gam.
      цим самим ми відключимо AmxModx і плагін "Weapon Factory". якщо цього не зробити, то все розкидані нами предмети будуть дублюватися.
    Подібним чином можна перенести абсолютно все GoldSource карти. Крім портирования, можна додавати якісь предмети в існуючі карти Half-Life, виправити якісь проблеми карт і т.п.