Condition Zero Custom Mission System

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Система расширенных миссий позволяет пользователям создавать собственные кампании для Counter-Strike: Condition Zero. Эти пакеты могут содержать новые карты, новые задания, новые профили и скины ботов, и т.д.

Структура пакета миссий:

Кампании находятся в папке czero\MissionPack. Каждая кампания должна иметь собственную папку с уникальным именем. Ниже приведен список файлов для кампании “MyMission”:

  • czero\MissionPacks\MyMission\Overview.vdf
  • czero\MissionPacks\MyMission\Thumbnail.tga
  • czero\MissionPacks\MyMission\Easy.vdf
  • czero\MissionPacks\MyMission\Normal.vdf
  • czero\MissionPacks\MyMission\Hard.vdf
  • czero\MissionPacks\MyMission\Expert.vdf
  • czero\MissionPacks\MyMission\BotProfile.db

Overview.vdf

Этот файл определяет информацию, такую как описание миссии, в какую команду игрок попадет, какой файл отвечает за профили ботов и т.д.

Thumbnail.tga

Thumbnail.tga является 24-битным изображением, отображающееся как заставка кампании. Оно не должно быть размером не больше 256*256 и отображается в области размером 320*68 при разрешении 640*480

Easy.vdf, Normal.vdf, Hard.vdf, Expert.vdf

Эти файлы определяют правила игры, прогресс карт, доступных товарищей, врагов и задания одной карты. Если эти файлы будут отсутствовать, соответственно будут использоваться файлы CareerGameEasy.vdf, CareerGameNormal.vdf, CareerGameHard.vdf и CareerGameExpert.vdf из папки czero.

BotProfile.db

Этот файл определяет профили ботов для использования в качестве товарищей и врагов в кампании.

Файл Overview.vdf

Ниже приведен пример файла Overview.vdf в полном объеме:

"MissionPack" 
{ 
"Author"	"Turtle Rock Studios" 
"Title"	"My CZ Mission" 
"Описание"	"This is my custom mission pack for CZ."
"URL"	"http://www.turtlerockstudios.com/"
"SoloPlay"	"1"
"CoopPlay"	"0"
"Team"	"CT"
"BGColor1"	"47 62 90"
"BGColor2"	"0 0 0"
"TextColor"	"255 255 255"
"BotProfile"	"BotProfile.db"}
  • Author: автор(-ы) кампании
  • Title: название кампании
  • Описание: описание миссий
  • URL: сайт, связанный с кампании; часто домашняя страница автора
  • SoloPlay: не используется; зарезервирован для будущего использования
  • CoopPlay: -//-
  • BGColor1: значения красного, зеленого и синего (RGB) цветов от 0 до 255, определяющие цвет фона в пользовательском интерфейсе пакета миссий
  • BGColor2: не используется; зарезервирован для будущего использования
  • TextColor: RGB значения цветов для некоторых надписей в кампании
  • BotProfile: имя файла, содержащего профили ботов для использования с этой кампанией.

Файлы Easy.vdf, Normal.vdf, Hard.vdf, и Expert.vdf

Эти файлы определяют структуру игры. Каждый файл соответствует уровню сложности, выбранным игроком. Другими словами, если игрок начинает свою миссию с уровнем сложности "Normal", то будет использоваться Normal.vdf.

Настоятельно рекомендуется просмотреть файлы CareerGame*.vdf. Они содержат данные для стандартной CZ Counter-Terrorist миссии.

  • InitialPoints: кол-во очков репутации, с которыми игрок начнет игру.
  • MatchWins: минимальное кол-во раундов, которое команда должна выиграть для победы.
  • MatchWinBy: кол-во побед команды для того, чтобы выиграть
  • Characters: список ботов, определяющий товарищей по команде, которые могут быть взяты за очки репутации. Эти боты должны иметь соответствующие профили в базе данных (т.е BotProfile.db)
  • CostAvailability: каждый товарищ по команде стоит очки репутации, от 1 до 5. Этот параметр определяет, сколько всего очков репутации игрок должен иметь для разблокировки стоимости товарища каждого уровня. Например, пара чисел "4" и "15" означает, что игрок должен иметь 15 очков для разблокировки товарищей по команде стоимостью 4.
  • Maps: Набор карт, используемый в этой мисиии. Название каждого раздела карты должно совпадать с именем BSP файла, расположенного в czero/maps, cstrike/maps или valve/maps/ См. "Определение локаций (карт)" для получения подробной информации.

