【MZ】如何制作一个仅每个现实日可触发一次的事件

我希望有一个事件,点击后可以获得奖励,但除非第二天(真实世界的时间)再次访问,否则不会再给予奖励。我该怎么做呢?

将问题分解为几个部分。

第一个问题:如何获取现实中的日期。

第二个问题:如何记住我们上次与事件交互时的现实日期。

有一点需要注意,你可能需要为此使用一些脚本。例如,对于第一个问题,你可以使用 Date 类将当前的日期和月份存储在变量中。

var date = new Date();
// 将 1 和 2 更改为你知道空闲的变量 ID
$gameVariables.setValue(1, date.getMonth())
$gameVariables.setValue(2, date.getDate())

通过这种方式,你将当前月份和当前日期存储在了变量中。

然后你可以将这些数据保存在某个地方,再次获取当前日期,并使用条件分支等进行比较。如果两者相等,则说明是同一天。如果需要,你也可以加入年份,date.getYear() 可以实现这一功能。

这里有些功能无法正常工作,但我搞不清楚原因。系统提示“Date 未定义”。你有什么建议吗?

你的条件脚本试图使用脚本调用中的变量。这是行不通的——在脚本调用中声明的 JavaScript 变量只能在该脚本调用内部被访问。

你根本不应该使用脚本调用。请使用“控制变量”(使用不同于 3 的其他变量),并在“脚本”框中输入以下内容:

new Date().getDate()

然后,你的条件分支只需进行普通的变量比较(将变量 3 与另一个变量进行比较)。第二个脚本调用可以替换为一个“控制变量”操作,将变量 3 设置为等于另一个变量。

在同一张地图上放置多个这样的物品,它们会相互抵消吗?

我没看出有什么问题?不过你可能需要为每个变量单独设置一对变量。如果数量很多的话,可能会变得很混乱。

我会研究一下这个 Self Variable 插件。

1 个赞

这是日文内容。

我用于登录奖励的事件如下:

希望能对您有所帮助。

◆变量操作:#0017 日 = new Date().getDate()
◆条件分支:#0017 日 ≠ #0018 前日
◆文本:无, 无, 变暗, 中
: :感谢您的游玩!
: :赠送登录奖励!
◆变量操作:#0018 前日 = #0017

:分支结束