忍者ブログ
windowsやブラウザ のゲーム作ったりとか。

RPGツクールMVのお話です。

JavaScriptを理解していなくても
サンプルゲームのプラグインや元のスクリプトを参考にすることで
プラグインが作れてしまうんじゃなかろーか?

というわけで、今回は
戦闘で全滅しても、ゲームーバーにならないプラグインを作ってみようと思います。

マップ設定の敵出現歩数で行う、デフォルトのランダムエンカウントを使わず
全ての戦闘をイベントコマンドの「戦闘の処理」で行えば
プラグインがなくても、ゲームオーバーにならないように出来るのですが
今回はデフォルトのランダムエンカウントを使いたい、という前提です。
 
カテゴリーは講座になってるけど
どっちかというと「やってみた」に近いものです。
当方、JavaScriptのJaの字も理解していないのでご注意下さい。
この通りやって何か問題がおきても責任はもちません。
よーと、一応免責しておきます。
 
まず、環境を整えます。
JavaScriptを編集するには、テキストエディタなどが必要です。
ググるといくつか出てきますが
私はTeraPadを使用しています。

今回参考にするプラグインは
tachiさんの「Sea Pirate シーピラート」に含まれる
Tachi.js」というプラグインです。
用意したテキストエディタで開いてみます。
プロジェクトデータフォルダ内の「js」フォルダの中にある
plugins」というフォルダの中に入っています。
(プロジェクトデータはGamesフォルダ内のexeファイルを解凍)

 
なんか色々書いていますが、欲しいのはゲームオーバーの時の処理なので
テキストエディタの「検索」機能で「ゲームオーバー」という単語を検索します。
204行目くらいに欲しい処理が記述されています。
18行ほどのこの記述を223行目の「};」まで、まるっとコピーして
テキストエディタに貼り付け、好きな名前で保存すれば
「ゲームオーバーにならないプラグイン」の完成です。

※ツクールの利用規約により
 サンプルゲーム内のデータの改変利用が認められているので
 コピペしましたが
 ユーザーさんの有志で配布されているプラグインを改変する場合は
 プラグインごとの利用規約を守ってくださいね。


プラグインとしてファイルを保存するにはちょびっとだけルールがあります。
・拡張子は   .js
・文字コードは UTF-8 で保存
・「plugins」フォルダに入れる

とりあえずこれだけ守っていれば、MVのプラグイン管理画面で
セッティングできるようになるっぽい。
ファイル名は日本語でも認識しますが、なるべく半角英数字が良いようです。

あとは、これを登録し、ONにしてテストプレイしてみましょう。
わーい、全滅してもゲームオーバーにならなくなりました。

完。

・・・なのですが
せっかくなので元のスクリプトと見比べてみることにしましょう。
元のスクリプトは、「js」フォルダ内の「rpg_managers.js」を開き
さっきコピペしたスクリプトの一行目の命令文を検索。

//」でコメントアウトされた、日本語の文章は検索しても出てきませんよ。
元のスクリプトは全て英語なのです・・・

なお、コメントアウトというのは、いわゆる注釈です。

2320行あたりに、さっきコピペした命令文と概ね一緒の命令文があります。
Tachi.js」と、どのような差があるか検証してみましょう。

どうやら
2329行目の命令文がコメントアウトされているようです。
この命令がゲームオーバー画面を呼び出しているのでしょう、多分おそらく。

ifで始まる命令文は、条件分岐です。
全員死んでいて「canLose」でなければゲームオーバーになりますよ
という命令のようです。
canLose」が何を意味しているのかは、さっぱりわかりませんが
全員復活してマップに戻る処理が入ってるっぽい。
が、ここは特にいじらなくていいようなので、とりあえず放置。
(どなたか意味がわかる方、よかったら教えて下さると嬉しいです)
 
唐傘ドールさんが、教えて下さいました!
「canLose」は敗北可のフラグです。
rpg_objects.jsの Game_Player.prototype.executeEncounterの
BattleManager.setup(troopId, true, false);の falseをtrueにすれば、敗北可になります。
イベントコマンドの戦闘処理 Game_Interpreter.prototype.command301で、
フラグを獲得しています。
通常戦闘では変更する必要が無いので固定されているのです。

