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

ツクールマテリアルのリクエストにお応えして
「キャンプメニューにもTP表示」プラグインを作ってみました。
デフォルトのメニューのみ対応です。



ツクマテの「メニュー及びステータス画面にTPを表示」トピックから
ダウンロードできます。

もし、AltMenuScreen.jsなどの公式プラグインにも
TPを表示したいという場合は
まず、「キャンプメニューにもTP表示」プラグインの中の
//TPを追加(メニュー・スキル)
の1ブロック(// から }; まで)と
//TPを追加(ステータス)
の1ブロックを AltMenuScreen.js の 一番最後にある
 })(); が記載された上の行にコピペ(コピーして挿入)します。

これで、スキル画面・ステータス画面にTPの表示が追加されます。
が、メインメニューには表示されません。

なので次に
AltMenuScreen.js の 82行目(this.drawActorMpなんちゃら)を
次の行にコピペして Mp の部分を Tp に書き換えます。
これで、TPも表示しますが、今のままではMPの表示位置とかぶってしまいます。

ゆえに表示位置を変更します。
84行目に繰り上がった Icons(ステートのアイコン) の行の
表示位置を * 1 から * 5 に変更し、TPの表示位置を * 1 に変更します。


(今TPが表示されている部分に、元はステートのアイコンが表示されていました)

この位置でOKだと思いますが
ステートのアイコンがやや顔グラフィックにかぶるのが気になる場合は
表示位置の高さを指定している座標 bottom - lineHeight * 5 の部分を()で囲った後
動かしたい距離分の数値を足してあげれば、OKです。

例えば、
(bottom - lineHeight * 5)+4
と、変更すれば、4ドット分下へ移動します。
アイコンだけでなく、全体的に下げたい場合は、それぞれ同じように
それぞれの座標を変更してあげれば好きな場所に移動できます。

以前も書きましたが、.jsというファイル形式で保存する場合は
文字コードは UTF-8 で保存をお忘れなく。

また、改行コードLFに対応したエディタでないと
改行が上手く反映されないことがあるのでご注意下さい。

参考までに、私が愛用しているエディタはTeraPadです。
他にもスクリプトの記述に特化した
すばらしいエディタが多数あるので探してみてね。
ツクマテプラグイン作るツールトピックスも参考になるよ)

※RPGツクールMZには最初からこの機能がついているので、移植の予定はありません。

拍手[5回]

PR
RPGツクールMVの準公式プラグイン「OverpassTile.js
橋のように、そのタイルの上を歩くことも出来るし
その下を潜り抜けることも出来る素敵なプラグインです。
サンプルゲーム「ニナと鍵守の勇者」等のプラグインフォルダに入っています。
Gamesフォルダ内のnina.exeを解凍してね。
(使い方は、公式ページの新機能活用講座をチェックしてね)

ただ「橋の上にイベントを置く」ということは考慮されていないため
プライオリティを「通常キャラと同じ」に設定したイベントを
以下のように配置すると、橋の下に落ちてしまいます。

     → プレイ画面

ただし、橋の上に直接置くのではなく
イベントが橋の上や下を通行するということは考慮されているので
下の図のように、橋の出入口のリージョンの上に配置して移動させると・・

エディタ画面 → プレイ画面

なんと、ちゃんと橋の上に表示されます!
ぐれいと!

とうわけで、橋の上に透明ではないイベントを置く場合は
最初は橋の上ではなく、橋の出口に配置しておいて
そのマップに入ったら自動で起動するイベントを別途設置して
イベントを移動させるようにすれば、いいということになります。

※イベント入力例(イベントのトリガー:並列処理)

◆イベントの位置設定:橋の上の人,(18,12)
◆イベントの一時消去


なお、 位置設定ではなく、移動ルートの設定で移動させる場合は
橋リージョンタイルの上以外に設置すれば自動で表示を切り替えてくれます。
便利ですねー。
(ともかくイベントに橋の出入口のリージョンを踏ませることが大事です)

