忍者ブログ

へぷたなすくろーる

RPGツクールのブログです。イベント講座とRGSS3スクリプト配布をやってます♪

Home > > [PR] Home > スクリプト素材(RGSS3) > RGSS3_アクター・キーワード・システム

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

RGSS3_アクター・キーワード・システム

アクター毎に「キーワード」(メモの様なもの)を付けることができます。
キーワードはそれ単体ではゲームに何も影響を与えません。
イベントコマンドで判定することを目的にした
スイッチや変数のようなイベントサポートシステムです。
応用性が高いので、つづきから読める具体的な使用例も参考にして下さい。

キーワードの追加と削除
イベントコマンドの「スクリプト」に書く。
nak_add(ID, "○○"):ID番のアクターに「○○」というキーワードを追加
nak_add_p(No, "○○"):No番のパーティメンバーにキーワードを追加
nak_add_all("○○"):アクター全員に「○○」というキーワードを追加

nak_remove(ID, "○○"):ID番のアクターから「○○」のキーワードを削除
nak_remove_p(No, "○○"):No番のパーティメンバーからキーワードを削除
nak_remove_all("○○"):アクター全員から「○○」のキーワードを削除

nak_reset(ID):ID番のアクターのキーワードを全て削除
nak_reset_p(No):No番のパーティメンバーのキーワードを全て削除
nak_reset_all:アクター全員のキーワードを全て削除

初期キーワードの追加
データベースのアクター・職業のメモ欄に書く。
<初期キーワード "○○">:ゲーム開始時に「○○」というキーワードを追加

常時キーワードの追加
データベースのアクター・職業・武器・防具・ステートに書く。
<常時キーワード "○○">:アクターに「○○」というキーワードを付与
常時キーワードはコマンドで削除することはできない。
装備中はキーワードが付与され、装備を外すとキーワードも消える。

キーワードの判定
イベントコマンドの条件分岐「スクリプト」に書く。
nak_check(ID, "○○"):ID番のアクターに「○○」というキーワードがあるか
nak_check_p(No, "○○"):No番のパーティメンバーにキーワードがあるか
nak_check_pa("○○"):パーティメンバーの誰かがキーワードを持っているか
これらはコマンドの頭に!をつけると、そのキーワードがないか、という条件になり
また&&(and)や||(or)で繋げることで複数の条件をまとめることも可能。

キーワード判定+ID取得
イベントコマンドの「スクリプト」に書く。
XX番の変数に「キーワードを持つアクターのID」を代入するコマンド
nak_who(XX, "○○", n):アクターリストから検索する(ID順でn番の候補)
nak_who_p(XX, "○○", n):パーティメンバーから検索する(隊列順でn番の候補)
「○○」を持つアクターがいなかった場合は0が代入される。
3つ目の引数nは省略可能、その場合は1と同じ扱いになる。
nの数字は、条件に合う候補の何番目をピックアップするかの指定。
候補がnより少ない場合は、自動で最後の候補を選択する。
同時に複数のアクターを選ぶ場合や、サーチの偏りを減らしたい場合に使う機能。

一部合致コマンド
nak_remove2(ID, "○○"):ID番のアクターから「○○」を含むキーワードを全て削除
nak_remove2_p(No, "○○"):No番のパーティメンバーからキーワードを全て削除
nak_remove2_all("○○"):アクター全員から「○○」を含むキーワードを全て削除

nak_check2(ID, "○○"):ID番のアクターに「○○」を含むキーワードがあるか
nak_check2_p(No, "○○"):No番のパーティメンバーにキーワードがあるか
nak_check2_pa("○○"):パーティメンバーの誰かがキーワードを持っているか

備考
キーワードは文字列であり、ユーザーが自由に追加することができます。「""」を忘れずに。
アクター1人につき、何個でもキーワードを保持できますが
同じ名前のキーワードは1つに纏められます。複数追加する意味はありません。
スクリプトコマンドに「p $game_actors[ID].nana_actor_keyword」と入れることで
ID番のアクターのキーワード一覧をコンソールに表示できます。確認用にどうぞ。
アクタータグの具体的な使用例は続きをご覧下さい。

