- Сообщений: 3147
- Спасибо получено: 2651
Нормальное выделение кнопок мышью
Автор: DeadElf79
Версия: 1.3
Описание:
Данный плагин возвращает в игру возможность, утерянную при переносе на кроссплатформу - выделение кнопок не по клику, а по наведению. Если вас раздражал тот факт, что для того, чтобы перейти в какое-то меню нужно вначале выделить кнопку, а потом только ее нажать, то этот плагин решает эту проблему.
Честно говоря, я без понятия, может быть, эту проблему уже решили ранее, но я не нашел ничего подобного. Если решение и так уже есть, то тему потом сам удалю, не страшно.
Код:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Код в шапке обновлен.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если же вы разбираетесь в плагинах, то обратите внимание на функцию isMouseOver, добавленную к классу Window, от которого растут ноги у всех окошек. Функция отслеживает, находится ли мышь над окном или нет. Эту функцию вы можете использовать из своих плагинов для собственных специфичных нужд)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
З.Ы. Попробовал отключить плагин YEP - не помогло.
Подпишись на официальный канал Светлой на ютубе: www.youtube.com/channel/UChoZ13z-eEEFg1n7yjrpTJQ
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Так же не работает с galv visual novell choices и некорректно работает с soul ultimate title screen (кнопки "активируются" при проведении мыши значительно ниже них).
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Нашлось свободное время, пока что сделал только фикс для совместимости с Galv's Visual Novel Choices.
Фикс для совместимости с Соул-Титульником пока не написан (под него выделил место в коде, пробовал разные подходы, но пока не понял, что вписать, оставил это место пустым), там происходит что-то неочевидное. Как будет еще время - доберусь и буду пробовать еще.
Сейчас обновлю код в топике.
[strike]Также не обнаружил никаких проблем с другими меню, о которых говорил Астраслав. Попросил бы демку с этими проблемами.[/strike]
А, нет, нашел-таки. Тут дело в том, что во внутриигровом меню очень перестают обрабатываться кнопки, если выбрать "снаряжение" или что-то подобное, что требует после себя выбора героя из партии. Подумаю над этим.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Само окно спрятано, но по всей видимости у него там ошибка в проверке, потому что если в настройках плагина не поставить Command Selectable true, что немного наркомания учитывая описание опции, то мышка будет ездить по скрытому меню, которое имеет стандартное расположение без этой опции, с твоим плагином или любым другим который делает тоже самое(да-да DarkKel, плагин TDDP_MouseSystemEx тоже работает, видать включить нужную опцию в нем и поставить его там же где и эльфовый, ниже соулового титульника, религия не позволяла или хотя бы описать что ты делал или не делал).
Соулу, по всей видимости, было не нужно выделение мышкой в плагине, т.е. с этим можно идти к автору и просить добавить. Но да ладно, я сделал небольшой быстроаддон для плагина соула, который будет работать как с эльфоплагином, так и с плагином от TDDP.
Основная проблема, что все три плагина трогают TouchInput._onMouseMove, а эльфовый спамит select(-1) через processMouseOverselect... Ну, мне вроде бы удалось все совместить.
Эльф, если хочешь то адаптируй этот адок получше и пихни к себе. Но как по мне, лучше было бы зачинщику написать автору титульника насчет выделения, а потом уже смотреть, после того как он это у себя решит, если решать вообще будет. Все же это больше со стороны соула дело, и он вполне активный и на мейкер еще не забил. Ну или писать универсальное выделение спрайтокнопок мышкой при наведении.
Ставить ниже всех плагинов на мышку и титульник.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Насчет соуловского меню - оно не принципиально, если есть какой-либо адекватный аналог, который изначально будет работать "правильно".
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Как бы, работает, у меня игра на этих двух плагинах построена. Галвовский должен быть попросту ниже за скрипт мышки, в менеждере плагинов .DarkKel пишет: MouseSystem (точнее - выделение через него) заработало при опускании в конец загрузки. Но он все равно не рабоатет с галвом. Хотя и не имеет проблемы с "зависанием" в меню и неработоспособностью с "там, где надо выбирать персонажа".
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- proditrix-ew
-
- Не в сети
- Новый участник
-
- Спасибо получено: 0
есть проблема: при открытии меню, меню предметов нельзя нажать: на него можно навести курсор, но вот "закрепить его" чтобы посмотреть предметы, нельзя. на функциях боя не проверяла. без понятия как это работает.
проверила: со всеми другими плагинами дружит, сам по себе устраивает такой прикол. самого дедэльфа нигде в инете найти не могу(забросил все соцсети, судя по всему).... может, кто-то может помочь с его скриптом или подсказать похожий? буду очень благодарна за помощь
// MouseOverselect.js
//=============================================================================
/*:
* @plugindesc Did you like need make double click to select buttons? If no, this plugin will help you
* @version 1.3
* @author DeadElf79
*
* @help This plugin does not provide plugin commands.
*/
var Imported = Imported || {};
Imported.De79_MouseOverselect = true;
(function() {
// CORE
/**
* [read-only] The x coordinate on the canvas area of the realtime mouse position.
*
* @static
* @property realtime_x
* @type Number
*/
Object.defineProperty(TouchInput, 'realtime_x', {
get: function() {
return this._realtime_x;
},
configurable: true
});
/**
* [read-only] The y coordinate on the canvas area of the realtime mouse position.
*
* @static
* @property realtime_y
* @type Number
*/
Object.defineProperty(TouchInput, 'realtime_y', {
get: function() {
return this._realtime_y;
},
configurable: true
});
var _onMouseMoveWithOnlyTouch = TouchInput._onMouseMove;
TouchInput._onMouseMove = function(event) {
// original
_onMouseMoveWithOnlyTouch.call(this,event);
//addition
this._realtime_x = Graphics.pageToCanvasX(event.pageX);
this._realtime_y = Graphics.pageToCanvasY(event.pageY);
};
// WINDOW
Window.prototype.isMouseOver = function() {
var x = this.canvasToLocalX(TouchInput.realtime_x);
var y = this.canvasToLocalY(TouchInput.realtime_y);
if (x + this.x < this.x || x + this.x > this.x + this.width ||
y + this.y < this.y || y + this.y > this.y + this.height){
return false;
} else {
return true;
}
};
// WINDOW SELECTABLE
Window_Selectable.prototype.update = function() {
Window_Base.prototype.update.call(this);
this.updateArrows();
this.processCursorMove();
this.processHandling();
this.processWheel();
this.processTouch();
this.processMouseOverselect();
this._stayCount++;
};
Window_Selectable.prototype.processMouseOverselect = function() {
var x = this.canvasToLocalX(TouchInput.realtime_x);
var y = this.canvasToLocalY(TouchInput.realtime_y);
var hitIndex = this.hitTest(x, y);
var mouseOver = this.isMouseOver();
if (!mouseOver){
this.select(-1);
} else {
if (typeof(hitIndex)!=='undefined'){
if (hitIndex>-1){
this.select(hitIndex);
}
}
}
};
// WINDOW CHOICE LIST - COMPATIBILITY for GALV'S "VISUAL NOVEL CHOICES"
if (Imported.Galv_VisualNovelChoices == true){
Window_ChoiceList.prototype.update = function() {
// DeadElf79's code
this.processMouseOverselect();
// Galv's code
Galv.VNC.Window_ChoiceList_update.call(this);
if (this._vnIndex != this._index) {
this.refresh();
this._vnIndex = this._index;
}
};
}
// SCENE TITLE - COMPATIBILITY for SOUL ULTIMATE TITLE SCREEN
if (SOUL_MV != null){
// in future versions...
}
})();
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
