Создание скриптов

Создание скриптов - учимся создавать скрипты.

toggle - простейший скрипт-выключатель.

toggle - это команда, с помощью которой можно создать самый простой скрипт-выключатель в игре.

Она работает только с переменными, имеющими диапазон значений 0 и 1, т.е. с теми переменными, которые можно либо включить, либо выключить.
Также она работает с командами. Например, по умолчанию она используется для команд menu и console, это выглядит следующим образом:

  • bind ESCAPE "togglemenu" и bind ` "toggleconsole".

Создается такой скрипт очень просто: перед любой переменной, имеющей диапазон значений 0 и 1 необходимо добавить toggle.

Например, если Вы хотите забиндить на клавишу включение/выключение вида оружия (cg_drawGun), то это будет выглядеть так:

  • bind X "toggle cg_drawGun"



И, в зависимости от установленного значения cg_drawGun в Вашем конфиге, вид оружия при каждом нажатии клавиши X будет либо включаться/выключаться, либо выключаться/включаться.

Главный недостаток команды toggle состоит в том, что сфера ее применения очень узкая, и с ее помощью нельзя создать сложные скрипты. Для этого существуют другие команды, речь о которых пойдет ниже.





cycle - простейший скрипт для циклического переключения.

cycle - это команда, с помощью которой можно создать простой скрипт-переключатель в игре.

Эта команда работает с переменными, имеющими обширный диапазон значений, например, cg_FOV - изменение угла обзора, в котором значения могут варьироваться от 90 до 120.

Создается такой скрипт сложнее, чем toggle, но все-таки тоже очень просто:

  • В начале, к выбранной Вами переменной (например, cg_FOV) добавляется команда cycle.
    Получается так: "cycle cg_FOV"

  • Затем, после переменной добавляется диапазон значений, в пределах которых будет производиться переключение.
    В нашем примере будет выбран диапазон от 90 до 120.
    Получается так: "cycle cg_FOV 90 120".

  • После этого добавляется значение, обозначающее шаг, с которым будет делаться переключение.
    В нашем примере будет выбрано значение 10.
    Получается так: "cycle cg_FOV 90 120 10".

    Т.е. при каждом нажатии бинда с таким скриптом буде выполняться переключение cycle cg_FOV
    между значениями 90 120 с шагом 10. Соответственно, будут циклично переключаться значения 90, 100, 110, 120.

  • Теперь привяжем все это к бинду и скрипт готов.
    Выглядит он следующим образом: bind X "cycle cg_FOV 90 120 10".



Тем не менее, команда cycle, также как и toggle, не позволяет создавать сложные скрипты.
Для этого существует команда vstr, которая иногда работает в паре с командой wait.





+vstr - более сложный скрипт-переключатель, по принципу нажал/отжал.

+vstr - это команда, с помощью которой можно создать как простой скрипт (наподобие скриптов с командами toggle и cycle), так и сложный скрипт, в котором будут выполняться сразу два действия.

Особенность этой команды в том, что скрипт с ее использованием будет работать по принципу нажал/отжал.

Т.е., пока Вы держите клавишу зажатой - выполняется команда 1, когда Вы ее отпускаете - выполняется команда 2.

Подробнее о командах, имеющих индекс +, смотрите в начале раздела Команды и бинды.

Например, с помощью этой команды можно создать скрипт для изменения угла обзора - cg_FOV, чувствительности мыши - sensitivity и размера прицела - cg_crosshairSize.
Такой скрипт позволит менять в игре дистанцию для стрельбы на близкую и дальнюю (close и long).

Создается такой скрипт следующим образом:

  • Для начала, необходимо придумать название командам для этого скрипта, которые и будут выполнять указанные действия.
    В этом примере будут выбраны названия close и long.

    Примечание: названия Ваших команд не должны совпадать с названиями переменных и команд игры.

  • Далее, мы напишем выполнение этих команд, поставив перед ними команду set - "выполнить".
    Получается так:

    set close
    set long

  • Теперь мы напишем те действия, которые будет выполнять каждая из команд.
    В нашем примере ими будут изменения значений переменных cg_FOV, sensitivity и cg_crosshairSize.
    Получается так:

    set close "cg_FOV 90; sensitivity 5; cg_crosshairSize 35"
    set long "cg_FOV 120; sensitivity 3; cg_crosshairSize 45"

    Примечание: между переменными должен ставиться регистр ; для отделения одной переменной от другой.

  • Далее, мы должны сделать так, что бы после выполнения команды close очередь переключалась бы на команду long и, соответственно, после выполнения команды long очередь переключалась бы на команду close.
    Т.е., чтобы команды выполнялись циклично.

    Делается это, как раз, с помощью команды +vstr.
    Получается так:

    "+vstr close long"

  • В итоге, скрипт выглядит так:

    set close "cg_FOV 90; sensitivity 5; cg_crosshairSize 35"
    set long "cg_FOV 120; sensitivity 3; cg_crosshairSize 45"
    "+vstr close long"

  • Теперь осталось только привязать команду +vstr к бинду, и наш скрипт готов.
    Выглядит он следующим образом:

    set close "cg_FOV 90; sensitivity 5; cg_crosshairSize 35"
    set long "cg_FOV 120; sensitivity 3; cg_crosshairSize 45"
    bind X "+vstr close long"



Также Вы можете создать два отдельных файла, указать в них свои настройки и прописать их выполнение в скрипте.

Такой вариант является более предпочтительным, если в Вашем скрипте содержится много переменных и команд.

В данном примере будут созданы файлы close.cfg и long.cfg.
В них мы поместим переменные, значения которых будут изменяться.

  • В файл close.cfg мы поместим следующие значения переменных:
    cg_FOV 90
    sensitivity 5
    cg_crosshairSize 35

  • А в файл long.cfg, соотвественно, мы поместим другие значения переменных:
    cg_FOV 120
    sensitivity 3
    cg_crosshairSize 45

Теперь, в свою очередь, файлы close.cfg и long.cfg мы поместим в папку etmain или в любую другую, созданную Вами подпапку.

Примечание: подробнее об этом смотрите в разделе Создание конфига -> autoexec.cfg.

    Выглядит это так:


А в скрипте пропишем выполнение этих файлов, выглядит это так:


  • set close "exec close.cfg"
    set long "exec long.cfg"
    bind X "+vstr close long"







vstr - более сложный скрипт-переключатель, по принципу нажал/нажал еще раз.

vstr - это команда, с помощью которой можно создать как простой скрипт (наподобие скриптов с командами toggle и cycle), так и сложный скрипт, в котором будут выполняться сразу несколько действий.

Также, в скрипте с использованием команды vstr можно прописать выполнения более чем двух команд, чего нельзя сделать при помощи команды +vstr.

В отличии от команды +vstr, скрипт с ее использованием будет работать не по принципу нажал/отжал, а по принципу нажал/нажал еще раз.

Т.е. при первом нажатии клавиши будет выполняться команда 1, при втором - команда 2, при третьем - 3 и т.д., в зависимости от количества команд в скрипте.

Например, можно сделать скрипт изменения угла обзора для трех дистанций: close,middle и long.

Создается такой скрипт следующим образом:

  • Для начала, также необходимо придумать названия командам для этого скрипта, которые и будут выполнять указанные действия.
    В этом примере будут выбраны названия close, middle и long.

    Примечание: названия Ваших команд не должны совпадать с названиями переменных и команд игры.

  • Далее, также как и в примере с +vstr, мы напишем выполнение этих команд, поставив перед ними команду set - "выполнить".
    Получается так:

    set close
    set middle
    set long

  • Теперь мы напишем те действия, которые будет выполнять каждая из команд. Это делается также как и в случае с командой +vstr.
    В нашем примере снова будет выбрано изменение значений переменных cg_FOV, sensitivity и cg_crosshairSize.
    Получается так:

    set close "cg_FOV 90; sensitivity 5; cg_crosshairSize 35"
    set middle "cg_FOV 105; sensitivity 4; cg_crosshairSize 40"
    set long "cg_FOV 120; sensitivity 3; cg_crosshairSize 45"

    Примечание: между переменными должен ставиться регистр ; для отделения одной переменной от другой.

  • Далее, мы должны задать цикличность выполнения команд при помощи команды vstr.

    Для начала, необходимо придумать название для команды, которая будет запускать этот цикл.
    В нашем примере - это будет range.

    Теперь пропишем выполнение этой команды после выполнения каждой из команд close, middle и long.
    Выглядит это так:

    set close "cg_FOV 90; sensitivity 5; cg_crosshairSize 35; set range"
    set middle "cg_FOV 105; sensitivity 4; cg_crosshairSize 40; set range"
    set long "cg_FOV 120; sensitivity 3; cg_crosshairSize 45; set range"

  • Теперь добавим команду vstr и названия команд, которые будут чередоваться при помощи команды vstr.
    Получается так:

    set close "cg_FOV 90; sensitivity 5; cg_crosshairSize 35; set range vstr middle"
    set middle "cg_FOV 105; sensitivity 4; cg_crosshairSize 40; set range vstr long"
    set long "cg_FOV 120; sensitivity 3; cg_crosshairSize 45; set range vstr close"

  • Теперь пропишем: с какой команды должна начинать выполнять чередование переключений команда range при помощи команды vstr.

    Выглядит это так:

    set range "vstr close"

    Т.е. чередование команд будет начинаться с команды close.

    В итоге, скрипт выглядит так:

    set close "cg_FOV 90; sensitivity 5; cg_crosshairSize 35; set range vstr middle"
    set middle "cg_FOV 105; sensitivity 4; cg_crosshairSize 40; set range vstr long"
    set long "cg_FOV 120; sensitivity 3; cg_crosshairSize 45; set range vstr close"
    set range "vstr close"

  • Теперь осталось только привязать команду range к бинду и наш скрипт готов.

    Выглядит он следующим образом:

    set close "cg_FOV 90; sensitivity 5; cg_crosshairSize 35; set range vstr middle"
    set middle "cg_FOV 105; sensitivity 4; cg_crosshairSize 40; set range vstr long"
    set long "cg_FOV 120; sensitivity 3; cg_crosshairSize 45; set range vstr close"
    set range "vstr close"
    bind X "vstr range"







wait - задержка выполнения скрипта.

wait - это команда, приостанавливающая выполнение скрипта.

Некоторые скрипты требуют промежутков времени между выполнениями своих команд. Команда wait устанавливает такой промежуток времени.

Единицей значения wait является FPS/2. Т.е. задержка, устанавливаемая этой командой исчисляется в FPS, поделенных на 2.

Другими словами, команда "wait 76" приостановит выполнение скрипта на 38 кадров.

Примечание: 20 FPS примерно равно 1 секунде.

Использование этой команды, например, необходимо для создания скрипта автоматического бросания страйка при выборе weaponbank 5 (маркера), с последующим переключением на weaponbank 3.

Выглядит такой скрипт следующим образом:

  • bind X "weaponbank 5; wait 75; +attack; -attack; weaponbank 3"




Поскольку между выбором маркера (weaponbank 5) и его выбрасыванием (+ attack) в игре проходит определенный промежуток времени, то его необходимо задать в скрипте, иначе команда "бросить" (+ attack) выполнится раньше, чем она станет доступна для выполнения в игре и, соответственно, скрипт не сработает.

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





echo - отображение на экране игрока информационных сообщений.

echo - это команда, с помощью которой можно отображать в окне всплывающих сообщений (numpopap) текст, написанный Вами.

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

Например, мы можем использовать эту команду в нашем скрипте для изменения угла обзора.
Берем скрипт:

  • set close "exec close.cfg"
    set long "exec long.cfg"
    bind X "+vstr close long"

Добавляем к командам close и long команду echo:

  • set close "exec close.cfg; echo"
    set long "exec long.cfg; echo"
    bind X "+vstr close long"

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

  • set close "exec close.cfg; echo cg_FOV 120"
    set long "exec long.cfg; echo cg_FOV 90"
    bind X "+vstr close long"

Далее можно раскрасить текст, используя индекс ^ и любой символ, обозначающий цвет:
Получается так:

  • set close "exec close.cfg; echo ^3cg^0_^3FOV ^1120"
    set long "exec long.cfg; echo ^2cg^0_^2FOV ^190"
    bind X "+vstr close long"

В итоге, когда мы переключаем команды скрипта, на экран выводятся сообщения об этом:







say - сообщение информации другим игрокам.

say - это команда, при помощи которой можно сказать что-либо другим игрокам.

Эта команда имеет 3 вариации:

  • say - сообщение для всех игроков.


  • say_team - сообщение только для игроков своей команды с указанием координат игрока.


  • say_teamnl - сообщение для игроков своей команды без указания координат.



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

Например: изменение места респауна, смену класса игрока, сообщение времени респавна соперника и т.д.

Используется эта команда также как и команда echo:

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






play - звук переключения команд скрипта.

play - это команда, при помощи которой можно проигрывать определенный звук.

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

Есть несколько видов звуков, которые используются в скриптах:

  • sound/menu/select
  • sound/menu/filter
  • sound/misc/am_pkup

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

Например, мы можем добавить такой звук в наш скрипт для изменения угла обзора.
Берем скрипт:

  • set close "exec close.cfg"
    set long "exec long.cfg"
    bind X "+vstr close long"

Добавляем команду play к бинду, на который "повешен" скрипт:

  • set close "exec close.cfg"
    set long "exec long.cfg"
    bind X "+vstr close long; play"

Добавляем звук, который будет проигрываться, например: sound/menu/select:
Получается так:

  • set close "exec close.cfg"
    set long "exec long.cfg"
    bind X "+vstr close long; play sound/menu/select"



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

Примечание:
Cтоит заметить, что Вы можете проиграть таким образом любой звук, когда либо воспроизводимый в игре. Путь к этим звукам: <путь к игре>/etmain/pack0.pk3/ ~sounds
(pack0.pk3 открывается архиватором (например Winrar'ом), ищется папка sounds)

Ну а дальше - слушайте, экспериментируйте =)

Только помните: любое изменение этого архива (косвенное и не косвенное) повлечет за собой нарушение MD5, в следствие чего Вы не сможете играть на серверах.
Поэтому данная информация носит в себе чисто "информационный характер". Лучше разархивировать и изучать копию.

Пример: bind MOUSE4 "kill; forcetapout; play sound/player/gib.wav"
Теперь, киляясь, Вы будете слышать звук гибания.

Зачем это надо и что это дает? Это дело вкуса и фантазии... Нужно  для удобства и комфортабельности. И уверяю Вас, немного подумав, пользу из этого извлечь можно.

На этом все :)

Comments