Рейтинг - 5.0 (2)

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

Это, наверное, самая используемая конструкции в скриптинге. Если дословно перевести, то получится:

если - то - конец

Рассмотрим поподробнее эту конструкцию и правила её написания. Итак, начнём:

// ...
create_thread @METKA
end_thread

:METKA
thread 'METKA'
wait 0
$RITA = 0

:METKA_1
wait 0
if
$RITA == 2
then
jump @METKA_2
end
jump @METKA_1

:METKA_2
wait 0
end_thread

Графически такую конструкцию можно представить так:

Смысл в том, что если условие срабатывает, то выполняется какое то действие ( в нашем случаи будет прыжок на метку ":METKA_2" ). Но так, как условие ложно, то мы продолжаем идти по скрипту вниз. В конце обычно ставят прыжок на начальную метку, в нашем случаи это прыжок на метку ":METKA_1". Это сделано для того, что бы зациклить скрипт. В большинстве случаев так делают, но это не всегда обязательно. Вот пример:

// ...
create_thread @METKA
end_thread
 
:METKA
thread 'METKA'
wait 0
$RITA = 2
 
:METKA_1
wait 0
if
$RITA == 2
then
$RITA = 1
jump @METKA_2
end
 
:METKA_2
wait 0
end_thread

А вот графический вариант:

В нашем случаи даже если условие не выполнится, то мы всё равно будем идти по скрипту вниз, то есть мы автоматически прыгнем на метку ":METKA_2". Ничего особенно не произойдёт. Но если наше условие сработает, как в данном случаи, то мы переменной "$RITA" будет задано число 1, а затем уже прыгнем на метку ":METKA_2". В обеих случаях мы завершим скрипт. Напишем более сложный скрипт и подробно его осмотрим:

// ...
create_thread @METKA
end_thread

:METKA
thread 'METKA'
wait 0
$RITA = 2
$INNA = 1 
$KATYA = 0

:METKA_1
wait 0
if OR
$RITA == 1
$RITA == 0
then
$INNA = 0
end

if AND
$KATYA == 1
$INNA == 0
then
jump @METKA_2
end

if
$KATYA == 0
then
gosub @METKA_3
end
jump @METKA_1 

:METKA_2
wait 0
end_thread

:METKA_3
wait 0
$KATYA = 1
$RITA = 0
return

И по традиции рассмотрим графический вариант:

Думаю, что для новичков такой скрипт все мозги взломает, но раз вы хотите научится скриптингу, а вы хотите научится, раз читаете этот урок, то давайте изучим такой скрипт :)

В первую очередь, на что следует обратить внимание, это на количество "if" в нашем скрипте. Как видим, таких в нас насчиталось три. Дальше, после этого мы смотрим что после них идёт. В нашем случаи - это прыжок на другую метку. Метку, которая зацикливает наш скрипт - делает так, что бы код повторялся. Раз он повторяется, то значит вполне возможно, что из него есть выход! Смотрим на наш скрипт, а точнее на то, что будет после слова "then". Мы видим, что после второго "then" есть прыжок, который дальше должен завершить скрипт. Дальше мы смотрим на условия, при которых он будет делать прыжок.

В нашем случаи это будет тогда, когда переменные "$KATYA" и "$INNA" будут равны 1 и 0 соответственно, причём одновременно! Как видим, пока эти условие не выполняются, так как в них разные значения. Смотрим дальше скрипт. Видим "gosub" на метку ":METKA_3". А условие, при котором будет прыжок выполняется. Значит прыгаем на метку, в корой изменяются значение переменных "$KATYA" и "$RITA". Как видим для завершения скрипта нам необходимо, что бы ещё переменная "$INNA" была равна нулю. Как видим пока она не равна, значит условие не выполняется и мы дальше продолжаем скрипт.

Дальше мы видим условие на выполнение хотя бы одного с них. Но мы уже видим, что 1-но точно выполняется ( я имею ввиду 1-й "if" ). Переменная "$RITA" равна 0. Раз условие срабатывает, значит переменная "$INNA" станет равной нулю, так как написано в скрипте ( см. первый "then", когда выполняется условие ), а раз она равна нулю и переменная "$KATYA" будет равна 1, то значит выполняются оба условия, при которых идёт прыжок на завершение скрипта.

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


Dyabda   (08.08.17 14:12)
:METKA
thread 'METKA'
wait 0
$RITA = 2
$INNA = 1
$KATYA = 0

:METKA_1

Разве прыжок на метку METKA_1 не нужен?

0
wmysterio   (08.08.17 16:22)
Скрипт выполняет команды сверху вниз, так что прыжок здесь не обязателен.
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Какие моды Вы хотите видеть на сайте?
Всего ответов: 5
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
wmysterio
Реклама