上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
それほど重大な事は書いてありませんが、先に「※素材(?)について」をお読み下さい^^

昨日ついにメソッドとして完成する事ができた(といっても、本格的に素材屋さんをやっている方々にとっては子供だましのようなものだと思いますが)、リアルタイムを参照するイベントスクリプトを用いたイベントその②です。
実は、昨日紹介した1日1回の限定イベントより、こちらの方が先に完成していました。
いやあ、努力で何とかなるもんです。
今回紹介するのは、朝昼夜で商品が変わるお店を作れるイベントスクリプトになります。
昨日公開したものと、ほとんど変わらないとか言わない(笑)

「ゲーム内の時間」ではなく、「実際の時間」を参照するイベントスクリプトです。ご注意下さい。

お手軽さ:2
根気:2
スクリプトを弄る必要性:有

必要なもの
変数:7つ

①イベントコマンドの3ページ目の右下隅に「スクリプト」という項目があります。これをクリックして、まずは以下のように記述します。

t = Time.now
$game_variables[1] = t.year
$game_variables[2] = t.month
$game_variables[3] = t.day
$game_variables[4] = t.wday
$game_variables[5] = t.hour
$game_variables[6] = t.min
$game_variables[7] = t.sec

method22.png

こう。昨日書いたものとまったく同じです。
これも、実行内容の最初に必ず記述して下さい。
これを記述しなければ、リアルタイムを変数に格納する事ができません。
上に載せてあるものをコピペで貼り付けていただければ大丈夫ですよ^^
これにより、変数1にリアルの「年」、変数2に「月」、変数3に「日」、変数4に「曜日」、変数5に「時」、変数6に「分」、変数7に「秒」がそれぞれ格納されます。

②次に条件分岐を使い、話しかけた時間帯によって会話内容が分岐するようにイベントを作ります。
例では、4~11時、12~19時、20~3時で朝、昼、夜を区分しています。

method26.png
method27.png

条件分岐を使い、変数5「時」の変数が4未満(つまり0~3時)なら夜、4以上12未満(4~11時)なら朝、12以上20未満(12~19時)なら昼、20以上(20~23時)なら再び夜の商品が販売されるようになります。
テストしてみましょう。
なお、このテストプレイを行った時の時刻は9時35分だったので……

method28.png

朝の商品を売ってくれました。
時間が経ってから、再度話しかけると……

method29.png

今度は、昼の商品を売ってくれるようになりましたね(14:23に確認)。

これを応用すれば、曜日によって商品が変わる店、日によって商品が変わる店、あるいは話しかけるたびに商品が変わる店などを作る事もできますね(もっとも、話しかけるたびに商品が変わる店なら、変数の乱数代入を用いた方が簡単ですが(笑))

店に限定しなくても、例えば1日1回話しかけたらアイテムをくれるが、話しかけた時間帯によってもらえるものが違うとか、特定の時間帯にだけ(昼間だけとか)発生するイベントだとか、ポケモンの「ジョギング」や「けいびいん」のように、特定の時間帯に話しかけた時だけバトルになるとか、発想次第でいろんな応用ができそうですね。
FPLにも実装してみようかなぁ……絶対面白そうだもの!!

検索ワード:RPGツクール VX ACE ace ツクール スクリプト RGSS3 イベント イベントコマンド イベントスクリプト 時間帯 変数 リアル リアルタイム 変わる 実際 時間 時 素材
スポンサーサイト
それほど重大な事は書いてありませんが、先に「※素材(?)について」をお読み下さい^^

スクリプトの勉強を始めた時から作りたいと思っていた、リアルタイムを参照するイベントを作る事にようやく成功しましたん♪
スクリプトの勉強のかたわら、素材屋さんのまねごとみたいな事をたま~にやってたりするんですが(いや、文字通り「まねごと」です。今までに公開したような内容で素材屋さんとか言ってたら、本当の素材屋さんに失礼だw)、これはちゃんとお役に立てるかも知れない!

てことで、1日1回とか、1時間に1回とか、リアルタイムを参照して、一定時間が経過しなければ再度発生しないイベントを作ってみました~。

「ゲーム内の時間」ではなく、「実際の時間」を参照するイベントスクリプトです。ご注意下さい。

お手軽さ:2
根気:2
スクリプトを弄る必要性:有

必要なもの
変数:8つ

○前提
・一度イベントが発生したら、一定時間経過するまでイベントは発生しなくなる。