さて、いよいよ接触判定です。
 
このままでは、橋の上にいても下にいても話しかけられてしまいます。
つまりそのイベントの下を潜り抜けられないのです。

というわけで、スイッチでイベントのページを切り替えて
「プレイヤーが橋の下にいる」時は、プライオリティを「キャラの上」にし
「プレイヤーが橋の上にいる」時だけ、「キャラと同じ」にします。

橋の下のイベントは、逆に
「プレイヤーが橋の上にいる」時は、プライオリティを「キャラの下」にし
「プレイヤーが橋の下にいる」時だけ、「キャラと同じ」にすれば
接触する事はないでしょう。

橋の下にいるヤツにまでスイッチあれするとかメンドイわ。
と言う場合は、公式の講座にあるように、イベントを並べておけば
橋の下にイベントが来たり、段差のあるヘリで接触したりと言う事も避けられます。

イベントの無駄遣いしたくないんだけど?っていう方は、
ユーザー登録でもらえる準公式プラグイン(海外翻訳版)
YEP_RegionRestrictions.js」を使用するという手もあります。
このプラグインの使い方については
プログラミング素人がゲームを作るさんの記事を参考にされると良いと思います。

ではどこで、そのスイッチを切り替えるか・・・ですが

 

赤丸のように橋の両出入口か
青丸のように、橋のある段に上がる出入口に
踏むとスイッチを切り替えるイベントを置く・・・ですかね。

※青丸の位置のイベント入力例
(イベントのプライオリティ:キャラと同じ、トリガー:プレイヤーから接触)

条件分岐:プレイヤーが上を向いている
 ◆スイッチの操作:#0001橋の上2いるぜ=ON
 ◆移動ルートの設定:プレイヤー
 :        :◇すり抜けON
 :        :◇上に移動
 :        :◇上に移動

 :        :◇すり抜けOFF
 ◆
それ以外のとき
 ◆条件分岐:プレイヤーが下を向いている
  ◆スイッチの操作:#0001橋の上2いるぜ=OFF
  ◆移動ルートの設定:プレイヤー
  :        :◇すり抜けON
  :        :◇下に移動
  :        :◇下に移動

  :        :◇すり抜けOFF
  ◆
 :分岐終了
 ◆
分岐終了

と、まあこれでOK。
橋の上イベントが諦めきれない方はお試しあれ。
※なぜ、プライオリティがキャラと同じになってるかというと
「はしご」タイルの上だとプレイヤーの向きが全部「上」になるからです。
 普通の階段なら、キャラの下でOKだし、移動ルートも1歩あるかせるだけでいいです。

 
ちなみに、ユーザー登録でもらえる準公式プラグイン(海外翻訳版)
YEP_RegionEvents.js」を使用するという手もあります。
特定のリージョンを踏むと、任意のコモンイベントを起動するプラグインです。
踏むとスイッチをONにするコモンを呼び出すリージョンと
踏むとスイッチをOFFにするコモンを呼び出すリージョンを
並べておいて置けば楽チンですね。
(ただし、イベントの出入りが自由になってしまうので
 ランダムに動くイベントを設置している場合は
 上で紹介した「YEP_RegionRestrictions.js」との併用が必須かな)


どちらでも、自分にとって楽な方をどうぞ。

拍手[7回]

バラバラになった絵を30秒以内に復元しよう!
マウスで画像をクリックして入れ替えてね!

RPGツクールMVで作りました。
©2015 KADOKAWA CORPORATION./YOJI OJIMA

もうちょこっと大きな画面で遊びたい方は、プリシーへどうぞ!

tomoaky様、トリアコンタン
プラグインお借りしました。
ありがとうございます。

イラストは、RPGツクールMVのデフォルト素材を合成して作りました。

拍手[4回]

