| Так называемый скриптинг, также его называют биндингом (от англ. 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, с таким расширением файл не будет обрабатываться игрой, даже если в консоли его запустить вручную! Чтобы избежать подобной ситуации рекомендую включить отображение расширений файлов. Легко ли написать скрипт? Простейший скрипт имеет следующую форму: bind "_клавиша_" "_команда_". Например, если ты хочешь, чтобы при нажатии на 1 в руках твоего героя оказывалось основное оружие, скрипт будет выглядеть так: bind "1" "slot1" (команда slot1 заставляет сделать текущим основное оружие) Каждый скрипт (бинд) должен быть располагаться на отдельной строке. В качестве примера всегда можно посмотреть на config.cfg. Как писать сложные скрипты? Сложный скрипт очень похож на простой, разница лишь в количестве исполняемых команд при нажатии на клавишу. Каждая команда разделяется знаком 'точка с запятой' (;). Как примет, небольшой полезный скрипт для играющих в роли инженеров: 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 игрок приседает и находится в таком положении пока ты не нажмешь повторно эту же кнопку. ALIAS Данная команда носит общий характер и применима повсеместно. Алиас буквально создает новую команду, состоящую из нескольких других, облегчает работу при создании сложных скриптов. alias "<название_алиаса>" "<команда; команда2[; команда3 и т.д.]>" BUILD Команда применима при написании скриптов для Инженера и Шпиона: если Инженер имеет достаточное количество металла, он начинает создавать выбранную конструкцию; Шпион в свою очередь берет в руки подрывное устройство и готов устанавливать жучков на сооружения противника. build <цифра>, где цифра это: 0 - зарядка (Инженер) 1 - входной телепорт (Инженер) 2 - выходной телепорт (Инженер) 3 - стационарная пушка (Инженер) 4 - подрывное устройство (Шпион) В настоящий момент нельзя вызвать команду build повторно, необходимо переключиться в другой режим (взяв другое оружие) и потом использовать команду повторно. DESTROY Если ты построил в роли Инженера какое-либо устройство, с помощью этой команды ты можешь стать обладателем кучи металлолома. destroy <цифра>, где цифра полностью повторяет постройки Инженера, перечисленные выше. DISGUISE Команда применима только, если ты делаешь скрипт для Шпиона, превращает его в кого-либо еще. Цифра1 отвечает за маскируемый персонаж, цифра2 - маскируемая команда (синие или красные, 1 или 2 соответственно). disguise <цифра1> <цифра2>, где цифра1 может принимать следующие значения: 1 - Разведчик 2 - Снайпер 3 - Солдат 4 - Подрывник 5 - Доктор 6 - Пулеметчик 7 - Огнеметчик 8 - Шпион 9 - Инженер LASTDISGUISE С помощью этой команды Шпион маскируется под предыдущего текущей маскировке персонажа, даже после смерти запоминается последняя маскировка. Команда является аналогом нажатия клавиши b. В режиме random происходит случайная выборка из персонажей для маскировки (исключая Шпиона и Разведчика). lastdisguise [random] LASTINV Одна из самых простых команд - заставляет переключиться на последнее используемое оружие (аналог кнопки q в игре, которую наверняка все уже оценили и попробовали). lastinv MENUSELECT Команда позволяет выбрать определенный пункт меню. Необходимо отметить, что под словом меню в данном случае подразумевается только меню типа списка голосовых команд, но никак не меню выбора персонажа и т.п. menuselect <любой_существующий_пункт_меню> PLAY Проигрывает играющему мелодию (звук), сохраненный в формате wav. Вам потребуется GCF редактор для извлечения звуков из файлов формата gcf. Также ты можешь заставить проигрываться свои собственные файлы формата wav, тебе необходимо добавить эти файлы в папку: C:\Program Files\Steam\steamapps\_твое_имя_\team fortress 2\tf\sound\ Данная папка выступает корневый каталогом при указании относительного пути до файлов формата wav. SLOT Данная команда имеет более широкое применение, чем возможно тебе покажется вначале. Помимо того, что она используется для выбора оружия, также применяется и для меню голосовых команд. Например, если кнопка f привязана к slot1 и активирует voice_menu_1 (z), нажатие на f приведет к тому, что твой герой начнет звать Доктора. В части смены оружия команда работает по разному. Если у тебя включен режим быстрой смены оружия, ты моментально переключаешь по этой команде на другое оружие, иначе - происходит только подсветка нового оружия и игра ожидает утверждения. Для последнего случая, тебе придется применять скрипт: "slot1; wait 50; +attack; wait; -attack". slot<_номер_слота_>, где номер_слота цифра от 1 до 9. USE Команда use буквально предназначена для использования выбранного оружия. Без каких-либо недоразумений, переключений, просто переключаешь на необходимое тебе оружие. use <_наименование_оружия_>, где наименование_оружия можно посмотреть по таблице:Персонаж Значение наименование_оружия Тип оружия Разведчик tf_weapon_scattergun автомат tf_weapon_pistol_scout револьвер tf_weapon_bat бита Солдат tf_weapon_rocketlauncher ракетница tf_weapon_shotgun_soldier дробовик tf_weapon_shovel лопатка Огнеметчик tf_weapon_flamethrower огнемет tf_weapon_shotgun_pyro дробовик tf_weapon_fireaxe топор Подрывник tf_weapon_grenadelauncher гранатомет tf_weapon_pipebomblauncher бомбомет tf_weapon_bottle бутылка Пулеметчик tf_weapon_minigun пулемет tf_weapon_shotgun_hwg дробовик tf_weapon_fists кулаки Инженер tf_weapon_shotgun_primary дробовик tf_weapon_pistol револьвер tf_weapon_wrench разводной ключ tf_weapon_pda_engineer_destroy разрушение конструкций tf_weapon_pda_engineer_build постройка конструкций Доктор tf_weapon_syringegun_medic шприцемет tf_weapon_medigun лечебная пушка tf_weapon_bonesaw пила Снайпер tf_weapon_sniperrifle снайперская винтовка tf_weapon_smg пистолет-пулемет tf_weapon_club мачете Шпион tf_weapon_revolver револьвер tf_weapon_knife нож tf_weapon_spy_pda жучки VOICEMENU Данная команда позволяет подавать голосовые сообщения напрямую (аналогично работе с кнопками z,x,c). По сути она позволяет Вам привязать голосовую команду к любой кнопке, в отличие от стандартной привязки (несколько нажатий на клавиши). voicemenu <_номер_меню_> <_номер_фразы_>, значения можно посмотреть в таблице:номер_меню номер_фразы фраза 0 0 Medic 0 1 Thanks 0 2 Go 0 3 Move Up 0 4 Frank Left 0 5 Frank Right 0 6 Yes 0 7 No 1 0 Incoming 1 1 Cloaked Spy 1 2 Sentry Ahead 1 3 Teleporter Here 1 4 Dispenser Here 1 5 Sentry Here 1 6 Activate Udercharge 1 7 Ubercharge Ready (Медик) 2 0 Help 2 1 Battlecry 2 2 Cheers 2 3 Jeers 2 4 Positive 2 5 Negative 2 6 Nice Shot 2 7 Good Job WAIT Команда очень полезна при исполнении нескольких команд в одну строку. По сути, она приостанавливает выполнение текущих команд на X кадров, указанные в качестве необязательного параметра (по умолчанию значение равно 1). Значение подбираются методом проб и ошибок, 100 примерно равно 1 секунде. В качестве примера команда для модернизации постройки Инженера: "use tf_weapon_wrench; wait; +duck; wait; +attack; wait 500; -attack; wait; -duck; lastinv" Здесь происходит переключение на разводной ключ, начинает им размахивать в течение 5 секунд, останавливается, переключается на последнее используемое оружие. Без использования команды wait зрелище будет комичным. Необходимо учесть, что данная команда никак не исключает повторный нажатие на клавиши, выступает только как таймер при выполнении скриптов. wait [_задержка_], где задержка любое значение от 1 и больше. Все управляющие клавиши клавиатуры, кнопки мыши и прокрутка средней кнопки мыши имеют определенные обозначения в скриптах. Предлагаю твоему вниманию полный список: tab enter escape space backspace uparrow downarrow leftarrow rightarrow alt ctrl shift ins del pgdn pgup home end kp_home kp_uparrow kp_pgup kp_leftarrow kp_5 kp_rightarrow kp_end kp_downarrow kp_pgdn kp_enter kp_ins kp_del kp_slash kp_minus kp_plus kp_multiply capslock joy1-4 aux1-31 mwheeldown mwheelup mouse1-5 pause Надеюсь у тебя не останется вопросов относительно соответствия написанного и расположению клавиш на клавиатуре. Отдельно остановлюсь только на клавишах мыши: mouse1 - левая кнопка мыши, mouse2 - правая, mouse3 - средняя (если есть); mwheeldown - прокрутка вниз, соответственно mwheelup - вверх.
Источник: http://www.team-fortress.ru
| | Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем. | |