Определение локаций (карт)

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

“map name”
{
“bots”	“<list of enemy bot names>”
“minEnemies”	“<count>”
“threshold”	“<value>”
“tasks”	“<list of tasks>”
“FriendlyFire”	“0” or “1”
“commands”	“<console command string>”}

“map name”
Имя BSP файла для загрузки для этой локации без расширения .bsp

“bots”
Это поле, содержащее список ботов, которые будут врагами на этой карте. Боты добавляются слева направо, по порядку. Например, список “Joe Fred Alex Barney” будет искать в базе данных ботов “Joe” и добавить бота с указанными параметрами, а потом “Fred”, “Alex”, и “Barney” до нужного кол-ва врагов для этой локации.

“minEnemies”
Это значение определяет минимальное кол-во врагов, с которыми игрок встретится на этой карте.

“threshold”
Это число определяет ценность очков репутации, выше которой враг добавляется для каждого дополнительного очка репутации, пока мы не исчерпываем ботов на линии "ботов"

“tasks”
Это поле определяет список заданий, которые игрок должен закончить, чтобы выиграть эту карту. Каждое задание и параметры заданий, должны быть написаны в пределах единственных кавычек в полной последовательности. Например:

"tasks" " 'kill 7' 'kill 2 survive' 'winfast 60' "

Для полного списка задач см. "Задачи"

“FriendlyFire”
Если это установлено ноль, товарищи не смогут причинить урон из каждого оружия другим. Если “FriendlyFire” установлено в “1”, товарищи могут причинить урон друг другу. “commands”
“<console command string>” посылают в консоль, когда карта загружена. Это может использоваться, чтобы изменить системные параметры так же, как если бы пользователь ввел строку в консоль. Отметьте, что определенные команды (то есть: mp_startmoney), не функционируют, поскольку они перезагружены системой после того, как эти команды были даны.

Задачи

Для каждой задачи упомянутой ниже, требуемые параметры заключены в < >, а дополнительные параметры заключены в []. Многократные дополнительные параметры отделены |.

Дополнительный параметр "survive", означает, что игрок должен выполнить задачу в одном раунде и выжить. Дополнительный параметр “inarow” означает, что игрок должен выполнить задачу несколько раундов без смерти.

Основные задачи

injure <N> [survive | inarow]
Игрок должен ранить N врагов

injurewith <N> <weapon> [survive | inarow]
Игрок должен ранить <N> врагов, используя определенное оружие или класс оружия.

kill <N> [survive | inarow]
Игрок должен убить <N> врагов

killwith <N> <weapon> [survive | inarow]
Игрок должен убить <N> врагов, используя определенное оружие или класс оружия.

killall
Команда игрока должна выиграть раунд, убив всю вражескую команду.

killblind <N> [survive | inarow]
Игрок должен убить <N> ослепленных врагов

headshot <N> [survive | inarow]
Игрок должен убить <N> врагов хедшотом

headshotwith <N> <weapon> [survive | inarow]
Игрок должен убить <N> врагов хедшотом, используя определенное оружие или класс оружия

winfast S [survive]
Команда игрока должна выиграть раунд за меньше, чем s секунд

Задачи сценария "Разминирование бомбы"

plant <N> [survive | inarow]
Игрок должен заложить бомбу <N> раундов

defuse <N> [survive | inarow]
Игрок должен разминировать бомбу в <N> раундах

preventdefuse <N> [survive | inarow]
Игрок должен предотвратить разминирование в каждом из <N> раундов. Задача проваливается, если бомба не заложена, или CT начинает разминировать

killdefuser <N> [survive | inarow]
Игрок должен убить CT в процессе разминирования установленной бомбы <N> раундов

Задачи сценария "Спасение заложников"

rescue <N> [survive | inarow]
Игрок должен спасти <N> заложников

rescueall
Игрок должен спасти всех заложников в одном раунде

stoprescue <N> [survive | inarow]
Игрок должен убить CT, которых сопрождает заложников к зоне спасений <N> раундов

defendhostages <N>
Ни один заложник не может быть спасен <N> раундов. Заложник может умерерть, но не может быть спасен.

hostagessurvive <N>
Все заложники должны выжить к концу каждого из <N> раундов. Ни один заложник не омжет умереть, но может быть спасен.

Задачи сценария "Спасение VIP"

killvip <N> [survive | inarow]
Игрок должен убить VIP' в <N> раундах.

Названия оружия и классов оружия