RPGツクールMVのお話です。
準公式プラグインは、サンプルゲームに梱包されているので是非活用してね!
(プロジェクトファイルはGamesフォルダ内のexeファイルを解凍してね。)

今回は、プチ改造講座っていうことで
準公式プラグイン「EventSelector.js」のウインドウを
デフォルトのこういうのから

 ↓ こういうのへ変更しようと思います。 ↓
 

後、データベースのシステム設定からは消せない
メインメニューの「オプション」と「ゲーム終了」コマンドを
消したりもしちゃうよー。

勢いで講座と銘打ってるけど
どっちかというと「やってみた」に近いものです。

当方、JavaScriptのJaの字も理解していないのでご注意下さい。
この通りやって何か問題がおきても責任はもちません。
よーと、一応免責しておきます。

後、前回までのブログで説明した部分は割愛します。

 
今回改造するプラグインは
サンプルゲーム「ニナと鍵守の勇者」に同梱されている
EventSelector.js」です。(nina →js →pluginsフォルダ)
 
  どういうプラグインかというと、簡潔に言うと「アイテム選択」の亜種です。
アイテムではなくコモンイベントを使いますよーというだけです。
ただ、「アイテム選択」とちがってメッセージと同時に表示する事はできません。
詳しくは、プラグインのヘルプを見てね。

テレポートを作るとかだと、ひょっとしたら「アイテム選択」を使うより
やりやすいかもしれません。

いやいや、オレは「アイテム選択」のウインドウを変更してぇんだぜ
という方は、サンプルゲーム「エミールの小さな冒険」に入ってる
ChangeSelectItemWindow.js」をどうぞ。

今回は、面倒臭いのでパラメータは使いません。
直接ガシガシ変更しちゃいます。
パラメータを使って変更したいんだぜという方も
ChangeSelectItemWindow.js」を参考にするといいと思います。

とりあえず、「EventSelector.js」を開きウインドウの設定をしている部分を探します。
幅「Width」とか、高さ「Height」という単語を探すといいです。

どうやら137行目あたりの
        var width = Graphics.boxWidth;
        var height = this.fittingHeight(4);
という部分がソレのようです。
これを直接改変するのですが、元の命令文がわからなくなると困るので
次の行へコピペして挿入した後、元の命令文は「//」でコメントアウトして残しておきます。

とりあえず、高さ(var height)を画面と同じ大きさにあわせてみます。
Graphics.boxWidth; が画面の幅を取得しているようなので
Graphics.boxHeight; に変更すれば高さを取得するはず。

結果、なんとウインドウが全画面表示になりました(当たり前)

じゃあ、幅(var width)を縮めるには
this.fittingHeight(4); を this.fittingWidth(4); に変更すればいいのかにゃ?

結果、エラーが出て動きませんでした。

他の方法を考えることにします。
とにかく、横幅を小さくしたいので
とりあえず 3 で割ってみることにします。

Graphics.boxWidth / 3; と、入力。
(半角スペースは、入れても入れなくても動いてるけど、入れた方が見やすい?)

やったあ! 幅が小さくなったよー!
だけど・・・選択肢は一列に並んで欲しいのに三列あるよ、とほほ・・・

何列表示するかを指定しているところを探します。

よくわからないけど、すぐ下の
        return 3;
というのがなんとなしに怪しい気がするので、3を1に変更してみます。

結果、無事1列に表示できました!
山勘大当たりー!

これでまあ・・・おしまいなんですけれど
ウインドウの大きさだけじゃなく
位置も移動したいよって場合もあるかもしませんね。

というわけで、位置を設定している命令文・・・は
どうやら大きさを指定する命令のすぐ下にあるようです。

        Window_Selectable.prototype.initialize.call(this, x, y, width, height);

xyがウインドウの左端の座標のようです。
数字に変更してもいいし、x+10とかにしても良さそうです。
ちなみに、幅を3分の1に指定している場合であれば
xWidthにすれば真ん中に表示されますね。

