Поломка плагина GALV_VisibilityRange при F5

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
3 года 7 мес. назад - 3 года 7 мес. назад #127939 от Alexandr_7
Здравствуйте.
Конечно не думаю что мне кто-нибудь поможет решить проблему но плагин "GALV_VisibilityRange" ломается если использовать F5. Вроде раньше проблемы не было но это не могу гарантировать. Вообще на F5 в самом ядре есть проблема. Но она только при тестировании. А плагин ломается и в релизе
Вот сам код плагина и плагин:
Code:
//----------------------------------------------------------------------------- // Galv's Visibility Range //----------------------------------------------------------------------------- // For: RPGMAKER MZ // GALV_VisibilityRangeMZ.js //----------------------------------------------------------------------------- // 2021-11-19 - Version 1.0 - release //----------------------------------------------------------------------------- // Terms can be found at: // galvs-scripts.com //----------------------------------------------------------------------------- var Imported = Imported || {}; Imported.Galv_VisibilityRange = true; var Galv = Galv || {}; // Galv's main object Galv.pCmd = Galv.pCmd || {}; // Plugin Command manager Galv.VR = Galv.VR || {}; // Galv's plugin stuff Galv.VR.pluginName = "GALV_VisibilityRangeMZ"; //----------------------------------------------------------------------------- /*: * @plugindesc (v.1.0) Use an image to display a visibility range image around the player's position * @url http://galvs-scripts.com * @target MZ * @author Galv - galvs-scripts.com * * @command Visrange * @text Add visrange * @desc Add visrange * * @arg imageName * @type file * @dir img/system/ * @text Image * @desc Image file closing visrange * * @command VisrangeRemove * @text Remove visrange * @desc Remove visrange * @param Zoom Variable * @type variable * @desc In-Game variable ID used for zooming the visibility range in and out. * @default 0 * * @param Opacity Variable * @type variable * @desc In-Game variable ID used for opacity of the visibility range image. * @default 0 * * @param Z Position * @desc The layer the visibility image displays at. Lower if it appears above objects you dont want it to. * @default 10 * * @help * Galv's Visibility Range * ---------------------------------------------------------------------------- * This plugin allows you to display a solid colour above a character with an * image cut out in the middle. * The idea is to give the impression of visibility range. This image will * follow the player and can zoom and change opacity by setting the variable * ID's in the plugin config and then using the 'Control Variables' event * command to change them. * * NOTE: VARIABLES ARE SET TO 0 BY DEFAULT. YOU WILL NEED TO CHANGE THEM IN * ORDER TO USE THIS FUNCTIONALITY. * * The Zoom variable that controls the growing/shrinking works as follows: * Set the variable to the desired ID you will use. * The zoom level is 50% + variable%. * For this example, assuming we set the config to use Variable #1. * When variable #1 is equal or less than 0, the visibility range will be * displayed at 50% of it's normal size. This is the smallest size possible. * When variable is set to 50, it will be shown at 100% (50 + 50 = 100). * * The opacity variable can be 0 - 255 and controls how transparent the * visibility range is. * * The image used for the transparency is taken from: * YourProject/img/system/ * And will only appear if the plugin command has created it. The visrange * image will persist across maps, so must be removed on maps you do not want * it to appear on. * This image must have transparency to show the map under it. You can change * the image during game with the plugin command found further below. * * Advanced Info: * The top left pixel of the graphic specifies what colour the rest of the * 'darkness' will be. The example image uses black with a blurred transparent * circle, the top left black pixel indicates the colour of the rest of the * surrounding. * ---------------------------------------------------------------------------- * PLUGIN COMMAND * ---------------------------------------------------------------------------- * * VISRANGE imageName // set the visrange image to a new image from * // /img/system/ folder in your project. * // Make sure to have correct capitalization * // Use X for imageName to remove vis image * * Example: * VISRANGE VisibilityRange2 // add visrange using VisibilityRange2 image * VISRANGE X // remove visibility range * * ---------------------------------------------------------------------------- * SCRIPT * ---------------------------------------------------------------------------- * * $gameSystem.galvVis // returns the image name of the current vis range. * */ //----------------------------------------------------------------------------- // CODE STUFFS //----------------------------------------------------------------------------- (function() { // GALV'S PLUGIN MANAGEMENT. INCLUDED IN ALL GALV PLUGINS THAT HAVE PLUGIN COMMAND CALLS, BUT ONLY RUN ONCE. if (!Galv.aliased) { var Galv_Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { if (Galv.pCmd[command]) { Galv.pCmd[command](args); return; }; Galv_Game_Interpreter_pluginCommand.call(this, command, args); }; Galv.aliased = true; // Don't keep aliasing for other Galv scripts. }; if (Utils.RPGMAKER_NAME === "MZ") { PluginManager.registerCommand(Galv.VR.pluginName, "Visrange", (args) => { Galv.pCmd["VISRANGE"]([args.imageName]); }); PluginManager.registerCommand(Galv.VR.pluginName, "VisrangeRemove", () => { Galv.pCmd["VISRANGE"](["X"]); }); } // Direct to Plugin Object Galv.pCmd.VISRANGE = function(arguments) { Galv.VR.setImage(arguments[0]); }; // END GALV'S PLUGIN MANAGEMENT Galv.VR.setImage = function(image) { if (SceneManager._scene.constructor.name == 'Scene_Map') { if (SceneManager._scene._spriteset) SceneManager._scene._spriteset.doVisSprite(image); } }; Galv.VR.zoom = Number(PluginManager.parameters(Galv.VR.pluginName)["Zoom Variable"]); Galv.VR.opacity = Number(PluginManager.parameters(Galv.VR.pluginName)["Opacity Variable"]); Galv.VR.z = Number(PluginManager.parameters(Galv.VR.pluginName)["Z Position"]); //----------------------------------------------------------------------------- // Spriteset_Map var Galv_Spriteset_Map_createLowerLayer = Spriteset_Map.prototype.createLowerLayer; Spriteset_Map.prototype.createLowerLayer = function() { Galv_Spriteset_Map_createLowerLayer.call(this); this.doVisSprite($gameSystem.galvVis); }; Spriteset_Map.prototype.doVisSprite = function(img) { if (!img || img == "X") { this.removeVisibilityRange(); } else { this.setVisibilityRange(img); } }; Spriteset_Map.prototype.setVisibilityRange = function(image) { $gameSystem.galvVis = image; if (!this._galvVisRange) { this._galvVisRange = new Sprite_GalvVisRange(); this._tilemap.addChild(this._galvVisRange); }; }; Spriteset_Map.prototype.removeVisibilityRange = function() { $gameSystem.galvVis = null; if (this._galvVisRange) { this._tilemap.removeChild(this._galvVisRange); this._galvVisRange = null; }; }; //----------------------------------------------------------------------------- // Sprite_GalvVisRange function Sprite_GalvVisRange() { this.initialize.apply(this, arguments); } Sprite_GalvVisRange.prototype = Object.create(Sprite.prototype); Sprite_GalvVisRange.prototype.constructor = Sprite_GalvVisRange; Sprite_GalvVisRange.prototype.initialize = function() { Sprite.prototype.initialize.call(this); this.name = null; this.opacity = 0; this.update(); }; Sprite_GalvVisRange.prototype.update = function() { Sprite.prototype.update.call(this); if (this.name != $gameSystem.galvVis) this.loadBitmap(); // If image changed, reload bitmap this.opacity = $gameVariables.value(Galv.VR.opacity); if (this.opacity <= 0) return; this.x = $gamePlayer.screenX(); this.y = $gamePlayer.screenY() - 24; var zoom = Math.max($gameVariables.value(Galv.VR.zoom) * 0.01 + 0.5,0.5); this.scale.x = zoom; this.scale.y = zoom; }; Sprite_GalvVisRange.prototype.loadBitmap = function() { var img = ImageManager.loadSystem($gameSystem.galvVis); if (img.isReady()) { if (this.bitmap) { //this._destroyCachedSprite(); this.bitmap = null; }; // Middle Graphic var tempSprite = new Sprite(); tempSprite.bitmap = ImageManager.loadSystem($gameSystem.galvVis); var iw = tempSprite.bitmap.width; var ih = tempSprite.bitmap.height; var color = tempSprite.bitmap.getPixel(0,0); // Background Color this.bitmap = new Bitmap(Graphics.boxWidth * 4,Graphics.boxHeight * 4); this.bitmap.fillRect(0, 0, Graphics.boxWidth * 4, Graphics.boxHeight * 4, color); // Position this.anchor.x = 0.5; this.anchor.y = 0.5; this.x = $gamePlayer.screenX(); this.y = $gamePlayer.screenY(); this.z = Galv.VR.z; // Join Bitmaps var cx = ((Graphics.boxWidth * 4) / 2) - (iw / 2); var cy = ((Graphics.boxHeight * 4) / 2) - (ih / 2); this.bitmap.clearRect(cx, cy, iw, ih); this.bitmap.blt(tempSprite.bitmap, 0, 0, iw, ih, cx, cy); this.name = $gameSystem.galvVis; }; }; })();
disk.yandex.ru/d/-_2UiL_7NSTMLg
Всё же надеюсь кто-нибудь поможет но отказываться от него я точно не стану ибо переделка проекта под другой плагин займёт скорее всего столько же времени сколько я делал игру до версии 0.6.2 вроде как 2 года проекту уже.

