下载客户端

为iFVN增添深度:第三部分 - 制作自定义事件

2026-03-20 19:00:47

导读

这篇iFVN教程为你详解自定义事件制作,介绍了用JavaScript创建自定义事件的方法,包括编写事件生成函数、全局事件数组、事件管理器函数的代码,还展示了在iFVN的Common Triggers中设置计时通用触发器来实现天气变化事件的操作,带你掌握iFVN自定义事件的实现流程。

这是令人兴奋的部分!在这里,我们将了解如何根据指定的条件安排自定义事件。我们可以使用常规的Javascript来计算任何具有全局作用域的表达式。我们将创建一个事件生成函数,声明一个全局数组来存储事件,最后创建一个管理器函数来计算表达式、执行事件代码并移除已过期的事件。(当事件执行了指定次数后,该事件即视为过期。) 同步 对于涉及可见游戏元素或用户交互的事件,在iFVN中至少需要2个变量。这样我们就可以动态测试事件是否已激活,并根据需要停止或启动它。 代码: function CustomEvent(name, exprs, targetfn, max_occ=1) { this.name = name; this.exprs = exprs; // 一个或多个布尔表达式 this.target = targetfn; // 当表达式为真时执行的函数 this.count = max_occ; // 此事件在自动删除前可发生的次数 } var GlobalEvents = []; function GEventProc() // 事件管理器函数 { if (GlobalEvents.length <= 0) return; log(`发现${GlobalEvents.length}个事件...`); var e = 0; var xpr_str = 0; for (var evt = GlobalEvents.length-1; evt >= 0; evt--) { if(expr_test(GlobalEvents[evt]) == true) { // 所有条件都满足? var this_evt = GlobalEvents[evt]; eval(this_evt.target); // 执行脚本 if (this_evt.count >= 1) this_evt.count--; // 减少计数器 if (this_evt.count == 0) { e = GlobalEvents.splice(evt, 1)[0]; log(`因引用数为零,已删除${e.name}。`); } } } } function Rain() { RV.GameData.value[WEATHER_CHANGED]=true; RV.GameData.value[WEATHER]=1; } function ClearWeather() { RV.GameData.value[WEATHER_CHANGED]=false; RV.GameData.value[WEATHER]=0; } 现在我们需要修改我们的计时通用触发器,以检查天气变化:

并在初始化中添加以下代码行: var expr_time_test1 = "(seconds>1);(scene==44)"; var expr_time_test2 = "(seconds>11);(scene==44)"; GlobalEvents.push(new CustomEvent("rain start", expr_time_test1, "Rain()", 1)); GlobalEvents.push(new CustomEvent("rain stop", expr_time_test2, "ClearWeather()", 1));

评论

共0条评论
face
inputImg
相关阅读
最新更新

为iFVN增添深度:第二部分 - 模拟温度系统

我们在第一部分的基础上,添加了用于跟踪温度和降水类型的变量。 和时间一样,温度的建模相对简单,它只是一个数字。但由于温度与时间相关,我们需要知道当前时间才能提供…

2026-03-21 10:010赞 · 0评论

Bitburner中文指南

从入门到入不了门,深入浅出教你如何用正确的姿势玩比特币燃烧者(雾) 前言 游戏十分硬核,如果对编程不感兴趣那么游戏将会变得十分无聊。 游戏没有中文,对应文档也没…

2026-02-15 19:000赞 · 0评论

策略游戏 历史时代2决定版-自定义事件

-

2025-12-05 00:260赞 · 0评论

在iFVN中通过脚本使用变量(第二部分)

在第二部分中,我们将介绍如何通过iFVN中的脚本更高级地使用字符串变量及其用法。 通过脚本高级使用字符串变量 注意: 此知识仅基于我在iFVN中的个人经验以及网…

2026-03-22 07:000赞 · 0评论

《维多利亚2》事件与指令综合列表

【维多利亚2】控制台命令与事件(基本)完整列表,可用于修改恶名、 militancy(激进度)、更改上议院或执行种族灭绝等操作。 阅读本节 如何打开命令窗口: …

2026-03-22 04:000赞 · 0评论

为iFVN增添深度:第一部分 - 模拟时间

你是否玩过这样的角色扮演游戏:无论何时见到NPC,他们的行为都一成不变?无论天气如何,也不管周围激战正酣,他们总是站在初次相遇的地方。没错,我也玩过。这体验太差…

2026-03-21 04:000赞 · 0评论
暂无更多

最新更新

  • 脚本与代码小合集 — 这是一份由开发者和用户在IFAction讨论区分享的、适用于一般用途的实用脚本和代码的小型基础参考,且在iFVN中同样适用。 代码与脚本 隐藏AVG自动存档提示…
  • 在iFVN中通过脚本使用变量(第二部分) — 在第二部分中,我们将介绍如何通过iFVN中的脚本更高级地使用字符串变量及其用法。 通过脚本高级使用字符串变量 注意: 此知识仅基于我在iFVN中的个人经验以及网…
  • 为iFVN增添深度:第二部分 - 模拟温度系统 — 我们在第一部分的基础上,添加了用于跟踪温度和降水类型的变量。 和时间一样,温度的建模相对简单,它只是一个数字。但由于温度与时间相关,我们需要知道当前时间才能提供…
  • 为iFVN增添深度:第一部分 - 模拟时间 — 你是否玩过这样的角色扮演游戏:无论何时见到NPC,他们的行为都一成不变?无论天气如何,也不管周围激战正酣,他们总是站在初次相遇的地方。没错,我也玩过。这体验太差…
  • 在iFVN中通过脚本使用变量(第一部分) — 这是一份面向非程序员的iFVN脚本变量基础使用参考。在某些情况下,它有助于节省或减少游戏中使用的变量数量,实现更高效或更高级的变量运用。 变量简介 在iFVN中…
  • 场景中图像的碰撞检测 — 通过对代码稍作修改,你可以轻松获得判断场景中哪些物品被点击以及它们从哪个文件夹加载的功能。 RV脚本修改: 在RV函数体内添加以下代码行: RV.ImageDa…