Основи скриптинга в team fortress 2

Основи скриптинга в team fortress 2

Так званий скриптинг. також його називають Біндінг (від англ. bind - пов'язувати), має багату передісторію. Ті хто грав в інші ігри від Valve (і не тільки), швидше за все, вже зустрічалися з цим і можливо навіть застосовували, самі того не осозновая. У цьому матеріалі ми постараємося поповнити, узагальнити і структурувати наявні знання щодо скриптинга в грі Team Fortress 2.

Що за звірята такі, скрипти?
Скрипти в TF2 мають безліч синонімів, включаючи і бінди (binds, keybinds, bindings). Скрипт, сам по собі, дозволяє легко прив'язати до певної клавіші зазначений набір команд в консолі.

Чи легко написати скрипт?
Найпростіший скрипт має таку форму: 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 назад АЛІАС duck1bind "c" "duckToggle"
За підсумками: при натисканні на кнопку c гравець присідає і знаходиться в такому положенні поки ти не натиснеш повторно цю ж кнопку.