此文章为个人记录存储
要想用RPGMZ游戏引擎制作出宠物战斗系统的游戏 需要有以下几个特点
-
玩家控制的角色不参与战斗 只有其他角色可以战斗
-
需要在菜单界面 战斗界面 不显示玩家 只显示可战斗角色
正文
我们需要把玩家控制的角色设为编号1 并且用以下代码显示和隐藏
0 入队 1 离队
javascript
//0入队 1离队 编号1
$gameMap._interpreter.command129([1, 1, true]);
首先定义一个变量 let addActor_bool = false; 判断是菜单和战斗进入还是事件入队功能区分开
如果 addActor_bool == true 则加入到顶部第一个 否则加入到底部最后一个
在菜单编写代码
javascript
const _Scene_MenuBase_prototype_create = Scene_MenuBase.prototype.create
Scene_MenuBase.prototype.create = function() {
_Scene_MenuBase_prototype_create.call(this);
$gameMap._interpreter.command129([1, 1, true]); //进入菜单移除角色
};
在地图编写代码
javascript
const _Scene_Map_prototype_create = Scene_Map.prototype.create
Scene_Map.prototype.create = function() {
_Scene_Map_prototype_create.call(this);
addActor_bool = true;
$gameMap._interpreter.command129([1, 0, true]); //进入地图添加角色
addActor_bool = false;
};
在战斗编写代码
javascript
const _Scene_Battle_prototype_create = Scene_Battle.prototype.create
Scene_Battle.prototype.create = function() {
_Scene_Battle_prototype_create.call(this);
$gameMap._interpreter.command129([1, 1, true]); //进入战斗移除角色
};
修改入队逻辑 是加入到顶部还是底部
javascript
Game_Party.prototype.addActor = function(actorId) {
if (!this._actors.includes(actorId)) {
if(addActor_bool){
this._actors.unshift(actorId);
addActor_bool=false;
}else{
this._actors.push(actorId);
}
$gamePlayer.refresh();
$gameMap.requestRefresh();
$gameTemp.requestBattleRefresh();
if (this.inBattle()) {
const actor = $gameActors.actor(actorId);
if (this.battleMembers().includes(actor)) {
actor.onBattleStart();
}
}
}
};
进入菜单会移除第一个角色 进入地图会加入第一个角色
好了你得到了宠物系统的基础功能实现
结尾总结
请Project1论坛的小圈子 离开