- Сообщений: 1704
- Спасибо получено: 2735
Переменные, простые скрипты, функции rpg maker MV
Lekste пишет: Разбивать теги по пробелу не лучшее решение - значения с пробелом обрежутся и будет каша.
в данном случае пробелов не будет, как и строковых данных, используются только цифры.
Я раньше пробелы вообще не использовал, отделял запятыми, но потом увидел у Пещерного и решил что для цифр почему бы и нет
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
При переводе переключателя в положении false персонаж будет только поворачиваться в нужную сторону но не двигаться
Очистка переменных
, где mainArr - массив который надо очистить.
Бывает необходимость очистить значения переменных или массивов после перехода на другую карту. Для этого мы можем очищать их в данной функции вместо того, чтобы на каждую новую карту вставлять автоматическое событие с очисткой переменных или массивов
Удобный "консоль лог"
До меня только пару месяцев назад дошло, что в мв есть поддержка ES2015 (а с недавнего времени по словам ДК и ES2016, ES2017). А значит можно использовать удобные шаблонные строки с обратными кавычками. Теперь например вместо конкатенации с кучей плюсов и открытий/закрытий кавычек
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Проверка нажатия любой из клавиш клавиатуры:
Проверка нажатия любой из клавиш мыши:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Сейчас рекомендуют не использовать onXXX — вместо них лучше использовать addEventListener('XXX', ...). Это связано с тем, что onXXX могут существовать только в единственном экземпляре — когда мы присваиваем функцию document.onkeydown = function(e){ .... }, мы таким образом заменяем предыдущую функцию. Т.е. если два плагина будут использовать document.onkeydown одновременно, то код первого плагина не выполнится.
А у addEventListener такой проблемы нет. Поэтому рекомендуется переписать код с addEventListener:
Проверка нажатия любой из клавиш клавиатуры:
Проверка нажатия любой из клавиш мыши:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Dmy пишет: Хотелось бы уточнить одну вещь.
Сейчас рекомендуют не использовать onXXX — вместо них лучше использовать addEventListener('XXX', ...). Это связано с тем, что onXXX могут существовать только в единственном экземпляре — когда мы присваиваем функцию document.onkeydown = function(e){ .... }, мы таким образом заменяем предыдущую функцию. Т.е. если два плагина будут использовать document.onkeydown одновременно, то код первого плагина не выполнится.
Спасибо! Обновил первый пост
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DK пишет: Пора бы уже убирать код под спойлеры, а то пост большой получается
не,с ними неудобно. так сразу видишь код, можешь быстро его найти, понять то ли это искал, скопировать и вставить куда надо. А так придется тыкаться, раскрывать каждый спойлер.
это опять же на мой взгляд и дело удобства, но так как этой темой пользуюсь наверное в основном я, то пока оставлю как было, тем более в отличии от картинок много памяти он не ест
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Вызов функции например для мигания события с ИД=10 на 70 миллисекунд:
Или например для повышения прозрачности события на столько же миллисекунд:
Можно сделать анимацию с задержкой:
Можно творить забавные вещи, например при вводе кода ниже событие "пойдет" сначала на клетку с координатами (10,1), а затем (10,3) Главное указать скорость побольше, чтобы событие успело до туда сбегать
Взяв это на заметку, получаем своего рода простенький плагин "поиска пути" (кривой и без анимации ходьбы)
Сначала указав событию идти на клетку выше, и буквально через мгновение (70 миллисекунд) приказав ему идти обратно, мы можем эмулировать прыжок на месте:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Когда-то давно мне надо было написать функцию, которая двигала бы героя или событие по определенному маршруту. Тогда мне помог ДК, быстренько ее набросав. Правда для героя она не сильно помогала - после заданного маршрута он останавливался и не двигался. ДК тогда был занят, я разобраться не смог, в итоге благополучно на это забил.
НЕДАЛЕКОЕ ПРОШЛОЕ (несколько месяцев назад):
С тех пор прошло много времени, и вот пару месяцев назад снова потребовалось задавать маршрут, но чисто для событий. Я с этим благополучно справился, позабыв, что изобретаю велосипед, который мне состроил ДК еще полтора года назад.
НАШИ ДНИ (в промежутке с 23:00 до 01:00 следующего дня):
А вот дело опять коснулось маршрута героя, то поймал тот же баг. Тут-то я и вспомнил ту функцию ДК. Достав со старого диска запылившийся плагин от ДК, я решил покопаться в именно в нем, благо он был красивее и универсальнее моего.
Спустя часа два наконец понял, как исправить ту ошибку. Надо всего лишь добавить в конец маршрута команду "окончание маршрута"(ROUTE_END), которая делает параметр _moveRouteForcing равным "false" и позволяет герою дальше вершить свои дела:
Ну и добавил параметр, который скипает движение, если впереди непроходимый тайл или событие:
Проблемы остались. Например, при присвоении маршрута событию свой прежний маршрут он забывает. В принципе не беда: сохраняем маршрут в переменную, а потом после завершения маневра опять присваиваем событию первоначальный маршрут. Хотя, может есть вариант элегантнее?
Итак, вызов плагина для задания маршрута событию,герою:
, где id - номер события (или 0, если нужен герой), direction - направление, amount - количество повторений (например шагов)
Сама функция:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Когда еще был на эйсе не очень понимал, почему сделано так, что например событие птица не может пролететь над лошадью.
Случай с приоритетом "Под персонажем" более понятный: те же двери в таком случае будут пропускать события "под персонажем". Но особой надобности ставить этот приоритет событию не особо вижу, кроме как дать другим событиям проходить над ним.
DK пишет: Какой ужасный код я писал несколько лет назад
Был бы рад узнать, как бы ты щас его написал =З
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Также можно было сделать так:
Чтоб, в случае чего, было проще поменять переменную только в одном месте и warn не писать в нескольких местах, если добавится еще случаев, когда направление не определено.
А еще лучше, switch убрать в отдельную функцию.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1) почему вы все пишите "if (code === undefined)", а не "(!code)"?
2) почему, Лексте, в "default" присваиваешь "undefined"?
во-первых, "code" и так будет "undefined", если оно не будет равно ни одному из значений свича
во-вторых, "undefined" - это по сути значение которое еще не задано, свойство которого нет и т.д. А тут ты намеренно задаешь значнеие, поэтому имхо надо приравнивать к "null". даже есть фраза " JavaScript использует undefined, а программисты должны использовать null"
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
А так, да, null надо использовать
Может в варианте с анонимной функцией и хуже читабельность, но от выноса свитча в отдельную функцию будет точно лучше.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Так это анонимная функция!..Lekste пишет: Может в варианте с анонимной функцией и хуже читабельность, но от выноса свитча в отдельную функцию будет точно лучше.
Там в let code = { ... }() точно (() => ...) не пропущено? Или это какой-то сверхновый синтаксис?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Вынести switch было бы очень хорошо в отдельную функцию, соглашусь.
Но если не выносить то...
1. Код сложнее понять (Dmy даже не сразу понял, что это анонимная функция),
2. Выделять память на анонимную функцию и тратить время на вызов этой функции, в то время, когда в моем случае всего лишь маленький свитч.
Зачем так усложнять все - непонятно.
Но опять же все варианты рабочие (даже самый первый
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Кому понадобится - нагуглит.
Затраты незначительные. Пример был как переходный от свитча к отдельной функции, типа группируем фрагмент в логический блок.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
