Продожаем цикл статей о биндинге. В данной статье речь пойдет о настройке конфига для быстрой покупки, постройке и еще нескольких полезных мелочах.
В начале нам надо определить как мы будем узнавать какие настройки в каком случае применять. Для этого забиндим в общем файле две команды - зайти за команду людей и зайти за команду пришельцев. И при выполнении одного из этих биндов будем загружать соответсвующие настройки.
bind F10 "team spectate; echo ^1Specator" bind F11 "team humans;echo ^1Human -:Builder =:Rifle; set nc1 vstr hc11; set nc2 vstr hc12" bind F12 "team aliens;echo ^1Alien -:Grandger =:Dretch; set nc1 vstr ac11; set nc2 vstr ac12"
Хотелось бы ограничиться меньшим числом клавиш. Сразу ясно что когда мы строитель мы не воюем (практически), а когда воюем мы не строим. Поэтому мы сделаем 2 отдельных режима для постройки и покупки, и когда нам нужно будем между ними переключаться. Задействуем кнопки 1-0, для покупки или постройки и переключения режима.
Как же нам в зависимости от ситуации для одной кнопке сделать несколько возможных команд? Мы можем делать unbind при смене режима. Но есть способ проще - использование вспомогательной переменной с помощью vstr. При этом ничего unbind`ить не придется, а просто можно назначать переменной новое значение. При этом эта переменная связана с определенной кнопкой.
Здесь будет маленькое лирическое отступление с показом принципа работы vstr. Например мы хотим забиндить на кнопку F4 песню Beatles - Yellow submarine (за идею огромное спасибо [L]Kuzmee4) что б попеть в компании с товарищами =). Не будем же мы каждую строчку песни биндить свою кнопку? Нет конечно. А делается это так -
bind F4 "vstr Beatles"
set Beat0 "set Beatles vstr Beat1" set Beat1 "say_team In the town where I was born,; set Beatles vstr Beat2" set Beat2 "say_team Lived a man who sailed to sea,; set Beatles vstr Beat3" set Beat3 "say_team And he told us of his life,; set Beatles vstr Beat4" set Beat4 "say_team In the land of submarines, ; set Beatles vstr Beat5"
set Beat5 "say_team So we sailed on to the sun,; set Beatles vstr Beat6" set Beat6 "say_team Till we found the sea of green,; set Beatles vstr Beat7" set Beat7 "say_team And we lived beneath the waves,; set Beatles vstr Beat8" set Beat8 "say_team In our ^3yellow submarine,; set Beatles vstr Beat9"
set Beat9 "say_team We all live in a ^3yellow submarine,; set Beatles vstr Beat10" set Beat10 "say_team ^3yellow submarine, yellow submarine,; set Beatles vstr Beat11" set Beat11 "say_team We all live in a ^3yellow submarine,; set Beatles vstr Beat12" set Beat12 "say_team ^3yellow submarine, yellow submarine.; set Beatles vstr Beat1"
vstr Beat0
Вот и все, можно петь. Вернемся к конфигу.
В начале создадим болванку - виртуальные переменные для каждой из клавиш от 1 до 0 и кнопок - и =.
Зачем нам кнопки - и = ? Этими двумя кнопками мы будем выбирать кем родиться - строителем или обычным игроком (с рифлом или дретчем).
set ac11 "echo Builder;class builder;vstr abuild" set ac12 "echo Buy;class level0;vstr abuy" set hc11 "echo Builder;class ackit;class ckit;sell weapons;buy ackit;buy ckit;vstr hbuild" set hc12 "echo Buy;class rifle;sell weapons;buy rifle;vstr hbuy"
Теперь у нас каждой клавише 1-0 присвоена виртуальная переменная n1-n0, значение которых мы можем менять. Примерно вот так
set abuy "vstr abuy_echo; set n1 vstr abuy1; set n2 vstr abuy2; set n3 vstr abuy3; set n4 vstr abuy4; set n5 vstr abuy5; set n6 vstr abuy6; set n7 vstr abuy7; set n8 vstr abuy8; set n9 vstr abuy9; set n0 vstr abuy0;"
set abuild "vstr abuild_echo; set n1 vstr abuild1; set n2 vstr abuild2; set n3 vstr abuild3; set n4 vstr abuild4; set n5 vstr abuild5; set n6 vstr abuild6; set n7 vstr abuild7; set n8 vstr abuild8; set n9 vstr abuild9; set n0 vstr abuild0;"
set hbuy "vstr hbuy_echo; set n1 vstr hbuy1; set n2 vstr hbuy2; set n3 vstr hbuy3;set n4 vstr hbuy4; set n5 vstr hbuy5; set n6 vstr hbuy6; set n7 vstr hbuy7;set n8 vstr hbuy8; set n9 vstr hbuy9; set n0 vstr hbuy0;"
set hbuild "vstr hbuild_echo; set n1 vstr hbuild1; set n2 vstr hbuild2; set n3 vstr hbuild3; set n4 vstr hbuild4; set n5 vstr hbuild5; set n6 vstr hbuild6; set n7 vstr hbuild7; set n8 vstr hbuild8; set n9 vstr hbuild9; set n0 vstr hbuild0;"
Настроим переменные, которые связывают виртуальные кнопки с каждым из режимов - покупки/постройки.
Для покупки (human) -
set hbuy_echo "echo Buy Binding" set hbuy1 "echo Rifle;sell weapons;buy rifle;itemact rifle;buy larmour;sell battpack" set hbuy2 "echo Saw;sell weapons;buy psaw;itemact psaw;buy larmour;sell battpack" set hbuy3 "echo Shot;sell weapons;buy shotgun;itemact shotgun;buy larmour;sell battpack" set hbuy4 "echo Laser;sell weapons;buy lgun;itemact lgun;buy larmour;buy battpack" set hbuy5 "echo Chain;sell weapons;buy chaingun;itemact chaingun;buy larmour;sell battpack" set hbuy6 "echo MD;sell weapons;buy mdriver;itemact mdriver;buy larmour;buy battpack" set hbuy7 "echo Pulse;sell weapons;buy prifle;itemact prifle;buy larmour;buy battpack" set hbuy8 "echo Flamer;sell weapons;buy flamer;itemact flame;buy larmour;sell battpack" set hbuy9 "echo Lucifer;sell weapons;buy lcannon;itemact lcannon;buy larmour;buy battpack" set hbuy0 "sell weapons;buy ackit;buy ckit;itemact ackit;itemact ckit;vstr hbuild"
Для постройки (human) -
set hbuild_echo "echo build: 1:Telenode 2:Reactor 3:Turret 4:MedStation 5:Armory 6:Repeater 7:DefenceCPU 8:Tesla 0:Buy Mode" set mouseBuild "+attack; -attack; vstr sayTeam; bind MOUSE1 +attack" set hbuild1 "build telenode;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Telenode building" set hbuild2 "build reactor;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Reactor building" set hbuild3 "build mgturret;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Turret building" set hbuild4 "build medistat;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Medipad building" set hbuild5 "build arm;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Armory building" set hbuild6 "build repeater;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Repeater building" set hbuild7 "build dcc;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Defense computer building" set hbuild8 "build tesla;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Tesla building" set hbuild9 "" set hbuild0 "sell weapons;vstr hbuy"
Для постройки (alien) -
set abuild_echo "echo build: 1:Egg 2:OverMind 3:Acid 4:Trapper 5:Booster 6:Hive 7:Hovel 8:Barricade 0:Evolve Mode" set mouseBuild "+attack; -attack; vstr sayTeam; bind MOUSE1 +attack" set abuild1 "build eggpod;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Egg building" set abuild2 "build overmind;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Overmind building" set abuild3 "build acid_tube;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Acid Tube building" set abuild4 "build trapper;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Trapper building" set abuild5 "build booster;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Booster building" set abuild6 "build hive;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Hive building" set abuild7 "build hovel;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Hovel building" set abuild8 "build barricade;bind MOUSE1 vstr mouseBuild; set sayTeam say_team Barricade building" set abuild9 "" set abuild0 "vstr abuy"
Для эволюционирования (alien) -
set abuy_echo "echo Evolve: 1:Dretch 2:Basilisk 3:Adv.Basilisk 4:Marauder 5:Adv.Marauder 6:Goon 7:Adv.Goon 8:Tyrant 0:Build Mode" set abuy1 "class level0;echo Dretch" set abuy2 "class level1;echo Basilisk" set abuy3 "class level1upg;echo Adv.Basilisk" set abuy4 "class level2;echo Marauder" set abuy5 "class level2upg;echo Adv.Marauder" set abuy6 "class level3;echo Goon" set abuy7 "class level3upg;echo Adv.Goon" set abuy8 "class level4;echo Tyrant" set abuy9 "class builder; vstr abuild" set abuy0 "class builderupg;vstr abuild"
Ну вот, теперь поговрим об особенностях такого биндинга. Режимы переключаются через кнопку 0. Но, когда вы играете за алиенов вам нельзя назад эволюционировать в гранджера, поэтому рождаться им надо сразу с кнопки - или =. Так же для людей.
О режиме постройке. При нажатии на клавишу вы выбираете тип постройки и назначаете сообщение которое будет выдаваться при постройке. Сама постройка будет происходить при нажатии на правую клавишу мыши, после этого выдается сообщение, строиться постройка и клавиша снова перебиндивается на атаку.
Ну вот, теперь осталось несколько штрихов. Забиндим выброс гранаты, приминение аптечки, переключение между основным оружием и бластером, создание скриншота.
Граната - bind g "itemact gren;say_team Grenade!" Аптечка - bind m "itemact medkit" Переключение с бластером (на первую добавочную кнопку мыши) - bind AUX1 "itemtoggle blaster" Скриншот - bind F9 "cg_drawhbuy 0;cg_draw2d 0;wait 25;screenshotjpeg;cg_drawhbuy 1;cg_draw2d 1"
Потом надо же как то общаться с командой, забиндим на клавиши F5-F8 самые информативные сообщения.