Имена для использования параметра <weapon> для задач, в которых он требуется

  • pistol = любой пистолет
  • glock = 9x19mm Sidearm
  • usp = KM .45 Tactical
  • p228 = 228 Compact
  • deagle = Night Hawk .50c
  • fn57 = ES Five-Seven
  • elites = .40 Dual Elites


  • shotgun = любой дробовик
  • m3 = Leone 12 Gauge Super
  • xm1014 = Leone YG1265 Auto Shotgun


  • SMG = Любой полуавтомат
  • tmp = Schmidt Machine Pistol
  • mac10 = Ingram Mac-10
  • mp5 = KM Sub-Machine Gun
  • ump45 = KM UMP45
  • p90 = ES C90


  • rifle = Любая неснайперская винтовка
  • galil = IDF Defender
  • famas = Clarion 5.56
  • m4a1 = Maverick M4A1 Carbine
  • ak47 = CV-47
  • aug = Bullpup
  • sg552 = Krieg 552


  • sniper = Любая снайперская винтовка
  • scout = Schmidt Scout
  • sg550 = Krieg 550 Commando
  • g3sg1 = D3/AU-1
  • awp = Magnum Sniper Rifle


  • machinegun = Любой пулемет
  • m249 = M249


  • shield = Тактический щит
  • knife = Нож
  • grenade = HE граната

Определние первью картинок для локаций

Каждая карта требует 2 "уменьшенных" изображений для показа в интерфейсе

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

Маленькая кнопка изображение должно быть изображением Targa (.tga), которое 128 пикселей шириной и 128 пикселей высотой, с именем, идентичным bsp файлу карты. Поместите это изображение в папку: czero\gfx\thumbnails\maps

Изображение предварительного просмотра должно быть изображением Targa, которое 256 пикселей шириной и 110 пикселями высотой, снова с именем файла, идентичным карте (с .tga расширением). Поместите это изображение в папку: czero\gfx\thumbnails\maps_wide

Отметьте, что пользователям Steam нужно самим создать эти папки, если они отсутствуют.

Например, если карта de_mymap_cz.bsp использовалась в миссии, то следующие два изображения должны были бы иметься:

  • czero\gfx\thumbnails\maps\de_mymap_cz.tga
  • czero\gfx\thumbnails\maps_wide\de_mymap_cz.tga

Определение индивидуальности ботов

Определение индивидуальности ботов состоит из определения значений для различных признаков и маркировки значений ботов с именем, таких как "Fred". Это влияние признаков и различные аспекты контроля поведения ботов, такие как, насколько соблюдающие они, или как хорошо они могут нацелить свое оружие.

В то время как довольно простая, база данных индивидуальностей ботов действительно содержит много данных. Рекомендуется, чтобы заинтересованные игроки обратились к BotCampaignProfile.db и BotProfile.db, которые содержат индивидуальности ботов.

Данные в базе данных ботов всегда содержатся в блоках данных, у которых есть следующая форма:

<data block type> [<data block name>]
<attribute> = <value>
<attribute> = <value>
…
<attribute> = <value>
End

data block type может быть:
Default
Этот блок данных определяет значения по умолчанию для всех признаков.

Skin <skin name>
Этот блок данных определяет "скин" (модель игрока) для последующего использования. Он может содержать единственный признак "Model", которая должна быть установлена в название .mdl файла без его расширения. Пример ниже определяет шкурку для czero\models\player\arctic.mdl:

Skin TerroristSniperSkin
Model = arctic
End

Template <template name>
Шаблоны определяют значения для связанного набора признаков. Шаблоны используются определенными блоками данных бота, чтобы "унаследовать" значения данных. См. раздел "Наследование данных" за дополнительной информацией.

template name[+template name …] bot name
Определение блока данных через использование одного или более имен шаблона создает определение бота. Значения, которые получают признаки бота, "унаследованы", начинаясь со значений в блоке данных Default, и затем переписывая любые значения атрибута, найденные в перечисленных блоках шаблона, оцененных слева направо.

Атрибуты

Name
Значение: Строка. Если имя содержит пробелы, то окружите ковычками (ie: “Cliffe”)
Описание: Имя бота

Skill
Значение: от 0 до 100
Описание: Определяют умения бота. Чем выше умения, тем сложнее его убить.

Aggression
Значение: от 0 до 100
Описание: Определяет, как агрессивно ведет себя бот. Сильно агрессивные боты обращают меньше внимания на "опасность" (то есть: где товарищи по команде умерли ранее), более вероятно, помчатся, и менее вероятно отступят. Боты низкой агрессии - совсем противоположные.