このイベントは、スクリプトを使用する必要はありますが、スクリプトエディタをいじる必要はない、比較的初歩的なイベントスクリプトで作る事ができますから、スクリプトなんて分からない! という人でも安心してご利用いただけます。
(そもそも勉強中のおいらに、複雑なRGSS3を操る力はありません)

スクリプトの勉強を志してからというもの、たびたびヘルプの中にあるスクリプトリファレンスを読んで、文法を勉強していまして……その中に、「Timeのクラス」というものがあります。
これを使うと、リアルタイムを変数に代入したりできるようになります。

今回はこれを使い、例として「1日に1回だけプレゼントをくれる子供」というイベントを作成いたしました。

①イベントコマンドの3ページ目の右下隅に「スクリプト」という項目があります。これをクリックして、まずは以下のように記述します。

t = Time.now
$game_variables[1] = t.year
$game_variables[2] = t.month
$game_variables[3] = t.day
$game_variables[4] = t.wday
$game_variables[5] = t.hour
$game_variables[6] = t.min
$game_variables[7] = t.sec

method22.png
こんな感じ。

これは、実行内容の最初に必ず記述しなければなりません。
これを最初に記述する事で、変数1に「年」、変数2に「月」、変数3に「日」、変数4に「曜日」、変数5に「時」、変数6に「分」、変数7に「秒」がそれぞれ代入されます。
これを記述する事で、初めてリアルタイムをゲーム変数として使用する事が可能になるのです。

②次に、子供に話しかけたら、アイテムをくれるようにイベントを作りましょう。
これについては、別に何も難しい事はないので、割愛します。
そして、このイベントの最後に、変数8に変数3「日」を代入する事だけは忘れないようにして下さい。

③最後に条件分岐。
変数8が変数3「日」と同じ値である場合は、アイテムがもらえないようにイベントを分岐させます。
先ほど、アイテムをもらった後に変数8に変数3「日」を代入しましたから、これで2回目以降はアイテムがもらえなくなるはずなのです。
そして、翌日になった時、変数8と変数3は同じ値ではなくなりますから、また一度だけアイテムをもらう事ができます。

method23.png
できあがったのがこちら。「1日に1回だけ、フルポーションをくれる子供」です。なんて気前がいいのでしょうか。
テストしてみましょう。



method24.png



話しかけると、子供からフルポーションをもらう事ができました。
続けて話しかけてみると……。



method25.png



ちゃんと(?)断られました。
実際の日付が変わって翌日になったら、またフルポーションをもらう事ができます。

変数8に代入する変数を2「月」にすれば月に1回だけのイベント、1「年」にすれば年に1回だけのイベントも作れます(年1回のイベントとか、めちゃくちゃレアですねw)。
4「曜日」なら週1回のイベント、5「時間」なら1時間に1回限定のイベントとなります。
応用すれば、プレイヤーの誕生日限定のイベントなんかも作る事ができそうですし、何かと応用が利くのではないかと思います^^

ただ、5「時」を使って、1時間に1回限定のイベントを作る時には気をつけて下さい。
誤解されやすいのですが、一度発生したら「1時間イベントが発生しない」のではなく、「同じ時間(例えば12時なら12時である間だけ)はイベントが発生しない」なので、極端な話、12時59分にイベントが発生した場合、1分後に13時になると、再度イベントが発生します。
また、0時台の場合、初めてであってもイベントが発生しません
なぜなら、変数は何も設定しなければ、初期状態は0だからです。
変数8と変数5「時」が同じ値だとイベントが発生しないよう条件分岐を作っていますから、0時台だと、イベントが発生しなくなってしまうんですよw
この場合は、ゲームを開始した瞬間に、変数8に「25」とかあり得ない数値を代入しておくと、これを避ける事ができます。

なにげに汎用性が高そうなので、おいら自身への備忘録も兼ねて、ここに紹介いたしました♪
スクリプト素材を配布されている素材屋さんはたくさんあるんですが、イベントコマンドで使えるスクリプトを紹介しているサイトさんって、少ないんですよね。おいらが見つけられていないだけかも知れないですけどw

おいらと同じく、いろんな方々の助けを借りながら、少しでも楽しいゲームを作れるように日々頑張っているゲーム仲間の方々へ、少しでも恩返しになればいいなと思います♪

