查看: 144|回复: 2

[交流讨论] drill集合示例 v3.80及以上相关插件问题交流讨论

[复制链接]
梦石
0
星屑
1465
在线时间
223 小时
注册时间
2021-3-21
回帖
11
发表于 2026-9-15 21:14:30 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 一梦如是 于 2026-9-15 21:16 编辑

本帖主要集中记录解决插件遇到的问题进行记录。
问题讨论是基于drill自写插件、集合示例 v3.80的基础。不过问题会基于具体插件及插件版本,对遇到的问题进行解决的方法。
因为代码基础比较薄弱,只能基本理解行代码在干什么,但是插件的结构很复杂,读起来麻烦,也不太想在代码上花太多时间,所以基本是AI辅助理解和解决问题。

Drill_OperateHud.js  v1.9  鼠标 - 鼠标辅助操作面板
这个插件遇到的问题:
切换地图后,鼠标第一次点击玩家角色无法展开面板,第二次及以后点击逻辑恢复正常。有证据表明是第一次点击连续触发了展开和收起,偶尔会出现明显的重叠面板音效,推测是初始化问题。
经过AI一系列无效分析后,自己找到初始化的地方,修改初始化互锁开关,也就是this._drill_OH_hud_oneLock 解决这个问题。
[pre lang="javascript"]        //==============================
        // * 面板 - 初始化
        //==============================
        Drill_Operate_Hud.prototype.initialize = function () {
                Sprite.prototype.initialize.call(this);
                this.opacity = 0;
                this.anchor.x = 0.5;
                this.anchor.y = 0.5;
                this._drill_OH_board_blocking = false;                //控制正在开启或者关闭的开关
                this._drill_OH_board_blocking_change = false;

                this._drill_OH_btns = [];
                this._drill_OH_hoveringOne = null;
                this._drill_OH_hud_oneLock = true;  //原始为false,改为true 解决切图后,第一次点击无法唤出面板的问题

                this.drill_createLayout();
                this.drill_createBtn_Menu();
                this.drill_createBtn_Jump();
                this.drill_createBtn_Rotate();
                this.drill_createBtn_Throw();
                this.drill_createBtn_Bomb();
                this.drill_createBtn_Self();

                for (var i = 0; i < this._drill_OH_btns.length; i++) {                //初始不高亮
                        var temp_sprite = this._drill_OH_btns;
                        temp_sprite.opacity = DrillUp.g_OH_btn_opacity;
                }
        };
        //=========[/pre]

评分

参与人数 1赞 +1 收起 理由
星间漫游起重机 + 1 塞糖

查看全部评分

梦石
0
星屑
1465
在线时间
223 小时
注册时间
2021-3-21
回帖
11
 楼主| 发表于 2026-9-23 22:10:11 | 显示全部楼层
//=============================================================================
// Drill_EventBufferSwitches.js
//=============================================================================

/*:
* @plugindesc [v1.1]        物体管理 - 事件的缓存开关值
* @author Drill_up

插件在使用指令:>事件的缓存开关值 : 事件[xxx] : 存储-值给槽位 : 槽位[可获取] : 值[OFF]   并不能正确设置槽位[可获取]的值为OFF,而是一直是ON,debug如此即是如此。
问题原因:
在插件指令的「开关组 / 值组」解析逻辑中,处理`值[OFF]`时,代码错误地对文本内容执行了`Number()`强制转换
当输入为`值[OFF]`时:
- 提取出的原始文本是字符串`"OFF"`
- 执行`Number("OFF")`后结果为 `NaN`(非数字)
- 最终`valueList = [NaN]`
`NaN`被转为字符串`"NaN"`,传入`drill_EBS_setData`函数。
字符串`"NaN"`不匹配`OFF`/`FALSE`,因此被判定为`true`(即 ON),最终存入事件的缓存数据中。

修正:将452附近的这两段修正为以下代码

  1.                                 else if (cur_str.indexOf("数组值[") != -1) {
  2.                                         cur_str = cur_str.replace("数组值[", "");
  3.                                         cur_str = cur_str.replace("]", "");
  4.                                         valueList = [];
  5.                                         var cur_str_list = cur_str.split(/[,,]/);
  6.                                         for (var k = 0; k < cur_str_list.length; k++) {
  7.                                                 valueList.push(String(cur_str_list[k])); // ✅ 正确:保留字符串
  8.                                         }
  9.                                 }
  10.                                 else if (cur_str.indexOf("值[") != -1) {
  11.                                         cur_str = cur_str.replace("值[", "");
  12.                                         cur_str = cur_str.replace("]", "");
  13.                                         valueList = [];
  14.                                         var cur_str_list = cur_str.split(/[,,]/);
  15.                                         for (var k = 0; k < cur_str_list.length; k++) {
  16.                                                 valueList.push(String(cur_str_list[k])); // ✅ 正确:保留字符串
  17.                                         }
  18.                                 }
复制代码

回复

使用道具 举报

梦石
0
星屑
1465
在线时间
223 小时
注册时间
2021-3-21
回帖
11
 楼主| 发表于 2026-9-23 22:18:08 | 显示全部楼层
//=============================================================================
// Drill_EventOtherCondition.js
//=============================================================================

/*:
* @plugindesc [v1.1]        物体 - 事件页出现条件
* @author Drill_up

对这个插件进行了改造,让插件的<<出现条件>> 支持缓存开关:
* 事件注释:<<出现条件>> : 缓存开关[10] : 必须为ON
* 事件注释:<<出现条件>> : 缓存开关[槽位名] : 必须为ON

支持缓存开关 作为出现条件, 相当于拥有了一个青春版的 事件私有开关。如果设置一套事件的管理系统,定一套规则,通过管理事件缓存的这个开关,就能自由控制事件页的切换。如果有需求的可以自取。

Drill_EventOtherCondition.rar

3.57 KB, 下载次数: 5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部