Консольные команды в Quake 3. Часть 2. Макрос-клавиши.
Бывает много в случаев в Quake, когда быстро проделать несколько операций. При том так быстро, что никакие, даже самые набитые, пальцы не успеют сделать этот так быстро, как требует того ситуация. А особенно, если этот необычный набор операций надо проделывать часто. Так, например, можно часто увидеть такое в поведении ботов, а именно, быстро сменить одно оружие на другое сделать один выстрел и вернуться к прежднему оружию. Конечно, для ботов это плевое дело - проделать такое в любой момент при любых обстоятельствах и по несколько раз - ведь им не приходится жать на кнопки. И другое дело - живой игрок. В данной ситуации спасут макросы. Именно о них эта статья.
Как говорилось в первой части этой статьи (Консольные команды в Quake 3. Часть 1.), команда bind назначает какое-то действие на клавишу. Вся шутка в том, что этой команде абсолютно безразлично, сколько действий привязывать на кнопку. Именно с помощью этого можно сделать макрос (последовательный набор операций).
Самый простой способ создать макрос, прописать в конфиге или через консоль коману такого вида bind <клавиша> "<действие 1>; <действие 2>; <действие 3>; <действие 4>". Обязательно надо разделять команды символом ; (точка с запятой).
Но если таких макрос-кнопок много и вдруг захочется их переназначить... Очевидно, будет неудобно при каждом переназначении прописывать такую длинную строку в консоли. А в конфиг файле при большом количестве таких длинных строк просто можно заблудиться. В таком случае следует применить еще две команды: seta и vstr.
seta устанавливает значение любой переменной (даже еще не существующей) на совсем (прописывает ее в q3config.cfg). vstr возвращает значение переменной. И с помощью команды seta привязать макрос не к кнопке, а записать в переменную.
Здесь sgQuick это название переменной (выглядит приятнее чем строка, заключенная в ковычках далее!). А выражение в ковычках это набор операций, т.е. макрос. Этот макрос выбирает в инвентаре дробовик (weapon 3) делает один выстрел и выбирает ракетницу (weapon 5). Обратите внимание на многократно прописанную команду wait. Она делает небольшую задержку выполнения каких-либо действий. Команда attack (выстрел) прописана два раза - с плюсом и с минусом. Символ "+" означает, что клавиша зажата, "-" что отпущена. Если просто прописать +attack, то когда очередь в макросе дойдет до этой команды, персонаж будет стрелять без остановки и никакие нажатия других клавишь не помогут. Кроме того, после нажатия нескольких клавишь управление целиком заклинит!
Что касается количества команд wait. Следует помнить, что в оригинальном Quake 3: Arena и в модах для него динамика игры сильно различается, а потому для каждой версии (или мода) нужно делать свои задержки. Так, например, указанный выше макрос писался для Quake 3: CPMA. В этом моде все действия происходят очень быстро, смена оружия идет практически без задержки. А потому, использовано 5 и 3 wait'ов. Но, учитывая, что динамика игры в Quake 3: CPMA и Quake Live схожа, для этих версий игр можно применять одни и те же макросы. Таким образом, самое сложное при создании макросов это подобрать правильные задержки между действиями, чтобы они успевали завершиться до конца.
И так, после того, как ситуация по поводу длинных строк разъяснена, следует задуматься об организации "библиотеки" макрос-кнопок. Самый лучший вариант, прописать набор переменных с макросами в отдельный .cfg файл, а затем занести все эти переменные разом в игру с помощью команды exec через консоль. Пример.
exec myhotkeys.cfg
После этого через ту же консоль или через конфиг-файл можно биндить макросы на клавиши. Пример.
bind q vstr sgQuick
Вот тут-то и нужна команда vstr. Участок строки "vstr sgQuick" будет равносилен строке "weapon 3; wait; wait; wait; wait; wait; +attack; wait; wait; wait; -attack; weapon 5". Самое сложное в данном случае будет не забыть, какая переменная за какой макрос отвечает.
Но есть одно "НО". Желательно перед назначением переменных прописать в игре в консоли cvar_restart. Это избавит от нежелательных глюков. Один из них - макросы не работают! Особенно такое может быть, если игра используется давно и игрок за это время прилично помучал консоль. Вероятно, некоторые переменные начинают конкурировать... ну или что-то в этом роде.
P.S. Ну... и если все в порядке, удачных Вам и красивых фрагов! :]]