検索ワード:RPGツクール VX ACE ace ツクール スクリプト RGSS3 イベント イベントコマンド イベントスクリプト 限定 1日 1回 リアルタイム 実際 時間 時 回数 制限 素材
それほど重大な事は書いてありませんが、先に「※素材(?)について」をお読み下さい^^

RPGツクールVX ACEに同梱されている「スクリプト入門」の実践編に、ダンジョン脱出アイテムを作ることができるスクリプトが紹介されているのですが……実はこれ、スクリプトを全く使えないおいらでも、かなり初期の段階から作っていたアイテムでして……もちろん、スクリプトなしで作ることができます。
おいらみたいにスクリプトが使えない人にとっては、ひょっとして需要があるのかな? と何となく気になりましたので、一応紹介しておきます。

例によって、素材と言うより単なる工夫と呼んだ方がいいんじゃないかというものですので、こんなもので喜んでいただけるのでしたら、どうぞ勝手にお持ち帰り下さい^^

お手軽さ:2
根気:3
スクリプトを弄る必要性:無

必要なもの
スイッチ:1つ(条件をつけるなら2つ)
変数:3つ
コモンイベント:1つ

○前提
・ダンジョンじゃない場所では使用できない。
・ダンジョン内で使うと、ダンジョンの入り口に戻る。

①まず、ダンジョンを脱出するのに使うアイテム、またはスキルを用意します。



method19.png

コモンイベントを呼び出すためだけのものなので、効果範囲などの設定は特に必要ありません。
ただし、使用可能時は「メニューのみ」にしておいて下さい。

②に、フィールド上からダンジョンに入る時、場所移動と一緒に、次の項目を追加します。
スイッチ1をONにし、さらに変数1に「マップID」、変数2に「プレイヤーのマップX」、変数3に「プレイヤーのマップY」を代入します。


method21.png



③最後に、、そのアイテムやスキルを使った時に呼び出すコモンイベントを作成します。
(アニメーションなどの演出は、ここでは説明しやすくするため可能な限り省いてあります)


method20.png

条件分岐を使い、スイッチ1がONの時、ダンジョンから脱出するかどうかを確認するメッセージが流れ、「はい」を選んだ時、場所移動の指定を変数にし、マップID→変数1、X座標→変数2、Y座標→変数3に設定してやれば、ダンジョン突入時のマップID、X座標、Y座標の場所に戻ることができるというわけです。
その際、必ずスイッチ1をOFFにすることを忘れないようにして下さい。また、移動先のマップにBGMを設定していない場合は、移動先のBGMをイベントで演奏することも忘れずに。そして、アイテム使用の場合は、使用したアイテムがなくなるようにもしておきましょう。

なお、画像のイベントコマンドの両端を囲んでいる、スイッチ2(画像ではスイッチ24「導きの水晶使用禁止」と書いている分です)による条件分岐は、使用してもしなくてもかまいません。

ダンジョン内であっても、必須イベント中などで一時的にダンジョン脱出アイテムやスキルの使用を禁止させたい時、スイッチ2をONにしておけば、ダンジョン内であっても使うことができなくなります。

こんなもんですが、少しでも誰かのお役に立てば幸いです^^
それほど重大な事は書いてありませんが、先に「※素材(?)について」をお読み下さい^^

某鬼畜アクションRPGゲーム「ド○アー○の塔」に登場する、中でもトップクラスの鬼畜モンスター、「ローパー」の必殺技「イビルテンタクル」を再現してみましたん^^

お手軽さ:4
根気:2
スクリプトを弄る必要性:無

必要なもの
変数:4つ
コモンイベント:1つ

まず、次のようなスキルを作ります。

method15.png

効果範囲の設定などは特に必要ありません。コモンイベントを起動させるだけのスキルです。

次に、このスキルを使ってくるモンスターとのバトルイベントを作ります。




method16.png

1ページ目は「ターン終了時【ターン】」に設定し、変数1と変数2に「ローパーのHP」を代入します。
2ページ目は「ターン0【バトル】」に設定し、同じく変数1と変数2に「ローパーのHP」を代入します。
これで、戦闘開始前およびターン終了時に、ローパーのその時点でのHPが変数1と2に代入されます。

最後にコモンイベント。
「イビルテンタクル」を使用した時に呼び出されるコモンイベントを作成します。



method17.png

