Так называемый скриптинг, также его называют биндингом (от англ. bind - связывать), имеет богатую предысторию. Те кто играл в другие игры от Valve (и не только), скорее всего, уже встречались с этим и возможно даже применяли, сами того не осозновая. В данном материале мы постараемся пополнить, обобщить и структурировать имеющиеся знания относительно скриптинга в игре Team Fortress 2. Что за зверьки такие, скрипты? Скрипты в TF2 имеют множество синонимов, включая и бинды (binds, keybinds, bindings). Скрипт, сам по себе, позволяет легко привязать к определенной клавише указанный набор команд в консоле. Где располагаются скрипты? Скрипты сохраняются игрой в файле, расположенному по адресу: _папка_где_расположился_steam_\SteamApps\_имя_пользователя_\team fortress 2\tf\cfg\config.cfg Команды сохраненные в этом файле будут применяться при каждой загрузке игры. Несмотря на то, что пользователь вправе вносить редакторские правки в данный файл, для порядка рекомендуем все-таки хранить собственные скрипты в отдельном файле. Как вариант, можно хранить такие настройки в следующем файле: _папка_где_расположился_steam_\SteamApps\_имя_пользователя_\team fortress 2\tf\cfg\autoexec.cfg Изначально данный файл отсутствует, но ты можешь его создать в любом текстовом редакторе. Также как и файл config.cfg, autoexec.cfg автоматически будет прочтен игрой во время ее загрузки. При создании и сохранении такого autoexec.cfg обрати внимание на расширение получившегося файла, текстовые редакторы по умолчанию добавляют к вновь создаваемому расширение .txt. В итоге выходит что-то вроде autoexec.cfg.txt, с таким расширением файл не будет обрабатываться игрой, даже если в консоли его запустить вручную! Чтобы избежать подобной ситуации рекомендую включить отображение расширений файлов (см. иллюстрированную инструкцию для различных версий Windows). Легко ли написать скрипт? Простейший скрипт имеет следующую форму: bind "_клавиша_" "_команда_". Например, если ты хочешь, чтобы при нажатии на 1 в руках твоего героя оказывалось основное оружие, скрипт будет выглядеть так: bind "1" "slot1" (команда slot1 заставляет сделать текущим основное оружие) Каждый скрипт (бинд) должен быть располагаться на отдельной строке. В качестве примера всегда можно посмотреть на config.cfg, полезные команды можно посмотреть в материале Консольные команды Team Fortress 2 на нашем сайте. Как писать сложные скрипты? Сложный скрипт очень похож на простой, разница лишь в количестве исполняемых команд при нажатии на клавишу. Каждая команда разделяется знаком 'точка с запятой' (;). Как примет, небольшой полезный скрипт для играющих в роли инженеров: bind "q" "build 0; wait 50; +attack; wait; -attack; slot1" Вышеприведенный скрипт 'привязывает' к кнопке 'q' цепочку команд. После нажатия на эту клавишу, будут выполнены следующие команды по порядку: build 0 переводит игру в режим постройки подзарядки; wait 50 ожидает 50 кадров перед тем, как приступить к следующей команде; +attack начинает основного удара (по умолчанию левая кнопка мыши); wait ожидает пока не будет исполнена следующая команда; -attack закончивает основной удар; slot1 активирует основное оружие (для Инженера это дробовик). Что означают '+' и '-' в скриптах? Плюс и минус - это два различных состояния, которые могут принимать команды. Плюс заставляет исполняться команду (и продолжать исполняться), если клавиша нажата. Если имеется минус, команда выполниться, если клавиша отпустилась. Например: bind "c" "+duck" Данный скрипт означает, что игрок припадет к земле и будет находиться в таком положении пока нажата кнопка 'c'. После отжатия кнопки, игрок поднимется. Необходимо запомнить, несмотря на то что в скриптах ты не встретишь команды -duck, игрок в любом случае займет изначальную позицию после того, как отпустят кнопку. Что за алиасы (aliases) и как их писать? Алиасы подобны скриптам за исключением того, что скриптом можно присвоить кнопке набор команд, а алиас позволяет назначить имя набору команд. Это имя позже может использоваться как замена нескольким командам. Слегка модернизируем вышеприведенный пример для Инженера: alias "buildDispenser" "build 0; wait 50; +attack; wait; -attack; slot1" bind "q" "buildDispenser" В данном примере мы сделали алиас под названием buildDispenser на несколько команд, показав возможности скриптинга TF2 (название алиасы ты вполне мог и сам придумать). Когда дальше происходит обращение к алиасу, автоматически исполняются назначенные ему команды. Далее мы привязали кнопку q к алиасу. Теперь при нажатии на кнопку q будут выполнены команды алиаса buildDispenser. Почему алиасы предпочтительнее обычной привязки? Мы обсудим это подробнее позже, но для начала, можешь представить себе ситуацию, когда тебе потребуется привязать один набор команд к нескольким клавишам. Вместо того, чтобы каждый раз привязавать команды к разным клавишам, ты можешь сделать алиас на несколько команд и затем уже привязать клавиши к этому алиасу. Если вдруг потребуется изменить набор команд, понадобится всего лишь внести правку в одном месте. Как влияют "плюсы" и "минусы" на алиасы? Они имеют схожее влияние и для алиасов. В плюсовом состоянии происходит выполнение (и продолжение выполнения) пока нажимается (нажата) клавиша, в минусовом - выполняется в момент отжатия кнопки. Опять же, в качестве примера модернизируем скрипт для Инженера: alias "+upgradeBuilding" "slot3; +attack" alias "-upgradeBuilding" "-attack; wait; slot1" bind "mouse3" "+upgradeBuilding" +upgradeBuilding переключается на разводной ключ и машет им -upgradeBuilding прекращает махать ключом, чуток ждет, переключается на дробовик делается привязки средней кнопки мыши к плюсовому состоянию upgradeBuilding, пока кнопка нажата Инженер махает ключом, как только кнопка отпущена - выполняет минусовой скрипт. Запомни, даже если минусовой скрипт не привязан к чему либо, в любом случае скрипт будет выполнен при отжатии кнопки. Этот процесс автоматический для минусовых/плюсовых алиасов. Как создают циклические (составные) алиасы? Составные алиасы - это алиасы, которые включают в себя другие алиасы и даже, при желании, способны создавать новые. Данный процесс тяжело объяснять, вернемся к примерам: alias "duckToggle" "duck1" alias "duck1" "+duck; alias duckToggle duck2" alias "duck2" "-duck; alias duckToggle duck1" создаем алиас под названием duckToggle и привязываем его к другому под названием duck1 описываем алиас duck1, который начинает исполнять команду duck, затем он переназначает алиас duckToggle алиасу duck2 описываем алиас duck2, который прекращает выполнение команды duck и переназначает алиас duckToggle обратно алиасу duck1 bind "c" "duckToggle" По итогам: при нажатии на кнопку c игрок приседает и находится в таком положении пока ты не нажмешь повторно эту же кнопку.
|