宝箱の中身を乱数で決定するイベントスクリプト

ツクる上でのちょっとした小ネタや裏ワザなどを紹介してみましょう。
アバター
jiro
記事: 36
登録日時: 2016年3月26日(土) 21:29
連絡を取る:

宝箱の中身を乱数で決定するイベントスクリプト

投稿記事by jiro » 2016年4月09日(土) 02:46

ダンジョンの中に入る際に、乱数で取得するアイテムの幅をあらかじめ決めておくことで、
ダンジョン内に配置した全ての宝箱の中身を乱数で取得できるようにします。

ただし、乱数でランダムに取得させたいもの同士の数は等しくしておく必要があります。
たとえば、剣が武器ID1~40, 槍は武器ID41~80といった具合で、
40個ならそれぞれ40個ずつ用意する必要があります。
また、ランダムで取得しても平気なように、能力値も調整しておく必要があります。
空のアイテム枠があってもいけません。
事前にエクセルなどでしっかりデータベースを作成しておく必要があると思います。

使う変数は5つ、乱数の範囲の開始値と、乱数の範囲の終了値、取得したアイテムの名前を格納する変数、条件分岐用変数、最大アイテム数の5つです。
イベントスクリプトは以下のようになります。

var itemCount = 40;
var ganreCount = 8;
var startNum = $gameVariables.value(変数1);
var endNum = $gameVariables.value(変数2);
var itemMaxCount = $gameVariables.value(変数5);
var range = endNum - startNum;
var correct = Math.ceil(itemMaxCount / itemCount);
var id = Math.floor(Math.random() * (range / correct + 1)) + startNum;
var x = Math.floor(Math.random() * ganreCount);
var targetId = Math.floor(id + x * itemCount);
$gameParty.gainItem($dataWeapons[targetId], 1, true);
$gameVariables.setValue(変数3, $dataWeapons[targetId].name);

ギリギリ12行に収まりました。
コピペで動作するはずです。

40と書いてあるところは共通するそれぞれの武器の数です。
8と書いてあるところは、武器タイプの数です。
この部分は各自で変更する必要があると思います。
変数1は乱数の範囲の開始番号、
変数2は乱数の範囲の終了番号です。
変数3は取得したアイテムの名前を格納する変数です。
変数5は一番アイテムの多いアイテム数です。武器が40, 防具が20, アイテムが10だった場合、40になります。

$dataWeapons
となっている部分は、取得したい物に合わせて変更してください。
防具なら$dataArmors, アイテムなら$dataItemsとなります。

で、後はこのイベントスクリプトを呼び出す前に、分岐するために、
変数の操作コマンドの乱数を利用します。
アイテム、武器、防具であれば3つになるので、0~2といった具合です。

あとはこれをコモンイベントにまとめておいて、
コモンイベントを呼び出す前に、変数番号1, 変数番号2に取得したいアイテムIDの開始値と終了値を代入します。
(例: 変数1=5, 変数2=10)

私の場合でしたら、ダンジョンに入る時のイベントで変数の範囲を指定するようにしています。
ダンジョン1 : 変数1 = 1, 変数2 = 3
ダンジョン2 : 変数1 = 2, 変数2 = 5
ダンジョン3 : 変数1 = 3, 変数2 = 6
といった感じですね。

あとはアイテムの取得時に、文章を表示するイベントコマンドで、
\c[2]\v[変数3]\c[0]を手に入れた!
といった感じに打ち込んでおけば、手に入れたアイテムの名前も出力できます。

ブログ:イラストとか制作補助ツールとか配布してます
http://jiroron666.hatenablog.com/
Twitter:死んでいないことを確認できます。
https://twitter.com/jiro_saburomaru

“MV:小ネタ・TIPS・講座” へ戻る