Миничат

AnnTenna 01.04.2026 12:44 проверка чата
MarsKnight 26.03.2026 22:42 что-же, уже пятница)
akito66 26.03.2026 08:53 Всем доброго времени суток!
Doctor_Bug 23.03.2026 11:27 Но это не точно...
Doctor_Bug 23.03.2026 10:59 Здесь был Баг @-@
Doctor_Bug 23.03.2026 10:58 Чат
MaraMonster 21.03.2026 15:12 уже)
sando 21.03.2026 15:12 Напиши в ЛС. Я пока отлетаю на встречу
MaraMonster 21.03.2026 15:11 Квест/хоррор
MaraMonster 21.03.2026 15:10 ХD
sando 21.03.2026 15:10 А что делать планируешь?)))
MaraMonster 21.03.2026 15:10 я
MaraMonster 21.03.2026 15:10 пока в команде 1 человек)
MaraMonster 21.03.2026 15:10 Го в команду))
sando 21.03.2026 15:10 Да вообще. А вайбокодингом я и сама балуюсь, но пока что для рабочих задач.
MaraMonster 21.03.2026 15:09 ужасные люди)
sando 21.03.2026 15:09 Хотя вот на rpgmaker.net запретили
sando 21.03.2026 15:09 В любви и на войне (и в геймдеве) все средства хороши
MaraMonster 21.03.2026 15:08 Решил повайбкодить)))
MaraMonster 21.03.2026 15:08 Решил повайбкодить)))

[VX Ace] Фикс скрипта мыши

Больше
5 года 1 мес. назад - 3 года 4 мес. назад #121717 от Phileas

Deprecated: preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/admin/www/test.rpgmaker.ru/libraries/kunena/External/Nbbc/src/BBCode.php on line 1255

Deprecated: preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/admin/www/test.rpgmaker.ru/libraries/kunena/External/Nbbc/src/BBCode.php on line 1255
Phileas создал тему: [VX Ace] Фикс скрипта мыши
Некоторым людям, особенно после выхода MV, стало не хватать возможности манипулирования курсором мыши в проектах на VX Ace.

Однако многие скрипты мышей вызывают исключение при выходе на титульник через f12, потому что f12 просто вызывает скрипт Main, в котором вызывается SceneManager.run, где заново инициализируется вся база данных, что приводит к обращению переменной мыши в nil.

Выше был краткий пересказ проблемы, теперь расскажу, как я это вылечил.

Лечил я только 1 скрипт (под авторством Shaz), однако аналогичное решение должно помочь и другим таким скриптам.

Сначала приведу код самого скрипта (исправленный):
скрипт мыши


В скрипте я просто добавил в 130 строчку вот это:
Code:
return if $mouse == nil
Ещё я такой же код добавил в 208 строчку, но это, скорее всего, лишнее (данная функция вообще не должна вызваться, если переменная мыши не проинициализирована).

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

Заходим в SceneManager (в скриптах в самом верху списка), находим self.run.
Там добавляем одну строчку:
Code:
def self.run $mouse = Sprite_Mouse.new DataManager.init Audio.setup_midi if use_midi? @scene = first_scene_class.new @scene.main while @scene end

На всякий случай, уточню, я добавил вот эту строчку:
Code:
$mouse = Sprite_Mouse.new


UPD! (04.12.2022)
По просьбе форумчанина, добавил ещё вот такой код в скрипт:
Code:
module SceneManager def self.snapshot_for_background flag = $mouse.enabled? $mouse.enabled = false @background_bitmap.dispose if @background_bitmap @background_bitmap = Graphics.snap_to_bitmap @background_bitmap.blur $mouse.enabled = flag end end

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

Также добавил исправление от Dmy, которое решает проблему игр с кириллицей в названии.


Собственно, всё. Вот пустой проект, в котором демонстрируется работа исправленного скрипта:
проект


Если у вас что-то не получается, что-то не работает - пишите в этой теме, постараюсь помочь.
Последнее редактирование: 3 года 4 мес. назад пользователем Phileas.
Спасибо сказали: Dmy, DarchanKaen, Jas6666, WhitePaper

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

Больше
5 года 1 мес. назад - 5 года 1 мес. назад #121737 от Местами человек

Deprecated: preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/admin/www/test.rpgmaker.ru/libraries/kunena/External/Nbbc/src/BBCode.php on line 1255

