#============================================================================== # # ■ 乗り物拡張・マニュアル・使い方編 □Ver. 2.82 □製作者:月紳士 # # ・RPGツクールVX用 RGSS2スクリプト(マニュアル) # # ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。 #------------------------------------------------------------------------------ # 更新履歴 # Ver. 2.82 パーティーメンバーの追従との併用時の動作を修正。 # Ver. 2.81 茂みによるエンカウント増加が飛行中に適用されないよう修正。 # Ver. 2.80 乗り物ステートの機能を追加。 # Ver. 2.70 エンカウントしない乗り物機能が未実装だった為、追加。 # Ver. 2.63 前回の修正が不十分だったことによる不具合を再修正。 # Ver. 2.62 イベント乗り物を乗り継いだ際に再度乗れなくなる不具合を修正。 # Ver. 2.61 下記更新の微調整。 # Ver. 2.60 HARTS HORN様の「隊列歩行スクリプト」併用動作の修正と # 月紳士のスクリプト「パーティーメンバーの追従」併用時用の更新。 # Ver. 2.51 スクリプトの見直しと細かい動作修正。 # Ver. 2.50 乗り物に乗った状態でのセーブ・ロード時の不具合を解消。 # Ver. 2.21 F12再起動後のエラー修正。 # Ver. 2.20 茂みの処理修正。壁タイル拡張併用時の魔法の絨毯の判定修正。 # Ver. 2.10 月紳士のスクリプト「壁タイル拡張」との併用機能の強化。 # Ver. 2.00 月紳士のスクリプト「壁タイル拡張」との併用を(一応)可能に。 # Ver. 1.20 持ち物イベントの仕様変更・機能強化。 # Ver. 1.11 callコマンド不具合修正。 # Ver. 1.10 イベント乗り物のロック機能追加とその調整など。 # Ver. 1.00 正式版としてバージョンリカウントしてリリース。 #============================================================================== =begin  ※このマニュアルは素材としてプロジェクト内に貼り付ける事も可能です。   このマニュアルではスクリプトの「使い方」について説明しています。   カスタマイズして使用する方法は「カスタマイズ編」で説明します。 == 基本機能 ===================================================================  このスクリプトで追加されるのは以下の機能です。 --○馬、大型飛行船、魔法の絨毯という3つの新しい乗り物を追加。-----------------   -- 馬 ------------------    地上を移動する乗り物です。    徒歩よりも早く移動でき、    ダッシュ禁止マップであればそれが利点となります。    標準では乗り物に乗っている間は敵が出現しない設定の為、    馬は地上を安全に通行できる便利な移動手段となりますが、    森・山といった地形を越えることが出来ません。     -- 大型飛行船 ----------    飛行船の上位機種として設定しています。    通常の飛行船は着陸の際、森など一部の地形に着陸が出来ません。    また、このスクリプトの導入で    山を通行可能にしても着陸することが出来なくなります。    大型飛行船は、これに対して    どこでも着陸できる乗り物、という位置づけになっています。    飛行船よりも高く飛ぶ演出がされます。   -- 魔法の絨毯 ----------    低空を浮遊して飛ぶ乗り物です。    海や崖を飛び越えることができますが、    森・山といった地形は越えることができません。    他の乗り物より速く設定しています。 ------------------------    ・使用方法    カスタマイズ項目にて、必ず適切な初期配置位置を設定してください。    ※ゲーム途中から登場させるならマップIDを 0 に設定し     後述のコマンド・スクリプトにて移動処理で呼び込んでください。   --○キャラクターが上に乗る「騎乗タイプ」の乗り物を作成できる。-----------------   データベースで設定されている画像を選択した乗り物は、   キャラクターがそのまま上に乗るような描画表現がされるようになります。   ※これは新しい乗り物の追加と別機能です。    小型船や大型船といった既存の乗り物を騎乗タイプにもできますし、    追加された新しい乗り物を、既存の乗り込むタイプの乗り物にもできます。    (馬を乗用車として使う、なども出来るということです)       騎乗タイプの乗り物になるか、否かは、選択した乗り物の画像が   “データベースにて騎乗タイプ設定がされているかどうか”   で、決まります。   データベースにはいくつかの画像の設定がされています。   騎乗型の乗り物を追加する場合は   それらを参考に、データベースを書き足してください。(別述) --○イベントにプレイヤーを乗り込ませたり、騎乗させたりできる。-----------------   イベントを乗り物にみたてて、乗り込ませたり、上に乗せたりできます。   乗せたいイベントのイベントコマンド・スクリプトにて get_on_event   という内容を実行してください。   プレイヤーがそのイベントに乗ります。   (隣接している場合は、イベントに乗り込む動きをします)   ※降りるときは、通常の乗り物と同様に決定ボタンを押します。   普通の乗り物と違い、見た目の変化のみを再現しており、   移動速度や音楽の変更はしません。   エンカウントも無効にならず、ダッシュも(可能マップであれば)出来ます。   見た目の演出の為の機能ですが、   水上移動用の乗り物とするなど、実用的な活用方法もあります。(後述) --○イベントにイベントを騎乗させることができる。-------------------------------   プレイヤーだけでなく、イベント同士でも乗せ合うことができます。   (乗り込ませることも出来ますが、めったに使わないでしょう)   騎乗タイプ画像を使って、馬に乗った騎士などを再現できます。   イベントコマンド・スクリプトを使い、 event_vehicle(1, 2)       というスクリプト内容のイベントを設定してください。   数字の部分は任意のイベントIDとしてください。   先の 1 にあたる部分は乗る側のイベントID(騎士に該当する側)です。   後の 2 にあたる部分は乗られる側のイベントID(馬に該当する側)です。   降ろす場合は、乗り手(騎士に該当する側)のイベントIDを指定して get_off_event(1)   としてスクリプトを実行してください。   数字の 1 の部分が任意のイベントIDです。 --○システムの応用にて、イベントを持ち上げる、運ぶ、といったことも可能に。-----   データベースにて設定している一部の画像のイベントは   乗り込むのではなく、持ち上げる動作をすることができます。   マップ上での設定では普通のイベント乗り込みと同様に     get_on_event   をイベントコマンド・スクリプトで実施させます。   そのイベントの画像が、   データベースで「オブジェクトタイプ」に設定されていると   自動的に持ち上げる動作をします。(設定方法などは別述) == 機能説明 =================================================================== --○追加乗り物初期設定---------------------------------------------------------   追加乗り物の、馬・大型飛行船・魔法の絨毯それぞれに   初期設定を変更することが可能です。   スクリプト内の   乗り物拡張・モジュール(カスタマイズ項目)中の   以下の項目で設定します。   (馬 = HORSE の初期設定を元に説明します    大型飛行船の場合は HORSE の部分が BIG_AIRSHIP となっている項、    魔法の絨毯の場合は HORSE の部分が MAGIC_CARPET となっている項で    それぞれ設定します) HORSE_MAP_ID  初期配置するマップのIDを指定します。= の後にマップIDを入れてください。  ※ 先頭の 0 はいりません。001 の場合は 1 と入力します。    ※ ゲーム途中から登場させるならマップIDを 0 に設定し     後述のコマンド・スクリプトにて移動処理で呼び込んでください。 HORSE_X  初期配置するX座標を指定します。= の後に数値を入れてください。  ※ 先頭の 0 はいりません。001 の場合は 1 と入力します。 HORSE_Y  初期配置するY座標を指定します。= の後に数値を入れてください。  ※ 先頭の 0 はいりません。001 の場合は 1 と入力します。 HORSE_FILE_NAME  乗り物に使用する画像ファイルの名前を指定します。= の後に HORSE_FILE_NAME = "Animal"   というようにファイル名を " " で囲って入力してください。 .png などの拡張子はいりません。 HORSE_FILE_INDEX  画像内のインデックスを指定します。= の後に数値を入れてください。  8体のキャラクター画像のうち、  左上が 0 です。0 から右へ順に 0 〜 3、  左下が 4。4 から右へ 7 まで、という順番で指定できます。  $をファイル名の頭につける単体ファイルの場合は  特に指定なし(0 のまま)で結構です。 HORSE_BGM_NAME  乗り物に流す音楽のファイル名を指定します。= の後に HORSE_FILE_NAME = "ship" というようにファイル名を " " で囲って入力してください。 .mid などの拡張子はいりません。 --その他の設定-- NOT_ENCOUNTER_VEHICIE_ID  エンカウントしない乗り物を指定できます。  NOT_ENCOUNTER_VEHICIE_ID = [3, 4, 5]  というように [] 内に , で区切って列記します。 ID = 0:小型船/1:大型船/2:飛行船/3:馬/4:大型飛行船/5:魔法の絨毯 ゲーム中はイベントコマンド・スクリプトにて $game_player.not_encounter_vehicle_id = [ ] で再度定義する方法で変更可能です。 乗り物ステート 乗り物に乗っている間にかけるステートを指定することが出来ます。 (ただし、乗るときに付加の処理、降りる時に解除の処理をしているだけなので 他の手段での解除や付加、相殺などが起きた場合、それに従って処理されます) BOAT_STATE = [] などの []内に付加したいステートのIDを入れます。 複数指定したい場合は , で区切って列記します。 この機能を使わない場合は [] のまま(空欄)にしておきます。 --○乗り物を呼び出す-----------------------------------------------------------   イベントコマンド・スクリプトを使い、   指定の乗り物を呼び出すことができます。   イベントコマンド・スクリプトで horse.call   と記述してください。   プレイヤーの目の前の地形が乗り物を呼び出すに相応しい地形であれば   目の前に乗り物が現れます。   horse の部分は、乗り物によって変わります。   小型船 = boat 、大型船 = ship 、飛行船 = airship 、   馬 = horse 、大型飛行船 = big_airship 、魔法の絨毯 = magic_carpet です。   大型飛行船の場合は   big_airship.call   魔法の絨毯の場合は   magic_carpet.call   となります。     ※この先頭の部分で乗り物を指定する方法は、別コマンドでも同様です。   以後の説明にてコマンドの先頭に horse とあるものは、   任意で big_airship や magic_carpet 等に変更して使う必要があります。 --○プレイヤーに重ねて乗り物を呼び出す-----------------------------------------   プレイヤーと重なった位置、つまり同座標に乗り物を呼び出すには   イベントコマンド・スクリプトで horse.call_here   と記述してください。   イベントコマンド・乗り物の乗降 と併用して使うと   一瞬で乗り物に乗るイベントにできます。   (処理上、call_here と乗り物の乗降の間には    いくらかのウエイトを入れる必要があるようです。任意に調節してください)    ※関連項目    ○その他コマンドのテストを行う --○乗り物の呼び出しを、一時的なものとする-------------------------------------   呼び出した乗り物が、降りたと同時に消えてしまうような   一時的な呼び出しを演出することもできます。   callコマンドの代わりに horse.instant_call   もしくは horse.instant_call_here       と記述してください。   乗り物を一度だけ呼び出すアイテム、などを設定する場合は   horse.instant_call_here と イベントコマンド・乗り物の乗降   の組み合わせが良いと思われます。アイテムのコモンイベントを使ってください。   (処理上、instant_call と乗り物の乗降の間には    いくらかのウエイトを入れる必要があるようです。任意に調節してください)   これでアイテムを使った瞬間に現れ(自動で乗り込み)、   降りた瞬間に消える乗り物が演出できます。   ※関連項目    ○その他コマンドのテストを行う  --○乗り物の待機位置を変更するには---------------------------------------------   イベントコマンド・スクリプトを使い、 horse.set_location(1, 2, 3)   と記述します。   1 の部分はマップIDです。任意のマップIDに変更してください。   2 の部分はX座標です。   3 の部分はY座標です。任意のX、Y座標に変えてください。 horse.set_location(1, 2, 3, true)    とすると、変数でマップIDと座標を指定できるようになります。        1 の部分はマップIDを示す値を代入した変数のIDとなります。    2 の部分はX座標を示す値を代入した変数のID、    3 の部分はY座標を示す値を代入した変数のID、となります。   ※これはイベントコマンド・乗り物の位置変更 と同様の機能です。 --○イベント乗り物から降りた時や、物を降ろしたときの演出の仕方-----------------   イベント乗り物から降りたときに新たにイベントを起こしたり、   物を降ろすときに音を追加したり、   どこかに物を置いたときに   (スイッチなどの)イベントを起こすこともできます。        イベントから降りたり、降ろしたりすると   そのイベントのセルフスイッチDが自動でONになります。   イベントを発生させるにはこれを利用してください。   あらかじめ、セルフスイッチDを自動起動条件とするイベントページを設定し、   そこに降りた時、降ろした時に起こすイベントを設定しておきます。   もし、繰り返し降りた時や降ろした時のイベントを発生させたいのであれば   セルフスイッチDをページの最後でOFFにするのを忘れずに行ってください。   (もしくはイベント一時消去するなど、なんらかの永久ループ回避は必要です)   ※この機能にセルフスイッチDを利用している為、    get_on_event を設定するイベントのセルフスイッチDは    他の事に使わないように、空けておく必要があります。 --○物を載せた時に作動するスイッチイベントの作り方-----------------------------   前項目では物を降ろした際のイベントの起こし方を説明しました。   これをさらに応用して、   物をイベントに重ねて降ろした場合に、   そのイベントを起動させることができる方法を用意しました。   スイッチの上に物を置くと、そのスイッチが作動する、というようなイベントです。   イベントと同位置のイベントの、セルフスイッチを操作する、   イベントコマンド・スクリプトを追加しています。これを利用します。    self_switches_on_here("A")   というスクリプトをイベントコマンド・スクリプトで実行すると、   このスクリプトを実行したイベントと、同位置の(重なっている)イベントの   セルフスイッチ(この場合は A)がオンになります。   ※ セルフスイッチIDを指定する際は、半角アルファベットでA〜Dで指定し、     (" ")で必ず囲って指定してください。   具体的な方法    持ち上げることのできるイベントを「持ち物イベント」    物が置かれることでイベントを起こすイベントを「スイッチイベント」    として、説明をします。    前項目(…物を降ろしたときの演出の仕方)を参考にして、    持ち物イベントに、    セルフスイッチDを自動実行条件にしたページを用意してください。    そのページで、    self_switches_on_here("A")    のスクリプトを実行するようにしておきます。    ※ IDは任意。Aでなくとも、Dでも可能です。    持ち物イベントを降ろすと、降ろした位置のイベントの    セルフスイッチAがオンになります。        スイッチイベントに    セルフスイッチAを自動実行条件にしたページを用意してください。    このページに、スイッチが作動した場合のイベントを作っておきます。 --○セルフスイッチ操作コマンド-------------------------------------------------   前項目に関連して、イベントを作成する際に便利な、   他イベントのセルフスイッチ操作のコマンドを追加しています。 self_switches_off_here("A")  イベントと同位置の他イベントのセルフスイッチをオフにします。  ※ A の部分は任意のIDです。A 〜 D で指定してください。    半角アルファベットとし、(" ")で必ず囲って指定してください。 self_switches_on(1, "A")    同マップ内のイベントをIDで指定して、そのセルフスイッチをオンにします。    ※ 1 の部分が指定する任意のイベントIDです。    A の部分は任意のIDです。A 〜 D で指定してください。    半角アルファベットとし、(" ")で必ず囲って指定してください。 self_switches_off(1, "A")    同マップ内のイベントをIDで指定して、そのセルフスイッチをオフにします。    ※ 1 の部分が指定する任意のイベントIDです。    A の部分は任意のIDです。A 〜 D で指定してください。    半角アルファベットとし、(" ")で必ず囲って指定してください。 self_switches_clear(1)  同マップ内のイベントをIDで指定して、  そのセルフスイッチA 〜 D をすべてオフにします。    ※ 1 の部分が指定する任意のイベントIDです。    A の部分は任意のIDです。A 〜 D で指定してください。    半角アルファベットとし、(" ")で必ず囲って指定してください。 --○イベントの通行判定を変更する-----------------------------------------------   通常、イベントは地上を移動します。   このスクリプトでは、地上以外の通行判定をイベントに与えることができます。   例えば、海を(自律)移動するイベントを作ることができ、   またそのイベントに騎乗すれば   一時的にプレイヤーは海を移動できるようになります。   洞窟の中の水路に浮かぶイカダのように、プレイヤーの持ち物でない、   ダンジョン内の仕掛けとしての乗り物演出に使えるでしょう。   イベントの名前に   <小型船>   を含ませると、イベントの通行判定は小型船と同じものになります。   (含ませた名前は、設定取得時に消去されます。    イベントの名前を表示するような他スクリプトを使用しても、    <小型船>の部分は表示されない工夫をしております)   その他、<大型船> <馬> <フロート> の通行判定を用意しています。   ※<フロート>    フロートは、崖・穴といった場所のみを通行できる通行判定です。    デフォルトでは、遠景が表示される何も無い部分です。    遠景を空や奈落として、    そこを渡る為に使う乗り物を演出する際に用意しました。 --○マップ移動時にイベント乗り物を継続する-------------------------------------   イベント乗り物は、元々マップ固有のイベントの為、   イベント乗り物に乗った状態でマップ移動すると   移動先のマップでは乗り物の無い(降りた)状態になってしまいます。   イカダで水路を移動し、別マップへ移る際など   乗り物が突然無くなると演出に困ります。そんな場合は…   移動先のマップに   「同じ画像」「同じ名前」   のイベントを用意してください。   (イベントをコピー・ペーストすれば簡単です)   スクリプトはそれを「同じイベント」と判断し   そのイベントをプレイヤーの乗り物とした状態でマップを開きます。   (イベントは自動的にプレイヤーと同位置まで移動することになります)   このイベントは、マップ内に配置しておいても良いですし   見えない所に隠しておいても良いでしょう。   オブジェクトタイプの乗り物(持ち運びイベント)でも   同じように用意すれば、別マップに継続して運ぶ演出ができます。    --○プレーヤーのイベント乗り物をロックする-------------------------------------   イベントコマンド・スクリプトにて、 event_vehicle_lock   の記述を実行すると、プレイヤーは決定ボタンでは   イベント乗り物から降りることが出来なくなります。   (オブジェクトタイプの場合は、持ったイベントが手放せなくなります)   イベント乗り物をロックすると、   決定ボタンで乗り物から降りれない(物を手放せない)代わりに、   決定ボタンで起こすイベントを起こせるようになります。   何かに乗ったまま、他のキャラクターと会話をしたり   ランタンを持ったまま、足元のイベントを探索したりできます。    ※ Ver1.20の更新より、目の前にイベントがある等して      持ち物イベントを降ろすスペースがない場合等、      降ろす(降りる)条件を満たしていない場合に決定キーを押すと、      通常通りにイベントを調べる動作をする、という仕様となりました。      複雑な設定なく、ランタンなどの持ち物を持ったまま、      目の前のイベントを調べることが出来るようになっています。      この仕様により、      持ち物を人に見せるイベントなどを、スムーズに作ることが出来ます。      (他にも応用した動作が出来るかもしれません)   ロック中は、別のイベント乗り物に乗ることはできません。   (イベントコマンド・スクリプト get_on_event が失敗します)   ロック状態は   イベントコマンド・スクリプトにて、 event_vehicle_lock_off   の記述を実行してロックを解くか、   マップ移動にて乗込みを継続できるイベントが無かった場合に   自動的にロックが解除されるまで続きます。 --○イベント乗り物への乗込みが可能かを判断してイベントを起こす-----------------   前項目で説明した乗り物イベントロック時など、   イベントコマンド・スクリプト get_on_event が失敗する場合がありえます。   イベントに乗る(持つ)と同時に音を出す際など、   失敗したのに音だけしてしまう、という場合が出てきます。   それを避けたい場合、イベントコマンド・スクリプトを使わず、   その代わりにイベントコマンド・条件分岐・スクリプトにて get_on_event   を条件にしてみてください。   この条件指定は、乗り込み動作の実行も兼ねます。   乗り物に乗った場合のみ、その後に条件を満たす場合へ進みます。   乗り物に乗れなかった場合は、条件を満たさない場合へ進みます。   また、 get_on_event_test   を条件にすると   乗れるかどうか、だけを調べることができ、   乗ることが可能でも、それを確かめるだけで、乗込み動作はしません。 -○その他コマンドのテストを行う------------------------------------------------   ここまでで説明したイベントコマンド・スクリプトで使用するスクリプトも、   イベントコマンド・条件分岐・スクリプト   で条件分岐に含んで実行することができますし、   実行が可能かだけを調べることができるテストコマンドもあります。 horse.call horse.call_here    を条件分岐にすることもできます。    呼ぶことが出来れば、乗り物を呼ぶと同時に、条件を満たす項目へ進み、    呼ぶことが出来なければ、乗り物を呼ばずに、条件を満たさない項目へ進みます。 horse.call_test horse.call_test_here    目の前(here なら重なった位置)に乗り物が呼べるかをテストします。    結果を返すのみで、乗り物を呼ぶことはしません。    乗り物を呼べる場合でもすぐに呼ぶのでなく    なんらかの処理をしてから乗り物を呼び出したい場合に    このスクリプトであらかじめテストします。 horse.instant_call horse.instant_call_here    一時的な呼び出しも、条件分岐で使用できます。    ※ こちらのテストを行う場合は、以下を流用します。 horse.call_test horse.call_test_here      テスト内容が同じの為、horse.instant_call_test などは用意していません。 get_on_event get_on_event_test    前項での説明どおりです。 event_vehicle(event_id, vehicle_id) event_vehicle_test(event_id, vehicle_id)    イベントにイベントを乗せる際にも条件分岐で行うことができます。    あらかじめテストが必要な際には〜_testの方を使用します。    使い方はこれまで説明した項と同じです。 get_off_event_test get_off_event_test(event_id)  イベントをイベントから降ろす際も同様です。  使い方も同様です --○プレイヤーの乗り物イベントを調べる-----------------------------------------   イベントコマンド・条件分岐・スクリプトに、   以下のスクリプトを指定すると   プレイヤーの乗り物イベントの有無を条件にすることが出来ます。   player_in_event_vehicle   イベント乗り物に乗っている際(持ち物イベントを持っている際)、   条件を満たします。      また、イベントの名前を調べることで、   条件に合ったイベント乗り物に乗っているか(持ち物をイベント持っているか)   を判断することもできます。   player_in_event_vehicle("ツボ")   ツボ としている部分に、任意の文字を入れます。   イベントの名前に、この任意の文字(例だとツボ)が入っている場合のみ、   条件を満たします。   任意の文字が含まれていない名前のイベントの場合は、条件を満たしません。   (イベントが無い場合も、条件を満たしません) ------------------------------------------------------------------------------- =end