Миничат

AnnTenna 2 дн. даже не верится что завтра уже 1 мая
poca 3 дн. А вот и среда =)
AnnTenna 4 дн. Ничего скоро уже майские...
MarsKnight 24.04.2026 18:48 Пережили эту рабочую недельку, пора пепечилить)
poca 24.04.2026 03:26 o_O пасиб за ссыль, похождения зелёной какахи доставили :D Ёмаё, куда катится игропром? =_=
Kerotan 24.04.2026 00:43 https://www.youtube.com/watch?v=vdUo12Zb1FU&t=5194s
Kerotan 24.04.2026 00:43 Из наших видел на RPG Maker Showcase 2026 - Exellent Award - "Heroines of Swords & Spells 2" (Best Comment Award) 1:00:03
Jas6666 23.04.2026 20:14 В принципе сами разработчики мейкера каждый год проводят "Фестиваль RPG Maker" вбей в поиск, выдаст страницу в стиме, там игры. сам уж решай стоящие ли игры, просто по отзыва
tim103 23.04.2026 15:05 Слушайте, а есть за последнее время вообще какие-то прорывные игры, которые в какой-то степени выстрелили в стим, и написанные на Rpg Maker? Если не считать старые проекты, по типу to the moon?
AnnTenna 23.04.2026 14:56 у нас жесть а не погодка)
AnnTenna 23.04.2026 14:45 доброго дня) как у вас погодка?)
ajir 20.04.2026 11:44 Phavn: Отлично!
Phavn 20.04.2026 10:54 Спасибо помогло. Вышел - куки данного сайта стёр - зашёл - заработало.
ajir 20.04.2026 10:37 Phavn: Если и это не помогает, не видишь - значит увы сбой с залогиниванием на форуме, попробуй очисть все данные сайта в браузере, залогиниться на первой странице сайта, перейти на форум, перейти в нужный подфорум и создать тему.
ajir 20.04.2026 10:35 Phavn: "Форум Светлая Зона и Академия RPG Maker Свободный Новая тема Темы прочитаны Подписаться" т.е. ищи "Новая тема".
Phavn 20.04.2026 10:10 Привет всем, кажется я уже спрашивал когда-то об этом — но как мне создать тут новую тему на форуме? Я их уже создавал, но теперь кнопки "создать тему" не вижу.
VaNyuHa 18.04.2026 05:33 мда... писал писал, а оказывается длинные смс нельзя, хах! В общем, понимаю, что можно через общие события и переменные было указывать координаты событий и игрока, и если мое нужное условие выполняется - активировать событие, но на этот раз просто решил узнать способ проще, вот и все)
VaNyuHa 18.04.2026 05:30 MarkerIl, согласен, этим мне и нравится rpgmv. Фантазия есть, в своей игре уже много головоломок на разную тему реализовал через общие события и встроенные функции. Но из-за работы и семьи мало времени на это... так что бывает в свободное время на работе сразу на черновике прописываю то, как будет работать задуманная головоломка, например (вращающи
MarkerIl 17.04.2026 16:12 VaNyuHa для такого есть параллельные события. Как бы, почти все базовые необходимые функции решаются ивентами и фантазией.) Все же, в первую очередь, Мейкер - это конструктор. И так как мне больше нравятся ивенты, чем скрипты, я и предложил такой вариант.
MarkerIl 17.04.2026 16:12 VaNyuHa для такого есть параллельные события. Как бы, почти все базовые необходимые функции решаются ивентами и фантазией.) Все же, в первую очередь, Мейкер - это конструктор. И так как мне больше нравятся ивенты, чем скрипты, я и предложил такой вариант.
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

MV 1.6: Что нового?

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 2 мес. назад #102675 от Mur
Mur создал тему: MV 1.6: Что нового?
Как многие уже заметили, на днях в Steam обновился RPG Maker MV до версии 1.6. Авторы настоятельно рекомендовали сохранить копию своего проекта и как оказалось не зря.

Помимо того, что ПРИНУДИТЕЛЬНО обновились базовые скрипты в «старом» проекте, выяснился один не ОЧЕНЬ приятный (лично для меня) момент. Изменилась область видимости переменных в скрипте плагина и как следствие практически все мои скрипты «встали колом». :ohmy:

Например раньше можно было написать:
Code:
(function() { var params = PluginManager.parameters('MUR_PLUGIN'); var aaa = params["aaa"]; })();

И наша переменная aaa была доступна в любой части проекта, в том числе к ней можно было обратиться внутри базовых классов rpg maker. После обновления переменная более недоступна и единственный способ либо выносить её за пределы function() и делать глобальной, либо не ставить в начале var.