ということなのだそうです。
試しに falseをtrueに書き換えてみたところ、ゲームオーバーになりませんでした。
唐傘ドールさん、ありがとうございました!

 そして、2326、2327行目の命令文がコピペされているようです。
2327行目の命令文をコメントアウトすると、戦闘画面から出られなくなるので
マップに戻る命令と考えられますね。
2326行目の命令をコメントアウトすると、マップ画面に戻った途端に
ゲームオーバーになるし、「revive」は翻訳すると「復活」なので
パーティメンバーを復活させる命令と考えていいかなと思います。

もう一行追加されている「$gameSwitches.setValue(2, true);という部分は
スイッチの2番をONにするぜ、という命令です。
これは多分とかおそらくではなく、確実にそういう命令です。

つまり、全滅したらゲームオーバーにならずマップに戻って
スイッチ2をONにするというわけですね。

なんでスイッチをONにするのか?
全滅したことをイベントで判定できるように・・・でしょうか。

例えば、全滅したら教会に戻るとか
このままだと、パーティメンバー全員がHP1で生き返るけど
主人公以外は死んだままにしたいとか
スイッチで起動するコモンイベントなどにイベントを書き込んでおけば
そういったオプションを追加するのが簡単に出来るというわけです。
すんばらしいです。

スイッチの番号を変更したい場合は、数字を変更すれば良いですね。
 
さて、これだけでもプラグインとしてなんら問題はなさそうなのですが
プラグイン管理画面で、説明文が表示されないのはちょっと寂しいよね。

説明を表示するための雛形を
Tachi.js」からコピってもいいのですが
せっかくなので、公式プラグインからコピりましょうか。
AltMenuScreen.js」を開いてみます。

3行目までは、プラグインの名前がコメントアウトされていますね。

5~10行目の「/*:で始まる方は
デフォルト・・・と言うか英語やその他の言語用の説明文のようです。
12~17行目の「/*:ja」で始まる方が、日本語専用の説明文のようです。

素材として配布する場合は、両方とも記入するのが望ましいですが
個人的に使うだけなので、片方は削除しても問題ないっぽい。

* @plugindesc」というのは、説明文を書けという意味らしいので
ここにプラグインの簡単な説明を書きます。
* @author」は、プラグインの作者名を書くようです。
* @help」は、プラグインを設定する画面で「ヘルプ」を押すと表示されるようです。
* 」をつけると改行もできるようですよ。

これで、プラグインとしての体裁も整いました。
完成です!!

Tachiさんありがとうございました。

ちなみに、プラグイン作成例がこちら
 パラメータでスイッチ番号を入力できるようにしておきました。
ツクールシリーズでの利用に限り、ご自由にお使い下さい。
ただし、何か問題がおきても責任はもちません。

 なお、4Gamerさんの
一見さんによる一見さんのための「RPGツクールMV」入門。スマホゲームも作れるようになったお手軽ゲーム作成ツールをプラグインで拡張しよう
という記事も大変参考になるので合わせてごらん頂くと
よろしいかと思います。




ところで、「準公式プラグイン」でググって来てくれている方もいらっしゃるようです。

日本の準公式プラグインは、拙作「ニナと鍵守の勇者」のプロジェクトデータ内の
「js」フォルダ→「plugins」フォルダの中に、公式プラグインとあわせて37個入っています。
その他「エミールの小さな冒険」「シーピラート」「マジックビクトリー」にも少々。
公式ページでダウンロードできる「LivingShipCowboy」にもいくつか入っています。

海外の準公式プラグインは、ユーザー登録をすると、ダウンロードできます。
登録受付のメールをチェックしてみてください。

拍手[5回]

PR
この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)
広告枠
アクセス解析

ATOM  
ATOM 
RSS  
RSS 


ソフトウェア制作講座





Copyright ©   YUWAKA'S SOFT   All Rights Reserved
Design by MMIT / TemplateB3  Powered by NINJA TOOLS
忍者ブログ [PR]