アクターの再生成や複製が出来るスクリプトです。
デフォルトでもアクターの入れ替えで初期化が行えますが
このスクリプトではそれに加えて、他のアクターをコピーすることが可能です。
キャラメイクやモンスターテイムといったシステムの自作や
大量のアクターを管理するのに効果的な素材です。
※続きからに使用例を載せてあります。
【使い方】イベントコマンドの「スクリプト」で入力します。
$game_actors.regenerate(n, m)n番のアクターを、m番のアクターとして再生成します。
これはデータベースの内容を使い、アクターの初期化を行う処理です。
mを省略して、単なる初期化としても使えます。
$game_actors.copy(n, m)n番のアクターに、m番のアクターを複製します。
こちらはゲーム中の、アクターそのものをコピーする処理です。
コピー後は独立したアクターとなります。
nとmに変数を使いたい場合は
n = $game_variables[1]
m = $game_variables[2]
$game_actor.copy(n, m)
スペースの関係上、このように記述すると収まります。
備考実は再生成に関してはデフォルトでも $game_actors[n].setup(m) で行えます。
但し、元々のデータベース数を超えての再生成は出来ない
パーティメンバーを再生成してもマップ画面に反映されない
という欠点があり、この素材ではその点も改良しています。
スクリプトをダウンロード 【再生成の活用法】最も基本的な使い方は、アクターの初期化です。
前述の通り、これはイベントコマンドでも行えることですが
パーティの入れ替えが不要で即反映されますので使い勝手が向上しています。
成長系システムを入れている場合のリセットなどに使いやすいかと思います。
その発展形として、別のアクターのデータで再生成が可能です。
これは主に、アクター数が多い場合に使う機能になります。
例えば
フローグフロッグの場合、アクター数自体は100人分ありますが
全てのアクターが同一のステータスで誕生し、その後にイベントで差別化します。
もし全て手打ちで作った場合、コピペしたとしても
初期ステータスを1つ弄る度に100倍の手間が掛かるようになります。
このスクリプトの再生成を使えば、1つのアクターを調整するだけで済みます。
また、このスクリプトの再生成機能は、データベース上限を無視できます。
例えばデータベースのアクターが1番だけだったとしても
2番~のアクターをゲーム中に生成できるということです。
従って、データベースを「雛形」にして無限にアクターを生成できます。
【具体的な活用例】Wizardryの様な「キャラクターを作成・削除する」システムや
ポケモンの様な「モンスターを仲間にする」システム
ドラクエの様な「主人公たちが転職する」システムなど
実はこれらは同じ、雛形を使って再生成するという仕組みで再現できます。
Wizardry系については、前述のフローグフロッグの例と同じです。
まず初期状態のアクターと、雛形になるアクターを作っておきます。
キャラクター作成時には
初期状態のアクターで一番若い番号のアクターを探して
(名前か職業などで見分けることが出来るようにします)
雛形のアクターデータで再生成します。
雛形を複数作れば、種族や職業などの選択を再現できます。
キャラクター削除時には
そのアクターを初期状態のアクターで再生成します。
これにより、有限個のアクター枠を使いまわすことが可能です。
前述のように無限にアクターを生成することも可能ですが
私がフローグフロッグを作った経験上、パーティ加入管理などで
有限にしておいたほうが作者もプレイヤーも扱いやすいかと思います。
ポケモン系も、基本的には同じです。
上述の雛形が151匹なり722匹なりになっただけです。
再生成によって、ゲーム中のアクター($game_actors)と
データベースのアクターデータ($data_actors)は別に管理できるため
ゲームの最初に、全アクターを初期状態アクターで再生成します。
後は捕まえたときにはキャラクター作成
逃がしたときにはキャラクター削除、と同じ処理を行います。
このスクリプトを使わず、アクターをそのまま使って作る場合は
基本的に1種類1匹しか仲間に出来ません。
或いはDQ5の様に3匹まで、というのはコピペで増やせば可能ですが
当然アクターデータの管理が何倍にも膨れ上がります。
ドラクエ系(に限らず転職システム)は
情報収集→再生成→再成長
という手順で、大体の仕様は作ることが出来ます。
やはりフローグフロッグもこの手順で作りました。
例として、転職をした場合
レベルが半分になり、特定のスキルは引き継げる仕様とします。
各職業のステータスは、アクター(=職業)で作っておきます。
転職処理の最初に
まずアクターのレベルと、特定のスキルを覚えているかどうかを
条件分岐で調べて変数・スイッチで記録しておきます。
次に再生成でアクターを転職先のアクターにします。
そして記録した情報を使って
レベルアップとスキル習得をさせます。
(その他、名前や歩行グラ・顔グラの変更などもします)
【複製の活用法】デフォルトでは出来ない機能が複製です。
こちらは再生成と違い、アクターそのものを複製します。
再生成の場合はあくまで初期化してしまうため
転職システムや成長リセットなどは、複製を使って作る手もあります。
例えば演出として、途中から光と影の2人に分裂する場合や
SRPGにおいて、準備画面では1部隊として装備や成長を行い
戦闘画面では3ユニットとして扱うといった場合などが考えられます。
より汎用的な使い方としては、アクターの(一時)保存です。
例えばある時点で「$game_actors.copy(1, 100)」を行っておけば
次に「$game_actors.copy(100, 1)」をすることでアクターの状態を戻せます。
(メガテンの成長した仲魔を再召喚するシステムなんかが作れますね)
但し、複製されるデータの中には装備品なども含まれます。
(具体的には$game_actors=game_actorクラスの内容全て)
なので、イベントで作る場合は装備を外す処理などを入れて
アイテム増殖などを引き起こさないように作る必要があります。
※2018.5.27追記
複製について、コメントで面白い活用法を頂きました。
再生成の使い方の様に「雛形」を複製する方法です。
ゲーム開始後にキャラメイク用の雛形アクターに
ステータス変更やグラフィック変更などを行っていき
それを「複製」して使用キャラにするというものです。
こうすると、1人のアクターへの変更命令だけで
大量のアクターへのキャラメイクシステムを作れるので労力軽減になります。
また「種族×職業×ボーナス」のような組み合わせ型のキャラメイクも
データベースで全パターン作らなくて良いので再生成より向いています。
【上級者向けの話】$game_actors.regenerate(n, m) / $game_actors.copy(n, m) は
基本的にスクリプト内のどこからでも呼び出しが可能です。
つまり適当な処理に一行追加するだけで、他のスクリプトに組み込めます。
例えば、前述の複製によるアクターの保存を利用して
成長後にキャンセルキーで戻った場合は変更を戻す。
或いはコマンドを増やせるのであれば
再生成を利用して、リセットの項目を追加するなど。
それから注意点として、再生成や複製は結構デリケートな処理で
良くある競合とは別の形で、他のスクリプトと競合する可能性があります。
具体的に言うと、デフォルトのRGSS3では
例えばアクターIDは$game_actors[n].actor_idを
またアクター情報は$game_actors[n].actorを
使う仕様で書かれています。(私の見た限りですが)
そして、このスクリプトもそれを「前提」にしています。
一方でデフォルトのRGSS3では
例えばアクターIDを$game_actors[n].idやnで取得したり
アクター情報を直接$data_actors[n]で参照したりしても
値は同じなので、問題なく機能するようになっています。
ところがこのスクリプトを使った場合は
それぞれ別の値になりますので、後者の書き方だと
指定したのと違うアクターを参照するような挙動が起きます。
[5回]
PR
-->