Project1

标题: 遇敌时,地图上的门元素会闪现消失一下,怎么办? [打印本页]

作者: nie89    时间: 2022-5-22 16:45
标题: 遇敌时,地图上的门元素会闪现消失一下,怎么办?
我用了ulds,遇敌的一瞬间,地图上面的门(事件)会闪现一下,露出来门后面的底,
如果是假门(不能打开)的情况,我可以把门画到地图上来规避这个问题,可是,如果是可以进去的门,就没法子了。

我怀疑是遇敌画面时的那个图的暂存方式和右键进入菜单的那个底图的暂存方式不太一样导致的……后者可以很好的包括地图上的事件元素而前者不行。

so,有什么好的办法吗?
作者: cenhangkai    时间: 2022-5-22 16:45
  1. Spriteset_Map.prototype.hideCharacters = function() {
  2.     for (var i = 0; i < this._characterSprites.length; i++) {
  3.         var sprite = this._characterSprites[i];
  4.                 //如果是地图中的事件(非角色)
  5.                 var kg = false;
  6.                 if (sprite._character.event) {
  7.                   var list = sprite._character.page().list;
  8.           var max = list.length;
  9.           var comment = '';
  10.                   //获取事件所有注释
  11.           for (var j = 0; j < max; ++j) {
  12.             var ev = list[j];
  13.             if ([108, 408].contains(ev.code)) comment += ev.parameters[0] + '\n';
  14.           }
  15.                   //提取注释进行辨别
  16.                   for (var b = 0; b < comment.split(/[\r\n]+/).length; ++b) {
  17.                         var line = comment.split(/[\r\n]+/)[b];
  18.                         if (line && line.match('触发战斗时不隐藏')) kg = true;
  19.                   }
  20.                 };//
  21.         if (!sprite.isTile() && !kg) {
  22.             sprite.hide();
  23.         }
  24.     }
  25. };
复制代码


· 【代码使用】将上述代码拷贝粘贴到随意一个插件的最下面,或单独新建一个插件。
· 【使用办法】在事件当前页面注释:<触发战斗时不隐藏>
· 【使用效果】触发战斗的时候,注释的事件不会被隐藏。
· 【注意事项】仅注释的事件页面生效,比如注释在第一页的话,事件变成第二页时不生效。
作者: nhycs01    时间: 2022-5-23 12:34
同问该问题,虽然只有一瞬间,但感觉后台的设置被玩家看到了一样,不太舒服
作者: xiamumomo    时间: 2022-5-23 16:59
ulds是什么=。=
作者: nie89    时间: 2022-9-29 23:36
时隔半年的反馈,用了插件之后,如果地图上有剧情流程的事件,会导致一个报错。

独立的仅遇敌场景不会发生报错。

我又研究了一下,发现门会闪烁隐藏的原因是因为他是可以被打开的,所以在开启战斗的一瞬间,他会消失掉,而我如果单独放一个事件门,并让他不能被打开,且固定朝向勾打开的话,遇敌时,门就不会消失。
于是……痛定思痛之下,我选择的忍受地图上会消失的事件。

但依旧万分感谢大佬的插件支持!
作者: cenhangkai    时间: 2022-10-4 15:58
本帖最后由 cenhangkai 于 2022-10-4 15:59 编辑
nie89 发表于 2022-9-29 23:36
时隔半年的反馈,用了插件之后,如果地图上有剧情流程的事件,会导致一个报错。

独立的仅遇敌场景 ...


谢邀,人在论坛刚下飞机。半年前随手写的代码确实有一个很严重的BUG,如果地图上
有空白的事件,会导致报错,下面是修正后的:

JAVASCRIPT 代码复制
  1. Spriteset_Map.prototype.hideCharacters = function() {
  2.     for (var i = 0; i < this._characterSprites.length; i++) {
  3.         var sprite = this._characterSprites[i];
  4.                 //如果是地图中的事件(非角色)
  5.                 var kg = false;
  6.                 if (sprite._character.event && sprite._character.page()) {
  7.                   var list = sprite._character.page().list;
  8.           var max = list.length;
  9.           var comment = '';
  10.                   //获取事件所有注释
  11.           for (var j = 0; j < max; ++j) {
  12.             var ev = list[j];
  13.             if ([108, 408].contains(ev.code)) comment += ev.parameters[0] + '\n';
  14.           }
  15.                   //提取注释进行辨别
  16.                   for (var b = 0; b < comment.split(/[\r\n]+/).length; ++b) {
  17.                         var line = comment.split(/[\r\n]+/)[b];
  18.                         if (line && line.match('触发战斗时不隐藏')) kg = true;
  19.                   }
  20.                 };//
  21.         if (!sprite.isTile() && !kg) {
  22.             sprite.hide();
  23.         }
  24.     }
  25. };





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1