ついでといってはアレだけれど
ウィンドウを透明にできたら、汎用しやすくなるんじゃ?
ということで、ウインドウを透明にする方法を探します。

ウインドウを透明にするプラグインがあった気が・・・ということで
公式プラグインの「TitleCommandPosition.js」を開きます。
これは、タイトルのメニューウインドウをいじれるプラグインです。

このプラグインでは、パラメータで背景を選択できるので
まず、パラメータの設定のところを見ます。
(パラメータの設定については、前回のブログ記事を参照のこと)

background」というのが背景を指定する変数のようです。
この変数が使われている命令文を探します。

        this.setBackgroundType(background);

という命令が、ソレのようです。
コピーして「 this.」で始まる命令文の辺りに挿入します。
(ウインドウ位置を指定している命令文より下に書かないとエラー)

結果、エラーで動きません。
そうです、このプラグインでは「background」という変数を定義していないので
そんな変数ねえよ!っていうわけです。

なので、前回のブログ記事よろしく
パラメータを記述してやれば、動くはずですが
面倒なので、「background」の部分を直接数値で入力します。
透明にしたい場合は 2 に入れ替えればいいはず。

        this.setBackgroundType(2);

はい、透明になりました。
パチパチパチ・・・

以上で

準公式プラグイン「EventSelector.js」のウインドウの変更は終了です。

<2017/04/21追記>
リストの並び順は新しいものが下にきますがこれを
新しく追加されたものは一番上に並ぶように変更したい場合は
こちらを参考にされると良いと思います。



続きまして
データベースのシステム設定からは消せない
メインメニューの「オプション」と「ゲーム終了」コマンドを消そう!
を、はじめたいと思います。

さて、どこからはじめるかですが・・・
とりあえず、RPGツクールVXAceのときの事を思い出してみます。
Window_MenuCommand」というクラス(?)で設定されていたようです。
なのでとりあえず、「js」フォルダにある「rpg_windows.js」を開いてみます。

続いて、「MenuCommand」という単語で検索をかけます。
たくさんヒットしますが
コマンドリストを作成している部分を探します。
そして・・・
    this.addOptionsCommand();

    this.addGameEndCommand();
を「//」でコメントアウトすれば、オプションとゲーム終了が
メニューに表示されなくなりました。

おしまい。

なお、一塊の命令文・・・
つまり段落から段落までコピーして、適当な名前でプラグインとして保存し
RPGツクールMVのプラグイン設定画面でONにすれば
元のプログラムを変更しなくて済むので安全かもしれません。

<01/12追記>
ユーザー登録特典の「YEP_MainMenuManager.js」というプラグインでも消せるようです。
なお、このプラグインを使えば、増やすことも出来るそうです。
ゲームとRPGツクールの館さんの12月23日の記事に、設定例があるので参考にされるといいと思います。



 

拍手[5回]

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

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

というわけで、今回は
ロード回数をカウントするプラグインを作ってみようと思います。

カテゴリーは講座になってるけど
どっちかというと「やってみた」に近いものです。
当方、JavaScriptのJaの字も理解していないのでご注意下さい。
この通りやって何か問題がおきても責任はもちません。
よーと、一応免責しておきます。
 
今回参考にするプラグインは
サンプルゲーム「ニナと鍵守の勇者」に同梱されている
SwitchOnLoad.js」です。(nina →js →pluginsフォルダ)
これはロードすると指定したスイッチをONにするプラグインです。
「羊の海」と「FantasicReverie」にも同梱されていますが、バージョンが違うので
必ず、「ニナと鍵守の勇者」に同梱されているものを参考にしてください。
(プロジェクトファイルはGamesフォルダ内のnina.exeを解凍してね)

 
というわけで、指定したIDの変数に1を加算するように改造します。

まず、スイッチIDを指定するのではなく、変数IDを指定するように変えたいので
変数IDの指定のパラメータが付いているプラグインを探します。