ReactionTime
Значение: от 0.2 до 0.5 секунд
Описание: Определяет время реакции бота. "Время реакции" бота - задержка между тем, когда визуальное или аудио событие произойдет, и бот становится "проинформированным" о нем и может начать действовать на него.

AttackDelay
Значение: Время в секундах, когда бот открет огонь по жертве
Описание: После того, как бот узнал врага, это время должно протечь прежде, чем бот начнет стрелять в свою жертву. Этот атрибут прежде всего используется для легких ботов, давая новичкам дополнительное время, чтобы ореагировать и нацелить оружие прежде, чем бот откроет огонь.

Teamwork
Значение: от 0 до 100
Описание: Определяет коперативность бота. То есть как он будет реагировать на команды.


WeaponPreference
Значение: "нет" или алиас покупки, такой как “m4a1”
Описание: Определяет предпочтение оружия бота. У бота может быть много WeaponPreference подряд, определяя расположенный по приоритетам список (более ранние любимые по более поздним) оружия, которое бот попытается купить или поднять от земли. Предпочтение "нет" заставит личинку покупать случайное оружие.

Difficulty
Значение: EASY | NORMAL | HARD | EXPERT
Описание: Определяет категории сложности, где этот бот используется. Отметьте, что эти флаги могут быть объединены, такой как “NORMAL + HARD”, означая, что бот может использоваться на Normal или на Hard уровне сложности

VoicePitch
Значение: от 85 до 120 (100 неперемещенна)
Описание: Высота голоса бота. Нижние значения создают более низкие голоса.

Skin
Значение: 0-4 или <skin name>
Описание: Определяет скин бота, когда тот подключается к игре. Значения 1-4 ассоциируют скины в меню игрока. Значение 0 выбирает скин наугад. Если имя скина дано, то оно должно быть определено в блоке Skin. Блоки данных скинов могут ссылаться к кастомным скинам кроме стандартных CZ. Кастомные скины должны быть разположены в czero/models/имя_скина/имя_скина.mdl

Наследование данных в базе данных бота

Определение индивидуальности бота включает определение десятка или более параметров. Если Вы хотите создать несколько ботов, это означает определение довольно многих данных. Чтобы помочь организовать и собрать из блоков эти данные об индивидуальности бота, в базе данных ботов используется очень простой механизм "наследования" данных.

Вот пример того, как работает механизм наследования:

Default
Color = Grey
Shape = Circle
Size = Medium
Weight = Average
Material = Wood
End

Template RedSquare
Color = Red
Shape = Square
End

RedSquare MyRedSquare
Size = Small
End

Запись "Default" определяет начальные значения всех атрибутов, в данном случае «Color», «Shape», «Size», «Weight» и «Material». Следующая запись "Template", который определяет тип данных с именем "RedSquare", который устанавливает атрибуты "Color" и "Shape" на "Red" и "Square" соответственно. Наконец, последняя запись на самом деле создает объект типа "RedSquare" под названием "MyRedSquare", который устанавливает "Size" в "Small". Полученные значения для "MyRedSquare" являются:

Color = Red
Shape = Square
Size = Small
Weight = Average
Material = Wood

"Weight" и "Material" остаются по-умолчанию на "Average" и "Wood", так как "RedSquare" или "MyRedSquare" не изменили их.


База данных бота учитывает также грубую форму “многократного наследования”:

Default
Color = Grey
Shape = Circle
Size = Medium
Weight = Average
Material = Wood
End

Template RedSquare
Color = Red
Shape = Square
End

Template BigAndHeavy
Size = Large
Weight = Heavy
End

RedSquare+BigAndHeavy MyBigRedSquare
Material = Iron
End

В этом примере была добавлена новая запись “BigAndHeavy”, которая устанавливает признаки "Size" и "Weight" к "Large" и "Heavy". Заметьте, что “MyBigRedSquare” теперь перечисляет и “RedSquare” и “BigAndHeavy” как его тип, объединенный с дополнительным символом “+”. Окончательные значения "MyBigRedSquare":

Color = Red
Shape = Square
Size = Large
Weight = Heavy
Material = Iron

"Color" и "Shape" были унаследованы от “RedSquare”, "Size" и "Weight" от “BigAndHeavy”, и "Материал" был установлен непосредственно “MyBigRedSquare”. Любое число основных типов может быть "добавлено" таким образом.

