/* ランダムトークをさとりっぽく簡単に書く。 GET SHIORI/3.0 ID: OnAITalkSatori Sender: TamaIRC SecurityLevel: local Charset: Shift_JIS */ // この辺にそれっぽく書いていく。 AITalkOverDrive{ "/ :(0)これどぞー!/ :(10)うほっ!(@ぱん)っ!!/ " } ぱん{ "あんぱん" "しょくぱん" "めろんぱん" } //---- 以下触らないほうが。 OnAITalkSatori{ _talk = AITalkOverDrive _talk = ScopeSubstitution(_talk) _talk = FunctionSubstitution(_talk) _talk = SurfacesSubstitution(_talk) _talk } ScopeSubstitution{ _i_int = 2; _talk = "" _scope = ("\0","\1") _split = SPLIT("%(_argv[0])", ":") if SUBSTR(_argv[0], 0,1) != ":" {_i_int++;} if _split[0] == "" {_split[0] = IARRAY} _loop = ARRAYSIZE(_split) LOGGING(_split) for _i=0;_i<_loop;_i++{ _int = _i_int % 2 _i_int++ LOGGING(_int) _talk += "%(_scope[_int])%(_split[_i])" } LOGGING(_talk) _talk } FunctionSubstitution { _talk = _argv[0] while 1 { _search = RE_SEARCH(_talk, "(@(.*?))") if _search == 0 {break;} _changepos = RE_GETSTR[0] _res = EVAL("%(RE_GETSTR[1])") _talk = REPLACE(_talk, "%(_changepos)", "%(_res)"); } _talk } SurfacesSubstitution{ _talk = _argv[0] while 1 { _search = RE_SEARCH(_talk, "((.*?))") if _search == 0 {break;} _getpos = RE_GETSTR[1] _changepos = RE_GETSTR[0] LOGGING(_getpos,_changepos) if _getpos != 0 { _res = StrChangeSatori("%(_getpos)") LOGGING(_res) if _res == 0 { if (_getpos != "0") && (_getpos != "0"){_talk = REPLACE(_talk, "%(_changepos)", "%(CHR(1))%(_getpos)%(CHR(2))");} else {_talk = REPLACE(_talk, "%(_changepos)", "\s[%(_res)]");} } else {_talk = REPLACE(_talk, "%(_changepos)", "\s[%(_res)]");} } } _talk = REPLACE(_talk, "%(CHR(1))", "("); _talk = REPLACE(_talk, "%(CHR(2))", ")"); _talk } StrChangeSatori { LOGGING("StrChange Begin") _talk = _argv[0] _result = RE_GREP(_talk, "[\xff10-\xff5a]+") if _result != 0 { _str = RE_GETSTR _str_s3 = IARRAY foreach _str; _i { _str_s2 = "" for _j=1;_j