//**** 文関連Tips辞書 /*--------------------------------------------------------------------- かんたん文スクリプト「あやりりす」 こぴぺするならここから…… 元あったRandomTalkは消すこと ---------------------------------------------------------------------*/ RandomTalk { //高速ランダムトーク処理用 TOSTR(EVAL(CHR(0x22)+RandomTalkEx()+CHR(0x22))) } GetSeasonSlot { //3-5,6-8,9-11,12-2……でいいよね? _m = month if _m >= 3 && _m <= 5 { '春' } elseif _m >= 6 && _m <= 8 { '夏' } elseif _m >= 9 && _m <= 11 { '秋' } else { '冬' } } GetDaySlot { //10日,20日で区切りにしてみた _d = day if _d <= 10 { '上旬' } elseif _d <= 20 { '中旬' } else { '下旬' } } GetTimeSlotList { //おおざっぱに時間判定 //このへんは適当に書き換えるとよい。12時のところは「昼飯」にするとか。 switch hour { '深夜' //0時 '深夜' //1時 '深夜' //2時 '深夜' //3時 '深夜' //4時 '朝' //5時 '朝' //6時 '朝' //7時 '朝' //8時 '昼' //9時 '昼' //10時 '昼' //11時 '昼' //12時 '昼' //13時 '昼' //14時 '昼' //15時 '夕' //16時 '夕' //17時 '夕' //18時 '夜' //19時 '夜' //20時 '夜' //21時 '夜' //22時 '深夜' //23時 } } GetDOWSlot { //曜日 switch GETTIME[3] { '日' '月' '火' '水' '木' '金' '土' } } GetMonthSlot { //月をおおざっぱに _月 = GETTIME[1] _日 = GETTIME[2] //_曜日 = GetDOWSlot //_第n週 = ((_日 - 1) / 7) + 1 if _月 == 8 { //8月 '夏休み' return } if _月 == 3 && _日 >= 15 { //3/15以降くらい? '春休み' return } if _月 == 12 && _日 >= 24 { //12/24以降くらい? '冬休み' return } if _月 == 1 && _日 <= 3 { //正月は特別 '正月' return } if _月 == 1 && _日 < 10 { //1/10以前くらい? '冬休み' return } //標準は学校 '学校' } RandomTalkEval { //処理用!さわるな!! _fname = 'ランダムトーク' + _argv[0] if ISFUNC(_fname) { EVAL(_fname) } else { IARRAY } } RandomTalkEx : nonoverlap { /*=====かきかたの例============================ ランダムトーク3月 : array { 'ごにょごにょ' } 1.かならず最後に : array とつけること! 2.' 'でトークをかこむこと! " " じゃないよ! =============================================*/ _m = GETTIME[1] _d = GETTIME[2] _ms = GetMonthSlot _dayofweek = GetDOWSlot //ランダムトーク朝,昼,夕,夜,深夜etc... parallel RandomTalkEval(GetTimeSlotList) //ランダムトーク春,夏,秋,冬 parallel RandomTalkEval(GetSeasonSlot) //ランダムトーク?月 parallel RandomTalkEval("%(_m)月") //ランダムトーク?月?日 parallel RandomTalkEval("%(_m)月%(_d)日") //ランダムトーク?月上旬,中旬,下旬 parallel RandomTalkEval("%(_m)月%(GetDaySlot)") //ランダムトーク日曜,月曜... parallel RandomTalkEval("%(_dayofweek)曜") //ランダムトーク第?週日曜,月曜... parallel RandomTalkEval("第%(((_d - 1) / 7) + 1)週%(_dayofweek)曜") //ランダムトーク行事 parallel RandomTalkEval("%(_ms)") //ランダムトーク行事?曜 parallel RandomTalkEval("%(_ms)%(_dayofweek)曜") //そしてこれがふつう parallel ランダムトーク通常 } //**** トランスレータ ******************************************************************* //---- OnTranslateイベント -------------------------------------------------------------- OnTranslate { //とりあえず最初のおまじない(一時変数にとりあえず代入) _text = reference0 //勝手にスクリプトにウエイトをかける例 _text = REPLACE(_text, "、", "、\w5") _text = REPLACE(_text, "。", "。\w5") _text = REPLACE(_text, "…", "…\w5") _text = REPLACE(_text, "?", "?\w5") _text = RE_REPLACE(_text ,'!(?=[^!\\])', '!\w5') //敬称置換の例 //例外は先に書いておく _text = REPLACE(_text, "たん殿", "たん") //「さん殿」とかだぶりそうなのを置換 _text = RE_REPLACE(_text,"(ちゃん|くん|さん|殿)殿","殿") //ここはおまじないのつもりで。消しちゃだめです。 //(一時変数で置き換え処理したものを結果として返す) _text } //**** ランダムトーク ******************************************************************* //---- OnAiTalkイベント ----------------------------------------------------------------- OnAiTalk { // if RAND(100) < communicateratio // { // //---- communicateratio % の率で他ゴーストへ話しかけ // StartCommunicate // } // else // { if mikireflag == 0 { //---- 通常のランダムトーク、ただしチェイン中はチェイントーク if CHAIN.IDName == "" { RandomTalk } else { ChainTalk } } else { //---- 見切れ中なので見切れ中のトークを行う MikireTalk } // } } //**** リンクメニューを簡単にする LinkMenuConvert { _text = '' _data = IARRAY for _i = 0 ; _i < _argc ; _i++ { _data = (RE_SPLIT(_argv[_i],'\s*\|\s*'),'','') //ダミー _text += "%(_data[0])%(CHR(1))%(_data[1])%(CHR(1))%(_data[2])%(CHR(1))%(CHR(2))" } _text; } /*---------------------------------------------------------------------------------- かんたん文スクリプト「あやりりす」 ゴースト変更編 ----------------------------------------------------------------------------------*/ TranslateSystemChar { _text = TOSTR(_argv[0]) _text = RE_REPLACE(_text,"[ !%(CHR(0x22))%(CHR(0x25))#$&()*+,-/:;<=>?@\[\]`{|}~]","_") _text } CallChangeFunc { //フルネームで探索 if reference2 && STRLEN(TOSTR(reference2)) { _ghostname = TranslateSystemChar(reference2) _funcname = _ghostname + _argv[0] if ISFUNC(_funcname) { _script = TOSTR(EVAL(_funcname)) if STRLEN(_script) { _script return } } } //Sakura名で探索 _ghostname = TranslateSystemChar(reference0) _funcname = _ghostname + _argv[0] if ISFUNC(_funcname) { _script = TOSTR(EVAL(_funcname)) if STRLEN(_script) { _script return } } //汎用切り替え _funcname = '他のゴースト' + _argv[0] if ISFUNC(_funcname) { _script = TOSTR(EVAL(_funcname)) if STRLEN(_script) { _script return } } //それでもない場合 if _argc >= 2 { TOSTR(EVAL(_argv[1])) return } } OnGhostChanging { CallChangeFunc('へ変更') } OnGhostChanged { if ISFUNC('起動共通スクリプト') { EVAL('起動共通スクリプト') } -- CallChangeFunc('から変更','OnBoot') } OnGhostCalling { CallChangeFunc('を呼び出し') } OnGhostCalled { if ISFUNC('起動共通スクリプト') { EVAL('起動共通スクリプト') } -- CallChangeFunc('から呼び出される','OnBoot') } OnGhostCallComplete { CallChangeFunc('を呼び出し完了') } /*=================================================================================== 記述方法 関数名の例は以下の通りです。 (名前)から変更 (名前)へ変更 (名前)を呼び出し (名前)を呼び出し完了 (名前)から呼び出される (名前)の部分にはゴーストのSakura(メイン、\0)側名、またはフルネームが入ります。 さくらや黒姉などSakura名だけで識別できない場合はフルネームを使ってください。 +や-、"や'や(など、AYAのシステムで使われる文字はすべて _ に置換されます。 記述例。 スクリプトは " " でかこってください。 Emilyへ変更 { "\u\s[10]\h\s[5]Emilyへ交代〜。" } ===================================================================================*/ /*---------------------------------------------------------------------------------- コピペするならここまで ----------------------------------------------------------------------------------*/