Войти на сайт

Авторизация, ждите ...
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

ТЕМА: Разрешение экрана

Разрешение экрана 6 года 3 мес. назад #108007

  • SkrimmHammer
  • SkrimmHammer аватар
  • Вне сайта
  • Познающий
  • Сообщений: 17
  • Спасибо получено: 15
Всем снова здравствуйте. Мне уже немного неловко так много писать в эту тему, но все же. С помощью плагина Community_Basic я задал размеры экрана 816х624 (я ровняюсь на работы mogeko, в принципе, пока что я доволен), однако, не все так гладко. Проблема в том, что полученное окно можно растягивать мышкой.

Да, наверное это очень специфичный вопрос, но для меня реально важный. Опять же, ровняясь на Gray Garden, окно там не имеет свойства растяжимости, пользователь не может если захочет просто взять, и растянуть окно, потеряв пропорции и сделав его уродливым.
Итак, мне нужно сделать так, чтобы пропала возможность мышкой растягивать окошко игры. Надеюсь кто-нибудь знает как это можно реализовать, буду безмерно благодарен.

На первом вложении окно игры, которое было растянуто мной, дабы продемонстрировать потерю пропорций в итоге растяжения.
Вложения:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Разрешение экрана 6 года 3 мес. назад #108008

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2480
  • За 2 место на конкурсе маппингаПоддержка ФондаРазработчикПрограммист RubyПроект месяца 3 местоДаритель СтимкеяУчительПаладин2 место Оратор
Спасибо за ваши интересные вопросы!

Gray Garden сделан на RPG Maker 2000, в нём возможности менять размер окна не было, поэтому в этой игре ничего не меняли. :) В MV такую возможность добавили, и это связано с кроссплатформенностью: чтобы поддерживать больше разных устройств, нужна возможность работы в разных размерах экрана.

Я написал небольшой плагин, который отключает расширяемость окна на тех платформах, которые используют nw.js: в Linux, Windows и macOS. При экспорте на другие платформы (браузеры, мобильные) ничего не изменится: там в принципе нельзя поменять размер окна, там окон-то толком нет.

Вот код плагина:
//this code is public domain according to CC0 public domain dedication
 
(function () {
 
function setResizability(isResizable) {
    if (typeof(require) != 'undefined') {
        var gui = require('nw.gui');
        if (gui) {
            var window = gui.Window.get();
            if (window && window.setResizable) {
                window.setResizable(isResizable);
            }
        }
    }
}
 
var Scene_Boot_initialize = Scene_Boot.prototype.initialize;
Scene_Boot.prototype.initialize = function() {
    setResizability(false);
    Scene_Boot_initialize.call(this);
}
 
var Graphics__requestFullScreen = Graphics._requestFullScreen;
Graphics._requestFullScreen = function() {
    setResizability(true);
    Graphics__requestFullScreen.call(this);
}
 
var Graphics__cancelFullScreen = Graphics._cancelFullScreen;
Graphics._cancelFullScreen = function() {
    Graphics__cancelFullScreen.call(this);
    setResizability(false);
}
 
 
})();

Сохраните этот код в файле с расширением .js внутри папки js/plugins и подключите через окно управления плагинами в RPG Maker MV.

Учитывайте, что:
  • Я его не особо тестировал (у меня в Линуксе он работает, но я недолго тестировал).
  • Он использует внутренние функции объекта Graphics, поэтому может перестать работать при будущих обновления мейкера MV.
  • В полноэкранном режиме графика всё равно будет растягиваться (на то это и полноэкранный режим, чтобы в нём всё было растянуто по максимуму).

Я отказываюсь от как можно большего числа авторских и смежных прав на этот код согласно CC0. Его можно использовать в любых проектах без каких-либо условий.
Последнее редактирование: 6 года 3 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: poca, Cabbit, SeaWolf, SkrimmHammer

Разрешение экрана 6 года 3 мес. назад #108010

  • SkrimmHammer
  • SkrimmHammer аватар
  • Вне сайта
  • Познающий
  • Сообщений: 17
  • Спасибо получено: 15
Как странно, Академия не работала у меня весь день. Однако, здравствуйте.
Спасибо за скрипт, изменить разрешение нельзя, прямо как я и хотел, за это невероятная благодарность, но, из-за него возникают некоторые.. аномалии?
Если конкретнее, то появляются верхняя и нижняя темная линия, говорящих о том, что что-то случилось с разрешением. Я прикреплю скриншоты, возможно вы поймете о чем я. Разрешение явно не 816х624, а это не очень хорошо. Да и замылено как-то немного из за проблем с разрешением всё выглядит, ну или мне так кажется.

