Стоило только попросить мужчину помочь вымыть посуду -
и тут же появилась автоматическая посудомойка.
Сирил Паркинсон
Давайте включим образное мышление и представим, что бы случилось, если бы мы могли написать скрипт какого-нибудь отрезка своей жизни. Допустим, мы заскриптовали ежедневный утренний «ритуал» - и вот вместо многофазового процесса «проснуться, умыться, почистить зубы, сделать зарядку, поесть и т.д.» мы производим всего лишь одно действие - какой-нибудь morningscript. Паранойя? Возможно, но человек всю свою жизнь старается найти путь автоматизации повторяющихся изо дня в день действий. Так почему бы это не сделать с нашей виртуальной жизнью, имя которой - Counter-Strike.
Go, go, go!
Быстро поздоровались со всем миром - и в бой. |
Написание скриптов для Counter-Strike сродни программированию - а посему не будем уходить от традиций и сходу напишем маленький код, который заставит по нажатию на клавишу [F3] выводить на экран фразу «Hello, World!». Итак, запускаем Counter-Strike, создаем игру на любой карте, открываем консоль (клавиша [~]) и прописываем следующую строку:
bind f3 "say Hello, World!" |
Теперь в любой момент игры по нажатию на [F3] вы приветствуете весь мир. В данном скрипте использовалась конструкция bind <название клавиши> "<команды>", которая присваивает указанной клавише некоторую последовательность команд.
В более весомых скриптах наряду с bind’ом используют такую конструкцию: alias <название alias’а> "<последовательность команд>". Использование alias’ов не только облегчает чтение скрипта (что очень полезно при дальнейшем его редактировании) но и расширяет наши возможности. Скоро вы сами поймете, когда можно обойтись, используя лишь bind’ы, а когда к ним необходимо добавлять alias’ы. Кстати, наш первый скрипт мог бы выглядеть и так:
alias salute "say Hello, World!"
bind f3 "salute" |
Как сохранить свой первый проект скрипта? Откройте директорию с игрой и перейдите в папку по адресу \cstrike\cfg. Здесь создайте с помощью любого текстового редактора файл с названием autoexec и измените его расширение с txt на cfg. Теперь откройте созданный файл с помощью все того же текстового редактора и занесите в него нашу строку bind f3 "say Hello, World!". Отныне вы будете автоматически загружать этот скрипт при каждом запуске игры.
Это важно: если скрипт не работает, проверьте, какие вы вводите кавычки - должны быть те, что используются при печати в английском регистре.
Вот мы и добрались до следующего жизненно важного вопроса - написания config’ов. Config - это файл, в котором хранятся скрипты и настройки. Например, в папке \cstrike\cfg откройте файл config.cfg - в нем прописаны ваши настройки по умолчанию. По ряду причин я рекомендую вам ничего здесь не менять, а вместо этого написать собственный config. Для этого по приведенному только что алгоритму создайте не autoexec.cfg, а, скажем, myconfig.cfg. Занесите туда все свои настройки (это могут быть не только скрипты, но и обычные консольные команды) и сохраните его. Теперь запустите игру, откройте консоль и пропишите exec myconfig.cfg - все, ваши настройки загружены.
Это совет: добавляйте к вашим скриптам комментарии. Делается это в любом месте после разделителя: //.
Например:
//по нажатию на [F3] на экран выводится фраза "Hello, World!"
//begin bind f3 say "Hello, World!" //end |
Нетрудно догадаться, что использование config’ов позволяет решить проблему уникальности настроек играющего за компьютером, если последний приходится делить с кем-либо. Достаточно создать для каждого пользователя по одному config-файлу, чтобы он не тратил время и нервы на настройку Counter-Strike в соответствии с его требованиями. Автоматизируем процесс загрузки config’ов, добавив в уже упомянутый autoexec.cfg строки:
bind f3 "exec myconfig.cfg"
bind f4 "exec mother.cfg" bind f5 "exec father.cfg" bind f6 "exec brother.cfg" bind f7 "exec sister.cfg" |
Теперь осталось только сообщить каждому пользователю компьютера, какая клавиша соответствует его настройкам.
Это совет: чтобы в консоли при загрузке config-файла появлялось сообщение, добавьте в него строку echo "bla bla bla".
kb_actis
В списке стандартных alias'ов можно найти множество очень полезных команд. |
В директории \cstrike\scripts находится файл kb_act.lst. Откройте его, чтобы увидеть стандартные alias’ы и их краткое описание. Знание этих alias’ов поможет вам понимать чужие скрипты и писать собственные. Мне, для примера, пригодилась команда, которая производит снятие screenshot’а. Описание его в kb_act было следующим:
jpeg - Valve_Take_Screen_Shot
Новые команды
Incrementvar
В Counter-Strike: Source появилась команда, которая позволяет игроку прокручивать значение от максимального до минимального. Синтаксис команды имеет следующий вид: incrementvar <название переменной> <минимальное значение> <максмимальное значение> <инкремент>.
Вот таким незатейливым образом можно заставить меняться цвет прицела непосредственно во время игры:
bind p "incrementvar cl_crosshaircolor 0 4 1" |
А вот еще один демонстративный пример использования команды incrementvar, который позволяет регулировать громкость в любой момент времени. Клавиша [Page Up] - громче, [Page Down] - тише.
bind pgup "incrementvar volume 0 1 0.1"
bind pgdn "incrementvar volume 0 1 0.1" |
BindToggle
BindToggle позволяет создавать переключатели для команд, которые могут быть в состоянии on или off (0 или 1). Для примера возьмем команду cl_showfps, которая показывает в верхнем правом углу экрана значение вашего fps. Чтобы по нажатию клавиши [F1] количество fps появилось на экране, а при повторном исчезло - используйте следующий скрипт:
BindToggle f1 cl_showfps |
Для сравнения, чтобы сделать подобный переключатель в предыдущих версиях Counter-Strike, вам бы понадобились следующие строки:
alias fps "fpson"
alias fpson "cl_showfps 1; alias fps fpsoff" alias fpsoff "cl_showfps 0; alias fps fpson" bind f1 "fps" |
Покупки
Пистолеты | |
Glock18 Select Fire | glock |
USP .45 Tactical | usp |
SIG P228 | p228 |
Desert Eagle | deagle |
FN Five-Seven | fiveseven |
Dual Beretta 96G Elite | elite |
Дробовики | |
Benelli M3 Super 90 | m3 |
Benelli XM1014 | xm1014 |
Автоматы | |
Steyr TMP | tmp |
Ingram MAC-10 | mac10 |
MP5 Navy | mp5navy |
UMP 45 | ump45 |
FN P90 | p90 |
Винтовки | |
Galil | galil |
Famas | famas |
AK-47 | ak47 |
Colt M4A1 Carbine | m4a1 |
SIG 550 Sniper | sg550 |
SIG 552 Commando | sg552 |
Steyr Aug | aug |
Steyr Scout | scout |
AI Arctic Warfare/Magnum | awp |
G3/SG-1 Sniper Rifle | g3sg1 |
Пулемет | |
FN M249 Para | m249 |
Экипировка | |
Kevlar Vest | vest |
Kevlar Vest и Helmet | vesthelm |
Flashbang | flashbang |
HE Grenade | hegrenade |
Smoke Grenade | smokegrenade |
Defuse Kit | defuser |
NightVision Goggles | nvgs |
Primary Ammo | primammo |
Secondary Ammo | secammo |
Продолжим наше образование по системе «от простого к сложному». Допустим, вы хотите по нажатию клавиши [F1] купить автомат Калашникова. Для этого добавьте в файл следующую строку:
bind f1 "buy ak47" |
Однако один автомат можно купить и через обычные сочетания клавиш, поэтому пока никакой выгоды от нашей настройки мы не получили. Добавим в наш набор покупки патроны, бронежилет, гранату. Выглядеть все это будет следующим образом:
Время слишком дорого, чтобы вручную закупать набор оружия. Используйте auto-buy - стандартный или скриптовый. |
bind f1 "buy ak47; buy m4a1; buy primammo; buy vest; buy hegrenade" |
При этом предметы амуниции в подобном скрипте расставляются в порядке приоритета закупки. Например, если у вас не хватает денег на приобретение всех перечисленных в скрипте элементов, то закупаться будут предметы слева направо. Причем обратите внимание на то, что в приведенном скрипте есть и АК-47, и m4a1. Сделано это для того, чтобы в любой команде по нажатию на [F1] закупался один из стволов - АК отсутствует в арсенале контртеррористов, которые в свою очередь располагают m4a1.
Чтобы узнать скриптовые название оружия, обратитесь к таблице.
Это важно: перед вами список названий клавиш в таком виде, в котором следует их «упоминать» в скриптах: space * capslock * escape * f1 * f2 * f3 * f4 * f5 * f6 * f7 * f8 * f9 * f10 * f11 * f12 * backspace * tab * shift * enter * , * ctrl * alt * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 0 * a * b * c * d * e * f * g * h * i * j * k * l * m * n * o * p * q * r * s * t * u * v * w * x * y * z * uparrow * downarrow * rightarrow * leftarrow * ins * home * pgup * pgdown * del * end * mouse1 * mouse2 * mouse3 * mouse4 * mouse5 * mwheelup * mwheeldown.
Общение
Зачастую на общение с командой во время игры у вас просто нет времени. К счастью, этот процесс можно автоматизировать. Например, этот скрипт сообщает о вашей перезарядке всей команде:
alias +relsay "+reload; say_team Please, cover me, I am reloading; radio1; menuselect 1; slot10; wait; wait; slot10"
alias -relsay "-reload" bind "r" "+relsay" |
Теперь, нажав на [R], вы перезарядите оружие, скажете по радио «Cover me» и напишете в игровом командном chat’е сообщение «Please, cover me, I am reloading».
Еще пример: членам вышей команды может быть полезна информация о том, что вы заметили противника. Нижеприведенный скрипт при нажатии левой кнопки мыши передает в радиоэфире «Enemy Spotted» и открывает огонь:
alias +attack3 "+attack; radio3; menuselect 2; slot10"
alias -attack3 "-attack; slot10; wait; slot10" bind mouse1 "+attack3" |
Движение
Скрипты, кроме всего прочего, могут облегчить вам управление в игре. Сразу же пример - скрипт, который освобождает вас от обязанности постоянно держать клавишу [Ctrl] нажатой:
alias ctoggle "crouch"
alias stand "-duck; bind mouse1 +attack; alias ctoggle crouch" alias crouch "+duck; bind mouse1 +release; alias ctoggle stand" alias +release "+attack; -duck" alias -release "-attack; bind mouse1 +attack; alias ctoggle crouch" bind ctrl "ctoggle" |
Теперь по нажатию на [Ctrl] вы припадете к земле, а повторное нажатие приведет к тому, что вы подниметесь.
Вот еще один скрипт, подобный предыдущему, который позволяет по нажатию на клавишу [Z] переключаться с бега на ходьбу и обратно.
alias walk "+speed; -duck; bind q run; bind c crouchwalk; dv1; echo Walking; dv0"
alias run "-speed; -duck; bind q walk; bind c crouch; dv1; echo Running; dv0" alias crouchwalk "+duck; -speed; bind c walk; bind q crouch; dv1; echo Crouching Ready to Run; dv0" bind z "walk" |
Counter-Strike 1.6 и Condition Zero
Несмотря на выход Source, многие до сих пор продолжают играть в предыдущие версии Counter-Strike. Мы приведем некоторые интересные скрипты для этих версий.
Разворот на 180 градусов:
alias turn "fps_max 20; cl_yawspeed 3600; wait; +left; wait; -left; wait; +left; wait ;-left; w; fps_max 100"
bind z turn |
Теперь стрельба по три патрона возможна не только с FAMAS и Glock. |
alias long "wait; wait; wait"
alias burst "+attack; long; -attack; long; +attack; long; -attack; long; +attack; long; -attack; long" alias one "+attack; long; -attack" bind z "burst" bind x "one" |
Это важно: советую повесить bind на правую кнопку мыши - mouse2: со снайперской винтовкой теперь не побегаешь, зато с АК и m4a1 будете делать одни headshot’ы.
Быстрый бросок НЕ гранаты
alias warn "say_team Warning - HE-grenade"
alias +heg "warn; use weapon_hegrenade; wait; +attack" alias -heg "-attack; wait; lastinv" bind p heg |
Для броска ослепляющей гранаты замените use weapon_hegrenade в приведенном выше скрипте на use weapon_flashbang, а для броска дымовой - на use weapon_smokegrenade. Ну, и не забудьте сменить предупреждение с say_team Warning - HE-grenade на соответствующее бросаемой гранате.
Быстрый выход из игры
alias disquit "disconnect; wait; wait; wait; quit"
bind f10 "disquit" |
Team, fall back
В качестве эпилога предлагаю вам небольшое лирическое отступление. Как известно, на серьезных чемпионатах использование собственных config’ов запрещено. Если вы думаете, что, играя дома или в клубе со своим config’ом, вы потом сможете запросто вернуться к первоначальному варианту, то сильно ошибаетесь. Вообще предчувствую негодование многих читателей - использование config’ов некоторыми считается занятием столь же низким, сколь и использование cheat’ов. За свою жизнь я встречал некоторых таких людей, а через некоторое время замечал их с дискеткой, на которой было записано не поверите что - правильно, config. Легче всего кричать, что config - это зло, если ты не умеешь или не хочешь научиться их писать. Не стоит забывать про возможности, которые дали нам разработчики игры. Ну, и в конце концов, вы же не все время участвуете в чемпионатах - дайте себе свободу проявляться по-разному.