К слову о проблеме!
До F5:
[img

После F5:
[img


То что пропадает графика двери эта проблема в ядре 1.5.0 и её нет в релизном проекте. Только при тестах.
Но вот поломка видимости есть и там и там.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 3 года 7 мес. назад пользователем Alexandr_7.

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
3 года 7 мес. назад #128038 от Alexandr_7
Просили показать параметры плагинов. Честно не знаю зачем это поможет но вот:
[img
[img

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

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

Разработчик Проект месяца 1 место Ветеран 3 место в Обучающем конкурсе Проект месяца 2 место
Больше
3 года 7 мес. назад #128039 от DarchanKaen
1) Какое значение (число) ставится как Opacity?
2) Проблема при тестировании через редактор или в эскпортированном проекте?
3) Нет плагинов или еще каких-то скриптов, которые затирают переменные, на которые ссылаются параметры плагина?

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

Разработчик Проект месяца 1 место Ветеран 3 место в Обучающем конкурсе Проект месяца 2 место
Больше
3 года 7 мес. назад #128040 от DarchanKaen
Попробуй в коде плагина заменить функцию Sprite_GalvVisRange.prototype.update на то что ниже:
Code:
Sprite_GalvVisRange.prototype.update = function() { let forcedOpacity = 255; let forcedZoom = 0; Sprite.prototype.update.call(this); if (this.name != $gameSystem.galvVis) this.loadBitmap(); // If image changed, reload bitmap this.opacity = $gameVariables.value(forcedOpacity); if (this.opacity <= 0) return; this.x = $gamePlayer.screenX(); this.y = $gamePlayer.screenY() - 24; var zoom = Math.max($gameVariables.value(forcedZoom) * 0.01 + 0.5,0.5); this.scale.x = zoom; this.scale.y = zoom; };
forcedOpacity и forcedZoom - сразу напиши нужные значения, а не номера переменных.
Если такой хардкод поможет, то у тебя что-то обнуляет переменные (или "замедляет" их загрузку их сохранения).
Если не поможет - хз, может какой-то конфликт плагинов.

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
3 года 7 мес. назад #128041 от Alexandr_7

DarchanKaen пишет: 1) Какое значение (число) ставится как Opacity?
2) Проблема при тестировании через редактор или в эскпортированном проекте?
3) Нет плагинов или еще каких-то скриптов, которые затирают переменные, на которые ссылаются параметры плагина?