А так же, почему то теперь открывшееся окно игры возникает не в центре экрана, а чуть ниже и правее. Я обозначил это во вложении так же. Не то чтобы это очень критично, но все же если это можно исправить, то лучше так сделать.

Буду очень благодарен за ответ, вы мне уже не раз помогаете.

В первом вложении окно игры, с черными линиями, говорящих о проблемах с разрешением.
Во втором вложении, скрин из плагина community_basic, с помощью которого я до этого настраивал разрешение.
В третьем вложении, скрин всего моего рабочего стола, чтобы вы видели положение открывшегося окна игры, которое не совсем центрировано.
Вложения:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Разрешение экрана 6 года 3 мес. назад #108011

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1521
  • Писатель 2 местоВетеран3 место1 место в ГотвУчительРазработчик3 место ГотвТестер
Влезу не совсем по теме, но всё же, считаю своим долгом спросить.
Зачем так извращаться, если можно банально использовать более старую версию rpg maker'а? Тот же ace лишен возможности управления мышью и имеет фиксированный размер окна. Всё, так сказать, по красоте. Если это вообще можно считать красотой конечно...
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: SkrimmHammer

Разрешение экрана 6 года 3 мес. назад #108012

  • SkrimmHammer
  • SkrimmHammer аватар
  • Вне сайта
  • Познающий
  • Сообщений: 17
  • Спасибо получено: 15
Не люблю пользоваться пиратской продукцией, а на последние деньги я как раз недавно купил MV, вот и разбираюсь.
Если мои вопросы слишком глупые, извиняюсь, мне правда неудобно если кто-то из-за них себе лоб рукой пробивает.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Разрешение экрана 6 года 3 мес. назад #108015

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2480
  • За 2 место на конкурсе маппингаПоддержка ФондаРазработчикПрограммист RubyПроект месяца 3 местоДаритель СтимкеяУчительПаладин2 место Оратор
SkrimmHammer пишет:
Если конкретнее, то появляются верхняя и нижняя темная линия, говорящих о том, что что-то случилось с разрешением.
Это сложновато исправить (потому что у меня эта ошибка не появляется — точнее, появляется, но очень редко). Попробуйте использовать вот такой код (но замените там две строчки — см. ниже):
//contains code from Community_Basic by RM CoreScript team, MIT-licensed
//my contribution is CC0
 
(function () {
 
var windowWidth = 300;
var windowHeight = 500;
 
var isFullScreen = false;
 
function fixWindowSize() {
	var dw = windowWidth - window.innerWidth;
	var dh = windowHeight - window.innerHeight;
	window.moveBy(-dw / 2, -dh / 2);
	window.resizeBy(dw, dh);
}
 
 
function setResizability(isResizable, resetSize) {
    if (typeof(require) != 'undefined') {
        var gui = require('nw.gui');
        if (gui) {
            var nwjsWindow = gui.Window.get();
            if (nwjsWindow && nwjsWindow.setResizable) {
				if (resetSize) {
					nwjsWindow.setResizable(true);
					fixWindowSize();
				}
                nwjsWindow.setResizable(isResizable);
            }
        }
    }
}
 
var SceneManager_initNwjs = SceneManager.initNwjs;
SceneManager.initNwjs = function() {
	SceneManager_initNwjs.apply(this, arguments);
	setResizability(false, true);
};
 
var Graphics__requestFullScreen = Graphics._requestFullScreen;
Graphics._requestFullScreen = function() {
	isFullScreen = true;
    setResizability(true);
    Graphics__requestFullScreen.call(this);
}
 
var Graphics__cancelFullScreen = Graphics._cancelFullScreen;
Graphics._cancelFullScreen = function() {
	isFullScreen = false;
    Graphics__cancelFullScreen.call(this);
    setResizability(false, true);
}
 
var isResizing = false;
window.addEventListener('resize', function () {
	if (!isFullScreen && !isResizing) {
		isResizing = true;
		setResizability(false, true);
		isResizing = false;
	}
});
 
 
})();

В начале файла замените два числа в этих строчки:

var windowWidth = 300;
var windowHeight = 500;

на ширину и высоту окна соответственно. Высота и ширина должна быть такой же, как в плагине Community_Basic.

Гарантировать, что это поможет, я не могу (у меня этот баг почти не происходит), но попробуйте.
Последнее редактирование: 6 года 3 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: poca, Cabbit, SkrimmHammer

Разрешение экрана 6 года 3 мес. назад #108016

  • SkrimmHammer
  • SkrimmHammer аватар
  • Вне сайта
  • Познающий
  • Сообщений: 17
  • Спасибо получено: 15
Спасибо, все работает.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy
Время создания страницы: 0.257 секунд