Разработчикам игр на Atril, часть 3: вызов скриптов
Чт Май 29, 2014 21:01
- Доступные действия:
Jumangee
Во всех бочках затычка
Разработчикам игр на Atril
Часть 3: Вызов скриптов
Актуально для: Atril 2.1
В своём туториале я уже писал, что не буду описывать синтаксис JavaScript, неплохой учебник по нему например есть здесь, поэтому сразу перехожу к описанию того, как вызывать эти скрипты. А тут всё очень разнообразно.
Вариант самый простой – "напрямую" – из текста другого скрипта.
Вызвать скрипт, можно просто по имени, если этот скрипт определён в этом же параграфе или он является глобальным. Напомню, что скрипт "существует" только в то время, когда активным параграфом (в игровой момент времени) является тот параграф, в котором определён скрипт.
Иллюстрация вызова скрипта из другого:
Нюансы "существования" скриптов отображены на схеме:
В верхнем примере видно, что в зависимости от пути к цели, "глобальный" скрипт может существовать, а может и не существовать. В нижней схеме приведён вариант решения данной проблемы.
Передача параметров в скрипт вызываемый напрямую
В случае, когда скрипт вызывается из другого скрипта, для передачи параметров необходимо использовать передачу объекта в форме нотации json, он-же – ассоциативный массив:
Т.е. в вызываемом скрипте существует объект arg всегда содержащий параметры, переданные в скрипт при вызове. С форматом описания передаваемого объекта можно познакомиться здесь.
Здесь кроется специфика того, что скрипт не является в чистом виде функцией (объектом) языка JavaScript. Так, в скрипте можно создать свою функцию, которую вызвать как обычную согласно синтаксису языка:
Вызов скриптов из условий
В предыдущей части у блоков упоминались дополнительные параметры-условия "if" и "ifnot". Для вызова скрипта из них, необходимо указать название скрипта, а в случае если необходимо передать параметры, добавить "?" и перечислить параметры, например:
Проверка передаваемых в скрипт значений
Для проверки передаваемых в скрипт параметров необходимо описывать специальные функции проверки, проверяющие наличие и тип значения. Это необходимо исключительно для уменьшения вероятности возникновения ошибок после публикации игры.
Например, в "шерлоке холмсе" используется вот такие два специальных скрипта, проверяющих передаваемые значения:
Пример вызова проверки:
Код скриптов:
if (val = '' || val ‘undefined’){
if (arg.def == undefined){
triggerError(‘Параметр не указан’, {value: val, env: env});
}
return arg.def;
}
return arg.value;
if (arg.def == undefined){
triggerError(‘Параметр не является числом’, {value: arg.value, env: env});
return;
}
return arg.def;
}
return parseInt(arg.value);
Разделы форума
-
Книго-игровые марафоны
- День приключенца
- Одолей Титана
- На Змеином острове
- Власть страха
- Монстр наносит ответный удар
- Теневой демон
- Стеклянные небеса
- Фон
- Зеркало Парфины: Повергнуть демона храма
- Королевская битва
- Киберпанк: Тени Найт-Сити
- Время решений
- Падшие ангелы
- Зиккурат Ленина
- Зловещие тропы Алмана
- Рандеву
- Корона королей
- Герои
- Небо над Бангкоком
- Каслевания: Битва в старом замке
- Рыцарь живых мертвецов
- Кольца злобы
- Око Сфинкса
- Мадам Гильотина
- Турнир юнлингов
- Политический отбор
- Хачиманский марафон
- Преддверие
- Идущие на смех
- Убийство в клубе Диоген
- Марафон безумного переводчика
- Рок-марафон
- Болотная лихорадка
- Проклятие замка «Пяти башен»
- Подземелья замка кошмаров
- Джунгарское нашествие
- Марафон
- МАКИМ
- МАКИМ
- Книго-игровой марафон 2014
- МАКИМ
-
Конкурсы
-
Обсуждение форумных РПГ
-
Большой Адронный Коллайдер
-
Утилиты для помощи ДМам
-
Безвременье
-
События и мероприятия
-
Книгровой клуб "Мы Текстовые!"