getnsadir
id:eiji8pou:20050604:1117812937 の続きと言うか焼き直し
numalias getnsadir_dir numalias getnsadir_content numalias getnsadir_contentnum numalias getnsadir_key numalias getnsadir_key2 ------ numalias getnsadir_cache_start,200 ; 一度検索ないし記録したディレクトリを、グローバル変数によって保存するので、 ; 使うグローバル文字変数10個の先頭の番号をここで指定する。 numalias higurashi1,1 numalias higurashi2,2 numalias higurashi3,3 numalias higurashi4,4 numalias higurashi5,5 numalias higurashi6,6 numalias higurashi7,7 numalias higurashi8,8 numalias moonprincess,9 numalias singingmoon,10 ; ここまで、定数 ------ ;============================== ;getnsadir ;============================== ;機能:コンテンツを番号にして与えると、そのディレクトリを返す。 ;引数:ディレクトリ名を入れる文字変数、調べるコンテンツ番号 ;説明:キャッシュ機能もある。キャッシュをクリアするには、getnsadir_cacheclearを実行する。 ;説明:最初にレジストリを調べ、レジストリになければプレイヤーに入力させる。 ;付記:有効な番号は1〜10。1〜8がひぐらしのなく頃に1〜8に対応し、9,10は月姫と歌月十夜に対応。 *getnsadir getparam s%getnsadir_dir,%getnsadir_content if %getnsadir_content < 1 return ; コンテンツ番号が0以下なら、何もせずに帰る。 if %getnsadir_content > 10 return ; コンテンツ番号が11以上なら、何もせずに帰る。 ; もし、キャッシュがあればそれを使う。 mov %getnsadir_contentnum,%getnsadir_content+getnsadir_cache_start-1 if $%getnsadir_contentnum = "" getnsadir_from_reg ; なければ、レジストリから取得する。 *getnsadir_input if $%getnsadir_contentnum = "" getnsadir_from_input ; なければ、入力してもらう。 chomp $%getnsadir_contentnum,"\" ; 末尾の\を削除する。 fileexist %getnsadir_dir,$%getnsadir_contentnum ; あるかどうか確認する。 if %getnsadir_dir = 0 mov $%getnsadir_contentnum,"":goto *getnsadir_input mov $getnsadir_contentnum,$%getnsadir_contentnum add $getnsadir_contentnum,"\arc.nsa" fileexist %getnsadir_dir,$getnsadir_contentnum ; あるかどうか確認する。 if %getnsadir_dir = 0 mov $%getnsadir_contentnum,"":goto *getnsadir_input ; 有効でなければ、何度でも入力させなおす。 mov $%getnsadir_dir,$%getnsadir_contentnum return ;============================== ;getnsadir_from_reg ;============================== ;説明:内部関数。レジストリから取得する役割を持つ。 *getnsadir_from_reg if %getnsadir_content > 9 mov $getnsadir_key,"Software\07th_Expansion\higurasi":itoa $getnsadir_key2,%getnsadir_content:add $getnsadir_key,$getnsadir_key2:mov $getnsadir_key2,"gamedir" if %getnsadir_content = 9 mov $getnsadir_key,"Software\TYPE-MOON\月姫":mov $getnsadir_key2,"directory" if %getnsadir_content = 10 mov $getnsadir_key,"Software\TYPE-MOON\歌月十夜":mov $getnsadir_key2,"directory" getreg $%getnsadir_contentnum,$getnsadir_key,$getnsadir_key2 return ;============================== ;getnsadir_from_input ;============================== ;説明:内部関数。レジストリから取得する役割を持つ。 *getnsadir_from_input if %getnsadir_content > 9 mov $getnsadir_key,"ひぐらしのなく頃に":itoa2 $getnsadir_key2,%getnsadir_content:add $getnsadir_key,$getnsadir_key2 if %getnsadir_content = 9 mov $getnsadir_key,"月姫" if %getnsadir_content = 10 mov $getnsadir_key,"歌月十夜" add $getnsadir_key,"がインストールされているディレクトリを入力してください。" inputstr $%getnsadir_contentnum,$getnsadir_key,255,0 return