С чем это связано я не знаю, возможно EvilCat или DK смогут объяснить, но факт остаётся фактом. Шанс того что глобальная переменная с таким же именем перетрётся другим плагином 50 на 50 :silly:

Видимо придётся меня стиль написания, отказываться от простых function и оформлять в виде своего класса *facepalm*



Предлагаю собрать в теме какие ещё «нововведения» затронули ваши проекты? :blush:
Спасибо сказали: AnnTenna, poca

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
8 года 2 мес. назад #102677 от DK
DK ответил в теме MV 1.6: Что нового?
Все нововведения связаны с поддержкой ES6: habrahabr.ru/post/305900/
Спасибо сказали: Mur

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
8 года 2 мес. назад #102701 от EvilCat
EvilCat ответил в теме MV 1.6: Что нового?
Mur, разве так было? Ведь оборачивание в самовызываемую анонимную функцию всегда служило лишь предотвращению засорения глобального пространства временными переменными. Нет никакой другой необходимости писать такую неуклюжую конструкцию вместо простого
Code:
var params = PluginManager.parameters('MUR_PLUGIN'); var aaa = params["aaa"];

Иначе говоря, (function() {...})() - это не какое-то хитрое заклинание, чтобы строчки кода запустились. Без него прекрасно всё запустится. Но переменные, объявленные как var, будут все глобальными, а если их обернуть в функцию - то они будут ограничены рамками этой функции.
Спасибо сказали: Lekste

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
8 года 2 мес. назад #102704 от Lekste
Lekste ответил в теме MV 1.6: Что нового?
Я так понял, у Mur переменная стала не видна при использовании в дополнениях к мейкеровским классам, которые(дополнения) объявлены внутри function() { дополнения }()?

Или в других плагинах?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 2 мес. назад #102705 от Mur
Mur ответил в теме MV 1.6: Что нового?

EvilCat пишет: Mur, разве так было?


В каком смысле было? Работало раньше? Ну как бы да.

EvilCat пишет: Ведь оборачивание в самовызываемую анонимную функцию всегда служило лишь предотвращению засорения глобального пространства временными переменными.


Ну собственно да, именно для этого обёртку и делали.

EvilCat пишет: Иначе говоря, (function() {...})() - это не какое-то хитрое заклинание, чтобы строчки кода запустились. Без него прекрасно всё запустится. Но переменные, объявленные как var, будут все глобальными, а если их обернуть в функцию - то они будут ограничены рамками этой функции.


Да не, по function() у меня вопросов нет, вопрос был в другом:

Для наглядности пример:
Code:
(function() { var aaa = "Test!"; var Game_Event_setupPageSettings = Game_Event.prototype.setupPageSettings; Game_Event.prototype.setupPageSettings = function() { Game_Event_setupPageSettings.call(this); console.log("aaa=" + aaa); } })();

До версии 1.6, при запуске мы получим в отладчике сообщение:
Code:
aaa=Test!

Начиная с 1.6 мы получаем сообщение об ошибке, что aaa undefined