1. Оно разное но по стандарту у Зума 500 а у опасити 255. Но причем здесь значение переменных. Видимость не пропадает после f5 а ломается. Проще говоря ломается графика видимости.
2. Эта проблема и там и там.
3. Да вроде нет.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

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

Разработчик Проект месяца 1 место Ветеран 3 место в Обучающем конкурсе Проект месяца 2 место
Больше
3 года 7 мес. назад #128042 от DarchanKaen
Хардкод помог?

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
3 года 7 мес. назад - 3 года 7 мес. назад #128043 от Alexandr_7

DarchanKaen пишет: Попробуй в коде плагина заменить функцию Sprite_GalvVisRange.prototype.update на то что ниже:

Code:
Sprite_GalvVisRange.prototype.update = function() { let forcedOpacity = 255; let forcedZoom = 0; Sprite.prototype.update.call(this); if (this.name != $gameSystem.galvVis) this.loadBitmap(); // If image changed, reload bitmap this.opacity = $gameVariables.value(forcedOpacity); if (this.opacity <= 0) return; this.x = $gamePlayer.screenX(); this.y = $gamePlayer.screenY() - 24; var zoom = Math.max($gameVariables.value(forcedZoom) * 0.01 + 0.5,0.5); this.scale.x = zoom; this.scale.y = zoom; };
forcedOpacity и forcedZoom - сразу напиши нужные значения, а не номера переменных.
Если такой хардкод поможет, то у тебя что-то обнуляет переменные (или "замедляет" их загрузку их сохранения).
Если не поможет - хз, может какой-то конфликт плагинов.


Вообще-то вот так скорее будет верно.
Code:
Sprite_GalvVisRange.prototype.update = function() { let forcedOpacity = 255; let forcedZoom = 500; Sprite.prototype.update.call(this); if (this.name != $gameSystem.galvVis) this.loadBitmap(); // If image changed, reload bitmap this.opacity = forcedOpacity; if (this.opacity <= 0) return; this.x = $gamePlayer.screenX(); this.y = $gamePlayer.screenY() - 24; var zoom = Math.max(forcedZoom * 0.01 + 0.5,0.5); this.scale.x = zoom; this.scale.y = zoom; };
Ваш вариант не работает.
Но всё равно ломается. И походу я ошибся когда сказал что при экспорте графика событий остаётся. Она тоже пропадает. Походу это всё дело в ядре. Но с графикой событий выйти в меню достаточно чтобы востановилась но графика видимости даже в этом случае не востанавливается.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 3 года 7 мес. назад пользователем Alexandr_7.

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

Разработчик Проект месяца 1 место Ветеран 3 место в Обучающем конкурсе Проект месяца 2 место
Больше
3 года 7 мес. назад - 3 года 7 мес. назад #128044 от DarchanKaen
Тогда действительно конфликт плагинов, чтоб убедиться можно отключить все плагины кроме данного и проверить работоспособность.
С "ядром" помочь не смогу, ищи варианты (может быть плагин на освещение для MZ, был такой Community Lighting MV & MZ) =/
Последнее редактирование: 3 года 7 мес. назад пользователем DarchanKaen.

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
3 года 7 мес. назад - 3 года 7 мес. назад #128045 от Alexandr_7
Нашел виновника плагина который мне всё портит.
disk.yandex.ru/d/ri4o7jijzeBKpA
Но я не могу от него избавится если только не воровством кода другого плагина. А именно EliMZ_ChoicePictures и EliMZ_Timer которые мне необходимы. Просто эти 2 плагина без EliMZ_Book не работают

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 3 года 7 мес. назад пользователем Alexandr_7.

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

Разработчик Проект месяца 1 место Ветеран 3 место в Обучающем конкурсе Проект месяца 2 место
Больше
3 года 7 мес. назад #128046 от DarchanKaen
Что ж, поздравляю.

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
3 года 7 мес. назад #128047 от Alexandr_7

DarchanKaen пишет: Что ж, поздравляю.

Несчем меня поздравлять так как причину конфликта я без понятия и отказаться от плагина не могу.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

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

Разработчик Проект месяца 1 место Ветеран 3 место в Обучающем конкурсе Проект месяца 2 место
Больше
3 года 7 мес. назад #128048 от DarchanKaen
EliMZ_ChoicePictures, похожий был у Галва тоже и в MZ работал - если мне память не изменяет.
EliMZ_Timer, там много всего с таймером, что именно нужно от плагина?
В любом случае, думай о компромиссах.

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
3 года 7 мес. назад #128049 от Alexandr_7
Проблему. Решил. Одна блин команда в EliMZ_Book на Quick F5 ломало по сути эту функцию. Возможно могло бы помочь отпустить этот плагин в самый низ но яя отрубил эту функцию. Хотя стоит признать перезагрузка действительно значительно быстрее тогда.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Спасибо сказали: DarchanKaen

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

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