どうも! Tuskです!
前回の更新から、RPGツクールMZで使えるスクリプトのご紹介記事を書き始めてみたのですが、そう言えばお伝えし忘れていた事が。
それは、
あくまで記事の内容はJavaScriptのコーディングにたいしてあまり知識は多くないと言った初心者さん向けだよ!
……と言う事です。
僕自身もあまりJavaScriptの知識は多くなく、以前にちょっとかじっていた知識を思い出しつつやっております。
そのため、「ツクールでゲーム制作をしているものの、あまり複雑なスクリプトやプラグインの制作は厳しい…」と言った方に向けての記事です。
プラグインの競合や、実現したい処理に近しい機能を持つプラグインが中々見つけられないったな時に、ちょっと参考にしてみて頂けましたら幸いです。
そして今回ご紹介していきたいスクリプトは、
被らない乱数を取得して、任意の変数に配当していくスクリプト です!
取得したい乱数の幅を指定して取得し、次の乱数取得では前と被っていない乱数を取得する…と言ったスクリプトになります。
ビンゴのナンバー抽選の様なコンテンツや、アイテム・キャラクターの並び順など、意外と使える局面はあるのではないでしょうか。
スクリプト
// 変数ID1にランダムな値を1から5までの範囲で設定する
$gameVariables.setValue(変数ID1, Math.floor(Math.random() * 5) + 1);
// 変数ID2に異なるランダムな値を設定する
var value2;
do {
value2 = Math.floor(Math.random() * 5) + 1;
} while (value2 === $gameVariables.value(変数ID1));
$gameVariables.setValue(変数ID2, value2);
// 変数ID3に異なるランダムな値を設定する
var value3;
do {
value3 = Math.floor(Math.random() * 5) + 1;
} while (value3 === $gameVariables.value(変数ID1) || value3 === $gameVariables.value(変数ID2));
$gameVariables.setValue(変数ID3, value3);
// 変数ID4に異なるランダムな値を設定する
var value4;
do {
value4 = Math.floor(Math.random() * 5) + 1;
} while (value4 === $gameVariables.value(変数ID1) || value4 === $gameVariables.value(変数ID2) || value4 === $gameVariables.value(変数ID3));
$gameVariables.setValue(変数ID4, value4);
// 変数ID5に異なるランダムな値を設定する
var value5;
do {
value5 = Math.floor(Math.random() * 5) + 1;
} while (value5 === $gameVariables.value(変数ID1) || value5 === $gameVariables.value(変数ID2) || value5 === $gameVariables.value(変数ID3) || value5 === $gameVariables.value(変数ID4));
$gameVariables.setValue(変数ID5, value5);
なお、もちろん変数IDは任意のIDです。
例として適当なIDで記載しています。
また、乱数の取得範囲を任意で変更すれば、取得されるナンバーも調整できます。
簡単な解説
$gameVariables.setValue(変数ID1, Math.floor(Math.random() * 5) + 1);
まず最初、変数ID1に1~5までのランダムな整数を設定します。
var value2; do { value2 = Math.floor(Math.random() * 5) + 1; } while (value2 === $gameVariables.value(変数ID1)); $gameVariables.setValue(変数ID2, value2);
次に、変数ID2に異なるランダムな値を設定しますが、変数ID1と異なる値が生成されるまで繰り返し処理を行います。
以降は同様の手順で、変数ID3~変数ID5まで異なるランダムな値を設定していきます。
前の変数とは異なる値が取得されるまで繰り返し、取得出来たら次の工程へ……と処理されていくので、各変数に設定される値が前の変数と異なるように制御されていくわけです。
……とまぁ、やっている事は単純なんですけど、変数にそれぞれ違う値を取得したいってのはよく使うと思うんですよね。
そんでもって、プラグイン化する程の処理でもないので、都度書いたりしないでしょうか?
これをツクールのイベントスクリプトでやろうとすると結構めんどうくさいです。
今はアップデートされて長いスクリプトも書くことができるようになったので、こういった処理もできるので、ちょっとメモ代わりとして記事にしておこうと思った次第です!
このスクリプトを使って
#プレミアムツクールデー
ゲ制デーの続き?
ガチャでおみくじ引くゲーム「SUPERガチャみくじ」の3つ目のミニゲーム「GOGO☆宝箱」。
5つの宝箱には4倍1つとハズレが1つ、あとは0.5倍・1倍・2倍・3倍がランダムで入っているので、4つまで順に開けていき、最終的に倍率のガチャコインが貰えます。… https://t.co/Ehuh6eBNVT pic.twitter.com/NPM2Wl6uAt— Tusk@プロフ画変更しました (@media_faust_01) January 16, 2024
5つの宝箱を開けていくだけの簡単なミニゲームですが、中にはハズレが1つだけ入っていて、あとは1~4倍の倍率のいずれかが1つだけ入っているので、ハズレを引き当てない様に宝箱を開けて倍率を上げていくってなゲームです。
このミニゲームの宝箱の倍率をセットするためにこのスクリプトを使いました。
……結局は、倍率にスリルが無いので、最終的には同じ倍率も複数入る様にしましたけどw
他にも、ナンバーズみたいなスクラッチカードのミニゲームなどを作っていますが、それにもこのスクリプトを使用しています。
単純なスクリプトですが、案外と使えるスクリプトだと思いますので、ご参考までに!
コメント