過去の敵を使ったバトルセットを作成したいのですが、この戦いでEXPやアイテムを獲得しないようにしたいです。何か解決策はありますか?
ターン0で何かを切り替えて、敵が戦利品を落とさないようにすることはできますか?
過去の敵を使ったバトルセットを作成したいのですが、この戦いでEXPやアイテムを獲得しないようにしたいです。何か解決策はありますか?
ターン0で何かを切り替えて、敵が戦利品を落とさないようにすることはできますか?
ターン0でスクリプトコマンドを使ってこれを実現できると思います。戦闘イベントページの条件を「ターン0」に設定し、スパンを「バトル」に設定して、スクリプトコマンドに以下を入力してください:
$gameTroop.members().forEach(enemy => {
enemy.exp = () => 0;
enemy.makeDropItems = () => [];
});
これはその戦闘中の敵にのみ変更を加えるため、他の戦闘やデータベース内の敵には影響しません。MZとMVの両方で動作するはずです。ゴールドも消去したい場合は、同じ箇所に enemy.gold = () => 0; を追加してください。
別の方法としては、データベース内でEXPを0にし、ドロップアイテムなしの敵の複製を作成し、これらの部隊でその複製を使用する方法もあります。
vxace mbの指定を忘れてしまいました
VX AceはRubyで動作するため、以前のコードは機能しませんが、スイッチを使ってターン0のトグル機能を実現できます。スクリプトエディタ(F11)を開き、「Materials」の下に新しいスロットを挿入して、以下を貼り付けてください:
class Game_Troop < Game_Unit
NO_REWARD_SWITCH = 10
alias no_reward_exp_total exp_total
def exp_total
$game_switches[NO_REWARD_SWITCH] ? 0 : no_reward_exp_total
end
alias no_reward_gold_total gold_total
def gold_total
$game_switches[NO_REWARD_SWITCH] ? 0 : no_reward_gold_total
end
alias no_reward_make_drop_items make_drop_items
def make_drop_items
$game_switches[NO_REWARD_SWITCH] ? [] : no_reward_make_drop_items
end
alias no_reward_on_battle_end on_battle_end
def on_battle_end
no_reward_on_battle_end
$game_switches[NO_REWARD_SWITCH] = false
end
end
10を未使用のスイッチ番号に変更してください。次に、戦闘イベントにおいて、条件を「ターン0」に設定し、スパンを「バトル中」に設定、さらに「スイッチ操作」コマンドでそのスイッチをONにします。このスイッチはバトル終了時に自動的にOFFになります。
これらの戦闘でゴールドを獲得させたい場合は、gold_totalの部分を削除してください。