Но! Если мы уберём в начале var:
Code:
(function() { aaa = "Test!";

То и версии 1.6 получим желаемый результат.

Сейчас я вообще делаю по другому, не знаю насколько это правильно, но подсмотрено у Galv:
Code:
var Imported = Imported || {}; Imported.MUR_NPC = true; var MUR = MUR || {}; // Глобальный object MUR.NPC = MUR.NPC || {}; // object плагина NPC MUR.NPC.npc_current_id = 0; // Храню свои переменные плагина MUR.NPC.showText = function (actorName) { // Функция плагина итд. } // Ну и соответственно внутри базовых классов тоже обращение такое: var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { _Game_Interpreter_pluginCommand.call(this, command, args); MUR.NPC.npc_current_id = 1; };

Ну как я понимаю в такой конструкции больше обёртка (function() { ... })(); не нужна?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 2 мес. назад #102706 от Mur
Mur ответил в теме MV 1.6: Что нового?

Lekste пишет: Я так понял, у Mur переменная стала не видна при использовании в дополнениях к мейкеровским классам, которые(дополнения) объявлены внутри function() { дополнения }()?


Ну собственно выше всё и рассказано.

Lekste пишет: Или в других плагинах?


не не не, от других плагинов мы собственно и экранировались с помощью function()

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
8 года 2 мес. назад #102711 от DK
DK ответил в теме MV 1.6: Что нового?
Мур, пожалуйста, записывай в Imported версию плагина, не булевую переменную :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
8 года 2 мес. назад #102714 от Lekste
Lekste ответил в теме MV 1.6: Что нового?
Зач м вобще нужно это Imported, если пожно проверить переменную с объектом NPC?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
8 года 2 мес. назад #102716 от Amphilohiy
Amphilohiy ответил в теме MV 1.6: Что нового?
Только что скачал MV, проверил что версия 1.6.0, проверил твой пример для наглядности и... работает. Может кто подтвердить что [strike]я особенный[/strike] баг воспроизводится?

Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Спасибо сказали: sinder

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
8 года 2 мес. назад #102717 от DK
DK ответил в теме MV 1.6: Что нового?

Lekste пишет: Зач м вобще нужно это Imported, если пожно проверить переменную с объектом NPC?

Ты о чем ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 2 мес. назад - 8 года 2 мес. назад #102718 от Mur
Mur ответил в теме MV 1.6: Что нового?

DK пишет: Мур, пожалуйста, записывай в Imported версию плагина, не булевую переменную :)


А в чём разница? Я могу и внутри своего класса хранить версию в переменной?

Я просто к чему это, так многие делаю, вот тот же Yanfly например:
Code:
var Imported = Imported || {}; Imported.YEP_BattleAICore = true; var Yanfly = Yanfly || {}; Yanfly.CoreAI = Yanfly.CoreAI || {};

Lekste пишет: Зач м вобще нужно это Imported, если пожно проверить переменную с объектом NPC?


Рискну предположить, что по этому Imported проверяется, что модуль уже загружен. Я так понимаю это когда у тебя есть несколько различных библиотек и одни зависят от других, и что бы не было каши делается такая проверка.
Последнее редактирование: 8 года 2 мес. назад пользователем Mur.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Программист JavaScript Разработчик Проект месяца 2 место 2 место Готв
Больше
8 года 2 мес. назад #102719 от sinder
sinder ответил в теме MV 1.6: Что нового?
Не знаю, что у тебя там не так, но твой пример нормально работает в 1.6 версии мейкера. Создал для тест новый проект на версии 1.6, скопировал твой пример и

И это логично, такой метод написания плагинов использовали многие, если бы проблема была, то умерло бы просто 50%+ всех плагинов. На деле же, проблемы буквально в десятке-другой плагинов и то не из-за этого.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 2 мес. назад #102722 от Mur
Mur ответил в теме MV 1.6: Что нового?

Amphilohiy пишет: Только что скачал MV, проверил что версия 1.6.0, проверил твой пример для наглядности и... работает. Может кто подтвердить что [strike]я особенный[/strike] баг воспроизводится?


Ээээ… :ohmy:

А вот это уже странно ибо действительно стало работать :unsure:

Ну тут два варианта, либо что-то обновили втихоря, либо как-то у меня «совпали звёзды», ибо точно не работало :blush:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
8 года 2 мес. назад #102723 от Lekste
Lekste ответил в теме MV 1.6: Что нового?
Dk, я о том, что почему бы не проверять на Mur.NPC != undefined и не использовать лишний объект Imported?
А версию, как было сказано Mur, брать из самого плагина.
Спасибо сказали: EvilCat

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 2 мес. назад - 8 года 2 мес. назад #102724 от Mur
Mur ответил в теме MV 1.6: Что нового?

Lekste пишет: Dk, я о том, что почему бы не проверять на Mur.NPC != undefined и не использовать лишний объект Imported?


Хм, как показал поиск по зарубежным форумам, на самом деле этот Import не нужен. Это пришло из Ruby и по сути в JavaScript не используется. А проверить загружен ли плагин, можно спросив PluginManager._scripts и он вернёт список загруженных плагинов :silly:

Другой вопрос это с
Code:
var MUR = MUR || {};

я так понимаю, что это сделано для того, что бы иметь доступ ко всем своим (загруженным) плагинам из любого другого плагина?

Lekste пишет: А версию, как было сказано Mur, брать из самого плагина.


А в каком случае эта версия может вообще понадобится? Если только оооочень что-то глобально поменялось в модуле?

Но даже если и так, и например не найден метод BBB в библиотеке AAA, то не важно какая версия, главное обработать эту ошибку и как-то сообщить, нэ? :unsure:

И да, раз уже пошел разговор про структуры, я так понимаю, что теперь можно делать просто:
Code:
MUR.NPC.set_block = function (blockId, restart_blocks) { ... }

Без всяких prototype именно благодаря ES6? или я опять что-то путаю?
Последнее редактирование: 8 года 2 мес. назад пользователем Mur.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
8 года 2 мес. назад #102729 от EvilCat
EvilCat ответил в теме MV 1.6: Что нового?
Ещё что нового: после апдейта Аваст, довольный как кот, сообщил, что впервые за много лет наконец-то остановил угрозу: страшный файл nw.exe из папки Мейкера... %)
Спасибо сказали: DK

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
8 года 2 мес. назад #102730 от EvilCat
EvilCat ответил в теме MV 1.6: Что нового?

