设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 507|回复: 12
打印 上一主题 下一主题

[有事请教] 事件出现条件有没有变量=而不是≥

[复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
5 小时
注册时间
2026-5-11
帖子
5
跳转到指定楼层
1
发表于 2026-5-15 22:09:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
目前我解决的办法是这个变量达到随机1-10变化条件的时候关闭10个开关,然后增加条件,随机数值变成多少,就打开第几个开关,然后事件出现用开关显示,如果能出现条件可以选择=,我就没必要设置那么多东西了,直接变量=多少示就好了。

Lv2.观梦者

梦石
0
星屑
620
在线时间
80 小时
注册时间
2025-8-20
帖子
39
2
发表于 2026-5-15 22:17:54 | 只看该作者
本帖最后由 岩泽麻美 于 2026-5-15 22:19 编辑

如果十个事件不在同一个格子的话,就每个格子设置两个事件页,比如第二个事件就把第一页条件设置为大于等于2,第二页设置为大于等于3的空白页,这样大概能做到只有在变量等于2时才显示这个事件;如果十个都在一个格子上,就设置十个事件页,第一个大于等于1放第一个事件,第二页大于等于2放第二个事件,以此类推大概就行
我也是新手,如果有讲错的或者理解错了多多见谅
3196970400
欢迎加我QQ喵
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
5 小时
注册时间
2026-5-11
帖子
5
3
 楼主| 发表于 2026-5-15 22:24:13 | 只看该作者
岩泽麻美 发表于 2026-5-15 22:17
如果十个事件不在同一个格子的话,就每个格子设置两个事件页,比如第二个事件就把第一页条件设置为大于等于 ...

不在同一个格子,在同一个格子就简单了,至于你说的第二种办法,空白是空白了,但NPC出现了,我的意思是让NPC不在特定条件直接不显示在地图上,可能是我太贪心了,不想做太大地图,就想把事件全压缩到少量地图里,NPC要是全显示就连路都要堵上了。

点评

那就第二页不放npc呗,完全空白嘛,新建一页之后光改个条件就行  发表于 2026-5-15 22:32
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
620
在线时间
80 小时
注册时间
2025-8-20
帖子
39
4
发表于 2026-5-15 22:37:49 | 只看该作者
大概这样?

屏幕截图 2026-05-15 223448.png (102.22 KB, 下载次数: 3)

屏幕截图 2026-05-15 223448.png

屏幕截图 2026-05-15 223453.png (93.03 KB, 下载次数: 3)

屏幕截图 2026-05-15 223453.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
5 小时
注册时间
2026-5-11
帖子
5
5
 楼主| 发表于 2026-5-15 22:40:34 | 只看该作者

一直都是复制,忘了图像还能空白。感谢感谢
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
131
在线时间
11 小时
注册时间
2025-4-19
帖子
11
6
发表于 2026-5-16 15:22:57 | 只看该作者
我会用脚本来处理
// 设置地图ID为当前地图、事件ID为3、独立开关A为true/false
$gameSelfSwitches.setValue([$gameMap.mapId(), 17, 'A'], true);
// 要操作的事件 ID 数组true=开启, false=关闭
[8, 9, 10, 12, 13, 16].forEach(id => {
    $gameSelfSwitches.setValue([$gameMap.mapId(), id, 'A'], true);
});
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
890
在线时间
91 小时
注册时间
2020-7-23
帖子
46
7
发表于 2026-5-16 17:23:12 | 只看该作者
我也觉得RM这个只能大于等于的设计太反人类了
话说回来开关和变量都有批量操作,不用像镇楼那样排十个执行命令的应该就在开关/变量操作同一页
臭画画的
我的代码盲让我用插件都举步维艰
梦中Non-Title RPG简称梦NTR脑内制作中!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
5 小时
注册时间
2026-5-11
帖子
5
8
 楼主| 发表于 2026-5-17 07:32:12 | 只看该作者
星间漫游起重机 发表于 2026-5-16 17:23
我也觉得RM这个只能大于等于的设计太反人类了
话说回来开关和变量都有批量操作,不用像镇楼那样排十个执行 ...

确实,特别是道具不能修改变量或者开关。也不能用脚本,只能触发公共事件,不使用插件的同时公共事件又不能读取道具ID,只能一个道具一个公共事件ID,本来可以通过变量让所有道具只触发一个公共事件。真的很头疼,现在虽然增加一个事件页,但本身一个事件里包含了几十个事件页,每个后面都得添加一个空白的。不然一旦条件改变,又突然冒出来了。如果有=就完全没有这种烦恼了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
164
在线时间
18 小时
注册时间
2024-1-1
帖子
8
9
发表于 2026-5-20 10:37:00 | 只看该作者
我有个想法不知道能不能行
公共事件里面做变量开关,如果x=1,则开关1打开,x=2则开关2打开,x=3则开关3打开。
这样可以在事件页定义开关来决定x=几就把开关几设定条件。
x=1时,比如出现条件开关1=开,那么这页启动了,如果一次性事件可以按照独立开关的逻辑给开开。
只不过需要经常刷新,这个公共事件才能开启新的变量开关。事件里也可以变量x=x+1,然后调用这个公共事件,比如当x=1时,x+1后等于2,再调用这个公共事件开关2就打开了。
我是新手不知道行不行给你思考一下
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
10
发表于 2026-5-20 11:33:56 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-5-20 11:35 编辑

编辑器改不了,那就自己改一下规则嘛,  比如, 把单数ID的变量保持原样, 双数ID的改成 ==

用DS写一下插件

  1. /*:
  2. * @target MZ
  3. * @plugindesc 根据变量ID的奇偶性改变条件判断方式:单数ID用≥,双数ID用==
  4. * @author YourName
  5. * @help ============================================================================
  6. * 使用说明:
  7. * 1. 将此插件保存为 .js 文件并放入项目的 js/plugins 文件夹。
  8. * 2. 在插件管理器中添加并启用此插件。
  9. * 3. 事件页的变量条件设置照常填写变量ID和比较值。
  10. * 4. 插件会自动判断:
  11. *      - 若变量ID为奇数 → 采用 ≥(原版逻辑)
  12. *      - 若变量ID为偶数 → 采用 ==(严格相等)
  13. * ============================================================================
  14. */

  15. // 备份原始方法
  16. var _Game_Event_meetsCondition = Game_Event.prototype.meetsCondition;

  17. // 覆写条件判断方法
  18. Game_Event.prototype.meetsCondition = function(page) {
  19.     // 检查是否存在变量条件
  20.     if (page.conditions.variableValid) {
  21.         const varId = page.conditions.variableId;          // 变量ID
  22.         const currentVal = $gameVariables.value(varId);    // 当前变量值
  23.         const targetVal = page.conditions.variableValue;   // 编辑器中设置的目标值

  24.         // 根据变量ID的奇偶性决定判断逻辑
  25.         if (varId % 2 === 0) {
  26.             // 偶数ID:使用严格相等(==)判断
  27.             if (currentVal !== targetVal) {
  28.                 return false;   // 不满足条件,直接失败
  29.             }
  30.         } else {
  31.             // 奇数ID:保持原版逻辑(≥),这里不做额外处理,让原始方法去判断
  32.             // 注意:原始方法中针对变量条件使用的是 >= 比较
  33.         }
  34.     }

  35.     // 继续执行其他条件(开关、物品、角色等)以及奇数ID变量的原始判断
  36.     return _Game_Event_meetsCondition.call(this, page);
  37. };
复制代码


试试能不能用吧
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2026-6-4 17:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表