多分、満足いく答えにはならないと思いますが一応回答してみます。
まずセルフスイッチに関する前提知識を二点。
一点目は$gameSelfSwitchesは$gameSwitchesや$gameVariablesのように
[マップID, イベントID, セルフスイッチ番号]をkeyとする
独立した変数管理機構でイベントとは直接関係ありません。
二点目は設定されてないフラグは全てfalse(OFF)として扱う、という大前提があります。
したがって、全てOFFにするというのは非常に簡単で既存のフラグ情報を全て消去するだけで完了します。
しかし全てをONにする、というのは存在する全ての
マップ、イベント、セルフスイッチ番号を走査する必要があり膨大なステップ数を要します。
これらを踏まえた上で
こちらの質問には回答する事が出来ません。主な理由は二つ。コミット さんが書きました:また、全マップの全セルフスイッチをONにする方法も知りたいです。
他のマップのイベントID一覧を取得する、という処理は
ツクールMVのスクリプトコマンドだけでは実行不可能だと思います。
MVではファイル読み込み処理が面倒でマップファイルも例外ではありません。
並列処理やプラグイン等を併用すれば出来ない事もないですけど煩雑な手続きが必要です。
もう一つはシステムに対する正確な理解がない人が生兵法をしてもバグの温床にしかなりません。
前提知識で書きましたがイベントとセルフスイッチはシステム的には紐付いている訳ではないです。
コマンド実行後にセーブ、イベントの消去と生成をするだけでセルフスイッチがズレる可能性はありますし
更に新しいイベント作成した時に無関係のセルフスイッチ情報が収まる可能性もあります。
フラグ情報をリセットするだけならある程度予想出来ますけどONにする場合は副作用の予測が困難です。
こちらは現在マップの全てのイベントIDのセルフスイッチ番号'D'をONにする、という意味ですかね。コミット さんが書きました:「現在のマップIDのDだけをON」にするスクリプトはどうやって記述すればよろしいでしょうか?
上の理由で利用は非推奨ですけど出来ない事もないです。
コード: 全て選択
const mapId = this._mapId;
const selfSwitchId = 'D';
const events = $dataMap.events.filter(e => e);
events.forEach(event => {
const key = [mapId, event.id, selfSwitchId];
$gameSelfSwitches.setValue(key, true);
});
コード: 全て選択
console.log($gameSelfSwitches._data);
何が入っているのか確認するようにしてください。