Автор Тема: Скрипты для NewDark  (Прочитано 2592 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Chuzhoi

  • Тень
  • Сообщений: 9419
Скрипты для NewDark
« Ответ #30 : 28 Марта 2017 18:12:29 »
1. Что означает return true? Что все прошло успешно? А если нет (как такое вообще возможно?), тогда return что?
Если не написать return true, то, очевидно, функция вернет некое пустое значение, эквивалентное false. Во всех примерах, данных для lgscript, в обработчиках сообщений есть это return true, но никаких комментариев по этому поводу я не нашел. Возможно, это означает, вызвать ли последующие обработчики для данного сообщения, если они имеются (в других скриптах), или завязать с этим делом. Поскольку я не знаю толком, то обычно просто пишу return true (но надо бы все-таки поразбираться с этим делом).

2. А вот сама переменная определяется где?
Переменную придумал я. Определена она в скрипте (local frobCount = 0 в Lua и frobCount = 0; в белке). Назвать ее можно было как угодно.

message().to
message() - это функция, возвращающая сообщение, которое в данный момент послано нашему игровому объекту и которое мы обрабатываем. Само сообщение представляет собой объект с несколькими свойствами, которые могут различаться в зависимости от типа сообщения, при этом есть несколько стандартных свойств: from - ID игрового объекта (я специально буду говорить "игровой объект", чтобы отличить его от объектов, с которыми мы имеем дело в скриптах), который послал сообщение; to - ID игрового объекта, который получил сообщение (т. е. именно того объекта, к которому мы прицепили скрипт), message - имя сообщения и т. д. (остальное можно найти в API-reference_messages.txt, где описан базовый класс sScrMsg и его производные классы).

В Lua немножко другая схема - сообщение передается в виде Lua-таблицы через аргумент msg, но все остальное аналогично. ("Таблица" в Lua - это понятие, в общих чертах аналогичное объектам в Squirrel, хотя это не совсем одно и то же).

FrobWorldBegin - хоть что-то знакомое. Это передающийся сигнал. Но в двух версиях он почему-то называется по-разному. С какой стати?
Так решили авторы данных инструментов. В LGScript функции, обрабатывающие сообщения, называются точно так же, как и сами сообщения, а в белкоскрипте к этим именам еще нужно добавлять On. Мне больше нравится второй вариант, т. к. сразу понятно, что мы имеем дело с обработчиком сообщений, а не с какой-то обычной функцией (Или мы будем говорить "сигнал"? Я не против, нужно только определиться).

Ну и в заключение. Коней на переправе не меняют, так что до завершения кампании я объявляю мораторий на белку.
Совершенно правильное решение. Даже я, если ты попросишь написать еще какой-нибудь скрипт, напишу его на Lua. Незачем плодить инструменты и подпапки. Если, конечно, тебе в будущем не вздумается управлять погодой...

Оффлайн HellRaiser

  • Мастер Теней
  • Сообщений: 4302
Скрипты для NewDark
« Ответ #31 : 08 Июня 2017 23:19:47 »
Короч, нарыл на просторах ютуба:
Базовый курс лекций по сям/крестам. Будет интересно как студентам (или начинающим программерам), так и опытным гуру: чувак в процессе объяснения простых истин параллельно вещает очень много полезных нюансов, которые профессионалам хотя бы неплохо освежить в памяти (а тех, кто про эти нюансы не в курсах - запишем в первую категорию).

Короч, у кого достаточно времени -  наслаждайтеся  ;) Курс состоит из 21 лекции, в среднем по 1.5 часа каждая.
Сцылочка на плейлист.