その他
ver2.0a  新機能としてコマンド(_all、_reset、2)を追加、判定機能の見直し
ver2.1  2.0の新機能や判定機能を使うとエラーが出る不具合の修正
ver2.2  初期&常時キーワードが上手く登録されない不具合の修正

スクリプトをダウンロード

具体的な使用例の紹介
まずは常時キーワードの使い方。これは他のキーワードとちょっと性質が違います。
例えば、剣や槍など刃物系の装備に全て<刃物>というキーワードをつけて
「刃物を装備していればロープを切って脱出できる」イベントを組んだり。
<炎が出せる><口が達者><手先が器用><伝説の存在>といった
特徴を表すキーワードを色々なものにつけてイベントで判定に利用することで
「アクターAか、魔術師か、炎系装備をしているか、炎のオーラ状態なら炎を出してイベント変化」など。
装備品を調べたり、ステートかどうか調べたり、クラスを調べたり
ということはデフォルトでも出来ますが、総当りで面倒な方法になります。
これをカテゴリーでまとめたり、データベースの垣根を超えて設定できるのが強みです。
判定もnak_check_pa("○○")など簡単に扱えるものを用意しています。

それ以外の一時キーワードの使い道ですが
これはアクター毎にフラグ管理できるのが利点です。
例えば「イベントBで、その前にイベントAを見ていると、台詞が変化する」と組みます。
これだと普通はスイッチで良いのですが、パーティメンバーが入れ替えられるようなゲームだと
「お前はあの時の!」(いやいや、君は居なかったでしょうが)という矛盾が起きたりします。
かと言ってイベント毎にアクター数だけスイッチを用意するのもねぇ。
イベントAでメンバー全員に適当なキーワードを付けておけば、そういう矛盾もおきません。
プラス、メモ扱いで手軽に扱えるのも大きな利点です。
アクター毎に無限のセルフスイッチが用意されていると言えば分かりやすいでしょうか?

マップイベントを想定して書きましたが、バトルイベントでも問題なく使用可能です。
例えばターン開始時に付いているキーワードに応じてステートを付けるとかで色々なものが作れるでしょう。
その気になればターンカウンター代わりに使うこともできます。
但し、スクリプト名が示すように現時点ではアクター専用でエネミーには設定できません。

基本思想は、アクターにメモをくっつけるだけという単純さなので
スクリプトが扱えない人に取っても理解しやすいシステムだと思います。
一方でイベントコマンドによる判定方法が充実しているため
自作のシステムや細かい挙動をサポートすることも出来ます。
特にnak_who系は候補のサーチとアクターIDの取得を一度にできる優秀なコマンドです。
サーチはnak_check系だと総当りになってしまうようなケースがありますし
自作イベントでアクターIDを取得できればかなり応用が利くので活用して下さい。

例としては、特定のキーワードを持っているパーティメンバーがいるなら
その中の誰か1人が話すというような分岐を作成する場合に役立ちます。
nak_who系の3番目の引数は省略可能で、その場合は1を入れたのと同じになっています。
単発で使う場合には気になりませんがサーチ順の関係で選ばれやすいキャラが出ますので
先頭のキャラばかりが喋らないように違う数字を入れてサーチ結果を散らしたり
複数のキャラが会話する場合などにサーチ結果が被らないようにする目的で使用します。

とりあえず説明はこんなところでしょうか。
何か質問がありましたらお気軽にどうぞ。

拍手[31回]

PR
-->
Responses4 Responses
1.教えてください かんがえるノートさん (2014/08/19 02:18) [Edit]

超すごい内容のスクリプトで感激しました。
しかし、いざスクリプトを貼り付けてテストプレイ
してみると、
Compabijity Error
なるものが生じてしましました。
新規プロジェクトでやってみても同じエラーが
発生していまいます。
何がまずいのか、私にはさっぱりわかりません。
どうしてもこのスクリプトを使いたいので、
どうすればこの問題をクリアできるか教えてください。
ちなみにエラーの詳細は
encodings:ASCII-8BIT and UTF-8 とありました。

Re:教えてください 奈々(なな) (2014/08/19 02:44)

報告ありがとうございます。

