本文章个人保存记录
Project1论坛 小圈子 人才 不得学习
注意几点
-
采集点需要计时 所以需要初始化数组 记录每一个采集点的时间
-
保存每一个采集点的时间经过了多少
-
判断采集点时间是否为0 为0则进行采集 然后重新赋值时间
1.初始化采集点
需要在RPGMZ游戏 新建游戏 读取存档 这两点进行初始化采集点数组
javascript
//=============================存档功能======================================
const _Game_System_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
_Game_System_initialize.call(this);
this.initCollectCooldown(); // 初始化采集点
};
// 初始化采集点冷却
Game_System.prototype.initCollectCooldown = function() {
// 如果已经存在,就不覆盖(保护存档)
if (this._Collect_Cooldown != null) return;
// 100个采集点,1~5分钟随机冷却
this._Collect_Cooldown = [];
for (let i = 0; i < 100; i++) {
this._Collect_Cooldown[i] = Math.floor(Math.random() * 14401) + 3600;
}
};
const _Game_System_prototype_onAfterLoad = Game_System.prototype.onAfterLoad
Game_System.prototype.onAfterLoad = function() {
_Game_System_prototype_onAfterLoad.call(this);
this.initCollectCooldown();
};
initialize 是新建游戏时走的 onAfterLoad是读取存档时走的 都需要初始化
以上代码 可以同时完成 1 2 两个知识点
3. 采集点的计时和判断
javascript
const _Scene_Map_prototype_update = Scene_Map.prototype.update;
Scene_Map.prototype.update = function() {
_Scene_Map_prototype_update.call(this);
//采集点冷却计时
for (let i = 0; i < 100; i++) {
if($gameSystem._Collect_Cooldown[i] > 0){
$gameSystem._Collect_Cooldown[i]--;
}
}
};
接下来在事件页进行判断即可
以人参为例子 分支 $gameSystem._Collect_Cooldown[0] 是第一个采集点 游戏内可以有很多个采集点 一百个 一千个都可以 当然每个采集点时间都是独立的

成功制作出了游戏内野外采集功能 并且支持存档功能
结尾总结
请Project1论坛的小圈子 离开