[RUS] The Counter-Strike: Condition Zero Custom Mission System

Структура кампании

Overview.vdf
Thumbnail.tgaEasy.vdfNormal.vdfHard.vdfExpert.vdfBotProfile.db

Пакеты миссий (далее — Кампании) находяться в папке czero\MissionPacks. Каждая кампания должна иметь свою папку с уникальным именем.

Ниже приведен пример структуры файлов:

czero\MissionPacks\MyMission\

czero\MissionPacks\MyMission\

czero\MissionPacks\MyMission\

czero\MissionPacks\MyMission\

czero\MissionPacks\MyMission\

czero\MissionPacks\MyMission\

czero\MissionPacks\MyMission\

Данный файл содержит такую информацию, как описание кампании, в какой команде будет игрок, файл с информацией о ботах и т.д.

Overview.tga - 24-битное изображение, которое отображается как часть заставки кампании. Оно не должно быть больше 256x256 и масштабируется в области 320x68 при разрешении экрана 640x480.

, , , Эти файлы определяют правила игры, прогресс карт, союзников и врагов и задания карт. Если эти файлы отсутствуют, то будут использоваться CareerGame, areerGame, CareerGame и CareerGame соответственно.

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

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);

BGColor2: не используется; зарезервирован для будущего использования;

TextColor: цвет некоторых надписей (значения в формате RGB);

BotProfile: имя файла, содержащего профили ботов для использования с этой кампанией.

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

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

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

InitialPoints: кол-во очков репутации, с которыми игрок начнёт игру.

MatchWins: минимальное кол-во раундов, которое команда должна выиграть для победы.

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”

Если установлено значение "0", то урон от и по союзникам не будет наноситься. Если “FriendlyFire” установлено в “1”, то союзники могут нанести урон друг другу..

“commands”

Указанные команды посылаются в консоль, когда карта загрузится. Это может использоваться, чтобы изменить системные параметры так же, как если бы пользователь ввёл команду в консоль. Однако, определённые команды (например, mp_startmoney), не функционируют, поскольку они обновляются системой после того, как эти команды были посланы.

Задачи

Основные задачиЗадачи сценария "Разминирование бомбы"Задачи сценария "Спасение заложников"Задачи сценария "Спасение VIP"Названия оружия и классов оружия

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

Дополнительный параметр "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> раундов. Ни один заложник не может умереть, но может быть спасён. 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 = граната

Превью изображения карт

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

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

Первое изображение должно быть изображением в формате .tga размерами 128х128 пикселей, с именем, идентичным названию карты. Поместите это изображение в папку: czero\gfx\thumbnails\maps

Изображение предварительного просмотра должно быть тоже в формате .tga размерами 256х110 пикселей (имя идентично названию карты) Поместите это изображение в папку: 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 EndTemplate <template name>

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

template name[+template name …] bot name

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

Атрибуты

Name

Возможные значения: Строка. Если она содержит пробелы, то окружите её ковычками (см: “Cliffe”)

Описание: Определяет имя бота

Skill

Возможные значения: от 0 до 100

Описание: Определяет мастерство бота. Чем выше значение этого атрибута, тем сложнее его убить.

Aggression

Возможные значения: от 0 до 100

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

ReactionTime

Возможные значения: от 0.2 до 0.5 секунд

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

AttackDelay

Возможные значения: Время в секундах, когда бот открет огонь по жертве

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

Teamwork

Возможные значения: от 0 до 100

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

WeaponPreference

Возможные значения: "none" или название оружия, например “m4a1”.

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

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”, и значение атрибута "Material" было установлено непосредственно в “MyBigRedSquare”. Любое число основных типов может быть "добавлено" таким образом.

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

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

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"), и в результате все боты сложного уровня сложности будут изменены.

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

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

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

Например, 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

Публикация и перевод — GGwpAiushtha

Source: https://steamcommunity.com/sharedfiles/filedetails/?id=270126335					

More Counter-Strike: Condition Zero guilds