Counter-Strike: Condition Zero

Counter-Strike: Condition Zero

104 ratings
[RUS] The Counter-Strike: Condition Zero Custom Mission System
By bastaynav
Система пользовательских кампаний позволяет пользователям создавать собственные миссии для использования в Counter-Strike: Condition Zero. Эти кампании могут включать новые карты, задания, профили ботов и их скины и т.д.
   
Award
Favorite
Favorited
Unfavorite
Структура кампании
Пакеты миссий (далее — Кампании) находяться в папке czero\MissionPacks. Каждая кампания должна иметь свою папку с уникальным именем.

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

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

Easy.vdf, Normal.vdf, Hard.vdf, Expert.vdf
Эти файлы определяют правила игры, прогресс карт, союзников и врагов и задания карт. Если эти файлы отсутствуют, то будут использоваться CareerGameEasy.vdf, areerGameNormal.vdf, CareerGameHard.vdf и CareerGameExpert.vdf соответственно.

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);
  • 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), не функционируют, поскольку они обновляются системой после того, как эти команды были посланы.
Задачи
Для каждой задачи упомянутой ниже, требуемые параметры заключены в < >, а дополнительные параметры заключены в []. Многократные дополнительные параметры отделены |.
Дополнительный параметр "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 = граната
Превью изображения карт
Каждая карта требует 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 End
Template <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