Нормальное выделение кнопок мышью

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
10 года 2 мес. назад - 9 года 3 мес. назад #90149 от DeadElf79
MouseOverselect

Автор: DeadElf79
Версия: 1.3

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

Честно говоря, я без понятия, может быть, эту проблему уже решили ранее, но я не нашел ничего подобного. Если решение и так уже есть, то тему потом сам удалю, не страшно.

Код:
Code:
//============================================================================= // 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... } })();
Последнее редактирование: 9 года 3 мес. назад пользователем DeadElf79.
Спасибо сказали: Cerberus, Seibur, Leprikon01, DK, Ren310, Демий, Astraslav

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 10 мес. назад #92616 от DeadElf79
Совершенно неожиданно взял да и обновил плагин, добавив отмену выбора пункта меню, если мышь находится не над окном выбора. Так что теперь можно лепить окошки с выбором поверх карты и они не будут мешать вам играть (в теории, еще не попробовал).

Код в шапке обновлен.
Спасибо сказали: DK, Демий, Astraslav

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 10 мес. назад #92638 от DeadElf79
И вот последнее обновление. Оно чисто косметическое, ничего особо не изменилось. Если вы - обычный пользователь, то не нужно спешно обновляться.

Если же вы разбираетесь в плагинах, то обратите внимание на функцию isMouseOver, добавленную к классу Window, от которого растут ноги у всех окошек. Функция отслеживает, находится ли мышь над окном или нет. Эту функцию вы можете использовать из своих плагинов для собственных специфичных нужд)
Спасибо сказали: Astraslav

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

Проект месяца 3 место Проект месяца 2 место Проект месяца 1 место
Больше
9 года 10 мес. назад - 9 года 10 мес. назад #92819 от Astraslav
Эльф, а твой плагин совместим с меню YEP? А то у меня все работает нормально с мышью вплоть до захода во внутриигровое меню. После чего последнее виснет (ни мышь, ни клавиатура не помогают не то что посмотреть предметы или навыки, но даже банально выйти из меню уже не удается).

З.Ы. Попробовал отключить плагин YEP - не помогло.

Подпишись на официальный канал Светлой на ютубе: www.youtube.com/channel/UChoZ13z-eEEFg1n7yjrpTJQ
Последнее редактирование: 9 года 10 мес. назад пользователем Astraslav.

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 10 мес. назад #92828 от DeadElf79
кинь демку с YEP и моим плагином, я хоть гляну. а то я ж чужие плагины не собираю, у меня нет ничего)

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

Больше
9 года 3 мес. назад #96387 от DarkKel
Похоже та же проблема с yep'ом. Половина кнопок не реагирует, а со временем и клавиатура офается...

Так же не работает с galv visual novell choices и некорректно работает с soul ultimate title screen (кнопки "активируются" при проведении мыши значительно ниже них).

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 3 мес. назад #96390 от DeadElf79
Ребят, соберите кто-нибудь демку с YEP и другими плагинами, с которыми этот плагин несовместим. Вы очень сильно поможете мне исправить ошибки, а себе - ускорить получение хорошего плагина)

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

Больше
9 года 3 мес. назад #96404 от DarkKel

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 3 мес. назад - 9 года 3 мес. назад #96441 от DeadElf79
ДаркКел, спасибо за демку.

Нашлось свободное время, пока что сделал только фикс для совместимости с Galv's Visual Novel Choices.

Фикс для совместимости с Соул-Титульником пока не написан (под него выделил место в коде, пробовал разные подходы, но пока не понял, что вписать, оставил это место пустым), там происходит что-то неочевидное. Как будет еще время - доберусь и буду пробовать еще.

Сейчас обновлю код в топике.

[strike]Также не обнаружил никаких проблем с другими меню, о которых говорил Астраслав. Попросил бы демку с этими проблемами.[/strike]
А, нет, нашел-таки. Тут дело в том, что во внутриигровом меню очень перестают обрабатываться кнопки, если выбрать "снаряжение" или что-то подобное, что требует после себя выбора героя из партии. Подумаю над этим.
Последнее редактирование: 9 года 3 мес. назад пользователем DeadElf79.

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

