検索
現代SFRPG「重力ルーペ/探求リバーブ」

ドラマティックRPG「バンドワゴン」

ハートフルRPG「地図の時間」

ビジュアルノベル「日向と香水」

ノベル×ADV「ストーリーテラー」 title1_2.png
カテゴリ
リンク集
【スポンサードリンク】

【ツクール新作】




【創作全般】






シナリオ制作


設定作り


最近読んでよかった本五選





創作意欲を掻き立てる本


自己管理術


クリエイター向けノウハウ

2018年10月31日

サクラエディタのGrep検索機能を活用したイベントコマンドの修正テクニック

サクラエディタのGrep検索機能を活用したイベントコマンドの修正テクニック


ここではコモンイベント、変数、スイッチの一括削除、変更、置換の方法をご紹介します。
導入方法、Grep検索の方法については以下の記事を参照ください。

サクラエディタのGrep検索機能を活用したテキストの修正テクニック
http://fanblogs.jp/tabirpglab/archive/1213/0

検索キー


以下、どのMapに設定されているのかをGrep検索で調べるために使用します。
削除、置換作業はGrep検索ではなく、Grep置換で実行します。

コモンイベントの検索キー

"code":117,"indent":0,"parameters":[コモンイベントID]

変数の検索キー

"code":122,"indent":0,"parameters":[変数ID,
※前方一致で検索するので、[]閉じなくて良い
※「,」で閉じないと、7の場合70、71……も拾ってしまうので注意

スイッチの検索キー

"code":121,"indent":0,"parameters":[スイッチID,
※前方一致で検索するので、[]閉じなくて良い
※「,」で閉じないと、7の場合70、71……も拾ってしまうので注意

『出現条件:スイッチN番がON』になっているイベント

検索ワード1:switch1Id":スイッチ番号,"switch1Valid":true,
検索ワード2:switch2Id":スイッチ番号,"switch2Valid":true,

・『出現条件:スイッチ400番がON』になっているイベント
検索ワード1:switch1Id":400,"switch1Valid":true,
検索ワード2:switch2Id":400,"switch2Valid":true,

※出現条件に設定可能なスイッチのスロットは2つあるので、「switch1Id」「switch2Id」両方で検索する必要がある

『出現条件:変数N番がON』になっているイベント

検索ワード:variableId":変数番号,"variableValid":true,

・『出現条件:変数300番がON』になっているイベント
検索ワード:variableId":300,"variableValid":true,

Grep置換による削除/置換

ここからが本題。
Grep置換機能でイベントコマンドを入れ替えたり、一括削除することができます。
また置換ワードを応用すれば、注釈「test」と入力したイベントコマンドを、コモンイベント10に置き換えるといったことも可能です。

【注意点】
・バックアップは忘れずに行ってください
・成功したと思っても、動作確認をするまではバックアップの保存を推奨です
・置換後はプロジェクトを「保存せず」開きなおしてください(プロジェクトをエディタで開かずに作業すればよい)
・語句の置換に失敗した場合、エディタで該当のMapIDが開けなくなります

コモンイベント

{"code":117,"indent":0,"parameters":[コモンイベントID]},

・「コモンイベント15」を削除する(実行内容から取り除く)
置換前:
{"code":117,"indent":0,"parameters":[15]},

置換後:空白(スペースなし)
※ポイント:「,」含めて指定すること

・「コモンイベント15」を「コモンイベント20」に置き換える
置換前:
{"code":117,"indent":0,"parameters":[15]},
置換後:
{"code":117,"indent":0,"parameters":[20]},

変数の操作

{"code":122,"indent":0,"parameters":[変数ID,変数ID,操作(0:代入,1:加算,2:減算,3:乗算,4:除算,5:剰余),オペランド(0:定数,1:変数,2:乱数,3:ゲームデータ,4:スクリプト,値]},

・「変数14に加算1」を取り除く
置換前:
{"code":122,"indent":0,"parameters":[14,14,1,0,1]},
置換後:空白(スペースなし)
※ポイント:「,」含めて指定すること

・「変数14に加算1」を「変数15に加算1」に置き換える
置換前:
{"code":122,"indent":0,"parameters":[14,14,1,0,1]},
置換後:
{"code":122,"indent":0,"parameters":[15,15,1,0,1]},

・「変数14に代入1」を、「変数14に乱数「0」〜「5」を代入」に置き換える
置換前:
{"code":122,"indent":0,"parameters":[14,14,0,0,1]},
置換後
{"code":122,"indent":0,"parameters":[14,14,0,2,0,5]},

・『出現条件:変数』を取り除く
『出現条件:変数300≧999』を消す
置換前:
variableId":300,"variableValid":true,"variableValue":999
置換後:
variableId":1,"variableValid":false,"variableValue":0
20181101_10.jpg


スイッチの操作

{"code":121,"indent":0,"parameters":[スイッチID(単体指定の場合は同じID、範囲指定の場合は始点),スイッチID(単体指定の場合は同じID、範囲指定の場合は終点),値(0:ON,1:OFF)]},

・「スイッチ5のON」を削除する
置換前:
{"code":121,"indent":0,"parameters":[5,5,0]},
置換後:
空白

イベントに設定された出現条件も同様に置き換える
置換前:
switch1Id":5,"switch1Valid":true,
置換後:
switch1Id":1,"switch1Valid":false,
置換前:
switch2Id":5,"switch2Valid":true,
置換後:
switch2Id":1,"switch2Valid":false,
※データ上の初期値はSW1のfalse

・「スイッチ5のON」を「スイッチ6のON]に置き換える
置換前:
{"code":121,"indent":0,"parameters":[5,5,0]},
置換後:
{"code":121,"indent":0,"parameters":[6,6,0]},

イベントに設定された出現条件も同様に置き換える
置換前:
switch1Id":5,"switch1Valid":true,
置換後:
switch1Id":6,"switch1Valid":true,
置換前:
switch2Id":5,"switch2Valid":true,
置換後:
switch2Id":6,"switch2Valid":true,

・「スイッチ5〜6をON」を「スイッチ5〜6をOFF」に置き換える
置換前:
{"code":121,"indent":0,"parameters":[5,6,0]},
置換後:
{"code":121,"indent":0,"parameters":[5,6,1]},

・スイッチ5をON
{"code":121,"indent":0,"parameters":[5,5,0]},
・スイッチ6をOFF
{"code":121,"indent":0,"parameters":[6,6,1]},
・スイッチ5〜6をON
{"code":121,"indent":0,"parameters":[5,6,0]},
・スイッチ5〜6をOFF
{"code":121,"indent":0,"parameters":[5,6,1]},

アイテムの増減

{"code":126,"indent":0,"parameters":[アイテムID,操作(0:増加,1:減少),0,(個数)]},

・アイテムID『N』を『M個』増加
{"code":126,"indent":0,"parameters":[N,0,0,M]},
・アイテムID『N』を『M個』減少
{"code":126,"indent":0,"parameters":[N,1,0,M]},

『アイテムID200を99個入手』を削除
置換前:
{"code":126,"indent":0,"parameters":[200,0,0,99]},
置換後:
空白

『アイテムID200を99個入手』を『アイテムID150を50個入手』に置き換え
置換前:
{"code":126,"indent":0,"parameters":[200,0,0,99]},
置換後:
{"code":126,"indent":0,"parameters":[150,0,0,50]},

プラグインコマンド

{"code":356,"indent":0,"parameters":["プラグインコマンドの実行内容"]},

・プラグインコマンド「aaa」
{"code":356,"indent":0,"parameters":["aaa"]},

注釈

{"code":108,"indent":0,"parameters":["注釈に書き込んだ文字列"]},

・初期値の場合(何も書き込まれていない状態)
{"code":108,"indent":0,"parameters":[""]},

・「test」と入力した場合
{"code":108,"indent":0,"parameters":["test"]},

オススメ:カスタマイズ設定

初期値ではGrep置換に対応したショートカットキーがないため、設定をお勧めします。
私はALt+Gに割り当てました。
以下そのときの設定手順。

設定→共通設定→キー割り当てタブ
・種別「検索系」
・ALtにチェックを入れる
20181101_1.jpg

今後確認したいこと

・データベース内のアイテム、スキルIDの置換時の影響

コモンイベントに置換/予約すると便利な処理

コモンイベントに置換/予約すると便利な処理


空でもいいのでコモンイベントを挿入しておくと、将来的な拡張に役立ちます。

@全回復処理の置き換え
・HP回復、MP回復、ステート解除を組み合わせて、カスタム全回復にする
・縛りプレイ、デフォルト「全回復」イベントによるステート剥がれ対策
(AutomaticState.jsにステート剥がれ対策機能あり)

Aボス戦直前
・イージーモード用救済処置(全回復、再戦フラグ立て)
・既読イベントのスキップフラグ立て

B場所移動前
・エンカウント保証
・エリア切り替えによる失効処理

C場所移動直後(自動実行)
・エンカウント保証
・エリア切り替えによるフラグ立て(イベント発生)

Dバトルイベント0ターン
・確率発動のフェーズスキル
・ランダムイベント(女神転生の会話発生など)
(YEP_BaseTroopEventsとの併用を推奨)

所感

・コモンイベント1〜20は使用頻度の高い処理のためにとっておく
 イベントシーンの演出を組む場合を想定するといいのかも
 ※中編、長編ではこのアクセス性が作業効率に響く

コモンイベント、変数、スイッチを引っ越ししたい場合


別記事にまとめました。

サクラエディタのGrep検索機能を活用したイベントコマンドの修正テクニック
http://fanblogs.jp/tabirpglab/archive/1219/0

2018年10月30日

ターゲット選択時に使えるショートカット操作

ターゲット選択時に使えるショートカット操作


作業効率化テクニックです。

・「BGMの演奏」のようにリスト表示された状態では、半角入力状態でイベント名の頭文字のキーを押下すると1キーで呼び出しができる
20181031_1.jpg


・「アニメーションの表示」「フキダシの表示」では、半角入力状態でイベント名の頭文字のキーを押下すると1キーで呼び出しができる
20181031_1.jpg

後者は本日気付きました。

・ターゲット選択時、リスト形式の場合に利用できる(例.アニメーションの表示、フキダシの表示)
・コモンイベントはドロップダウンリスト形式のため利用不可
 エディタのオプションから「展開」「ドロップダウン」を切り替えても効果なし

こうしたテクニックの累積で作業が捗ると嬉しくなりますね。
効率化万歳。

2018年10月27日

装備解除スキルの実装例

装備解除スキルの実装例

装備を強制解除するスキルの実装例です。
基本機能で組むと以下のようになります。

@スキルを受けた対象者に「装備解除」ステートを付与(このステートは条件分岐のためのマーキング)。
同ステートの有無で装備を解除するコモンイベント処理を実行(装備解除の対象アクターを判定して、解除させる)。
20181027_3.jpg

A@が正の場合、全装備を装備している/いないで条件分岐で判定★ここが基本機能では煩雑
20181027_1.png

B装備している場合、ラベルジャンプで装備解除の処理を実行(コマンド処理の共通化)
20181027_2.jpg

Aを解決するため、スクリプトでJavascriptを使用。
20181027_4.jpg

防具タイプのスロットの空き有無をsomeメソッドで調査する方法で解決。

アクター1番が防具タイプID5の防具を身に着けている場合


条件分岐のスクリプトで以下を入力。
$gameActors.actor(1).armors().some(function(armor) {
return armor.atypeId === 5;
});

1行にまとめた場合。
$gameActors.actor(1).armors().some(function(armor) {return armor.atypeId === 5;});

アクター1番が防具タイプID5の防具を身に着けていない場合

!をつけて構文を反転させる。

!$gameActors.actor(1).armors().some(function(armor) {
return armor.atypeId === 5;
});

解説


$gameActors.actor(1)
rpg_object.jsにあるアクターの管理人(gameActor=GameActor)が持つアクター1(actor(1))の情報の呼出。
gameActorsという部署に所属するactor1番さんを名指しで呼び出している。

armors()
防具情報一覧の呼び出し。
Excelやスプレッドシートのセルでデータが整列されている状態に対する処理のイメージ。

some
一致するものがあればtrueを返す関数。
Excelの中からCtrf+Fで一致する文字列を探すイメージ。

function(armor)
"armor"という関数を作り、後に続く構文を処理する。

すなわち……

$gameActors.actor(1).armors().some(function(armor) {
return armor.atypeId === 5;
});


$gameActors.actor(1).armors().
GameActorsに所属するアクター1番が、

some(function(armor)
{
return armor.atypeId === 5;
});


防具タイプに防具タイプ5番の情報を持っているか(ゲーム上は装備しているか)
という構文になります。
装備している=trueなので、条件分岐のスクリプトに入力すると、
アクター1が防具タイプ5を装備している場合、と読み替えられて処理が進むのです。


参考:
ツクールMVコアスクリプト解析
https://sites.google.com/site/rpgmakercorescript/game_/game_battlerbase/game_battler/game_actor-1

謝辞:
奏 ねこま様
http://makonet.sakura.ne.jp/rpg_tkool/

terunon様
https://tri-nitroterunon37.wixsite.com/terunon

2018年10月21日

サクラエディタのGrep検索機能を活用したテキストの修正テクニック

サクラエディタのGrep検索機能を活用したテキストの修正テクニック


サクラエディタを使い、RPGツクールMVのプロジェクトファイルを一括編集する方法です。
2018/10/21追記あり

サクラエディタ
https://sakura-editor.github.io/

1.検索→「Grep置換」を選択
20181015_1.jpg

2.以下を入力して「置換」を選択
・置換前:置換前のキーワード
・置換後:置換後のキーワード
・ファイル:*.json
・フォルダ:プロジェクトファイルのdataフォルダを指定
※規定でもバックアップ作成機能がありますが、データのバックアップを推奨します
20181015_2.jpg

3.置換結果が出力される
20181015_3.jpg

2で「バックアップを作成」にチェックをいれておくと、変更されたファイルは「ファイル名.skrold」となる
復元したい場合はサクラエディタで同ファイルを開き、「名前を付けて保存」で.skroldを消した元のファイル名で保存する。
※しかし2でバックアップしておいた方が復元は早いです。

エディタで該当のMapXXX.jsonを開くと反映されていることを確認。
20181015_4.jpg

応用

注釈に検索用のワードを入れて、後から修正箇所のイベントを調べることができます。

運用例.
1.後から修正する箇所に注釈で「修正予定」のようなキーワードを埋め込む
※作中本文で使わない単語なら何でも良いです。パーティクルタコヤキとか。
20181015_5.jpg

2.修正する際は、サクラエディタの検索→「Grep」(「Grep置換」ではなく普通の「Grep」)でMapIDとイベントID(またはイベント名)を特定
20181015_6.jpg
画像の場合、Map025,イベントID9,イベント名「daze」とわかる

3.該当のMapIDを開き、ツクールMVのエディタ検索「Ctrl+F」で該当イベントIDに名前でジャンプする
20181015_7.jpg

追記
制御文字で"\"を使うときは前にひとつ"\"を追加する必要があります。

例1.
置換前 "シルクハットの紳士"
置換後 "\c[6]シルクハットの紳士\c[0]"
→置換後MAPが開けなくなる

"\\c[6]シルクハット〜\\c[0]
\c[6]シルクハット〜\c[0]に変換される

例2.アクター0001の場合
置換前\\n[1]★置換元の時点で\n[1]ではなく\\n[1]にする
\\c[2]\\n[1]\\c[0]