どのスクリプトの何行目でエラーが起きているか分かりますか?
多分エラーメッセージに出ていると思いますが。

2.無題 かんがえるノートさん (2014/08/19 20:22) [Edit]

すみません。
このスクリプトの最後、endも終わった後の行です。
が、このスクリプトをいったん消去したあと、
これまで問題なく起動していたほかのスクリプトでも、
まったく同じエラーが立て続けに出るようになってしまい、
ただいま大混乱です・・・
いったい何が原因だったのでしょう・・・?

Re:無題 奈々(なな) (2014/08/19 23:04)

ん~謎ですね。
先に結論を書くと、まずPCの再起動を試すべきでしょう。
(原因が不明瞭なときはこれで直るケースもままあります)
それでダメならスクリプトを全体検索で「coding:」を探して下さい。


全く分からなかったので調べたこと、そこからの推測によるお答えになりますが
Compatibility errorは「文字コードの違い」によるエラーです。
RGSS3のベースであるRuby1.9では、文字列や正規表現オブジェクトが文字コードを保持するため
Ruby1.8と違い文字化けが解消されましたが、異なるコードをマッチングするとこのエラーが出ます。

文字コードの違いという点では
私のスクリプト用テキストファイルはShift-JISなのに対して
ツクールで扱う文字は基本的にUTF-8だということがあり
また文字列や正規表現のマッチング「メモ欄から設定を読み込む」処理で使います。

しかし、調べてみるとスクリプトリストにコピーした時点で
文字コードはUTF-8に変換されているようなので原因とは言えません。
それに私の素材でマッチング処理を行うものは多いので
それが原因なら私を含めてエラーが頻出していなければおかしいです。

従って結論としては
スクリプトの問題ではなくPCの不調が原因ではないかと思います。
或いは可能性が低いですが、文字コードの操作や外部ファイルの読み込みなど
もっと高度な処理をしている他のスクリプトがあるかです。

3.無題 かんがえるノートさん (2014/08/19 23:37) [Edit]

ありがとうございます。
他にも「決定キー以外でイベント起動」なども
使わせていただいていますが、それらは
まったく問題なく作動するので、
ますます謎ですね・・・。
とりあえず、ほかのスクリプト
(中にはデフォルトで入っているものも)
でまで同じエラーが出てしまう症状は、
全データを違うプロジェクトにコピーすることで
なぜか解決されました。
もとのプロジェクトではエラーが出るが、
新しいプロジェクトでは出ないというよくわからない
状況です。
ただ、残念ながらこの「アクター・キーワード・システム」
だけはいまだエラーが出てしまいせっかくの
素晴らしい機能が使えない状態です・・・。
でもCPそのものに原因があるとしたらしょうがないですね。

大変ていねいに教えて下さり、ご自身で調べたりまで
してくださって誠にありがとうございます。
また、お手数おかけして大変申し訳ありませんでした。

4.朗報です! かんがえるノートさん (2014/08/19 23:47) [Edit]

たった今、解決できました!
ご説明の通り、文字に問題があるのではとよ~~く
スクリプト文を見ていたら、一部「キーワード」という
言葉が「キ・[ワード」と文字化けしていました。
それを「キーワード」と打ち直したら、エラーが
なくなりました!!
本っっっっっっ当にありがとうございました!!

Re:朗報です! 奈々(なな) (2014/08/20 00:38)

了解です。まずは解決したようでなによりです。
こちらでも試してみましたが、文字化けは見受けられませんでした。
なのでブラウザの種類や設定によるのかもしれません。

  • お名前
  • タイトル
  • メールアドレス
  • URL
  • パスワード

ブログ内検索

アーカイブ

最新コメント

[10/13 深海樹]
[08/02 ダイ二ホケンシツ]
[07/29 ダイ二ホケンシツ]
[07/29 ダイ二ホケンシツ]
[07/29 ダイ二ホケンシツ]

プロフィール

バナー

HN:奈々(なな)
RPGツクールVXAceを中心に製作を行っています。 スクリプト、イラスト、ドット絵など広くちょこちょこ手を出していますので、 できる範囲で他のツクーラーさんのお手伝いができたらなと思っています。