変数3でターゲット判定を行います。この場合、乱数で1か2のどちらかの数字を代入し、選択されたアクターID(今回の例では1がギル、2がカイになっています)に攻撃が向かいます。
そして、イビルテンタクル発動時に、変数2にのみ現在のローパーのHPが代入され、変数2-変数1の計算を自動的に行います。その結果がマイナス、つまりターン開始時からローパーの行動順が回ってくるまでにダメージを受けていた場合は、相手が一撃死するかどうかの判定を行います。
変数4に乱数0~99が代入され、その結果が30以上なら何も起こらないが、30未満なら「戦闘不能」ステートが付加され、即死します。
そして、ターン開始からローパーの行動順までにダメージを受けていなかった場合は、ターゲットのHPから9999引きます。ただし、「戦闘不能を許可」にチェックを入れていないため、死ぬ事はありません。

ここまでの内容をまとめると、「ローパーが攻撃時にダメージを受けていなければ、相手1体のHPを100%の確率で1にし、ダメージを受けていれば、相手1体を30%の確率で即死させる」という技ができあがります。

で、できあがったのがこちら。



method18.png

再現してみてあらためて感じましたが、どんだけ鬼畜な技なんでしょうね、これ?(笑
これがボスならともかく、フリーエンカウントするザコ敵の技だなんて、ありえないでしょう!?
しかも実際の「ド○アー○の塔」では戦うのはギル一人ですから、即死攻撃されたらその時点でゲームオーバーw
回復アイテムだって、そんなにポンポン登場するゲームじゃありませんしねぇ……。

これを応用すれば、他にもいろいろ作れるんじゃないかと思います。例えば、ポケモンの「きあいパンチ」なんか、このメソッドが使えそうですよね。

問題点としては、このメソッドでは直接攻撃によるダメージを与える事ができないのと、ターゲット判定のIDを乱数にしているために、パーティIDがバラバラだと使えないって事ですね(アクターID1、5、12,3の4人パーティとか)。
このあたりをうまいこと修正して、よりよい方法を教えて下さる方、お待ちしております(笑
それほど重大な事は書いてありませんが、先に※「素材(?)について」をお読み下さい^^

「何回でも入手できるけど、一定時間が経過しないと再度入手できないアイテム」というのを作ってみました。
めちゃ簡単です。
こんなもん「素材」と呼ぶ事すらおこがましい、単なる「工夫」です
もちろん欲しい方はどうぞお持ち帰り下さい。

お手軽さ:5
根気:1
スクリプトを弄る必要性:無

必要なもの
スイッチ:1つ
変数:2つ
コモンイベント:1つ

①まず、イベントの1ページ目に、以下のように作成します。
グラフィックはキラキラでも、閉じた宝箱でも何でもいいです。
アイテムの増減:[薬草]+1
文章:薬草を 手に入れた!
変数の操作:[1]=プレイ時間
変数の操作:[2]=プレイ時間
スイッチの操作:[1]=ON

ポイントは、2つの変数に両方とも「プレイ時間」を代入する事。

②2ページ目には何も入力しません。発生条件は「スイッチ1がON」にしておきます。
グラフィックはなしでもいいし、開いた宝箱でもOKでしょう。

③次に、コモンイベントを以下のように作成。トリガーは「並列処理」、条件スイッチは1番のスイッチです。
変数の操作:[2]=プレイ時間 (代入)
変数の操作:[2]-=変数[1] (減算)
条件分岐 変数[2] が1800以上
 スイッチの操作:[1]=OFF
分岐終了

つまり、スイッチ1がONになっている間、常時「現在のプレイ時間」が代入され、「アイテムを入手した時点でのプレイ時間」との差を計算している状態になるわけです。
それは言うなれば、1秒ごとに変数が加算されていくのと同じ事
そしてその結果が1800秒、つまり30分を超えた時、スイッチがOFFになり、再度アイテムが入手できる状態になるというわけです。

再度入手できるようになるまでの時間を変更したければ、条件分岐の変数[2]の数を増減して下さい。
また、代入する変数を「プレイ時間」ではなく「歩数」にすることで、時間経過ではなく、一定歩数歩いた時に再度入手できるようになるアイテムにすることもできます。「戦闘回数」にすれば、一定回数戦ったら再度入手できるアイテムにもできますね。

このメソッドは汎用性が高く、一定時間経過する事で発生するイベントなどに使う事もでき、便利だと思ったので掲載しました♪
何も難しい事はしていないので、「こんな程度でいばってんじゃねーよコノヤロー」とか言っていじめないでください、お願いします><
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。