И снова здравствуйте. Я Kawaiidesu~~~ и это второй урок по программированию в бьёнде.
В прошлом мы рассмотрели создание переменные и методы, объекты, создание оных и использование процедур, в этом же мы глубже копнём методы, изучим основные возможности самого универсального цикла бьёнда, методов и действий("verb"), наследование, а также подружим два разных объекта.
Что такое метод, мы видели в прошлом уроке, но у него ещё множество интересных возможностей. Вспомните фонарь, он нам ещё сослужит службу. На данный момент он выглядит так:

Сделаем для фонаря лампочку. Конечно, столь малый код проще сделать прямо в фонаре, но если мы собираемся использовать лампочку где-то ещё или просто хотим отделить одно от другого, то лучше создать новый объект.
Лампочка будет обладать параметром "glower", который отвечает за состояние нити накаливания и "glass" за состояние стекла лампы. Конечно, вообще такие сложности ни к чему, но ради примера можно.

Иногда метод гораздо удобнее, чем проверка каждой переменной, поэтому сделаем такой для проверки:

Здесь можно увидеть два примера - в первом переменные "складываются", во втором "умножаются". Любой из них будет работать одинаково хорошо, но я возьму первый.
Как ранее говорилось, "return" отвечает за то, что возвращает метод - в нашем случае он отвечает, сломана ли лампочка. Сделаем эту лампочку тёплой и ламповой, пускай она греет людям сердца :3

С первой строкой, я думаю, всё понятно, но во второй "return" на той же строке, что и "if", разве так можно? Да, если после системного оператора(for, if, while и прочее) вам хватает лишь одной строки, то можно поставить код прямо на той же строке, точно также мы можем написать "for(var/mob/m in range®) m << "You feel some heat."" в одну строку. Но не переусердствуйте с этим, обычно так лаконично смотрится лишь простой код.
Следующая строка с for это цикл, довольно сложная строчка, я скажу, поэтому разберём её по кусочкам с конца: range(n) это системный метод бьёнда, который возвращает связный список "list"(далее). "in" это также системный оператор, но немного другой. Он сверяет список справа с условием слева и возвращает уже фильтрованный список. Вообще данная строка читается как "Для(for) всех объектов типа /mob(var/mob/m) в(in) радиусе 3(range(3))". Внимательные уже заметили "var" и, возможно, поняли, что мы создали переменную в цикле. Но чего мы этим добиваемся? Для этого надо рассмотреть работу "for" - он начинает листать список: берёт первый элемент списка, присваивает его укзанной и созданной специально для этого переменной, указанной в самом "for'е", исполняет код, указанный ниже него, потом повторяет, пока не кончатся объекты или не встретится оператор "break", который как "return" прерывает исполнение, но не метода, а конкретного цикла. Это самый сложный к описанию элемент и если вы его поняли - вы поймёте и дальше.
Переменной m будет присваиваться моб. "<<" - оператор вывода. В контексте бьёнда оператор вывода посылает файл, сообщение или что-то ещё прямо на текстовое поле всех клиентов, подключённых к данному объекту. К примеру, если двое человек управляют мобом, то им обоим пришлётся сообщение, указанное справа.
Теперь наша тёплая, ламповая лампочка светит тёплым, ламповым светом, но ведь её ещё нужно засунуть в фонарик, не так ли? Для этого мы будем использовать ссылку ("reference"/"ref") на объект. Ссылки создаются точно также, как и переменные. Так как в бьёнде используются нетипизированные переменные, то есть не важно, будет ли это строка, объект, число, то всё сокращается до лаконичного:

Но тут-то и возникает главное отличие ссылки от обычной переменной - ссылка не создаёт объект, она лишь указывает. То есть мы можем создать десять ссылок в разных местах, указать на один объект, и изменение через ссылку объекта отразится на всех ссылках.
Ограничение на изображения, убедительная просьба не писать, пока не выложу продолжение через 10 минут.








