【仕様】
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