- Сообщений: 1704
- Спасибо получено: 2735
Переменные, простые скрипты, функции rpg maker MV
Плюс несколько функций. Вдруг кому пригодится.
Проверка равенства переменной определенным числам:
Возвращение наличия определенного комментария на текущей странице события с нужным ID. Возвращает true или false.
Код проверки:
Битмапы.
создание прямоугольника определенного цвета ('#0000ff')с правым верхним углом в определенной точке, определенной ширины и высоты:
Вызов функции:
Координаты расположение "экрана" относительно карты (левый верхний угол экрана):
Соответственно, для того, чтобы узнать реальные координаты события необходимо прибавить к ним данные координаты экрана:
Показ в консольке текста из события - "сообщений"("message"), "выбора".
Сообщения выводятся текстом, выбор - массивом.
Вызов функции:
Сама функция:
Возвращает массив эффектов ("особенностей") оружия:
https://s.mail.ru/LJX7/T2PSJWDmd
1) Код параметра, где idWeapon - ид оружия, id - номер особенности в массиве особенностей оружия (начинается с нуля, как во всяком массиве)
2) Тип параметра
3) Показатель параметра
Движение одного события к другому событию.
В примере 4-ое событие будет двигаться к 10-ому.
Возврат кол-ва действий в "маршруте" события. Из этого списка следует вычесть единичку, ибо при добавлении действия в маршрут события, следом ВСЕГДА автоматически создается пустое действие.
Добавление действия в маршрут события:
, где "code: 45" - код действия из списка ниже. "parameters: " - нужен только в случае, когда код 45 (вставка в маршрут скрипта).
Функция для движения события к герою до тех пор, пока событие его "не догонит"
Без поиска пути, в случае препятствия событие тупо стоит. После того, как событие "догонит" игрока, включается лок.переключатель "D".
Вызов функции (вставлять в маршрут события):
Сама функция
Возвращает ИД тайла на клетке с координатами x и y на слое z.
1. Земля расположена на слое 0
2. Объекты повыше типа гор или травки из вкладки А - слой 1
3. Интересно, что например тайл с вкладки Б расположен либо на 2, либо на 3 слое.
- если на клетке один тайл с вкладки Б, то его слой - 3
- если два тайла с вкладки Б, то тот, который выше имеет слой 3, а который ниже - слой 2.
Возвращает заметку тайлсета БД
Возвращает значение тега в заметке тайлсета БД, где tag - нужный тег
При этом сам тег(tag) с его значением (value) должны выглядеть в заметке тайлсета так: <tag:value>
Возвращает массив значения тега в заметке тайлсета БД, где tag - нужный тег
Нужен в случаях, когда в одном теге необходимо передать несколько значений типа:
Блокировка управления.
При переводе переключателя в положении false персонаж будет только поворачиваться в нужную сторону но не двигаться
Очистка переменных
, где mainArr - массив который надо очистить.
Бывает необходимость очистить значения переменных или массивов после перехода на другую карту. Для этого мы можем очищать их в данной функции вместо того, чтобы на каждую новую карту вставлять автоматическое событие с очисткой переменных или массивов
Удобный "консоль лог"
До меня только пару месяцев назад дошло, что в мв есть поддержка ES2015 (а с недавнего времени по словам ДК и ES2016, ES2017). А значит можно использовать удобные шаблонные строки с обратными кавычками. Теперь например вместо конкатенации с кучей плюсов и открытий/закрытий кавычек
Проверка нажатия любой из клавиш клавиатуры:
Лучше его не использовать. Это связано с тем, что onXXX могут существовать только в единственном экземпляре — когда присваиваем функцию document.onkeydown = function(e){ .... }, мы таким образом заменяем предыдущую функцию. Т.е. если два плагина будут использовать document.onkeydown одновременно, то код первого плагина не выполнится.
Проверка нажатия любой из клавиш мыши:
Лучше его не использовать. Это связано с тем, что onXXX могут существовать только в единственном экземпляре — когда присваиваем функцию document.onkeydown = function(e){ .... }, мы таким образом заменяем предыдущую функцию. Т.е. если два плагина будут использовать document.onkeydown одновременно, то код первого плагина не выполнится.
Изменение параметра события на определенное время (изменение прозрачности, параметра наложения)
Вызов функции например для мигания события с ИД=10 на 70 миллисекунд:
Можно сделать анимацию с задержкой:
Можно творить забавные вещи, например при вводе кода ниже событие "пойдет" сначала на клетку с координатами (10,1), а затем (10,3) Главное указать скорость побольше, чтобы событие успело до туда сбегать
Взяв это на заметку, получаем своего рода простенький плагин "поиска пути" (кривой и без анимации ходьбы)
Сначала указав событию идти на клетку выше, и буквально через мгновение (70 миллисекунд) приказав ему идти обратно, мы можем эмулировать прыжок на месте:
Итак, вызов плагина для задания маршрута событию,герою:
, где id - номер события (или 0, если нужен герой), direction - направление, amount - количество повторений (например шагов)
Сама функция:
Возможность события с приоритетом "под персонажем" или "над персонажем" проходить сквозь другое событие.
Когда еще был на эйсе не очень понимал, почему сделано так, что например событие птица не может пролететь над лошадью.
Случай с приоритетом "Под персонажем" более понятный: те же двери в таком случае будут пропускать события "под персонажем". Но особой надобности ставить этот приоритет событию не особо вижу, кроме как дать другим событиям проходить над ним.
Движение события "вперед" по диагонали.
задать событию "поворот по-диагонали" в маршруте движения через скриптовую команду:
или в другом событии через скриптовую команду:
После этого при указании в маршруте "вперед" событие будет двигаться по диагонали
Сама функция:
Добавление чего-либо сразу после загрузки карты
Пропустить титульный экран, автоматически начиная новую игру.
Спасибо Ноксу
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
придется циклом перебирать объекты в массиве и смотреть нужный id в объектах.
В лодаше это выглядело бы в одну строчку: _.includes($dataMap.events, { id: ID });
Еще уточнение по поводу функции contains - ее нет в JS. Разработчики мейкера ее добавили сами, так что нужно быть осторожным.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DK пишет: $dataMap.events.contains(ID) - не будет работать. events - массив объектов, а не ID событий.
придется циклом перебирать объекты в массиве и смотреть нужный id в объектах.
В лодаше это выглядело бы в одну строчку: _.includes($dataMap.events, { id: ID });
Еще уточнение по поводу функции contains - ее нет в JS. Разработчики мейкера ее добавили сами, так что нужно быть осторожным.
хм, действительно, хз откуда то выражение взял. Исправил, проверить существование события можно этим условием:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DK пишет: $dataMap.events.contains(ID) - не будет работать. events - массив объектов, а не ID событий.
придется циклом перебирать объекты в массиве и смотреть нужный id в объектах.
В лодаше это выглядело бы в одну строчку: _.includes($dataMap.events, { id: ID });
Еще уточнение по поводу функции contains - ее нет в JS. Разработчики мейкера ее добавили сами, так что нужно быть осторожным.
Зато есть array.includes(element), что, вроде, то же самое, только называется по-другому.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
EvilCat пишет: В частности, он не поддерживался версией Хрома, встроенной в плеер MV.
[strike]К сожалению сложно сказать, какую версию NWJS они сейчас используют, можно лишь догадаться по дате 31.07.2017, что[/strike] они наконец-таки её обновили. Но тем не менее на сайте самого NWJS версии обновляются довольно часто. Не скажу, что это уж прям так необходимо, но тем не менее, на сегодняшний день свежая версия v0.26.6: от 14 ноября 2017, основана на Node.js v9.1.0, и Chromium 62.0.3202.94
p.s.
O! тут гугл подсказал, для того что бы узнать установленные версии, нужно ввести команду «process.versions» в консоль, и получим такую картину:
То есть мы видим, что все версии очень сильно устарели. Вот для примера, что выдаёт в туже консоль «nwjs 0.26.6»:
К слову, проект MV без каких-либо проблем запускается на NWJS.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DK пишет: А вот, что выдает бета версия мв 1.6:
Хмм,… интересненько
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
И не придётся больше объяснять, почему надо писать все эти "x.prototype.Y = function...", "(function() { ... })()", "X.prototype = Object.create(Y.prototype)"...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
EvilCat пишет: Отлично, скоро можно будет нормально использовать классовую нотацию
Ух ты! Это ES6?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Эмм, так классы и сейчас можно использовать. Вон, боевка KageDesu на классах написана.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Ух ты! Это ES6?
Пока можно потренироваться в браузере %)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Так, заодно, можно сделать 64-разрядную версию игры, чтобы быстрее работала)
Мои игры: Dolly's Afterlife (платформер) | Crossed Destinies (jRPG) >> Каталог всех игр русскоязычного сообщества RPG Maker <<
Старое: Dolly's Funeral (платформер) >> Скачать RPG Maker MZ <<
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
ZX_Lost_Soul пишет: А разве лицензия RPG Maker запрещает самостоятельно приложить к игре последнюю версию nwjs? Зачем вообще ждать пока обновят ту, что идёт в комплекте?
Так, заодно, можно сделать 64-разрядную версию игры, чтобы быстрее работала)
И к публикуемым плагинам её прилагать тоже? Даже зависимость от плагина-ядра - и то считается дурным тоном.
Впрочем, расходимся, оказывается, классовая нотация содержит большую недоделку по сравнению с тем, как она функционирует в других языках (в конструкторе нельзя обращаться к this, пока не вызвал super).
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
EvilCat пишет: в конструкторе нельзя обращаться к this, пока не вызвал super
Эээ,…
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
EvilCat пишет: Имеется в виду - в дочернем классе.
Хм, можно пример? Просто я немного не понимаю, что тут не так:
Вот тут расписаны все обращения.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