Deprecated: preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/admin/www/test.rpgmaker.ru/libraries/kunena/External/Nbbc/src/BBCode.php on line 1255
Местами человек ответил в теме [VX Ace] Фикс скрипта мыши
А какими припарками лечить вот такую ошибку? Ситуация одинаковая и в чистых проектах, и в тех, в которых есть другие скрипты. Преследует не только с этим скриптом, но и с аналогичным от Falcao. В чужих проектах всё нормально, но при перенесении в мои всё ломается.
Последнее редактирование: 5 года 1 мес. назад пользователем Местами человек.
Спасибо сказали: Dmy

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

Больше
5 года 1 мес. назад - 5 года 1 мес. назад #121739 от Dmy

Deprecated: preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/admin/www/test.rpgmaker.ru/libraries/kunena/External/Nbbc/src/BBCode.php on line 1255

Deprecated: preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/admin/www/test.rpgmaker.ru/libraries/kunena/External/Nbbc/src/BBCode.php on line 1255
Dmy ответил в теме [VX Ace] Фикс скрипта мыши

Местами человек пишет: А какими припарками лечить вот такую ошибку? Ситуация одинаковая и в чистых проектах, и в тех, в которых есть другие скрипты.

[strike]У меня сейчас мейкера нет под рукой, но попробуйте такое:[/strike]

Вариант 1. Не обещаю, что поможет, не проверял ещё. Проверил, работает.

Найдите вот этот отрезок кода:
Code:
def self.hwnd if @hwnd.nil? title = "\0" * 256 Readini.call('Game', 'Title', '', title, 255, '.\\Game.ini') title.delete!("\0") @hwnd = Findwindow.call('RGSS Player', title) ShowCursor.call(0) end return @hwnd end

и перед строчкой title.delete!("\0") добавьте такую строчку:
Code:
title.force_encoding("ASCII-8bit")

Чтобы получилось вот так:
Code:
def self.hwnd if @hwnd.nil? title = "\0" * 256 Readini.call('Game', 'Title', '', title, 255, '.\\Game.ini') title.force_encoding("ASCII-8bit") title.delete!("\0") @hwnd = Findwindow.call('RGSS Player', title) ShowCursor.call(0) end return @hwnd end

Не могу обещать, что это сработает, но попробовать стоит. Я проверил: это работает. @Phileas, если вам не сложно, добавьте и это исправление в свою версию скрипта?

Для других скриптов надо сделать похожие исправления (но вместо title там будет что-то другое). Лучше создайте отдельную тему для этой ошибки (или по отдельной теме на каждый скрипт) и укажите в ней сам скрипт (ещё лучше, если получится приложить проект-пример), я отвечу.

Вариант 2. Дешёвый и сердитый. Просто переименуйте игру, чтобы в названии была одна латиница.

Эта ошибка возникает из-за того, что авторы скрипта не тестировали его на названиях проектов, где есть какие-то буквы, кроме английской латиницы.
Последнее редактирование: 5 года 1 мес. назад пользователем Dmy.
Спасибо сказали: Jas6666, Cabbit, Phileas, Alx_Yago, Местами человек

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

Больше
3 года 4 мес. назад - 3 года 4 мес. назад #128444 от Phileas

Deprecated: preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/admin/www/test.rpgmaker.ru/libraries/kunena/External/Nbbc/src/BBCode.php on line 1255

Deprecated: preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/admin/www/test.rpgmaker.ru/libraries/kunena/External/Nbbc/src/BBCode.php on line 1255
Phileas ответил в теме [VX Ace] Фикс скрипта мыши
Dmy, прошу прощения, я увидел новые сообщения в теме только сейчас) Мне почему-то не приходят письма о новых сообщениях.

Добавил ваше исправление.

Также, по просьбе одного форумчанина, убрал "призрак" курсора с фона игрового меню.

Обновил шапку темы и проект по ссылке.

Также рекомендую, по возможности, переходить на MV/MZ, где всё это работает из коробки. Ну а графику курсора можно поменять всякими плагинами, например, от DK. MZ всё ещё поддерживается разработчиками, а вот VX Ace со всеми своими проблемами безнадёжно в прошлом.
Последнее редактирование: 3 года 4 мес. назад пользователем Phileas.

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

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