Если оба "RedSquare" и "BigAndHeavy" имели значениядля одного и того же атрибута, окончательное значение будет соответствовать одному в "BigAndHeavy", поскольку он пришел после "RedSquare".

Как это используется на самом деле в даными о боте? Очень полезно сломать атрибуты бота в “weapon preferences” и “difficulty levels”. Например, вот некоторые шаблоны в качестве примера для уровней сложности:

Template Expert
Skill = 90
Aggression = 90
ReactionTime = 0.2
Difficulty = EXPERT
End

Template Hard
Skill = 75
Aggression = 75
ReactionTime = 0.25
Difficulty = HARD
End

Template Normal
Skill = 50
Aggression = 50
ReactionTime = 0.4
AttackDelay = 0.7
Difficulty = NORMAL
End

Template Easy
Skill = 0
Aggression = 20
ReactionTime = 0.5
AttackDelay = 1.5
Difficulty = EASY
End

… и вот некоторые шаблоны, определяющие предпочтения в оружии:

Template Rifle
WeaponPreference = m4a1
WeaponPreference = ak47
WeaponPreference = famas
WeaponPreference = galil
WeaponPreference = mp5
End

Template Sniper
WeaponPreference = awp
WeaponPreference = sg550
WeaponPreference = g3sg1
WeaponPreference = scout
WeaponPreference = famas
WeaponPreference = galil
WeaponPreference = mp5
End


Template Shotgun
WeaponPreference = xm1014
WeaponPreference = m3
WeaponPreference = famas
WeaponPreference = galil
WeaponPreference = mp5
End

Template Shield
WeaponPreference = shield
WeaponPreference = m4a1 // in case shield is disallowed
WeaponPreference = ak47
WeaponPreference = famas
WeaponPreference = galil
WeaponPreference = mp5
End

Template Spray
WeaponPreference = p90
WeaponPreference = tmp
WeaponPreference = mac10
WeaponPreference = mp5
End

Эти шаблоны позволяют легкое создание бота "John", который любит использовать винтовки и является довольно сложным противником:

Hard+Rifle John
Skin = 3
VoicePitch = 97
End

Создание бота "Fred", который также любит винтовки, но является полным новичком:

Easy+Rifle Fred
Skin = 2
VoicePitch = 110
End

Смешиваясь и соответствуя шаблонам, может быть быстро создано большое количество ботов. Эта договоренность также облегчает "настройку" поведения бота - если "сложные" боты слишком сложны, значения могут быть изменены во всего одном месте ("Hard" шаблон), и все сложные боты будут обновлены в результате.

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

Распространение

Самый простой способ распространять свои кампании является запаковывать все custom ресурсы (карты, GUI, модели игроков, папка кампании, и т.д.) в один файл ZIP, сохранив необходимую структуру папок.

Например, MyMission.zip может содержать следующее:

czero\MissionPacks\MyMission\Overview.vdf
czero\MissionPacks\MyMission\Thumbnail.tga
czero\MissionPacks\MyMission\Easy.vdf
czero\MissionPacks\MyMission\Normal.vdf
czero\MissionPacks\MyMission\Hard.vdf
czero\MissionPacks\MyMission\Expert.vdf
czero\MissionPacks\MyMission\BotProfile.db
czero\gfx\thumbnails\maps\cs_newmap_cz1.tga
czero\gfx\thumbnails\maps_wide\ cs_newmap_cz1.tga
czero\gfx\thumbnails\maps\cs_newmap_cz2.tga
czero\gfx\thumbnails\maps_wide\ cs_newmap_cz2.tga
czero\gfx\thumbnails\maps\cs_newmap_cz2.tga
czero\gfx\thumbnails\maps_wide\ cs_newmap_cz2.tga
czero\maps\cs_newmap1_cz.bsp
czero\maps\cs_newmap1_cz.txt
czero\maps\cs_newmap1_cz_detail.txt
czero\maps\cs_newmap2_cz.bsp
czero/maps\cs_newmap2_cz.txt
czero\maps\cs_newmap2_cz_detail.txt
czero\maps\cs_newmap3_cz.bsp
czero\maps\cs_newmap3_cz.txt
czero\maps\cs_newmap3_cz_detail.txt
czero\newmap.wad
czero\sound\kaboom.wav
czero\sound\crunch.wav

Авторы

Оригинальное руководство - Valve Corporation
Публикация - Fa11enLord