Больше
9 года 3 мес. назад #96448 от DarkKel
Возможно проще будет тебе самому написать плагин на "титульник", сразу совместимый с мышью? )

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

3 место Готв Программист JavaScript Разработчик Проект месяца 2 место 2 место Готв
Больше
9 года 3 мес. назад #96456 от sinder
Эльф, забей, не выделение пунктов в соуловом титульнике никак не связанно с твоим выделением мышью или с чьим бы то ни было. Сами пукты в плагине на спрайтовых кнопках, и с Window_Selectable связаны косвенно, чисто для проверки выбирает ли игрок пункты меню клавой или нет. Я бы на его месте просто не делал привязки к стандартной менюшке.

Само окно спрятано, но по всей видимости у него там ошибка в проверке, потому что если в настройках плагина не поставить Command Selectable true, что немного наркомания учитывая описание опции, то мышка будет ездить по скрытому меню, которое имеет стандартное расположение без этой опции, с твоим плагином или любым другим который делает тоже самое(да-да DarkKel, плагин TDDP_MouseSystemEx тоже работает, видать включить нужную опцию в нем и поставить его там же где и эльфовый, ниже соулового титульника, религия не позволяла или хотя бы описать что ты делал или не делал).

Соулу, по всей видимости, было не нужно выделение мышкой в плагине, т.е. с этим можно идти к автору и просить добавить. Но да ладно, я сделал небольшой быстроаддон для плагина соула, который будет работать как с эльфоплагином, так и с плагином от TDDP.
Основная проблема, что все три плагина трогают TouchInput._onMouseMove, а эльфовый спамит select(-1) через processMouseOverselect... Ну, мне вроде бы удалось все совместить.

Эльф, если хочешь то адаптируй этот адок получше и пихни к себе. Но как по мне, лучше было бы зачинщику написать автору титульника насчет выделения, а потом уже смотреть, после того как он это у себя решит, если решать вообще будет. Все же это больше со стороны соула дело, и он вполне активный и на мейкер еще не забил. Ну или писать универсальное выделение спрайтокнопок мышкой при наведении.
ВНИМАНИЕ: Спойлер!

Ставить ниже всех плагинов на мышку и титульник.
Спасибо сказали: DeadElf79

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

Больше
9 года 3 мес. назад #96464 от DarkKel
MouseSystem (точнее - выделение через него) заработало при опускании в конец загрузки. Но он все равно не рабоатет с галвом. Хотя и не имеет проблемы с "зависанием" в меню и неработоспособностью с "там, где надо выбирать персонажа".

Насчет соуловского меню - оно не принципиально, если есть какой-либо адекватный аналог, который изначально будет работать "правильно".

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

3 место Готв Программист JavaScript Разработчик Проект месяца 2 место 2 место Готв
Больше
9 года 3 мес. назад - 9 года 3 мес. назад #96471 от sinder

DarkKel пишет: MouseSystem (точнее - выделение через него) заработало при опускании в конец загрузки. Но он все равно не рабоатет с галвом. Хотя и не имеет проблемы с "зависанием" в меню и неработоспособностью с "там, где надо выбирать персонажа".

Как бы, работает, у меня игра на этих двух плагинах построена. Галвовский должен быть попросту ниже за скрипт мышки, в менеждере плагинов .
Последнее редактирование: 9 года 3 мес. назад пользователем sinder.

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

Больше
11 мес. 3 нед. назад #130891 от proditrix-ew
rpgmaker.ru/forum/ccsmv/61017-normalnoe-vydelenie-knopok-myshyu нашла замечательный плагин deadelf79. самое то, что мне нужно - хочу, чтобы кнопочки в меню при наведении на них мигали.

есть проблема: при открытии меню, меню предметов нельзя нажать: на него можно навести курсор, но вот "закрепить его" чтобы посмотреть предметы, нельзя. на функциях боя не проверяла. без понятия как это работает.

проверила: со всеми другими плагинами дружит, сам по себе устраивает такой прикол. самого дедэльфа нигде в инете найти не могу(забросил все соцсети, судя по всему).... может, кто-то может помочь с его скриптом или подсказать похожий? буду очень благодарна за помощь :blush:

ВНИМАНИЕ: Спойлер!

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

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