Учимся писать скрипты


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

Учимся писать скрипты

Разберём один маленький скриптик — как же он устроен.

dim_flt 20
dim_act 20
dim_frm 20

Это шапка скрипта. Фактически для любого скрипта она одинокова. Советую использовать именно в таком виде, даже если в Вашем варианте нет, например, акторов, или фреймов. И в таком количестве. Впрочем, с количеством проще: используйте ровно столько акторов (персонажей) и фреймов (мест, куда они будут телепортироваться, куда будут идти или ехать), сколько предполагаете задействовать в скрипте, но с небольшим запасом на случай, если будете исправлять скрипт, добавляя новых персонажей, чтобы потом лихорадочно не искать неизвестную, еле заметную ошибочку, из-за которой всё будет как-то не так ;)

findactor 0, "Tommy"
findactor 1, "NULL"

Это список задействованных персонажей (акторов) скрипта. Параметр "NULL" обозначает "нулевой" (это по-немецки) и означает как бы "временный, несуществующий" актор. Таким образом чаще всего показывают для удобства дальнейшего просмотра скрипта, например, актор машины (или персонажа), который (-ая) будет находиться поблизости Томми, если далее в скрипте будет задействована такая команда "findnearactor 0, 1, CAR[Enemy]" (чтобы видно было, что, например, случайная машина из трафика задействована именно под цифрой "1", а не другой).

findframe 0, "Tommy"

Это задействованный список фреймов (в данном случае для Тома).

let flt[0] = 0

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

label 101

Это первая метка (лэйбл), с неё часто начинается любая основная часть скриптов.

… // какие-то команды:

if flt[0] = 1, -1, 102

Условная команда, указывающая, что при значении равном единице, действие скрипта перейдёт дальше (вниз), а если значение будет иным (в данном случае, равное нулю, т.к. сразу под шапкой скрипта значение параметра было определено именно нулю), то переход в метку 102.

… // какие-то команды в этом скрипте:

let flt[0] = 0

Возвращаем значение, равное нулю, чтобы в следующий раз задействовать метку 102.

goto 101

Этой командой зацикливаем скрипт, таким образом произойдёт переход, возврат к первой метке, в данном случае — к метке 101.

label 102

… // какие-то команды в этом скрипте:

let flt[0] = 1

Теперь ставим значение параметра равным единице, чтобы задействовать то содержание скрипта, что идёт под меткой 101 сразу после проверочной команды "if flt[0] = 1, -1, 102". Таким образом произойдёт переход вниз скрипта, переход дальше по содержанию, а не в метку 102.

goto 101

Этой командой-меткой зацикливаем скрипт в метку 101. Таким образом произойдёт возврат для выполнения повторного действия в данном скрипте.

Продолжение следует или нет…


 La tumultuosa vita di Tommy Angelo
 Конкурс №34
 Убийство с помощью бочки
 Прохождение Мафии

Войдите, чтобы комментировать