Позиция названия локации

Разработчик
Больше
8 года 10 мес. назад #98744 от RastaManGames
К сожалению, на зарубежном ресурсе мне так и не ответили, существует ли плагин, позволяющий изменить положение отображения названия локации (которое отображается при входе в неё), поэтому я бы хотел спросить знатоков здесь.

Я использую боевую систему Alpha ABS от господина KageDesu и, к сожалению, по-умолчанию название локации отображается поверх HUD'а игрока и поэтому мне хотелось бы, чтобы название локации отображалось в правом вернем углу.

Скорее всего можно сделать это парой правок в *js файлах проекта или же можно написать "костыль" (подобный мне помогли и написали, когда мне нужно было отцентрировать главное меню строго по середине).

В общем, прошу помощи мастодонтов RPG Maker'а.

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

Больше
8 года 10 мес. назад #98747 от Paranoid
Нашел скрипт на имя карты. Не факт что это оно, но там есть возможность менять положение вроде как.
endlessillusoft.com/map-name-plus/
Спасибо сказали: RastaManGames

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

Разработчик
Больше
8 года 10 мес. назад - 8 года 10 мес. назад #98760 от RastaManGames
К сожалению, это не то, что нужно, но всё равно спасибо!
Название карты с этим плагином прокручивается в верхнем левом углу экрана как бегущая строка.
Я всё же подозреваю, что можно подправить определённую строку в *js файлах проекта.

P.S.: В файле "rpg_windows.js" я нашёл блок под это дело:
Code:
// Window_MapName // // The window for displaying the map name on the map screen. function Window_MapName() { this.initialize.apply(this, arguments); } Window_MapName.prototype = Object.create(Window_Base.prototype); Window_MapName.prototype.constructor = Window_MapName; Window_MapName.prototype.initialize = function() { var wight = this.windowWidth(); var height = this.windowHeight(); Window_Base.prototype.initialize.call(this, 0, 0, wight, height); this.opacity = 0; this.contentsOpacity = 0; this._showCount = 0; this.refresh(); }; Window_MapName.prototype.windowWidth = function() { return 360; }; Window_MapName.prototype.windowHeight = function() { return this.fittingHeight(1); }; Window_MapName.prototype.update = function() { Window_Base.prototype.update.call(this); if (this._showCount > 0 && $gameMap.isNameDisplayEnabled()) { this.updateFadeIn(); this._showCount--; } else { this.updateFadeOut(); } }; Window_MapName.prototype.updateFadeIn = function() { this.contentsOpacity += 16; }; Window_MapName.prototype.updateFadeOut = function() { this.contentsOpacity -= 16; }; Window_MapName.prototype.open = function() { this.refresh(); this._showCount = 150; }; Window_MapName.prototype.close = function() { this._showCount = 0; }; Window_MapName.prototype.refresh = function() { this.contents.clear(); if ($gameMap.displayName()) { var width = this.contentsWidth(); this.drawBackground(0, 0, width, this.lineHeight()); this.drawText($gameMap.displayName(), 0, 0, width, 'center'); } }; Window_MapName.prototype.drawBackground = function(x, y, width, height) { var color1 = this.dimColor1(); var color2 = this.dimColor2(); this.contents.gradientFillRect(x, y, width / 2, height, color2, color1); this.contents.gradientFillRect(x + width / 2, y, width / 2, height, color1, color2); };

В своё время мне помогли отцентрировать главное меню, предложив создать *js файл в папке с плагинами:
Code:
var _Window_TitleCommand_updatePlacement_Alias = Window_TitleCommand.prototype.updatePlacement; Window_TitleCommand.prototype.updatePlacement = function() { _Window_TitleCommand_updatePlacement_Alias.call(this) this.x = 300; this.y = 256; };

Хотелось бы, чтобы тут пошаманил JS-Сеньор и подсказал, что можно запихать в *js файл в папку с плагинами, чтобы название локации отображалось по центру или справа.
Последнее редактирование: 8 года 10 мес. назад пользователем RastaManGames.

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

Ветеран Поддержка Фонда Разработчик Проект месяца 3 место Учитель Оратор Даритель Стимкея 2 место За 2 место на конкурсе маппинга Программист Ruby Паладин
Больше
8 года 9 мес. назад - 8 года 9 мес. назад #98891 от Dmy
Здравствуйте! У меня нет RPG Maker MV, но попробуйте вот такой код, чтобы отцентрировать:
Code:
var _Window_MapName_initialize = Window_MapName.prototype.initialize; Window_MapName.prototype.initialize = function () { _Window_MapName_initialize.call(this); this.x = (Graphics.boxWidth - this.width) / 2; }

Или вот такой, чтобы разместить справа:
Code:
var _Window_MapName_initialize = Window_MapName.prototype.initialize; Window_MapName.prototype.initialize = function () { _Window_MapName_initialize.call(this); this.x = Graphics.boxWidth - this.width; }


Обратите внимание: я не проверял этот код, потому что у меня нет MV под рукой, и не могу гарантировать его работоспособность. Если при использовании этого кода появится ошибка, скажите, пожалуйста, текст этой ошибки — я исправлю. Если что-то непонятно, спрашивайте.

Пояснение:
  • строчка var _Window_MapName_initialize = Window_MapName.prototype.initialize определяет переменную _Window_MapName_initialize и сохраняет в ней старое значение функции инциализации (initialize) для Window_MapName;
  • Window_MapName.prototype.initialize = function () { ... } заменяет функцию initialize для Window_MapName на нашу собственную функцию-замену,
  • _Window_MapName_initialize.call(this); вызывает старую функцию инициализации внутри нашей новой функции, передавая в качестве текущего объекта [this] текущий объект this функции-замены — чтобы вся инициализация Window_MapName производилась и после замены;
  • строка this.x = ...; присваивает значение переменной x текущего объекта (то есть координате окна по оси x), при увеличении x окно сдвигается направо: если x равно 0, то окно слева, а если x равно Graphics.boxWidth, то окно ровно за правой границей экрана; чтобы окно было в пределах экрана, нужно присваивать значения от 0 до (Graphics.boxWidth - this.width).

RastaManGames пишет: Скорее всего можно сделать это парой правок в *js файлах проекта или же можно написать "костыль"

Править стандартные JS-файлы не стоит. Это лишит Вас возможности обновить свою игру до новой версии RPG Maker MV в будущем, ведь такое обновление затрёт все Ваши изменения.

Если интересно, то при редактировании файла можно заменить 0 в Window_Base.prototype.initialize.call(this, 0, 0, wight, height); на что-то другое. Например, можно заменить на Window_Base.prototype.initialize.call(this, Graphics.boxWidth - wight, 0, wight, height); — при вызове Window_Base.prototype.initialize передаются координаты по x, по y, ширина и высота (а при вызове через .call ещё и объект this), то есть можно заменить первый 0 на координату по x.

Но так делать не надо, ведь RPG Maker MV постоянно обновляется, оптимизируется, в нём исправляются ошибки. Если Вы отредактируете свои файлы, то Вы потеряете возможность обновить движок в будущем, а это очень плохо.

Оформление своего кода в плагинах — это не «костыль», а рекомендуемый подход, «лучшая практика».
Последнее редактирование: 8 года 9 мес. назад пользователем Dmy.

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

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