LastSubjectActor.js」が調度いいですね。
最後に行動したアクターのIDを変数に格納するプラグインです。
アイテムやスキルでコモンイベントを使用している場合に
誰がそのアイテムを使用したかがわかるという便利なプラグインです。

 * @param で始まる3行分が、パラメータの設定項目のようです。
スイッチIDの部分を変数IDのパラメータ設定項目に入れ替えます。

次に、スイッチをONにする命令と変数を加算する命令を入れかえます。

スイッチをONにする命令は「SwitchOnLoad.js」の35行目の
$gameSwitches.setValue(switchId, true);
switchIdに入ってる数値(ID)のスイッチをtrue・・・つまり、ONにするという意味です。
ちなみに、OFFの場合はfalseですかね。

変数を代入する命令はLastSubjectActor.js」の36行目の
$gameVariables.setValue(variableId, subject.actorId());
variableIdに入ってる数値(ID)の変数に
subject.actorId()・・・つまりアクターIDを代入するという意味です。

これを、コピーしてスイッチの命令に上書きします。

アクターIDは無関係なので、とりあえず1を代入する命令に書き換えます。
$gameVariables.setValue(variableId, 1);
これで、variableIdに入ってる数値(ID)の変数に1が代入される命令になりました。

variableIdに入ってる数値(ID)の変数」というのはちょっとややこしいと思うのですが
variableIdに入っているのは、変数のID番号なので、ご理解下さい。

とりあえず、variableIdに1を加算する式を考えます。
単純に考えると「$gameVariables.setValue(variableId, variableId+1);
なのですが、先ほども言ったようにvariableIdに入っているのは、変数のID番号なので
例えば、ID10番の変数を指定していれば
いつロードしても10+1・・・つまり11が代入されることになってしまいます。

では、variableIdに入ってる数値(ID)の変数を指定するにはどう記述すれば良いのでしょう。
まずは、普通に変数10番を指定する方法を探してみます。
RPGツクールMV プラグインコマンド内制御文字 実装一覧さんによると
$gameVariables.value(10)
です。

ということは、10の部分をvariableIdに入れ替えればいいはずです。
$gameVariables.setValue(variableId, $gameVariables.value(variableId)+1);
できました。
これで、指定したIDの変数に1づつ加算されるので
ロード回数をカウントできます。

これにて完成! と、言いたいのですが
すでにお気づきのように、このままでは動作しません。
現段階ではそもそもvariableIdという変数が定義されていないっぽいのです。

スイッチswitchIdを定義する部分と
変数variableIdを定義する部分を入れ替える必要があります。

SwitchOnLoad.js」の30行目の
var switchId = Number(parameters['Switch ID'] || 0);
が、switchIdを定義する部分のようです。

LastSubjectActor.js」の20行目にある
変数variableIdを定義する部分と入れ替えます。
これで、変数は用意できました。

さて、これで保存すればOKのはずですが
名前がSwitchOnLoad.js」のままでは少々わかりにくいので
好きな名前に変更します。

29行目が名前を指定する部分のようなので
ここの「SwitchOnLoad」の部分を好きな名前に変更し
それと同じ名前でプラグインを保存します。

保存時の注意点は、前回の「ゲームオーバーしないプラグイン」を参照してね。

今回は、変数やスイッチのIDを指定するオプションの作り方と
スイッチや変数の指定方法と、保存名の変更の仕方がわかりました。

ちなみに、プラグイン作成例がこちら
ツクールシリーズでの利用に限り、ご自由にお使い下さい。
ただし、何か問題がおきても責任はもちません。

 そうそう、RPG作る人のブログさんが
ツクールMVスクリプトリファレンスwiki を作ってくれているので
とっても参考になりますよ!

 

拍手[1回]

前のページ      次のページ
広告枠
アクセス解析

ATOM  
ATOM 
RSS  
RSS 


ソフトウェア制作講座





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