Mur пишет: И да, раз уже пошел разговор про структуры, я так понимаю, что теперь можно делать просто:

Code:
MUR.NPC.set_block = function (blockId, restart_blocks) { ... }

Без всяких prototype именно благодаря ES6? или я опять что-то путаю?


Мне не хватает знания об устройстве плагина, чтобы ответить точно... Просто перескажу, как работают прототипы.

Возьмём объект Кот и вызовем у него метод Мяу. У объекта Кот либо есть поле под названием "Мяу", либо нет. Если его нет или если оно не исполняемое (не функция), то получится ошибка.

Но что если мы создали Кота с помощью функции "СемействоКошачьих"? Тогда объект Кот будет считать, что у него есть конструктор - функция СемействоКошачьих. Функции - тоже объекты, и если у СемействаКошачьих есть поле под названием "прототип", то прежде чем отчаяться найти поле Мяу, Кот обратится к полю "прототип" своего конструктора. Если в этом поле объект, у которого есть поле под названием "Мяу", то это всё равно, как если бы у самого Кота было такое поле.

Таким образом, когда мы вызываем "MUR.NPC.set_block(...)", то либо у самого объекта MUR.NPC должно быть поле под названием "set_block"... Либо MUR.NPC должно быть создано с помощью какого-нибудь конструктора (функции), у которого есть поле под названием prototype, и в этом поле лежит объект с полем под названием "set_block"... Если MUR.NPC не создано с помощью конструктора, но само имеет поле prorotype, в котором записаны какие-то функции под какими-то названиями - то вызов MUR.NPC.set_block(...) даже и не подумает к ним обратиться.

Как и в случае с (function() {...})(), запись с prototype - это не какой-то извращённый способ добавлять методы классу вместо простого def, а механизм, имеющий определённую логику и назначение.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
8 года 2 мес. назад - 8 года 2 мес. назад #102732 от Lekste
Lekste ответил в теме MV 1.6: Что нового?
Если верить тому, что написано по ссылке DK, теперь можно писать вобще:
Code:
MUR.NPC.set_block() { ... }

Ну и еще, возможно будет очень удобно вместо такого:
Code:
var GameScene_update = MyScene.prototype.update MyScene.update = function() { GameScene_update() ... }

можно сделать:
Code:
MyScene.update = function() { super.update() ... }
Последнее редактирование: 8 года 2 мес. назад пользователем Lekste.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
8 года 2 мес. назад - 8 года 2 мес. назад #102733 от EvilCat
EvilCat ответил в теме MV 1.6: Что нового?

Mur пишет: Для наглядности пример:

Code:
(function() { var aaa = "Test!"; var Game_Event_setupPageSettings = Game_Event.prototype.setupPageSettings; Game_Event.prototype.setupPageSettings = function() { Game_Event_setupPageSettings.call(this); console.log("aaa=" + aaa); } })();

До версии 1.6, при запуске мы получим в отладчике сообщение:
Code:
aaa=Test!

Начиная с 1.6 мы получаем сообщение об ошибке, что aaa undefined

Но! Если мы уберём в начале var:
Code:
(function() { aaa = "Test!";

То и версии 1.6 получим желаемый результат.


Если убрать в начале var, переменная будет объявлена как глобальная и будет доступна с таким названием отовсюду (где нет локальной переменной с таким же названием).

Что касается того, доступна ли локально объявленная переменная в функциях, созданных в той же области (как в данном примере функция "Game_Event.prototype.setupPageSettings"... То ответ - "да": это как раз раньше был неуклюжий единственный способ иметь "приватные" поля объекта, а также лишние данные, которые вечно оставались привязаны к создаваемым функциям, занимая память - следовало обращаться с этим осторожнее во избежание утечек.

Я сильно сомневаюсь, чтобы это изменилось в ES6, поскольку на этом нюансе реализации (псевдо приватных полях) были основаны многие веб-сайты. Разве что там могли добавить какое-нибудь ключевое слово (let? не уверена), инструктирующее не давать доступ к данной переменной дочерним функциям области.
Последнее редактирование: 8 года 2 мес. назад пользователем EvilCat.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
8 года 2 мес. назад #102734 от DK
DK ответил в теме MV 1.6: Что нового?
Lekste, второй вариант неправильно написан, потому что надо писать GameScene_update.call(this), чтобы у функции был привязан контекст.
На счет третьего варианта не уверен. Скорее всего не будет работать, потому что стандартные "классы" не написаны через классы ES6.
Первый вариант вроде как рабочий.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.119 секунд
Работает на Kunena форум