有没有办法通过脚本调用移除所有队伍成员?

我的游戏中有一些部分,可以从众多不同的角色中选择一个加入你的队伍(每次只能一个),而且随着游戏的开发,还会有更多角色加入。由于同一时间只能有一名角色在队伍中,如果要手动处理每一个移除队伍成员的情况,将会非常麻烦。

基本上,我想问的是,有没有办法在不手动指定每个成员的情况下,将队伍成员设为“无”?我的意思是将他们从队伍中移除,而不是让他们隐身。

试试在“脚本”事件命令中使用这段代码,我认为它应该能清空所有队伍成员:

$gameParty.allMembers().forEach(actor => $gameParty.removeActor(actor.actorId()));

如果你希望主角留在队伍中,可以跳过其演员 ID。这段代码保留 1 号演员,并移除其他所有人:

$gameParty.allMembers().forEach(actor => {

if (actor.actorId() !== 1) $gameParty.removeActor(actor.actorId());

});

是的,这招很管用!那么,有没有办法在不逐一考虑所有选项的情况下,更改玩家队伍中所有队员的不透明度或混合模式,而不受具体角色的影响?

跟随者每一帧都会复制玩家的透明度和混合模式。如果希望整个队伍一起变化,可以使用“设置移动路线”事件指令来改变玩家的透明度/混合模式,这样所有当前队伍成员都会同时发生变化。

如果只想改变队伍成员(包括跟随者),而让玩家保持正常状态,则需要一个小插件来阻止这种复制行为。请将以下内容保存为 .js 文件并放入 js/plugins 文件夹中,然后在插件管理器中启用它:

/*:
 * @target MZ
 * @plugindesc 当开关开启时,跟随者使用自身的透明度和混合模式。
 */
(() => {
    const FOLLOWER_SWITCH = 0; // 你的开关 ID
    const OPACITY_VAR = 0;     // 你的变量 ID,范围 0 到 255
    const BLEND_VAR = 0;       // 你的变量 ID,0 为正常,1 为加算,2 为乘算,3 为滤色

    const _update = Game_Follower.prototype.update;
    Game_Follower.prototype.update = function() {
        _update.call(this);
        if ($gameSwitches.value(FOLLOWER_SWITCH)) {
            this.setOpacity($gameVariables.value(OPACITY_VAR));
            this.setBlendMode($gameVariables.value(BLEND_VAR));
        }
    };
})();

请将三个 0 替换为你实际使用的开关和变量编号。当开关开启时,地图上所有队伍成员都会使用这两个变量的值。当开关关闭时,他们会再次同步玩家的透明度和混合模式。

这正是我想要的,谢谢!