【仕様】
1キャラクター1日1回、占い結果を聞ける。それだけ。
毎日変わるので、ログインする動機と、雑談のネタを提供しようと思って作成。
占い結果は9種類の属性と、各2種類のフレイバーテキスト、100種類のラッキーアイテムで構成。
18種類の組み合わせ+100種類の物量で毎日違うなぁという感覚を出そうとしてる。
暇とネタがあればフレイバーテキストを追加したかった。
余談だけど、「念」の概念が漠然としすぎて一番テキストを書くのが大変だった。属性「念」ってなんだよ。
csvによる設定読み込み、ガチャ様式の確率排出スクリプトの練習も兼ねている。
------
xxxxxx.gat,111,222,4 script 出張占い師 501,{
if(#Divinationday!=(gettime(6)*100+gettime(5))){
//if(1){ //デバッグ用
mes "【占い師】";
mes "あら、よく来たわね。";
mes "今日の分占う?";
next;
if(select("いいえ:はい")-1){
mes "【占い師】";
mes "わかったわ。";
mes "ちょっと待っててね・・・・・・。";
next;
mes "【占い師】";
for(set @i,0;@i < 3;set @i,@i+1){
if(!sleep2(1000)){end;} //ただ、1秒ウエイトするだけのコード。結構使える。
switch(rand(3)){
case 0: mes "・・・・・・・・・。"; break;
case 1: mes "むむ・・・・・・。"; break;
case 2: mes "・・・・・・んっ?"; break;
}
}
next;
mes "【占い師】";
mes "出たわ。";
mes " ";
next;
set #Divinationday,gettime(6)*100+gettime(5);
callfunc "Divination"; //占い関数
}else{
mes "【占い師】";
mes "そう?";
mes "私の力が必要だと思ったら";
mes "また声をかけてね。";
close;
}
}
mes "【占い師】";
mes "今日の占いはおしまいよ。";
mes "24時を回ったらまた来てね。";
close;
}
function script Divination {
setarray '@fortune[0],1,10,14,30,35,10; //確率の配列。 %を表す。 合計100にしてね。
setarray '@fortunestring$[0],"【^FF2222ハイ^CC5533パー^999966ウル^666699トラ^3322CCデラッ^2222FFクス^000000吉】"," 【^FF0000大吉^000000】"," 【中吉】"," 【小吉】"," 【吉】"," 【凶】";
//抽選確率に対応する文字列を入れること。 確率・排出文言はのちのちcsvにする予定だった。
//ウィンドウの真ん中にインデントしたいので、変なスペースはいってます
set @per,rand(1,100);
set @index,0;
for(set @i,0;@i < 6; set @i,@i+1){
if(@per > 100-'@fortune[@i]){set @index,@i; set @i,6;}
setarray '@fortune[@i+1],'@fortune[@i]+'@fortune[@i+1];
}
//【解説】
//乱数ででてきた1~100の数字に対して、確率配列'@fortuneとの大小を比較。
//'@fortune[0]以下だったら、"1番目だったよ"と@indexに保存しておく。
//それより上の数なら、 '@fortune[1]に'@fortune[0]の数を足して保存し、その後比較。
//'@fortune[1]以下なら2番目だったよと保存。
//それを6番目まで繰り返すことにより、何番目にヒットしたかを@indexに保存するための文
//面倒なので確率の合計は100と決め打ちしてる。人為的ミスで101以上になってるとバグる。
//参考 https://qiita.com/chiyoyo/items/72a6362f1f2ed4f5511b
mes "【占い師】";
mes "アナタの今日の総合運は・・・・・・。";
mes " ";
mes '@fortunestring$[@index];
mes " ";
set @row,rand(9);
next;
//csv読み込みを使ってる。サーバーの設定でonにしておく必要があるけど、
//csvを使うとサーバー再起動しなくても後から文言を追加・修正できる。便利だね。
//csvの行列指定は0からスタートなので気をつける
mes "【占い師】";
mes "そして今日アナタに加護がある属性は";
mes "【"+csvread( "script/csv/属性占い.csv",@row,0)+"】ね。";//属性
mes " ";
mes csvread( "script/csv/属性占い.csv",@row,rand(2)+1); //フレイバーテキスト
next;
//コメントを書いてて思ったけど、csvの終わり(最大の列、行はいくつか)を取得しないと、csv側で追加しても抽選範囲外になっちゃう。
//あとから追加したいならいま100個までになってる乱数の幅を「csvの最大行まで」にしてね
mes "【占い師】";
mes "そんなアナタのラッキーアイテムは";
mes " ";
mes " 【"+csvread( "script/csv/ラッキーアイテム.csv",rand(100),0)+"】 ";
next;
return;
}
最終更新:2018年01月21日 01:03