Difference between revisions of "Scripting/ru"

From Team Fortress Wiki
Jump to: navigation, search
Line 1: Line 1:
{{DISPLAYTITLE:Написание Скриптов}}
+
{{DISPLAYTITLE:Написание скриптов}}
Внимание! Слово ''скрипт'' использованное на этой странице не стоит путать с .scr файлами, которые изменяют настройки сервера.
+
Понятие «'''скрипт'''», использованное на этой странице не стоит путать с .scr файлами, которые изменяют настройки сервера.
  
Чтобы поделиться своими скриптами или ознакомиться со скриптами других игроков, посетите страницу [[Community_Scripts/ru|Скрипты игроков]].
+
== Кратко о скриптах ==
 +
=== Что такое бинд? ===
 +
Скрипты в ТФ2 также известны под названиями '''бинды''' (binds), '''кей-бинды''' (keybinds).
 +
Бинд — это способ прикрепления (или «привязывания» от ''англ.'' bind) игровой команды к конкретной клавише.
  
Ответы на общие вопросы, касающиеся скриптинга, можно найти здесь [[Scripting Faq]].
+
===Бинды это читы?===
 
+
Согласно широко распространённому мнению нет. Эту проблему стоит рассматривать так: бинды позволяют игроку совершать простейшие игровые действия чуточку быстрее. К тому же все без исключения имеют к ним равный доступ, так что фактически бинды не дают использующему никакого превосходства. Кроме того, сами разработчики осознано допустили существование подобной возможности, как составной части игры (в отличие от читерства, которое наносит ущерб), так что использование биндов вполне честный шаг.
Чтобы узнать, как использовать скрипты в игре, посетите [http://www.fpsbanana.com/tuts/4646 эту страницу] и/или [http://www.fpsbanana.com/tuts/2290 эту]; кроме того простейшие бинды можно найти[http://clancya.org/2007/10/13/list-of-tf2source-engine-keyboard-keys-that-can-be-binded тут] и/или [http://developer.valvesoftware.com/wiki/Bind тут].
 
 
 
==Кратко о Скриптах==
 
===Что такое бинд?===
 
Скрипты в ТФ2 также известны под названиями ''бинды'' ("binds"), ''кей-бинды'' ("keybinds") и ''биндить'' ("bindings").
 
Бинд – это способ прикрепления (или "привязывания" от англ. ''bind'') игровой команды к конкретной клавише.
 
 
 
===Бинды это Читы?===
 
Согласно широко распространённому мнению нет. Эту проблему стоит рассматривать так: бинды позволяют игроку совершать простейшие игровые действия чуточку быстрее. К тому же все без исключения имеют к ним равный доступ, так что фактически бинды не дают использующему никакого превосходства. Кроме того, сами разработчики осознано допустили существование подобной возможности, как составной части геймплэя (в отличие от читерства, которое наносит ущерб мультиплеерным играм), так что использование биндов вполне честный шаг.
 
  
 
===Где лежат бинды?===
 
===Где лежат бинды?===
 
Все игровые бинды, существующие изначально, находятся в файле, расположенном в следующей директории:
 
Все игровые бинды, существующие изначально, находятся в файле, расположенном в следующей директории:
<pre><Steam Folder>\SteamApps\<account_name>\team fortress 2\tf\cfg\config.cfg</pre>
+
<pre>%Steam Folder%\SteamApps\%account_name%\team fortress 2\tf\cfg\config.cfg</pre>
 
Эти команды автоматически выполняются при каждом запуске игры. И хотя пользователь может с лёгкостью дополнить информацию, содержащуюся в этом файле, использовав любой текстовый редактор, гораздо логичнее сохранять свои бинды в отдельном файле. Его адрес:
 
Эти команды автоматически выполняются при каждом запуске игры. И хотя пользователь может с лёгкостью дополнить информацию, содержащуюся в этом файле, использовав любой текстовый редактор, гораздо логичнее сохранять свои бинды в отдельном файле. Его адрес:
<pre><Steam Folder>\SteamApps\<account_name>\team fortress 2\tf\cfg\autoexec.cfg</pre>
+
<pre>%Steam Folder%\SteamApps\%account_name%\team fortress 2\tf\cfg\autoexec.cfg</pre>
Хотя изначально этот файл не существует, вы можете сами создать его; ведь, по сути, это простой текстовый файл с именем "autoexec.cfg", и как  в случае с "config.cfg" все команды, записанные в нём, будут исполнены игрой при запуске.
+
Хотя изначально этот файл не существует, вы можете сами создать его; ведь, по сути, это простой текстовый файл с именем ''autoexec.cfg'', и как  в случае с ''config.cfg'' все команды, записанные в нём, будут исполнены игрой при запуске.
  
Внимание! Когда вы создадите текстовый файл с биндами в любом удобном для вас редакторе, не забудьте убедиться, что он имеет расширение ".cfg", т.к. некоторые текстовые редакторы (например, блокнот) автоматически присваивают файлам, созданным в них, расширение ".txt", что в итоге даст имя - "autoexec.cfg.txt". Файл же с таким именем программа исполнять не будет.
+
Внимание! Когда вы создадите текстовый файл с биндами в любом удобном для вас редакторе, не забудьте убедиться, что он имеет расширение ''.cfg'', т.к. некоторые текстовые редакторы (например, Блокнот) автоматически присваивают файлам, созданным в них, расширение ''.txt'', что в итоге даст имя ''autoexec.cfg.txt''. Файл же с таким именем программа исполнять не будет.
  
 
===Использование скриптов===
 
===Использование скриптов===
Скрипт, занесённый в autoexec.cfg, будет автоматически применён к любому игровому классу. Поэтому, если вы хотите создать специфический скрипт для конкретного класса, вам стоит дополнительно использовать файл <class>.cfg, где <class> - это название игрового класса, для которого применяется данный скрипт.
+
Скрипт, занесённый в ''autoexec.cfg'', будет автоматически применён к любому игровому классу. Поэтому, если вы хотите создать специфический скрипт для конкретного класса, вам стоит дополнительно использовать файл ''%class%.cfg'', где %class% — это название игрового класса, для которого применяется данный скрипт.
Однако занесение скрипта в <class>.cfg автоматически применит этот скрипт ко всем остальным классам. Например, если вы забиндите ПКМ ("mouse2") на "перезарядку" в файле инженера - "engineer.cfg", но в последствие решите привязать к этой кнопке другое действие для других классов, вам придется перебиндить ПКМ ("mouse2") на это "другое действие" во всех остальных файлах типа <class>.cfg.
+
Однако занесение скрипта в ''%class%.cfg'' автоматически применит этот скрипт ко всем остальным классам. Например, если вы привяжете ПКМ (Mouse2) на перезарядку в файле Инженера — ''engineer.cfg'', но позже решите привязать к этой кнопке другое действие для других классов, вам придется переназначить ПКМ (Мouse2) на другое действие во всех остальных файлах типа ''%class%.cfg''.
  
===Синтаксис (правила написания биндов)===
+
===Правила привязки клавиш===
 
Для любых отдельных биндов или их связок (групп биндов) на движке Соурс существуют строгие правила написания: КОМАНДА <аргумент1> <аргумент2>  
 
Для любых отдельных биндов или их связок (групп биндов) на движке Соурс существуют строгие правила написания: КОМАНДА <аргумент1> <аргумент2>  
  
Можно НЕ использовать кавычки в биндах и связках с единственным аргументом, например '''bind 1 slot1'''.
+
Можно НЕ использовать кавычки в биндах и связках с единственным аргументом, например ''bind 1 slot1''.
Но если вы хотите создать бинд, аргументы которого включают несколько команд или параметров, вам следует заключить каждый аргумент в кавычки, отделив их  индивидуальные компоненты точкой с запятой. Так, бинд '''alias melee1 "slot3; +attack"''' создаст "команду" - "melee1", автоматически активирующую оружие ближнего боя с последующей атакой.
+
Но если вы хотите создать бинд, аргументы которого включают несколько команд или параметров, вам следует заключить каждый аргумент в кавычки, отделив их  индивидуальные компоненты точкой с запятой. Так, бинд ''alias melee1 "slot3; +attack"'' создаст команду «melee1», автоматически активирующую оружие ближнего боя с последующей атакой.
  
 
Пример:
 
Пример:
Line 43: Line 37:
 
Примечание: здесь для наглядности аргументы отделены друг от друга пробелами, но при написании скриптов более одного пробела за раз использовать НЕЛЬЗЯ.
 
Примечание: здесь для наглядности аргументы отделены друг от друга пробелами, но при написании скриптов более одного пробела за раз использовать НЕЛЬЗЯ.
  
===Как написать простейший бинд?===
+
===Как написать простейшую привязку?===
Самый простой бинд имеет форму ''bind <key> <command>''. Например, если вы хотите активировать первичное оружие нажатием  клавиши '''1''', вы должны прописать бинд, выглядящий так:
+
Самый простой бинд имеет форму ''bind <key> <command>''. Например, если вы хотите активировать первичное оружие нажатием  клавиши «1», вы должны прописать бинд, выглядящий так:
 
<pre>bind 1 slot1</pre>
 
<pre>bind 1 slot1</pre>
:(где "slot1" – это команда, активирующая ваше первичное оружие)
+
:(где ''slot1'' — это команда, активирующая ваше основное оружие)
Каждый новый бинд в файле autoexec.cfg нужно писать с новой строки. Чтобы получить представление о том, как всё это должно выглядеть в итоге, загляните в ваш config.cfg, открыв его любым текстовым редактором. Чтобы ознакомиться с используемыми при биндинге командами, изучите раздел "Консольные Команды" на этой странице.
+
Каждый новый бинд в файле ''autoexec.cfg'' нужно писать с новой строки. Чтобы получить представление о том, как всё это должно выглядеть в итоге, загляните в ваш ''config.cfg'', открыв его любым текстовым редактором. Чтобы ознакомиться с используемыми при биндинге командами, изучите раздел «Консольные команды» на этой странице.
  
===Как написать сложный бинд?===
+
===Как написать сложную привязку?===
Сложные бинды имеет форму схожую с простыми биндами, однако они исполняют ряд команд, в то время как вы нажимаете всё ту же единственную клавишу. Каждая команда должна быть обязательно отделена точкой с запятой (''';'''). Так, например, рассмотрим сложный бинд для инженера:
+
Сложные бинды имеет форму схожую с простыми биндами, однако они исполняют ряд команд, в то время как вы нажимаете всё ту же единственную клавишу. Каждая команда должна быть обязательно отделена точкой с запятой (''';'''). Рассмотрим сложный бинд для инженера:
 
<pre>bind "q" "build 0; wait 50; +attack; wait; -attack; slot1"</pre>
 
<pre>bind "q" "build 0; wait 50; +attack; wait; -attack; slot1"</pre>
:Этот бинд привязывает серию команд к клавише '''q'''.  Когда игрок нажимает '''q''', последовательно выполняется серия команд:
+
:Этот бинд привязывает серию команд к клавише «q».  Когда игрок нажимает «q», последовательно выполняется серия команд:
 
:*'''build 0''' активирует опцию строительства Раздатчика
 
:*'''build 0''' активирует опцию строительства Раздатчика
 
:*'''wait 50''' задает время ожидания (равное 50 фреймам) до начала выполнения следующей команды
 
:*'''wait 50''' задает время ожидания (равное 50 фреймам) до начала выполнения следующей команды
Line 58: Line 52:
 
:*'''wait''' задает единичное время ожидания до начала выполнения следующей команды
 
:*'''wait''' задает единичное время ожидания до начала выполнения следующей команды
 
:*'''-attack''' прекращает первичную атаку
 
:*'''-attack''' прекращает первичную атаку
:*'''slot1''' активирует первичное оружие (в случае с инженером – это дробовик)
+
:*'''slot1''' активирует первичное оружие (в случае с Инженером — это Дробовик)
  
===Как работают команды с символами плюс(+) и минус(-)?===
+
===Как работают команды с символами плюс (+) и минус (-)?===
Команды с символами плюс и минус это длящиеся команды. Символ плюс задаёт начало и продолжение исполнения команды пока нажата клавиша. Минус прекращает исполнение когда игрок отпускает клавишу. Например:
+
Команды с символами плюс и минус это длящиеся команды. Символ плюс задаёт начало и продолжение исполнения команды пока нажата клавиша. Минус прекращает исполнение, когда игрок отпускает клавишу. Например:
 
<pre>bind "c" "+duck"</pre>
 
<pre>bind "c" "+duck"</pre>
:Этот бинд заставляет игрока присесть и оставаться в этом положении в то время, когда зажата клавиша '''c'''.  После того как клавиша '''c''' будет отпущена, игрок вновь встанет.
+
:Этот бинд заставляет игрока присесть и оставаться в этом положении в то время, когда зажата клавиша «c».  После того как она будет отпущена, игрок вновь встанет.
Важно отметить при этом, что в использовании команды типа '''-duck''' нет смысла, так как эта команда исполняется по дефолту - без нажатия какой-либо клавиши.
+
Важно отметить при этом, что в использовании команды типа '''-duck''' нет смысла, так как эта команда исполняется по умолчанию, без нажатия какой-либо клавиши.
  
 
===Что такое связки биндов и как их писать?===
 
===Что такое связки биндов и как их писать?===
Связки биндов почти во всём сходны с обычными биндами за исключением того, что привязка команды (серии команд) осуществляется ни к клавише, а к определённому "имени". Такое "имя" в последствие может быть использовано при написании других биндов. Рассмотрим такой пример связки биндов для инженера:
+
Связки биндов почти во всём сходны с обычными биндами за исключением того, что привязка команды (серии команд) осуществляется ни к клавише, а к определённому «имени». Такое «имя» впоследствии может быть использовано при написании других биндов. Рассмотрим такой пример связки биндов для Инженера:
 
<pre>
 
<pre>
 
alias "buildDispenser" "build 0; wait 50; +attack; wait; -attack; slot1"
 
alias "buildDispenser" "build 0; wait 50; +attack; wait; -attack; slot1"
 
bind "q" "buildDispenser"
 
bind "q" "buildDispenser"
 
</pre>
 
</pre>
:Эта связка в сочетании с уже использованным нами ранее примером может продемонстрировать всю функциональность биндинга в ТФ2.  Итак, мы создали связку именуемую '''"buildDispenser"''' (название связки при этом может быть любым, например, "Vanya" или "Vrotmnenogi" и т.д.).  Теперь, когда бы мы ни использовали имя этой связки, игра выполнит все команды привязанные к нему. После мы привязали это "имя" к клавише '''q'''. Следовательно, после нажатия '''q''' отныне будет исполняться эта связка.
+
:Эта связка в сочетании с уже использованным нами ранее примером может продемонстрировать всю функциональность биндинга в ТФ2.  Итак, мы создали связку именуемую «'''buildDispenser'''» (название связки при этом может быть любым, например, «Vanya» или «Vrotmnenogi» и т.д.).  Теперь, когда бы мы ни использовали имя этой связки, игра выполнит все команды привязанные к нему. После мы привязали это «имя» к клавише «q». Следовательно, после нажатия «q» отныне будет исполняться эта связка.
Почему связки более удобны, нежели отдельные бинды? Подробнее на этом мы остановимся позже, однако пока представьте, что вам нужно привязать одну и ту же серию команд к разным клавишам. Теперь вместо того, чтобы печатать серии этих команды каждый раз заново, вы просто прописываете имя созданной вами связки. Кроме того, после, если вы вдруг захотите что-нибудь изменить в вашей серии, вам будет нужно переписать всего лишь одну эту связку.
+
Почему связки более удобны, нежели отдельные бинды? Подробнее на этом мы остановимся позже, однако пока представьте, что вам нужно привязать одну и ту же серию команд к разным клавишам. Теперь вместо того, чтобы печатать серии этих команды каждый раз заново, вы просто прописываете имя созданной вами связки. Кроме того, после, если вы вдруг захотите что-нибудь изменить в вашей серии, вам будет нужно переписать всего лишь одну эту связку.
  
===Как работают связки с символами плюс(+) и минус(-)?===
+
===Как работают связки с символами плюс (+) и минус (-)?===
Точно так же, как плюс-минус команды, плюс-минус связки это длящиеся связки. Плюс начинает и продолжает действие, пока зажата клавиша. А минус прекращает его, когда клавиша отпущена. Рассмотрим ещё один пример с инженером:
+
Точно так же, как плюс-минус команды, плюс-минус связки это длящиеся связки. Плюс начинает и продолжает действие, пока зажата клавиша. А минус прекращает его, когда клавиша отпущена. Рассмотрим ещё один пример с Инженером:
 
<pre>
 
<pre>
 
alias "+upgradeBuilding" "slot3; +attack"
 
alias "+upgradeBuilding" "slot3; +attack"
Line 82: Line 76:
 
bind "mouse3" "+upgradeBuilding"
 
bind "mouse3" "+upgradeBuilding"
 
</pre>
 
</pre>
:*'''+upgradeBuilding''' активирует выбор гаечного ключа и удары им
+
:*'''+upgradeBuilding''' активирует выбор Гаечного ключа и удары им
 
:*'''-upgradeBuilding''' прекращает удары, выдерживает паузу и изменяет текущее оружие на дробовик
 
:*'''-upgradeBuilding''' прекращает удары, выдерживает паузу и изменяет текущее оружие на дробовик
:* Привязываем эту плюс-связку ('''+upgradeBuilding''') к средней кнопке мышки.  Теперь, когда эта кнопка зажата, мы размахиваем ключом.  После того, как мы отпускаем кнопку, автоматически исполняется минус-связка.
+
:* Привязываем эту плюс-связку ('''+upgradeBuilding''') к средней кнопке мышки.  Теперь, когда эта кнопка зажата, мы размахиваем Ключом.  После того, как мы отпускаем кнопку, автоматически исполняется минус-связка.
 
Отметим также, что даже если вы не собираетесь привязывать минус-связку к какой-либо клавише, она будет автоматически исполняться, точно так же, как она выполнялась по дефолту, пока клавиша, активирующая плюс-связку не была нажата. Это неотъемлемая функция всех плюс-минус связок.
 
Отметим также, что даже если вы не собираетесь привязывать минус-связку к какой-либо клавише, она будет автоматически исполняться, точно так же, как она выполнялась по дефолту, пока клавиша, активирующая плюс-связку не была нажата. Это неотъемлемая функция всех плюс-минус связок.
  
 
===Как писать циклические и сложные связки?===
 
===Как писать циклические и сложные связки?===
Циклические или сложные связки это связки, которые ссылаются на другие уже существующие связки или создают их. Достаточно сложно объяснить всё это на словах, поэтому обратимся к примеру:
+
Циклические или сложные связки это связки, которые ссылаются на другие уже существующие связки или создают их. Достаточно сложно объяснить всё это на словах, поэтому обратимся к примеру:
 
<pre>
 
<pre>
 
alias "duckToggle" "duck1"
 
alias "duckToggle" "duck1"
Line 96: Line 90:
 
:*Во-первых, мы создали связку, именуемую '''duckToggle''', и привязали к ней другую связку с именем '''duck1'''.
 
:*Во-первых, мы создали связку, именуемую '''duckToggle''', и привязали к ней другую связку с именем '''duck1'''.
 
:*Во-вторых, мы создали эту связку '''duck1''', теперь она активирует и продолжает действие команды ''присесть'' ('''duck''').  Затем мы привязали связку '''duckToggle''' к новой третьей связке '''duck2'''.
 
:*Во-вторых, мы создали эту связку '''duck1''', теперь она активирует и продолжает действие команды ''присесть'' ('''duck''').  Затем мы привязали связку '''duckToggle''' к новой третьей связке '''duck2'''.
:*В-третьих, мы создали эту связку '''duck2''', которая прекращает действие команды ''присесть'' ('''duck'''), т.е. игрок вновь встаёт после её исполнения. В итоге мы соединили связки '''duckToggle''' и '''duck1''' в одной.
+
:*В-третьих, мы создали эту связку '''duck2''', которая прекращает действие команды ''присесть'' ('''duck'''), т.е. игрок вновь встаёт после её исполнения. В итоге мы соединили связки '''duckToggle''' и '''duck1''' в одной.
Теперь, после первого использования связки '''duckToggle''', будет произведено обращение к связке '''duck1'''. Но после следующего использования этой связки (т.е. '''duckToggle'''), будет активирована связка '''duck2'''. В конце нам остаётся только привязать связку '''duckToggle''' к конкретной клавише, например, к '''c''':
+
Теперь, после первого использования связки '''duckToggle''', будет произведено обращение к связке '''duck1'''. Но после следующего использования этой связки (т.е. '''duckToggle'''), будет активирована связка '''duck2'''. В конце нам остаётся только привязать связку '''duckToggle''' к конкретной клавише, например, к «c»:
 
<pre>bind "c" "duckToggle"</pre>
 
<pre>bind "c" "duckToggle"</pre>
После этого при нажатии клавиши '''c''' игрок будет ползти (перемещаться в приседе), а когда мы снова нажмём '''c''', он встанет в полный рост.
+
После этого при нажатии клавиши «c» игрок будет ползти (перемещаться в приседе), а когда мы снова нажмём «c», он встанет в полный рост.
  
===Комбинации Клавиш===
+
===Комбинации клавиш===
Выше мы везде использовали слово "клавиша" только потому, что нет более подходящего слова. На самом же деле, к одной единственной клавише в игре могут быть привязаны другие клавиши, к которым в свою очередь будут привязаны команды или группы команд. Например:  
+
Выше мы везде использовали слово «клавиша» только потому, что нет более подходящего слова. На самом же деле, к одной единственной клавише в игре могут быть привязаны другие клавиши, к которым в свою очередь будут привязаны команды или группы команд. Например:  
 
<pre>
 
<pre>
 
// Quick Class Joiner Script. It has been tested and works.
 
// Quick Class Joiner Script. It has been tested and works.
Line 127: Line 121:
 
<pre>
 
<pre>
 
//Скрипт быстрой смены игрового класса. Протестирован и работает.
 
//Скрипт быстрой смены игрового класса. Протестирован и работает.
//Нажмите "шифт" ("shift") и клавишу от 1 до 9, чтобы выбрать соответствующий класс.
+
//Нажмите «шифт» («shift») и клавишу от 1 до 9, чтобы выбрать соответствующий класс.
 
</pre>
 
</pre>
  
==Ещё немного о скриптинге==
+
==Ещё немного о создании скриптов==
 
===Почему не стоит использовать уже связанную клавишу внутри связки, которую она активирует?===
 
===Почему не стоит использовать уже связанную клавишу внутри связки, которую она активирует?===
 
Для этого существует несколько причин.
 
Для этого существует несколько причин.
 
# В последствие очень сложно обнаружить и правильно изменить такой бинд.
 
# В последствие очень сложно обнаружить и правильно изменить такой бинд.
 
# Если вы используете сложный или циклический бинд и вдруг решили изменить привязанную клавишу, то, пропустив её при исправлении всего один раз, вы полностью испортите всю связку.
 
# Если вы используете сложный или циклический бинд и вдруг решили изменить привязанную клавишу, то, пропустив её при исправлении всего один раз, вы полностью испортите всю связку.
# Также это привязывает бинд к одной единственной клавише "навсегда", затрудняя его повторную привязку к другим клавишам.
+
# Также это привязывает бинд к одной единственной клавише «навсегда», затрудняя его повторную привязку к другим клавишам.
 
Давайте на примере уже упомянутой связки '''duckToggle''' рассмотрим подобную ситуацию:
 
Давайте на примере уже упомянутой связки '''duckToggle''' рассмотрим подобную ситуацию:
 
<pre>
 
<pre>
Line 147: Line 141:
 
//Это пример как НЕ надо писать бинды!
 
//Это пример как НЕ надо писать бинды!
 
</pre>  
 
</pre>  
Как вы видите, когда бинд, написан таким образом, клавиша '''c''' используется целых три раза. Поэтому, когда игрок захочет внести изменения в такую связку, ему придётся отыскать и изменить все три этих значения. И одна единственная ошибка приведёт к полной неработоспособности всего бинда в целом. Теперь перепишем этот бинд правильно с использование связки '''duckToggle''':
+
Как вы видите, когда бинд, написан таким образом, клавиша «c» используется целых три раза. Поэтому, когда игрок захочет внести изменения в такую связку, ему придётся отыскать и изменить все три этих значения. И одна единственная ошибка приведёт к полной неработоспособности всего бинда в целом. Теперь перепишем этот бинд правильно с использование связки '''duckToggle''':
 
<pre>
 
<pre>
 
//This is a much better approach
 
//This is a much better approach
Line 195: Line 189:
 
  alias "cfnl" "cf0;echo;cf1"
 
  alias "cfnl" "cf0;echo;cf1"
 
   
 
   
  // if you turn this off all text disapears!  it is left always on (''перевод'': если вы отключите эту опцию весь текст исчезнет с экрана! Так что держите её, всегда включенной)
+
  // if you turn this off all text disapears!  it is left always on (''перевод'': если вы отключите эту опцию, весь текст исчезнет с экрана! Так что держите её всегда включённой)
 
  developer 1
 
  developer 1
  // start with filtering enabled so we don't see all the console garbage on our screen (''перевод'': запуск производится с автоматически включённым фильтром, так что мы не увидим весь консольный мусор, и он не будет нам мешать)
+
  // start with filtering enabled so we don't see all the console garbage on our screen (''перевод'': запуск производится с автоматически включённым фильтром, так что мы не увидим весь консольный мусор, и он не будет нам мешать)
 
  cf1
 
  cf1
 
   
 
   
Line 206: Line 200:
 
  contimes 8 // Number of console lines to overlay for debugging. (''перевод'': число консольных строк, отображаемых одновременно)
 
  contimes 8 // Number of console lines to overlay for debugging. (''перевод'': число консольных строк, отображаемых одновременно)
 
   
 
   
  // our simple screen print test... which you can expand to do menus or whatever (''перевод'': проверка нашего незатейливого скрипта… принцип написания которого вы можете использовать при создании, например, игрового меню)
+
  // our simple screen print test... which you can expand to do menus or whatever (''перевод'': проверка нашего незатейливого скрипта... принцип написания которого вы можете использовать при создании, например, игрового меню)
  echo "|} Isn't ofb's screen printing cool?" (''перевод'': echo "|} Ну разве писать ОФБ ни круто?")
+
  echo "|} Isn't ofb's screen printing cool?" (''перевод'': echo "|} Ну разве писать ОФБ не круто?")
 
  cfnl
 
  cfnl
  
Ну, вот и всё! Помните: чтобы отчистить консоль после того, как команда введена, нужно использовать команду ''clear'', так чтобы текстовый мусор не засорял ваш экран. И, пожалуйста, не спамьте сообщения типа "my script loaded v1.2.3 by alphaguy" ("скрипты v1.2.3 от alphaguy"), реклама нам не нужна, а ТФ2 и без этого достаточно хорош.
+
Ну, вот и всё! Помните: чтобы отчистить консоль после того, как команда введена, нужно использовать команду ''clear'', так чтобы текстовый мусор не засорял ваш экран. И, пожалуйста, не спамьте сообщения типа «my script loaded v1.2.3 by alphaguy» («скрипты v1.2.3 от альфа-самца»), реклама нам не нужна, а ТФ2 и без этого достаточно хорош.
  
 
'''Внимание: активация фильтра консоли означает, что вы не будете видеть никакой консольный текст, за исключением того, что занесён в ваши скрипты! Чтобы вернуть весь консольный текст пропишите команду ''ctf_clear''.'''
 
'''Внимание: активация фильтра консоли означает, что вы не будете видеть никакой консольный текст, за исключением того, что занесён в ваши скрипты! Чтобы вернуть весь консольный текст пропишите команду ''ctf_clear''.'''
  
==Консольные Команды==
+
==Консольные команды==
'''Замечание по написанию: ''' если какой-то символ, заключён в квадратные скобки ([ or ]) то он является опциональным (необязательным); если же символ, помещён в треугольные скобки (< or >), то он является неотъемлемойчастью команды и необходим для ее функционирования.  
+
'''Замечание по написанию:''' если какой-то символ, заключён в квадратные скобки ([ или ]), то он является необязательным; если же символ, помещён в треугольные скобки (< или >), то он является неотъемлемой частью команды и необходим для её функционирования.  
  
=== Связки (ALIAS)===
+
=== Связки (ALIAS) ===
 
*Классовое ограничение
 
*Классовое ограничение
 
*:Отсутствует
 
*:Отсутствует
 
*Описание
 
*Описание
*:Связка это замена длинной последовательности команд одним простым действием. Например, команда 'wait'. Если вы привяжете её, то в будущем сможете легко использовать свой бинд вместо того, чтобы каждый раз по новой прописывать всю команду. Так гораздо удобней. К тому же это упрощает написание информационных (для общения) скриптов и им подобных.
+
*:Связка это замена длинной последовательности команд одним простым действием. Например, команда ''wait''. Если вы привяжете её, то в будущем сможете легко использовать свой бинд вместо того, чтобы каждый раз по новой прописывать всю команду. Так гораздо удобней. К тому же это упрощает написание информационных (для общения) скриптов и им подобных.
 
*Написание
 
*Написание
 
*:alias "<name_of_alias>" "<command; list>" (''перевод'': связка "<имя_связки>" "<команда; список>")
 
*:alias "<name_of_alias>" "<command; list>" (''перевод'': связка "<имя_связки>" "<команда; список>")
*Аргументы (Arguments)
+
*Аргументы
 
**Отсутствуют
 
**Отсутствуют
 
 
  
 
===Строить (BUILD)===
 
===Строить (BUILD)===
Line 233: Line 225:
 
*:Инженер, Шпион
 
*:Инженер, Шпион
 
*Описание
 
*Описание
*: Если у Инженера, использующего эту команду, достаточно метала, то он автоматически перейдёт в режим строительства выбранного сооружения. Если же эту команду использует Шпион, то он автоматически вооружится Жучком, как только рядом окажутся вражеские постройки.
+
*: Если у Инженера, использующего эту команду, достаточно металла, то он автоматически перейдёт в режим строительства выбранного сооружения. Если же эту команду использует Шпион, то он автоматически вооружится Жучком, как только рядом окажутся вражеские постройки.
 
*Написание
 
*Написание
 
*:build <gadget_number> (''перевод'': строить <номер_слота>)
 
*:build <gadget_number> (''перевод'': строить <номер_слота>)
*Аргументы (Arguments)
+
*Аргументы
 
**<gadget_number> (''перевод'': <номер_слота>)
 
**<gadget_number> (''перевод'': <номер_слота>)
**:0: [[Dispenser]] (Engineer) (''перевод'': [[Раздатчик]] (Инженер))
+
**:0: Dispenser (Engineer) (''перевод'': Раздатчик (Инженер))
**:1: [[Teleporter]] entrance (Engineer) (''перевод'': [[Телепорт]] вход (Инженер))
+
**:1: Teleporter entrance (Engineer) (''перевод'': Вход телепорта (Инженер))
**:2: Teleporter exit (Engineer) (''перевод'': Телепорт выход (Инженер))
+
**:2: Teleporter exit (Engineer) (''перевод'': Выход телепорта (Инженер))
**:3: [[Sentry gun]] (Engineer) (''перевод'': [[Турель]] (Инженер))
+
**:3: Sentry gun (Engineer) (''перевод'': Турель (Инженер))
**:4: [[Electro sapper]] (Spy) (''перевод'': [[Жучок]] (Шпион))
+
**:4: Electro sapper (Spy) (''перевод'': Жучок (Шпион))
''ВАЖНО: В настоящее время вы не можете строить предметы (постройки) подряд, находясь непрерывно в режиме строительства. Чтобы построить следующее сооружение, необходимо выйти из режима строительства, переключившись на какое-либо оружие, а затем вновь войти в этот режим (что это: баг или функция игры?)''
+
''ВАЖНО: в настоящее время вы не можете строить предметы (постройки) подряд, находясь непрерывно в режиме строительства. Чтобы построить следующее сооружение, необходимо выйти из режима строительства, переключившись на какое-либо оружие, а затем вновь войти в этот режим (что это: баг или функция игры?)''
''ВАЖНО: Баг исправлен, теперь можно строить непрерывно.''
+
''ВАЖНО: баг исправлен, теперь можно строить непрерывно.''
  
  
Line 251: Line 243:
 
*:Инженер, Шпион
 
*:Инженер, Шпион
 
*Описание
 
*Описание
*:Позволяет разрушать Инженеру уже построенные им сооружения, или использовать новый жучок на место сбитого врагом Спаю.
+
*:Позволяет разрушать Инженеру уже построенные им сооружения, или использовать Шпионом новый Жучок на место сбитого врагом.
 
*Написание
 
*Написание
 
*:destroy <gadget_number> (''перевод'': разрушить <номер_слота>)
 
*:destroy <gadget_number> (''перевод'': разрушить <номер_слота>)
*Аргументы (Arguments)
+
*Аргументы
 
**<gadget_number> (''перевод'': <номер_слота>)
 
**<gadget_number> (''перевод'': <номер_слота>)
 
**:0: Dispenser (Engineer) (''перевод'': Раздатчик (Инженер))
 
**:0: Dispenser (Engineer) (''перевод'': Раздатчик (Инженер))
Line 260: Line 252:
 
**:2: Teleport Exit (Engineer) (''перевод'': Выход телепорта (Инженер))
 
**:2: Teleport Exit (Engineer) (''перевод'': Выход телепорта (Инженер))
 
**:3: Sentry (Engineer) (''перевод'': Турель (Инженер))
 
**:3: Sentry (Engineer) (''перевод'': Турель (Инженер))
**:4: Electro Sapper (Spy) (''перевод'': Жучлк (Шпион))
+
**:4: Electro Sapper (Spy) (''перевод'': Жучок (Шпион))
  
 
===Маскировка (DISGUISE)===
 
===Маскировка (DISGUISE)===
Line 266: Line 258:
 
*:Шпион
 
*:Шпион
 
*Описание
 
*Описание
*:Позволяет вам с лёгкостью маскироваться, в отличие от тех, кто до сих пор использует сочетания клавиш. Первая цифра номер класса, под который вы маскируетесь, вторая цвет команды.  
+
*:Позволяет вам с лёгкостью маскироваться, в отличие от тех, кто до сих пор использует сочетания клавиш. Первая цифра номер класса, под который вы маскируетесь, вторая цвет команды.  
 
*Написание
 
*Написание
 
*:disguise <class_number> <team_number> (''перевод'': маскировка <номер_класса> <цвет_команды>)
 
*:disguise <class_number> <team_number> (''перевод'': маскировка <номер_класса> <цвет_команды>)
*Аргументы (Arguments)
+
*Аргументы
 
**<class_number> (''перевод'': <номер_класса>)
 
**<class_number> (''перевод'': <номер_класса>)
 
**:1: Scout (''перевод'': Разведчик)
 
**:1: Scout (''перевод'': Разведчик)
Line 283: Line 275:
 
**:1: Blu (''перевод'': Синие)
 
**:1: Blu (''перевод'': Синие)
 
**:2: Red (''перевод'': Красные)
 
**:2: Red (''перевод'': Красные)
**:-1: The Enemy Team (''перевод'': Вражеская Команда)
+
**:-1: The Enemy Team (''перевод'': вражеская команда)
**:-2: My Team (''перевод'': Моя Команда)
+
**:-2: My Team (''перевод'': моя команда)
  
 
=== Последняя маскировка (LASTDISGUISE)===
 
=== Последняя маскировка (LASTDISGUISE)===
Line 290: Line 282:
 
*:Шпион
 
*:Шпион
 
*Описание
 
*Описание
*: Как понятно из названия эта команда применяет последнюю использованную вами маскировку. Кроме того, она запоминает вашу последнюю предсмертную маскировку. По дефолту эта команда привязана к клавише '''b'''. Если присоединить к этой команде случайный параметр, то маскировка будет выбираться произвольно, за исключением классов Шпиона и Разведчика.
+
*: Как понятно из названия, эта команда применяет последнюю использованную вами маскировку. Кроме того, она запоминает вашу последнюю предсмертную маскировку. По умолчанию эта команда привязана к клавише «b». Если присоединить к этой команде случайный параметр, то маскировка будет выбираться произвольно, за исключением Шпиона и Разведчика.
 
*Написание
 
*Написание
*:lastdisguise [random] (''перевод'': последняя_маскировка [случайно])
+
*:lastdisguise [random] (''перевод'': последняя маскировка [случайно])
*Аргументы (Arguments)
+
*Аргументы
 
**[random] (''перевод'': [случайно])
 
**[random] (''перевод'': [случайно])
**:Chooses a random disguise that's neither Spy nor Scout (''перевод'': замаскироваться произвольно за исключением классов Шпион и Разведчик)
+
**:Chooses a random disguise that's neither Spy nor Scout (''перевод'': замаскироваться произвольно за исключением Шпиона и Разведчика)
 
 
 
 
  
 
===Последний слот (LASTINV)===
 
===Последний слот (LASTINV)===
Line 303: Line 293:
 
*:Отсутствует
 
*:Отсутствует
 
*Описание
 
*Описание
*:Это очень простая команда. Всё, что она делает это активирует слот последнего использованного вами оружия (По дефолту '''q''')
+
*:Это очень простая команда. Всё, что она делает это активирует слот последнего использованного вами оружия (По умолчанию «q»)
 
*Написание
 
*Написание
*:lastinv (''перевод'': последний_слот)
+
*:lastinv (''перевод'': последний слот)
*Аргументы (Arguments)
+
*Аргументы
 
**Отсутствуют
 
**Отсутствуют
  
Line 316: Line 306:
 
*Написание  
 
*Написание  
 
*:menuselect <item_number> (''перевод'': выбор в меню <номер_слота>)
 
*:menuselect <item_number> (''перевод'': выбор в меню <номер_слота>)
* Аргументы (Arguments)
+
* Аргументы
**<item_number> (''перевод'': <номер слота>)
+
**<item_number> (''перевод'': <номер_слота>)
 
**:Any valid menu choice. (''перевод'': любой из доступных выборов)
 
**:Any valid menu choice. (''перевод'': любой из доступных выборов)
*Заметьте: Используйте команду '''cancelselect''', чтобы покинуть меню.
+
*Заметьте: используйте команду '''cancelselect''', чтобы покинуть меню.
 
 
 
 
 
 
  
 
===Игра (PLAY)===
 
===Игра (PLAY)===
Line 328: Line 315:
 
*:Отсутствует
 
*:Отсутствует
 
*Описание
 
*Описание
*:Проигрывает выбранный .wav файл. Чтобы отыскать нужный .wav файл, вам следует использовать один из обозревателей GCF файлов, например GCFScape[http://developer.valvesoftware.com/wiki/GCFScape]. Благодаря нему вы сможете определить путь к необходимому файлу и сослаться на него через команду консоли или скрипт.
+
*:Проигрывает выбранный .wav файл. Чтобы отыскать нужный .wav файл, вам следует использовать один из обозревателей GCF файлов, например, [http://developer.valvesoftware.com/wiki/GCFScape GCFScape]. Благодаря нему вы сможете определить путь к необходимому файлу и сослаться на него через команду консоли или скрипт.
:Кроме того, вы можете добавить свои собственные .wav файлы в директорию '''C:\Program Files\Steam\steamapps\USERNAME\team fortress 2\tf\sound\'''.
+
:Кроме того, вы можете добавить свои собственные .wav файлы в директорию '''C:\Program Files\Steam\steamapps\%USERNAME%\team fortress 2\tf\sound\'''.
 
*Написание
 
*Написание
 
*:play <path><sound_file_name.wav> (''перевод'': <путь_к_файлу><имя_файла.wav>)
 
*:play <path><sound_file_name.wav> (''перевод'': <путь_к_файлу><имя_файла.wav>)
 
*Пример
 
*Пример
 
*:play vo/demoman_specialcompleted11.wav
 
*:play vo/demoman_specialcompleted11.wav
*Аргументы (Arguments)
+
*Аргументы
 
**Отсутствуют
 
**Отсутствуют
  
Line 341: Line 328:
 
*:Отсутствует
 
*:Отсутствует
 
*Описание
 
*Описание
*:Эта команда чуть более сложная, чем рассмотренные нами ранее. В её основе лежит выбор активного оружия, комбинированный с стандартными голосовыми командами из 'z', 'x' и 'c' меню. Так, например, если вы привязали к клавише 'f' выбор 'слота1' ('slot1') и использование голосового_меню_1 (voice_menu_1 ('z')), то после нажатия 'f' вы автоматически позовёте Медика. В тоже время выбор оружия может осуществляться двумя путями. Первый, если у вас в меню включена быстрая смена оружия, эта команда немедленно активирует выбранный слот. Если же нет, то команда только высветит слоты выбора оружия, оставив окончательное решение за вами. Однако в последнем случае вы можете дополнить скрипт параметрами: "slot1; wait 50; +attack; wait; -attack", и это произойдёт автоматически.  
+
*:Эта команда чуть более сложная, чем рассмотренные нами ранее. В её основе лежит выбор активного оружия, комбинированный с стандартными голосовыми командами из «z», «x» и «c» меню. Так, например, если вы привязали к клавише «f» слот1 (slot1) и использование голосового меню 1 (voice_menu_1 («z»)), то после нажатия «f» вы автоматически позовёте Медика. В тоже время выбор оружия может осуществляться двумя путями. Первый, если у вас в меню включена быстрая смена оружия, эта команда немедленно активирует выбранный слот. Если же нет, то команда только высветит слоты выбора оружия, оставив окончательное решение за вами. Однако в последнем случае вы можете дополнить скрипт параметрами: "slot1; wait 50; +attack; wait; -attack", и это произойдёт автоматически.  
 
*Написание
 
*Написание
 
*:slot<slot_number> (''перевод'': слот<номер_слота>)
 
*:slot<slot_number> (''перевод'': слот<номер_слота>)
*Аргументы (Arguments)
+
*Аргументы
 
**<slot_number> (''перевод'': <номер_слота>)
 
**<slot_number> (''перевод'': <номер_слота>)
**:Необходимо ввести номер слота от 0 до 10, при этом 'слот10' ('''slot10''') это команда выхода из меню.
+
**:Необходимо ввести номер слота от 0 до 10, при этом слот10 (slot10) это команда выхода из меню.
 
 
 
 
  
 
===Использовать (USE)===
 
===Использовать (USE)===
Line 354: Line 339:
 
*:Отсутствует
 
*:Отсутствует
 
*Описание
 
*Описание
*:Команда "использовать" ("use") применяется для активации конкретного оружия, при этом тип этого оружия не имеет значения.  
+
*:Команда «использовать» («use») применяется для активации конкретного оружия, при этом тип этого оружия не имеет значения.  
 
*Написание  
 
*Написание  
 
*:use <weapon_name> (''перевод'': use <название_оружия>)
 
*:use <weapon_name> (''перевод'': use <название_оружия>)
*Аргументы (Arguments)
+
*Аргументы
 
**<weapon_name> (''перевод'': <название_оружия>)
 
**<weapon_name> (''перевод'': <название_оружия>)
 
***Разведчик (Scout)
 
***Разведчик (Scout)
Line 403: Line 388:
 
**:tf_weapon_knife (тф_оружие_нож)
 
**:tf_weapon_knife (тф_оружие_нож)
 
**:tf_weapon_pda_spy (тф_оружие_пульт)
 
**:tf_weapon_pda_spy (тф_оружие_пульт)
**:''Ознакомьтесь с разделом [[Scripting/ru# Строить (BUILD)|Строить (BUILD)]], чтобы узнать, как забиндеть Жучок''
+
**:''Ознакомьтесь с разделом [[Scripting/ru#Строить (BUILD)|Строить (BUILD)]], чтобы узнать, как сделать привязку Жучка''.
  
 
===Голосовое меню (VOICEMENU)===
 
===Голосовое меню (VOICEMENU)===
Line 409: Line 394:
 
*:Отсутствует
 
*:Отсутствует
 
*Описание
 
*Описание
*:Эта команда основана на использовании разделов голосового меню, активируемых нажатием клавиш 'z', 'x' и 'c'. В принципе никто не мешает вам забиндить каждую голосовую команду на отдельную клавишу, так как это сделано с клавишей 'e', при нажатии которой игрок зовёт Медика.
+
*:Эта команда основана на использовании разделов голосового меню, активируемых нажатием клавиш «z», «x» и «c». В принципе никто не мешает вам забиндить каждую голосовую команду на отдельную клавишу, так как это сделано с клавишей «e», при нажатии которой игрок зовёт Медика.
 
*Написание
 
*Написание
 
*:voicemenu <menu_number> <phrase_number> (''перевод'': голосовое_меню <номер_меню> <номер_фразы>)
 
*:voicemenu <menu_number> <phrase_number> (''перевод'': голосовое_меню <номер_меню> <номер_фразы>)
*Аргументы (Arguments)
+
*Аргументы
 
**<menu_number> (''перевод'': <номер_меню>)
 
**<menu_number> (''перевод'': <номер_меню>)
 
***0 <phrase_number> (''перевод'': <номер_фразы>)
 
***0 <phrase_number> (''перевод'': <номер_фразы>)
Line 441: Line 426:
 
***:6: Хороший выстрел (Nice Shot)
 
***:6: Хороший выстрел (Nice Shot)
 
***:7: Отличная работа (Good Job)
 
***:7: Отличная работа (Good Job)
 
 
  
 
===Ждать (WAIT)===
 
===Ждать (WAIT)===
Line 448: Line 431:
 
*:Отсутствует
 
*:Отсутствует
 
*Описание
 
*Описание
*:Это очень полезная команда, когда вы используете сложные бинды. Её сущность заключается в том, что она задерживает исполнение следующей команды в списке/цикле на время Х, количество которого измеряется во фреймах/кадрах ('frames'). Если после имени команды ('wait'), вы не укажите числовой параметр, то по дефолту он будет равен 1. Из моего опыта следует, что значение равное 100 фреймам примерно эквивалентно одной секунде, однако у меня не было времени точно установить, как на это влияет параметр задержки сервер-клиент, и в этом вам предстоит разобраться самостоятельно. Приведу пример с Инженером, совершенствующим свою Пушку :<br><br>"use tf_weapon_wrench; wait; +duck; wait; +attack; wait 500; -attack; wait; -duck; lastinv" (''перевод'': использовать тф_оружие_гаечный_ключ; ждать; +присесть; ждать; +атаковать; ждать 500; -атаковать; ждать; - присесть; последний_слот<br><br>
+
*:Это очень полезная команда, когда вы используете сложные бинды. Её сущность заключается в том, что она задерживает исполнение следующей команды в списке/цикле на время Х, количество которого измеряется во фреймах/кадрах. Если после имени команды (''wait''), вы не укажите числовой параметр, то по умолчанию он будет равен 1. Из моего опыта следует, что значение равное 100 фреймам примерно эквивалентно одной секунде, однако у меня не было времени точно установить, как на это влияет параметр задержки сервер-клиент, и в этом вам предстоит разобраться самостоятельно. Приведу пример с Инженером, совершенствующим свою Пушку :<br><br>"use tf_weapon_wrench; wait; +duck; wait; +attack; wait 500; -attack; wait; -duck; lastinv" (''перевод'': использовать тф_оружие_гаечный_ключ; ждать; +присесть; ждать; +атаковать; ждать 500; -атаковать; ждать; - присесть; последний_слот<br><br>
Результатом станет: Инженер берёт в руки ключ, приседает, бьёт ключом в течение, примерно, 5 секунд, прекращает бить, встает и выбирает последнее использованное до этого оружие в качестве текущего. Если бы мы не вставили между действия команду 'wait', то вероятность, того, что наш бинд попросту не стал бы работать, была бы очень велика. <br><br>Заметьте, что в отличии от предыдущих примеров, здесь команда 'wait', не прерывала исполнение бинда, а выступала в роли таймера.
+
Результат: Инженер берёт в руки Ключ, приседает, бьёт Ключом примерно 5 секунд, прекращает бить, встаёт и выбирает последнее использованное до этого оружие в качестве текущего. Если бы мы не вставили между действия команду ''wait'', то вероятность того, что наш бинд попросту не стал бы работать, была бы очень велика. <br><br>Заметьте, что в отличии от предыдущих примеров, здесь команда ''wait'', не прерывала исполнение бинда, а выступала в роли таймера.
 
*Написание
 
*Написание
 
*:wait [wait_time] (''перевод'': ждать [ждать_время])
 
*:wait [wait_time] (''перевод'': ждать [ждать_время])
*Аргументы (Arguments)
+
*Аргументы
 
**[wait_time] (''перевод'': [ждать_время])
 
**[wait_time] (''перевод'': [ждать_время])
**:Значения между 1 и <бесконечностью>.  По дефолту 1.
+
**:Значения между 1 и <бесконечностью>.  По умолчанию 1.
*'''Важное о команде 'wait''''
+
*'''Важное замечание'''
:Всё вышеизложенное актуально и будет работать только на серверах с параметром 'sv_allow_wait_command' со значением 1, однако в настоящее время многие серверы используют параметр 0, и на них данный скрипт выполняться не будет. Более того, некоторые устаревшие скрипты, как то [[Scout_scripts#Autopistol|Autopistol Script]], могут привести к нестабильной работе клиента и его падению.
+
:Всё вышеизложенное актуально и будет работать только на серверах с параметром ''sv_allow_wait_command'' со значением 1, однако в настоящее время многие серверы используют параметр 0, и на них данный скрипт выполняться не будет. Более того, некоторые устаревшие скрипты, как то [[Scout_scripts#Autopistol|Autopistol Script]], могут привести к нестабильной работе клиента и его падению.
  
===Другие Скриптовые Команды движка GoldSource/Source===
+
===Другие команды движков GoldSource и Source===
  
Выбор класса '''changeclass'''
+
Выбор класса: '''changeclass'''
  
Переключение консоли  '''toggleconsole'''
+
Переключение консоли: '''toggleconsole'''
  
Присесть  '''+duck'''
+
Присесть: '''+duck'''
  
Выбросить предмет  '''dropitem'''
+
Выбросить предмет: '''dropitem'''
  
Повторить сообщение  '''echo'''
+
Повторить сообщение: '''echo'''
  
Атаковать '''+attack'''
+
Атаковать: '''+attack'''
  
Показать FPS '''cl_showfps 1'''
+
Показать частоту кадров: '''cl_showfps 1'''
  
Сменить ведущую руку на левую  '''setinfo lefthand 1'''
+
Сменить ведущую руку на левую: '''setinfo lefthand 1'''
  
Сменить ведущую руку на правую '''setinfo lefthand 0'''
+
Сменить ведущую руку на правую: '''setinfo lefthand 0'''
  
Прыгнуть  '''+jump'''
+
Прыгнуть: '''+jump'''
  
Последнее оружие  '''lastinv'''
+
Последнее оружие: '''lastinv'''
  
Использовать спрэй '''impulse 201'''
+
Использовать спрей: '''impulse 201'''
  
Смотреть вниз  '''+lookdown'''
+
Смотреть вниз: '''+lookdown'''
  
Смотреть вверх  '''+lookup'''
+
Смотреть вверх: '''+lookup'''
  
Информация о карте  '''showbriefing'''
+
Информация о карте: '''showbriefing'''
  
Список карт  '''listmaps'''
+
Список карт: '''listmaps'''
  
Двигаться назад  '''+back'''
+
Двигаться назад: '''+back'''
  
Двигаться вперёд  '''+forward'''
+
Двигаться вперёд: '''+forward'''
  
Netgraph '''netgraph <num>'''
+
Сетевая статистика: '''netgraph <num>'''
  
Следующее оружие  '''invnext'''
+
Следующее оружие: '''invnext'''
  
Список игроков  '''listplayers'''
+
Список игроков: '''listplayers'''
  
Предыдущее оружие  '''invprev'''
+
Предыдущее оружие: '''invprev'''
  
Сообщение для всех  '''say'''
+
Сообщение для всех: '''say'''
  
Перезарядить оружие  '''+reload'''
+
Перезарядить оружие: '''+reload'''
  
Просмотр счёта  '''+showscores'''
+
Просмотр счёта: '''+showscores'''
  
Снять скриншот '''snapshot'''
+
Снимок экрана: '''snapshot'''
  
Стрейф '''+strafe'''
+
Движение боком: '''+strafe'''
  
Стрейф влево  '''+moveleft'''
+
Движение боком влево: '''+moveleft'''
  
Стрейф вправо  '''+moveright'''
+
Движение боком вправо: '''+moveright'''
  
Использовать вторичную функцию оружия '''+attack2'''
+
Альтернативный огонь '''+attack2'''
  
Насмешка '''taunt'''
+
Насмешка: '''taunt'''
  
Смерть от взрыва (самоубийство) '''explode'''
+
Смерть от взрыва (самоубийство): '''explode'''
  
Сообщения для команды  '''say_team'''
+
Сообщение для команды: '''say_team'''
  
Выбор команды  '''changeteam'''
+
Выбор команды: '''changeteam'''
  
Повернуться налево '''+left'''
+
Повернуться налево: '''+left'''
  
Повернуться направо  '''+right'''
+
Повернуться направо: '''+right'''
  
( ''"S.A.S's Guide to Counter-Strike: Scripting"'' )
+
== См. также ==
 +
* [[Community Scripts/ru|Скрипты игроков]]
  
==Другое==
+
== Ссылки ==
:*Чтобы ознакомиться со скриптами других игроков, оставить свои отзывы или поделиться собственными скриптами, посетите страницу [[Скрипты]].
+
* [http://www.fpsbanana.com/tuts/4646 FPSBanana.com]
 +
* [http://www.fpsbanana.com/tuts/2290 FPSBanana.com]
 +
*[http://clancya.org/2007/10/13/list-of-tf2source-engine-keyboard-keys-that-can-be-binded Clancya.org]
 +
* [http://developer.valvesoftware.com/wiki/Bind Valve Developer Community]
  
[[Category:Scripts]]
+
[[Category:Scripts/ru]]
 
{{Languages}}
 
{{Languages}}

Revision as of 08:24, 17 August 2010

Понятие «скрипт», использованное на этой странице не стоит путать с .scr файлами, которые изменяют настройки сервера.

Содержание

Кратко о скриптах

Что такое бинд?

Скрипты в ТФ2 также известны под названиями бинды (binds), кей-бинды (keybinds). Бинд — это способ прикрепления (или «привязывания» от англ. bind) игровой команды к конкретной клавише.

Бинды — это читы?

Согласно широко распространённому мнению нет. Эту проблему стоит рассматривать так: бинды позволяют игроку совершать простейшие игровые действия чуточку быстрее. К тому же все без исключения имеют к ним равный доступ, так что фактически бинды не дают использующему никакого превосходства. Кроме того, сами разработчики осознано допустили существование подобной возможности, как составной части игры (в отличие от читерства, которое наносит ущерб), так что использование биндов — вполне честный шаг.

Где лежат бинды?

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

%Steam Folder%\SteamApps\%account_name%\team fortress 2\tf\cfg\config.cfg

Эти команды автоматически выполняются при каждом запуске игры. И хотя пользователь может с лёгкостью дополнить информацию, содержащуюся в этом файле, использовав любой текстовый редактор, гораздо логичнее сохранять свои бинды в отдельном файле. Его адрес:

%Steam Folder%\SteamApps\%account_name%\team fortress 2\tf\cfg\autoexec.cfg

Хотя изначально этот файл не существует, вы можете сами создать его; ведь, по сути, это простой текстовый файл с именем autoexec.cfg, и как в случае с config.cfg все команды, записанные в нём, будут исполнены игрой при запуске.

Внимание! Когда вы создадите текстовый файл с биндами в любом удобном для вас редакторе, не забудьте убедиться, что он имеет расширение .cfg, т.к. некоторые текстовые редакторы (например, Блокнот) автоматически присваивают файлам, созданным в них, расширение .txt, что в итоге даст имя autoexec.cfg.txt. Файл же с таким именем программа исполнять не будет.

Использование скриптов

Скрипт, занесённый в autoexec.cfg, будет автоматически применён к любому игровому классу. Поэтому, если вы хотите создать специфический скрипт для конкретного класса, вам стоит дополнительно использовать файл %class%.cfg, где %class% — это название игрового класса, для которого применяется данный скрипт. Однако занесение скрипта в %class%.cfg автоматически применит этот скрипт ко всем остальным классам. Например, если вы привяжете ПКМ (Mouse2) на перезарядку в файле Инженера — engineer.cfg, но позже решите привязать к этой кнопке другое действие для других классов, вам придется переназначить ПКМ (Мouse2) на другое действие во всех остальных файлах типа %class%.cfg.

Правила привязки клавиш

Для любых отдельных биндов или их связок (групп биндов) на движке Соурс существуют строгие правила написания: КОМАНДА <аргумент1> <аргумент2>

Можно НЕ использовать кавычки в биндах и связках с единственным аргументом, например bind 1 slot1. Но если вы хотите создать бинд, аргументы которого включают несколько команд или параметров, вам следует заключить каждый аргумент в кавычки, отделив их индивидуальные компоненты точкой с запятой. Так, бинд alias melee1 "slot3; +attack" создаст команду «melee1», автоматически активирующую оружие ближнего боя с последующей атакой.

Пример:

COMMAND  <argument1>    <argument2>
alias    qBetween1and2  "slot2; wait 10; slot1"
bind     1              qBetween1and2

Примечание: здесь для наглядности аргументы отделены друг от друга пробелами, но при написании скриптов более одного пробела за раз использовать НЕЛЬЗЯ.

Как написать простейшую привязку?

Самый простой бинд имеет форму bind <key> <command>. Например, если вы хотите активировать первичное оружие нажатием клавиши «1», вы должны прописать бинд, выглядящий так:

bind 1 slot1
(где slot1 — это команда, активирующая ваше основное оружие)

Каждый новый бинд в файле autoexec.cfg нужно писать с новой строки. Чтобы получить представление о том, как всё это должно выглядеть в итоге, загляните в ваш config.cfg, открыв его любым текстовым редактором. Чтобы ознакомиться с используемыми при биндинге командами, изучите раздел «Консольные команды» на этой странице.

Как написать сложную привязку?

Сложные бинды имеет форму схожую с простыми биндами, однако они исполняют ряд команд, в то время как вы нажимаете всё ту же единственную клавишу. Каждая команда должна быть обязательно отделена точкой с запятой (;). Рассмотрим сложный бинд для инженера:

bind "q" "build 0; wait 50; +attack; wait; -attack; slot1"
Этот бинд привязывает серию команд к клавише «q». Когда игрок нажимает «q», последовательно выполняется серия команд:
  • build 0 активирует опцию строительства Раздатчика
  • wait 50 задает время ожидания (равное 50 фреймам) до начала выполнения следующей команды
  • +attack активирует и продолжает первичную атаку (о значении символов плюс и минус будет сказано ниже)
  • wait задает единичное время ожидания до начала выполнения следующей команды
  • -attack прекращает первичную атаку
  • slot1 активирует первичное оружие (в случае с Инженером — это Дробовик)

Как работают команды с символами плюс (+) и минус (-)?

Команды с символами плюс и минус — это длящиеся команды. Символ плюс задаёт начало и продолжение исполнения команды пока нажата клавиша. Минус прекращает исполнение, когда игрок отпускает клавишу. Например:

bind "c" "+duck"
Этот бинд заставляет игрока присесть и оставаться в этом положении в то время, когда зажата клавиша «c». После того как она будет отпущена, игрок вновь встанет.

Важно отметить при этом, что в использовании команды типа -duck нет смысла, так как эта команда исполняется по умолчанию, без нажатия какой-либо клавиши.

Что такое связки биндов и как их писать?

Связки биндов почти во всём сходны с обычными биндами за исключением того, что привязка команды (серии команд) осуществляется ни к клавише, а к определённому «имени». Такое «имя» впоследствии может быть использовано при написании других биндов. Рассмотрим такой пример связки биндов для Инженера:

alias "buildDispenser" "build 0; wait 50; +attack; wait; -attack; slot1"
bind "q" "buildDispenser"
Эта связка в сочетании с уже использованным нами ранее примером может продемонстрировать всю функциональность биндинга в ТФ2. Итак, мы создали связку именуемую «buildDispenser» (название связки при этом может быть любым, например, «Vanya» или «Vrotmnenogi» и т.д.). Теперь, когда бы мы ни использовали имя этой связки, игра выполнит все команды привязанные к нему. После мы привязали это «имя» к клавише «q». Следовательно, после нажатия «q» отныне будет исполняться эта связка.

Почему связки более удобны, нежели отдельные бинды? Подробнее на этом мы остановимся позже, однако пока представьте, что вам нужно привязать одну и ту же серию команд к разным клавишам. Теперь вместо того, чтобы печатать серии этих команды каждый раз заново, вы просто прописываете имя созданной вами связки. Кроме того, после, если вы вдруг захотите что-нибудь изменить в вашей серии, вам будет нужно переписать всего лишь одну эту связку.

Как работают связки с символами плюс (+) и минус (-)?

Точно так же, как плюс-минус команды, плюс-минус связки — это длящиеся связки. Плюс начинает и продолжает действие, пока зажата клавиша. А минус прекращает его, когда клавиша отпущена. Рассмотрим ещё один пример с Инженером:

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 в одной.

Теперь, после первого использования связки duckToggle, будет произведено обращение к связке duck1. Но после следующего использования этой связки (т.е. duckToggle), будет активирована связка duck2. В конце нам остаётся только привязать связку duckToggle к конкретной клавише, например, к «c»:

bind "c" "duckToggle"

После этого при нажатии клавиши «c» игрок будет ползти (перемещаться в приседе), а когда мы снова нажмём «c», он встанет в полный рост.

Комбинации клавиш

Выше мы везде использовали слово «клавиша» только потому, что нет более подходящего слова. На самом же деле, к одной единственной клавише в игре могут быть привязаны другие клавиши, к которым в свою очередь будут привязаны команды или группы команд. Например:

// Quick Class Joiner Script. It has been tested and works.
//Press shift and a key from 1-9 to change class.
//
alias +joinclass "bind 1 scout; bind 2 soldier; bind 3 pyro; bind 4 demoman; bind 5 heavy; bind 6 engineer; bind 7 medic; bind 8 sniper; bind 9 spy"
alias "-joinclass" "bind 1 slot1; bind 2 slot2; bind 3 slot3; bind 4 slot4; bind 5 slot5; bind 6 slot6; bind 7 slot7; bind 8 slot8; bind 9 slot9"
//
alias scout "join_class scout"
alias soldier "join_class soldier"
alias pyro "join_class pyro"
alias demoman "join_class demoman"
alias heavy "join_class heavyweapons"
alias engineer "join_class engineer"
alias medic "join_class medic"
alias sniper "join_class sniper"
alias spy "join_class spy"
//
bind "shift" "+joinclass"

Написано CupOfTea

Примечание по переводу первых двух строк:

//Скрипт быстрой смены игрового класса. Протестирован и работает.
//Нажмите «шифт» («shift») и клавишу от 1 до 9, чтобы выбрать соответствующий класс.

Ещё немного о создании скриптов

Почему не стоит использовать уже связанную клавишу внутри связки, которую она активирует?

Для этого существует несколько причин.

  1. В последствие очень сложно обнаружить и правильно изменить такой бинд.
  2. Если вы используете сложный или циклический бинд и вдруг решили изменить привязанную клавишу, то, пропустив её при исправлении всего один раз, вы полностью испортите всю связку.
  3. Также это привязывает бинд к одной единственной клавише «навсегда», затрудняя его повторную привязку к другим клавишам.

Давайте на примере уже упомянутой связки duckToggle рассмотрим подобную ситуацию:

//This is an example of how NOT to write an alias!
alias "duck1" "+duck; bind c duck2"
alias "duck2" "-duck; bind c duck1"
bind "c" "duck1"

Примечание по переводу первой строки:

//Это пример как НЕ надо писать бинды!

Как вы видите, когда бинд, написан таким образом, клавиша «c» используется целых три раза. Поэтому, когда игрок захочет внести изменения в такую связку, ему придётся отыскать и изменить все три этих значения. И одна единственная ошибка приведёт к полной неработоспособности всего бинда в целом. Теперь перепишем этот бинд правильно с использование связки duckToggle:

//This is a much better approach
alias "duckToggle" "duck1"
alias "duck1" "+duck; alias duckToggle duck2"
alias "duck2" "-duck; alias duckToggle duck1"

bind "c" "duckToggle"

Примечание по первой строке:

//Так гораздо лучше.

Почему это удобней? Во-первых, для того чтобы переписать клавишу такой связки нужно изменить всего одно значение, а это уже проще. Но, кроме того, теперь мы можем легко привязать это бинд к любому числу клавиш!

bind "c" "duckToggle"
bind "v" "duckToggle"
bind "b" "duckToggle"
bind "MOUSE3" "duckToggle"
//And so on, and on, and on

Примечание по последней строке:

//и т.д., и т.д., и т.д.

Если мы будем биндить наши клавиши внутри связок, нам придётся каждый раз полностью переписывать бинд, при его привязке к новой клавише. В тоже время, когда клавиша вынесена за пределы бинда, его можно привязывать к какому угодно числу кдавиш.

Когда вы прописываете скрипты для широкого круга пользователей (не только для себя), старайтесь держать это правило в голове. Такие скрипты не только удобнее в обращении для других, но и гораздо проще пишутся и изменяются.

Как отобразить текст на экране

Далее объясним как отображать текст на экране.

Вам понадобится файл con_filter_text_clear.cfg, содержащий:

 con_filter_text ""

А также файл с иминем con_filter_text_script.cfg, содержащий:

 con_filter_text "|}"

Теперь внесём изменения в ваш autoexec.cfg

// aliases to execute the 2 scripts we made (перевод: связки для выполнения созданных нами скриптов)
alias "cft_clear" "exec con_filter_text_clear.cfg"
alias "cft_script" "exec con_filter_text_script.cfg"
// aliases to toggle console filtering (перевод: связка для переключения фильтра консоли)
alias "cf1" "con_filter_enable 1"
alias "cf0" "con_filter_enable 0"
// to echo a newline (перевод: для отображения новой строки)
alias "cfnl" "cf0;echo;cf1"

// if you turn this off all text disapears!  it is left always on (перевод: если вы отключите эту опцию, весь текст исчезнет с экрана! Так что держите её всегда включённой)
developer 1
// start with filtering enabled so we don't see all the console garbage on our screen (перевод: запуск производится с автоматически включённым фильтром, так что мы не увидим весь консольный мусор, и он не будет нам мешать)
cf1

// you can play with the following settings (перевод: эти настройки вы можете изменять под себя)
con_notifytime 8	// How long to display recent console text to the upper part of the game window (перевод: время отображения консольной информации (текста) в верхней части игрового окна)
con_nprint_bgalpha 50	// Con_NPrint background alpha. (перевод: Con_Nprint цвет шрифта)
con_nprint_bgborder 5	// Con_NPrint border size. (перевод: Con_Nprint размеры границ)
contimes 8		// Number of console lines to overlay for debugging. (перевод: число консольных строк, отображаемых одновременно)

// our simple screen print test... which you can expand to do menus or whatever (перевод: проверка нашего незатейливого скрипта... принцип написания которого вы можете использовать при создании, например, игрового меню)
echo "|} Isn't ofb's screen printing cool?" (перевод: echo "|} Ну разве писать ОФБ не круто?")
cfnl

Ну, вот и всё! Помните: чтобы отчистить консоль после того, как команда введена, нужно использовать команду clear, так чтобы текстовый мусор не засорял ваш экран. И, пожалуйста, не спамьте сообщения типа «my script loaded v1.2.3 by alphaguy» («скрипты v1.2.3 от альфа-самца»), реклама нам не нужна, а ТФ2 и без этого достаточно хорош.

Внимание: активация фильтра консоли означает, что вы не будете видеть никакой консольный текст, за исключением того, что занесён в ваши скрипты! Чтобы вернуть весь консольный текст пропишите команду ctf_clear.

Консольные команды

Замечание по написанию: если какой-то символ, заключён в квадратные скобки ([ или ]), то он является необязательным; если же символ, помещён в треугольные скобки (< или >), то он является неотъемлемой частью команды и необходим для её функционирования.

Связки (ALIAS)

  • Классовое ограничение
    Отсутствует
  • Описание
    Связка — это замена длинной последовательности команд одним простым действием. Например, команда wait. Если вы привяжете её, то в будущем сможете легко использовать свой бинд вместо того, чтобы каждый раз по новой прописывать всю команду. Так гораздо удобней. К тому же это упрощает написание информационных (для общения) скриптов и им подобных.
  • Написание
    alias "<name_of_alias>" "<command; list>" (перевод: связка "<имя_связки>" "<команда; список>")
  • Аргументы
    • Отсутствуют

Строить (BUILD)

  • Классовое ограничение
    Инженер, Шпион
  • Описание
    Если у Инженера, использующего эту команду, достаточно металла, то он автоматически перейдёт в режим строительства выбранного сооружения. Если же эту команду использует Шпион, то он автоматически вооружится Жучком, как только рядом окажутся вражеские постройки.
  • Написание
    build <gadget_number> (перевод: строить <номер_слота>)
  • Аргументы
    • <gadget_number> (перевод: <номер_слота>)
      0: Dispenser (Engineer) (перевод: Раздатчик (Инженер))
      1: Teleporter entrance (Engineer) (перевод: Вход телепорта (Инженер))
      2: Teleporter exit (Engineer) (перевод: Выход телепорта (Инженер))
      3: Sentry gun (Engineer) (перевод: Турель (Инженер))
      4: Electro sapper (Spy) (перевод: Жучок (Шпион))

ВАЖНО: в настоящее время вы не можете строить предметы (постройки) подряд, находясь непрерывно в режиме строительства. Чтобы построить следующее сооружение, необходимо выйти из режима строительства, переключившись на какое-либо оружие, а затем вновь войти в этот режим (что это: баг или функция игры?) ВАЖНО: баг исправлен, теперь можно строить непрерывно.


Разрушить (DESTROY)

  • Классовое ограничение
    Инженер, Шпион
  • Описание
    Позволяет разрушать Инженеру уже построенные им сооружения, или использовать Шпионом новый Жучок на место сбитого врагом.
  • Написание
    destroy <gadget_number> (перевод: разрушить <номер_слота>)
  • Аргументы
    • <gadget_number> (перевод: <номер_слота>)
      0: Dispenser (Engineer) (перевод: Раздатчик (Инженер))
      1: Teleport Entrance (Engineer) (перевод: Вход телепорта (Инженер))
      2: Teleport Exit (Engineer) (перевод: Выход телепорта (Инженер))
      3: Sentry (Engineer) (перевод: Турель (Инженер))
      4: Electro Sapper (Spy) (перевод: Жучок (Шпион))

Маскировка (DISGUISE)

  • Классовое ограничение
    Шпион
  • Описание
    Позволяет вам с лёгкостью маскироваться, в отличие от тех, кто до сих пор использует сочетания клавиш. Первая цифра — номер класса, под который вы маскируетесь, вторая — цвет команды.
  • Написание
    disguise <class_number> <team_number> (перевод: маскировка <номер_класса> <цвет_команды>)
  • Аргументы
    • <class_number> (перевод: <номер_класса>)
      1: Scout (перевод: Разведчик)
      2: Sniper (перевод: Снайпер)
      3: Soldier (перевод: Солдат)
      4: Demoman (перевод: Подрывник)
      5: Medic (перевод: Медик)
      6: Heavy Weapons Guy (перевод: Пулемётчик)
      7: Pyro (перевод: Поджигатель)
      8: Spy (перевод: Шпион)
      9: Engineer (перевод: Инженер)
    • <team_number> (перевод: <цвет_команды>)
      1: Blu (перевод: Синие)
      2: Red (перевод: Красные)
      -1: The Enemy Team (перевод: вражеская команда)
      -2: My Team (перевод: моя команда)

Последняя маскировка (LASTDISGUISE)

  • Классовое ограничение
    Шпион
  • Описание
    Как понятно из названия, эта команда применяет последнюю использованную вами маскировку. Кроме того, она запоминает вашу последнюю предсмертную маскировку. По умолчанию эта команда привязана к клавише «b». Если присоединить к этой команде случайный параметр, то маскировка будет выбираться произвольно, за исключением Шпиона и Разведчика.
  • Написание
    lastdisguise [random] (перевод: последняя маскировка [случайно])
  • Аргументы
    • [random] (перевод: [случайно])
      Chooses a random disguise that's neither Spy nor Scout (перевод: замаскироваться произвольно за исключением Шпиона и Разведчика)

Последний слот (LASTINV)

  • Классовое ограничение
    Отсутствует
  • Описание
    Это очень простая команда. Всё, что она делает — это активирует слот последнего использованного вами оружия (По умолчанию «q»)
  • Написание
    lastinv (перевод: последний слот)
  • Аргументы
    • Отсутствуют

Выбор в меню (MENUSELECT)

  • Классовое ограничение
    Отсутствует
  • Описание
    Эта команда работает только в голосовых меню, но не работает в визуальных, таких как выбор класса или строительство.
  • Написание
    menuselect <item_number> (перевод: выбор в меню <номер_слота>)
  • Аргументы
    • <item_number> (перевод: <номер_слота>)
      Any valid menu choice. (перевод: любой из доступных выборов)
  • Заметьте: используйте команду cancelselect, чтобы покинуть меню.

Игра (PLAY)

  • Классовое ограничение
    Отсутствует
  • Описание
    Проигрывает выбранный .wav файл. Чтобы отыскать нужный .wav файл, вам следует использовать один из обозревателей GCF файлов, например, GCFScape. Благодаря нему вы сможете определить путь к необходимому файлу и сослаться на него через команду консоли или скрипт.
Кроме того, вы можете добавить свои собственные .wav файлы в директорию C:\Program Files\Steam\steamapps\%USERNAME%\team fortress 2\tf\sound\.
  • Написание
    play <path><sound_file_name.wav> (перевод: <путь_к_файлу><имя_файла.wav>)
  • Пример
    play vo/demoman_specialcompleted11.wav
  • Аргументы
    • Отсутствуют

Слот <Икс> (SLOT<X>)

  • Классовое ограничение
    Отсутствует
  • Описание
    Эта команда чуть более сложная, чем рассмотренные нами ранее. В её основе лежит выбор активного оружия, комбинированный с стандартными голосовыми командами из «z», «x» и «c» меню. Так, например, если вы привязали к клавише «f» слот1 (slot1) и использование голосового меню 1 (voice_menu_1 («z»)), то после нажатия «f» вы автоматически позовёте Медика. В тоже время выбор оружия может осуществляться двумя путями. Первый, если у вас в меню включена быстрая смена оружия, эта команда немедленно активирует выбранный слот. Если же нет, то команда только высветит слоты выбора оружия, оставив окончательное решение за вами. Однако в последнем случае вы можете дополнить скрипт параметрами: "slot1; wait 50; +attack; wait; -attack", и это произойдёт автоматически.
  • Написание
    slot<slot_number> (перевод: слот<номер_слота>)
  • Аргументы
    • <slot_number> (перевод: <номер_слота>)
      Необходимо ввести номер слота от 0 до 10, при этом слот10 (slot10) — это команда выхода из меню.

Использовать (USE)

  • Классовое ограничение
    Отсутствует
  • Описание
    Команда «использовать» («use») применяется для активации конкретного оружия, при этом тип этого оружия не имеет значения.
  • Написание
    use <weapon_name> (перевод: use <название_оружия>)
  • Аргументы
    • <weapon_name> (перевод: <название_оружия>)
      • Разведчик (Scout)
      tf_weapon_scattergun (тф_оружие_обрез_разведчика)
      tf_weapon_pistol_scout (тф_оружие_пистолет_разведчика)
      tf_weapon_lunchbox_drink (тф_оружие_бонк!)
      tf_weapon_bat (тф_оружие_бита)
      tf_weapon_bat_wood (тф_оружие_дрёма)
      • Солдат (Soldier)
      tf_weapon_rocketlauncher (тф_оружие_ракетница)
      tf_weapon_shotgun_soldier (тф_оружие_дробовик_солдата)
      tf_weapon_shovel (тф_оружие_лопатка)
      • Поджигатель (Pyro)
      tf_weapon_flamethrower (тф_оружие_огнемёт)
      tf_weapon_shotgun_pyro (тф_оружие_дробовик_поджигателя)
      tf_weapon_flaregun (тф_оружие_ракетница)
      tf_weapon_fireaxe (тф_оружие_топор)
      • Подрывник (Demoman)
      tf_weapon_grenadelauncher (тф_оружие_гранатомёт)
      tf_weapon_pipebomblauncher (тф_оружие_бомбомёт)
      tf_weapon_bottle (тф_оружие_бутылка)
      • Пулемётчик (Heavy Weapons Guy)
      tf_weapon_minigun (тф_оружие_пулемёт)
      tf_weapon_shotgun_hwg (тф_оружие_дробовик_пулемётчика)
      tf_weapon_lunchbox (тф_оружие_сандвич)
      tf_weapon_fists (тф_оружие_кулаки)
      • Инженер (Engineer)
      tf_weapon_shotgun_primary (тф_оружие_дробовик_инженера)
      tf_weapon_pistol (тф_оружие_пистолет)
      tf_weapon_wrench (тф_оружие_гаечный_ключ)
      tf_weapon_pda_engineer_destroy (тф_оружие_пульт_уничтожение)
      tf_weapon_pda_engineer_build (тф_оружие_пульт_постройка)
      • Медик (Medic)
      tf_weapon_syringegun_medic (тф_оружие_шприцемёт)
      tf_weapon_medigun (тф_оружие_лечебная_пушка)
      tf_weapon_bonesaw (тф_оружие_пила)
      • Снайпер (Sniper)
      tf_weapon_sniperrifle (тф_оружие_снайперская_винтовка)
      tf_weapon_compound_bow (тф_оружие_лук)
      tf_weapon_smg (тф_оружие_пистолет-пулемёт)
      tf_weapon_jar (тф_оружие_банкате)
      tf_weapon_club (тф_оружие_кукри)
      • Шпион (Spy)
      tf_weapon_revolver (тф_оружие_револьвер)
      tf_weapon_knife (тф_оружие_нож)
      tf_weapon_pda_spy (тф_оружие_пульт)
      Ознакомьтесь с разделом Строить (BUILD), чтобы узнать, как сделать привязку Жучка.

Голосовое меню (VOICEMENU)

  • Классовое ограничение
    Отсутствует
  • Описание
    Эта команда основана на использовании разделов голосового меню, активируемых нажатием клавиш «z», «x» и «c». В принципе никто не мешает вам забиндить каждую голосовую команду на отдельную клавишу, так как это сделано с клавишей «e», при нажатии которой игрок зовёт Медика.
  • Написание
    voicemenu <menu_number> <phrase_number> (перевод: голосовое_меню <номер_меню> <номер_фразы>)
  • Аргументы
    • <menu_number> (перевод: <номер_меню>)
      • 0 <phrase_number> (перевод: <номер_фразы>)
        0: Медик (Medic)
        1: Спасибо (Thanks)
        2: Двигаемся (Go)
        3: Вперёд (Move Up)
        4: Налево (Flank Left)
        5: Направо (Flank Right)
        6: Да (Yes)
        7: Нет (No)
      • 1 <phrase_number> (перевод: <номер_фразы>)
        0: Нас атакуют (Incoming)
        1: Шпион (Cloaked Spy)
        2: Впереди пушка (Sentry Ahead)
        3: Постройте здесь телепорт (Teleporter Here)
        4: Постройте здесь раздатчик (Dispenser Here)
        5: Постройте здесь пушку (Sentry Here)
        6: Давай Убер (Activate Ubercharge)
        7: Только для медика: Убер готов ((Medic Only) Ubercharge Ready)
      • 2 <phrase_number> (перевод: <номер_фразы>)
        0: На помощь (Help)
        1: Боевой клич (Battlecry)
        2: Приветствие (Cheers)
        3: Насмешка (Jeers)
        4: Одобрение (Positive)
        5: Отрицание (Negative)
        6: Хороший выстрел (Nice Shot)
        7: Отличная работа (Good Job)

Ждать (WAIT)

  • Классовое ограничение
    Отсутствует
  • Описание
    Это очень полезная команда, когда вы используете сложные бинды. Её сущность заключается в том, что она задерживает исполнение следующей команды в списке/цикле на время Х, количество которого измеряется во фреймах/кадрах. Если после имени команды (wait), вы не укажите числовой параметр, то по умолчанию он будет равен 1. Из моего опыта следует, что значение равное 100 фреймам примерно эквивалентно одной секунде, однако у меня не было времени точно установить, как на это влияет параметр задержки сервер-клиент, и в этом вам предстоит разобраться самостоятельно. Приведу пример с Инженером, совершенствующим свою Пушку :

    "use tf_weapon_wrench; wait; +duck; wait; +attack; wait 500; -attack; wait; -duck; lastinv" (перевод: использовать тф_оружие_гаечный_ключ; ждать; +присесть; ждать; +атаковать; ждать 500; -атаковать; ждать; - присесть; последний_слот

Результат: Инженер берёт в руки Ключ, приседает, бьёт Ключом примерно 5 секунд, прекращает бить, встаёт и выбирает последнее использованное до этого оружие в качестве текущего. Если бы мы не вставили между действия команду wait, то вероятность того, что наш бинд попросту не стал бы работать, была бы очень велика.

Заметьте, что в отличии от предыдущих примеров, здесь команда wait, не прерывала исполнение бинда, а выступала в роли таймера.

  • Написание
    wait [wait_time] (перевод: ждать [ждать_время])
  • Аргументы
    • [wait_time] (перевод: [ждать_время])
      Значения между 1 и <бесконечностью>. По умолчанию 1.
  • Важное замечание
Всё вышеизложенное актуально и будет работать только на серверах с параметром sv_allow_wait_command со значением 1, однако в настоящее время многие серверы используют параметр 0, и на них данный скрипт выполняться не будет. Более того, некоторые устаревшие скрипты, как то Autopistol Script, могут привести к нестабильной работе клиента и его падению.

Другие команды движков GoldSource и Source

Выбор класса: changeclass

Переключение консоли: toggleconsole

Присесть: +duck

Выбросить предмет: dropitem

Повторить сообщение: echo

Атаковать: +attack

Показать частоту кадров: cl_showfps 1

Сменить ведущую руку на левую: setinfo lefthand 1

Сменить ведущую руку на правую: setinfo lefthand 0

Прыгнуть: +jump

Последнее оружие: lastinv

Использовать спрей: impulse 201

Смотреть вниз: +lookdown

Смотреть вверх: +lookup

Информация о карте: showbriefing

Список карт: listmaps

Двигаться назад: +back

Двигаться вперёд: +forward

Сетевая статистика: netgraph <num>

Следующее оружие: invnext

Список игроков: listplayers

Предыдущее оружие: invprev

Сообщение для всех: say

Перезарядить оружие: +reload

Просмотр счёта: +showscores

Снимок экрана: snapshot

Движение боком: +strafe

Движение боком влево: +moveleft

Движение боком вправо: +moveright

Альтернативный огонь +attack2

Насмешка: taunt

Смерть от взрыва (самоубийство): explode

Сообщение для команды: say_team

Выбор команды: changeteam

Повернуться налево: +left

Повернуться направо: +right

См. также

Ссылки