Введение в Q3-скрипты

Вступление
Чтобы сразу предовратить неизбежные вопросы во вступлении обозначим - что новенького в системе скриптов Quake III? Во-первых, те из вас, кто знаком с конфигами еще со времен Quake 2 (или даже Quake 1) возможно удивятся, узнав, что из игры убрана команда "alias", теперь ее нет. И чтобы создавать алиасы нужно пользоваться другой командой (см. ниже). И во-вторых, теперь в Quake III Arena ВООБЩЕ нет возможности написания алиасов навроде "+action", т.е. тех, которые начинают выполняться при нажатии на клавишу и прекращают выполнение после ее отпускания. Это конечно плохо, но придется пока с этим смириться.

Основы
Начнем помаленьку. Первым делом в игре необходимо настроить клавиши передвижения и управления оружием. Самый простой способ - это произвести настройку в меню игры (Setup-Configuration).

Однако любой, кто хочет научится разбиратся в скриптах, должен уметь настраивать все с консоли. Соответственно, для настроек клавиш существует команда "bind".

Например, я хочу, чтобы при нажатии клавиши "g" устанавливался ник игрока, мне нужно ввести в консоли команду:
bind g "name Goblin"
Конкретно для данной команды наличие кавычек необязательно, но как правило рекомендуется команды заключать в кавычки, что делает чтение длинных скриптов на порядок проще.

Алиас
Что такое "алиас"? Это последовательность команд, имеющая конкретное название. Под командами понимаются те команды, которые можно использовать в консоли игры.

Например, если бы мы хотели сделать алиас "Прыжок вправо", то включили бы в него команды
"начать_двигаться_вправо;сделать_прыжок;прекратить_двигаться_вправо".
После этого достаточно присвоить этот алиас клавише D bind D "прыжок вправо", и тогда при ее нажатии будет выполнена данная последовательность команд.

Как уже было сказано выше, команда "alias" в Quake III Arena была исключена. Чтобы создать свою последовательность команд, нужно создать свою переменную содержащую эту последовательность. Для этого существует команда set переменная "последовательность команд". А затем использовать команду vstr переменная, которая выполнит последовательность команд, указанных в переменной. Вот вам простой пример:
set rocket "weapon 5; echo Rocket Launcher chosen"
bind r "vstr rocket"

В этом примере создается переменная rocket и ей присваивается значение "weapon 5; echo Rocket Launcher chosen" (включить RL и потом вывести на экран надпись "Rocket Launcher chosen").

Затем клавише r присваивается команда "vstr rocket", которая выполняет последовательность команд в переменной rocket.

Теперь рассмотрим более сложный пример, демонстрирующий часто используемый принцип работы с переключением каких-либо команд:
set zoomin "+zoom; echo Zoomed In!; set zoomtoggle vstr zoomout"
set zoomout "-zoom; echo Zoomed Out!;
set zoomtoggle vstr zoomin" set zoomtoggle "vstr zoomin" set cg_zoomfov 25
bind z "vstr zoomtoggle"

В этом скриптике мы создаем три переменные ZOOMIN, ZOOMOUT и ZOOMTOGGLE. Первая переменная содержит команды, которые включают режим увеличения и присваивают переменной ZOOMTOGGLE значения второй переменной. А во второй все наоборот: режим увеличениявыключается, а ZOOMTOGGLE присваивается первая (ZOOMIN) переменная.

Таким образом, при нажатии клавиши Z в первый раз выполняется команда zoomtoggle, содержащая "vstr zoomin". После этого, команде zoomtoggle назначается команда "vstr zoomout" и поэтомупри следующем нажатии Z будет выполнена последовательность команд в переменной zoomout.

Видите как все просто?

Команда TOGGLE
И парру слов о довольно полезной команде в Quake3Arena: toggle переменная. Она делает простое, но нужное действие - переключает значение указанной переменной либо в "0", либо в "1". Например, если вы хотите, чтобы при нажатии X, то включался, то выключался счетчик FPS, сделайте следующее:
bind x "toggle cg_drawfps"
Данная команда может быть запросто использована в более сложных скриптах, для переключения значений простых (0/1) переменных.

Где все это сохранить?
Обычно все основные команды игрока хранятся в файле под названием "config.cfg". Но туда не всегда сохраняются те команды, которые мы вводили с вами в консоли. Поэтому самый надежный выход - это создание своего собственного конфига, в котором будут все ваши настройки.

Назвать этот файл можно либо autoexec.cfg, и тогда Quake III Arena будет выполнять этот файл при запуске игры, либо вы можете его назвать по своему: filename.cfg. И тогда в игре, вам нужно будет в консоли ввести команду на выполнение этого файла: /exec filename. Находится этот файл должен там же, где находится конфиг самой игры.

Каждый из скриптов можно использовать двумя способами. Либо копировать в свой конфиг и настраивать на удобные клавиши. Либо, если у вас много скриптов, а очередной используется редко - скопировать его в отдельный файл, например quake3/baseq3/script_1.rc и в игре загружать его с помощью команды "exec script_1.rc".

Не забывайте, что одна кнопка не может быть использована в двух разных скриптах. Либо следите, чтобы такого не случалось, либо копируйте скрипты в разный конфиги и экзечьте ("exec ..") их по необходимости.

Copyright c 2002 by DOOMer

Всего комментариев: 7

#1 Андей [unreg]

Познавательно.

#2 4увак [unreg]

чем то похоже на cs...

#3 Urfin

Хоть уже и не актуально, но:

> чем то похоже на cs...

Потому что движёк cs\hl создан на основе Quake и скрипты соответственно тоже похожие :)

#4 chtonicnoise

Древнее описание, читал его лет 6 тому назад если память не подводит.

#5 chtonicnoise

Изменение цвета рельсы //start script
set white "color 7;set nextcolor vstr blue"
set blue "color 1;set nextcolor vstr green"
set green "color 2;set nextcolor vstr cyan"
set cyan "color 3;set nextcolor vstr red"
set red "color 4;set nextcolor vstr magenta"
set magenta "color 5;set nextcolor vstr yellow"
set yellow "color 6;set nextcolor vstr white"
set nextcolor "vstr green"
bind *any key* "vstr nextcolor"
bind *any key* "vstr nextcolor;+attack;wait 6;-attack"
//end script

#6 chtonicnoise

Оружие
//start script - weapon 5,7
seta wpn5 "weapon 5; set qwpna vstr wpn6"
seta wpn6 "weapon 7; set qwpna vstr wpn5"
set qwpna "vstr wpn5"
bind e "vstr qwpna"
//end script

Рокет-джамп
//start script - Rocket Jump
seta cl_pitchspeed "9999"
set rjump "+lookdown;wait;wait;+attack;+moveup;wait;wait;-attack;-moveup;-lookdown;wait;centerview"
bind "z" vstr rjump
//script end

#7 chtonicnoise

Прошу администрацию добавить мои примеру в тему, а комментарии затереть за не надобностью.