OnSystemUnload.NEWS { ERASEVAR(GETVARLIST('newslist_')) ERASEVAR('news_name_array','news_value_array','news_count_array','news_max_pages','news_get_state') } Menu_NEWS { news_get_state = IARRAY() news_get_state[0] = 0 news_get_state[1] = 0 <<" ち  「\![execute,http-get,http://www.imamoe.jp/,--file=imamoe_top.html,--async=OnNewsMenuGet1]\![execute,http-get,http://imamoe.jp/kobeimamoe/,--file=official_top.html,--async=OnNewsMenuGet2]\0\s[0]いっちゃん新しいニュースを取ってくるよ。 ">> } #define IM_FILE 'var/imamoe_top.html' #define OF_FILE 'var/official_top.html' ProcNewsGet { if (news_get_state[0] == 0) || (news_get_state[1] == 0) { return } if (news_get_state[0] == 1) && (news_get_state[1] == 1) { '\![raise,OnNewsMenuGet]' } else { if (news_get_state[1] != 1) { "\![raise,OnNewsMenuGetFailure,%(news_get_state[1])]" } else { "\![raise,OnNewsMenuGetFailure,%(news_get_state[0])]" } } } OnNewsMenuGet1Failure { news_get_state[0] = reference[0] ProcNewsGet() } OnNewsMenuGet2Failure { news_get_state[1] = reference[0] ProcNewsGet() } OnNewsMenuGetFailure { <<" ち04「あかん、なんかおかしなこと起きたみたいや。 へ10「原因は……%(SHIORI3FW.HTTPCodeToMessage(reference[0]))だな。 ">> } OnNewsMenuGet1 { news_get_state[0] = 1 ProcNewsGet() } OnNewsMenuGet2 { news_get_state[1] = 1 ProcNewsGet() } OnNewsMenuGet { newslist_いまもえJP = ParseNews('var/imamoe_top.html',5) newslist_いまいち萌えない娘公式 = ParseNews('var/official_top.html',5) news_name_array = ('いまもえ情報') news_value_array = ('いまもえJP_いまいち萌えない娘公式') news_count_array = (7,7) news_add_array = (0,0) news_max_pages = ARRAYSIZE(news_name_array) reference[0] = '0' OnShowNewsList() } ParseNews { _name = _argv[0] _limit = _argv[1] _s = FSIZE(_name) if _s < 0 || _s > 300000 { reference[0] = 'fileio' OnNewsMenuGetFailure return } void FCHARSET(1) //UTF8 if FOPEN(_name,'r') == 0 { reference[0] = 'fileio' OnNewsMenuGetFailure return } _html = '' while 1 { _h = FREAD(_name) if _h == -1 { break } _html += _h _html += CHR(0xd,0xa) } void FCLOSE(_name) void FCHARSET(1) //UTF復帰 void RE_GREP(_html,'.+?') _list = RE_GETSTR() _n = ARRAYSIZE(_list) for _i = 0 ; _i < _n ; _i++ { if _i >= _limit { _list[_i] = IARRAY } else { void RE_SEARCH(_list[_i],'(.+?)') _av = RE_GETSTR() _av[2] = RE_REPLACE(_av[2],'<.+?>','') _list[_i] = "%(_av[1])|%(_av[2])" } } _list } OnShowNewsList { _pos = TOINT(reference[0]) _name = news_value_array[_pos] _count = TOINT(news_count_array[_pos]) _add = TOINT(news_add_array[_pos]) '\0\s[0]\b[2]\![set,choicetimeout,0]\_q' -- '\_a[http://www.imamoe.jp/]いまもえ\_aニュースや。' -- _script = '\n\n[half]|' _n = ARRAYSIZE(news_name_array) for _i = 0 ; _i < _n ; _i++ { if _name == news_value_array[_i] { _script += "\f[bold,true]%(REPLACE(news_name_array[_i],'_','/'))\f[bold,default]|" } else { _script += "\q[%(REPLACE(news_name_array[_i],'_','/')),OnShowNewsList,%(_i)]|" } } _script += ' |\q[地域設定,Menu_REGIONCONFIG]|\n' _name_array = SPLIT(_name,'_') _nac = ARRAYSIZE(_name_array) for _na = 0 ; _na < _nac ; _na++ { _list = EVAL("newslist_%(_name_array[_na])") _script += horzrule(_name_array[_na]) _n = ARRAYSIZE(_list) _listcount = 0 for _i = 0 ; _i < _n ; _i++ { _av = SPLIT(_list[_i],'|',2) if STRLEN(_av[1]) > 0 { _script += "\![*]\_a[%(_av[0])]%(SHIORI3FW.MakeShortText(_av[1],46))\_a\n" _listcount += 1 } } for _i = _listcount ; _i < _count ; _i++ { _script += '\n' } } for _i = 0 ; _i < _add ; _i++ { _script += '\n' } _script += '\n[half]' _script += 半分メニュー開始() _script += 半分メニュー('←戻る','OpenMenu') _script += 半分メニュー('×閉じる','Menu_CANCEL_NOTALK') _script += 半分メニュー終了() _script += '\_q' _script } Menu_REGIONCONFIG { <<" ち05「\b[2]地域設定や。見たい地域を選んでな。 ち  「\n[half]%(メニュー('兵庫県','Menu_REGIONCONFIG')) へ10「……選ぶも何も、一択のように見えるんだが。」 ち03「せやけど、このへん以外のこと知らへんのやもん。」 待ちなしへ11「絶対色々なめてるだろ!」 ち04「そんなん言われても……」 待ちゼロち  「\_q\n[half]%(メニュー('←戻る','OnShowNewsList',news_value_array[0],news_count_array[0])) 待ちゼロち  「%(メニュー('×閉じる','Menu_CANCEL_NOTALK',news_value_array[0],news_count_array[0]))\_q ">> }