2014年11月24日
コイン式ガチャ制作3of3
コイン1枚につき1回プレイできるガチャの作り方です。
連載3回のうちの第3回。
今回は、レアアイテムの設定方法とプレイ記録の取り方です。
第1回コインの作り方
http://shadada.slmame.com/e1485447.html
第2回ガチャ本体の作り方
http://shadada.slmame.com/e1487084.html
まず、ガチャ本体となるオブジェクトを用意します。
オブジェクトの名前は何でも良くて、リンクされたものでも良くて、
パーミッションも不問。
そのオブジェクトの中に、以下のスクリプトを入れます。
スクリプトの名前は何でも良くて、そのパーミッションも不問。
// ここから
integer gc = 1234567; // コインの数字と同じ
string ward = "デスペラード"; // コインの秘密の呪文と同じ
list choice = [
1, "Rare Prize",
20, "UnComon Prize",
50, "Comon Prize"
];
list log = [];
integer count = 0;
default
{
state_entry(){
llListen(gc, "", "", "");
}
touch_start(integer start_param){
if(llDetectedKey(0) == llGetOwner()){
llOwnerSay("総プレイ数 "+(string)count+" 回");
log = llListSort(log, 2, FALSE); // 高い順に並べる
integer i;
for (i=0; i < llGetListLength(log) / 2 ; i++){
llOwnerSay(""+llList2String(log, i*2+1)+" / "+llList2String(log, i*2)+"回");
}
}
}
listen(integer channel, string name, key id, string message){
if(message == ward){
key target = llGetOwnerKey(id);
string avatar = llKey2Name(target);
integer have = llGetListLength(choice) / 2;
integer total;
integer i;
for(i = 0 ; i < have; i++){
total += llList2Integer(choice, i*2);
}
integer number;
while(number == 0){
number = llCeil(llFrand(total));
}
integer conduct;
for(i = 0 ; conduct < number ; i++){
conduct += llList2Integer(choice, i*2);
}
string prize = llList2String(choice, (i-1)*2 + 1);
llSay(0, ""+avatar+"さんは "+prize+" をゲットしました!");
llGiveInventory(target, prize);
count = count + 1;
integer fmp = llListFindList(log, [avatar]);
if(fmp == -1) log += [1] + [avatar];
else{
integer new = llList2Integer(log, fmp-1) + 1;
list zanteilist = [new];
log = llListReplaceList(log, zanteilist, fmp-1, fmp-1);
}
}
}
}
// ここまで
どのスクリプト関数がどんな作用をしているかの説明は省略します。
最初の2行を、コイン制作時に使用したモノと同じ文字列に書きかえて保存します。
景品となるオブジェクトを、ガチャ本体の中に入れておきます。
景品オブジェクトは、何回わたしても無くならないようにしておいてください。
次に、レア度の設定をします。
list choice = [
1, "Rare Prize",
20, "UnComon Prize",
50, "Comon Prize"
];
これを書きかえます。例のとおりだと
Rare Prizeという名前のオブジェクトを、71分の1の確率でお渡しする
UnComon Prizeを、71分の20の確率でお渡しする
という具合です。
確率の数字、景品の名前、を交互に書きます。上限はありません。
数字の大小で、出現率を操作します。1以上の整数で書いてください。
数字の合計値は100である必要はありません。
景品名は " " でくくってください。
言うまでもなく、ガチャ本体の中に入っていない景品名を書いてはいけません。
数字と景品名の後ろには、 , を書いてください。ただしいちばん最後の景品名の後ろには書いてはいけません。
コインを誰かに使ってもらいましょう。
ガチャ本体のインベントリ内にあるオブジェクトを、
設定した割合に従って、コイン使用者へお渡しします。
ガチャ本体をタッチすれば、
今までの総合計プレイ数と、誰が何回プレイしたかを
製作者にだけ知らせてくれます。
これで、ガチャの作り方の話は、おしまいです。
Posted by しゃだだ at 20:13│Comments(0)
│スクリプト