
你是否玩过这样的角色扮演游戏:无论何时见到NPC,他们的行为都一成不变?无论天气如何,也不管周围激战正酣,他们总是站在初次相遇的地方。没错,我也玩过。这体验太差了。能对环境做出恰当反应的角色要有趣得多! 如果有一款故事类(视觉小说)游戏,能让一天中的时间、天气、气候、地形等各种日常条件对剧情产生重大影响,会不会更有趣?答案是肯定的,当然会。:) 在本指南中,我将介绍如何使用Javascript在iFVN中实现这些功能。我们能模拟的对故事而言最简单且重要的事物就是时间。(时间没有图像或复杂状态需要管理,它只是一个不断增长的数字。)不过它确实有许多子单元,每个子单元都可以独立计算,以便简化脚本编写。例如,我们可能希望某些脚本在早晨触发,而不是晚上。我们不想每次都手动计算从午夜开始经过了多少秒,所以我们只需调用一个名为IsMorning()的布尔函数来替我们完成这项工作。同样,在开始降雪之前检查IsWinter()是否为真也同样简单。 心跳脚本(Ticker) /** * 由Yamamma创建于2022/06/10。无法识别内容,已删除。value[T_M] = 分钟; if (小时 != RV.GameData.value[T_H]) // 仅在需要时更新 { RV.GameData.value[T_H] = 小时; 小时 = parseInt(小时 % 24); 时间段 = parseInt(小时 / 6); RV.GameData.value[DAY_HOUR] = 小时; // 界面将变为 false RV.GameData.value[DAY_TOD] = 时间段; if ( (时间段 == 0) && (小时 == 0) ) { // 新的一天开始 } LogDetails(); HourTick(); 时间字符串 = `${ToDName[时间段]} 天: ${(天 % 7) + 1} 小时: ${(小时 % 24) + 1}`; } if (天 != RV.GameData.value[T_DAY]) // 仅在需要时更新 { RV.GameData.value[T_DAY] = 天; LogDate(); } if (周 != RV.GameData.value[T_WEEK]) // 仅在需要时更新 { RV.GameData.value[T_WEEK] = weeks; } if (moons != RV.GameData.value[T_MOON]) // 仅在需要时更新 { RV.GameData.value[T_MOON] = parseInt(moons / 13); RV.GameData.value[T_SEASON] = parseInt(moons / 4); } seconds+=1; // 处理全局事件 GEventProc(); RV.GameData.value[T_S] = seconds; } 通用触发器(Tick) 这是每秒调用一次Ticker的触发器外观。

在iFVN编辑器中使用脚本 现在我们为大多数常见的时间单位设置了单独的变量。但这还不够完善,因为iFVN只能通过点击变量列表来显式测试每个变量的特定值或范围,这种方式很快就会变得繁琐,而且容易出错。如果我们能在Javascript代码中编写布尔函数,然后通过脚本选项调用这些函数,情况会好得多。

你可以轻松添加其他时间单位的测试,例如【IsWinter()】、【IsSummer()】等。

2026-03-21 04:00:40 发布在
iFVN - AVG文字游戏制作工具
说点好听的...
收藏
0
0
