//転送 // script by Lucy 2007/04/08 // prontera,154,196,4 script 転送員#1 115,{ cutin "kafra_03",2; mes "[転送員]"; mes "こんにちは。"; mes "転送サービスです。"; mes "転送して差し上げましょうか?"; next; if(select("お願いします。","けっこうです。") == 2) { //終了 goto LEnd1; } //csvファイルの指定 set @file_pota$,"script/db_potamap.txt"; set @file_area$,"script/db_area.txt"; // 地域ファイルを読み込む // @area$[][] // 0: エリアID(主キー) // 1: エリア名 // 読み込み番号 for( set @i,0; @i][] // 番号 // @box$[0][] : マップID(@des&[]参照) // @box$[1][] : 表示マップ名が入る // @nitems 該当したマップ数を保持 // //地域を選択した時 if(arrayselect(@area$[1][0]) != 0){ //選択した地域番号 set @area_num$,@area$[0][@menu]; set @nitems,0; //全てのマップから走査 for(set @i,0; @i < csvgetrows( @file_pota$); set @i,@i+1){ //地域番号に該当するマップを探してboxに入れる if( csvread(@file_pota$,@i,1) == @area_num$){ setarray @box$[0][@nitems],csvread(@file_pota$,@i,0); setarray @box$[1][@nitems],csvread(@file_pota$,@i,2); set @nitems,@nitems+1; } } set @numm,0; set @area_num,0; set @i,0; set @menu,0; //履歴から選ぶを選択した時 }else{ // // 履歴を保持する配列 // #hystory$[] // マップID // set @nitems,0; //後ろから順に走査 for(set @i,getarraysize(@hystory)-1 ; 0 <= @i; set @i,@i-1){ //一応エラーチェック 該当すれば@box$[][]に値を入れる if( 0 <= @hystory[@i] ){ //マップIDを入れる setarray @box$[0][@nitems],@hystory[@i]; // //マップ名を入れる // //csvファイルから指定したIDを持つ行を検索 set @Line,csvfind(@file_pota$,0,@hystory[@i]); //該当する行の持つマップ名を入れる setarray @box$[1][@nitems],csvread(@file_pota$,@Line,2); set @nitems,@nitems+1; } } set @conv,0; set @i,0; set @menu,0; } //↑履歴から選ぶ終わり // // マップの選択 // @box$[][]から、マップを選択 // 選択した値は自動的に@menuに入る // //一応エラーチェック if( 0 <= arrayselect(@box$[1][0],@nitems) ){ // //履歴に加える操作 // //最大履歴件数を設定 set @hys_size,5; // //履歴配列が長すぎないかチェック // if( @hys_size <= getarraysize(@hystory) ){ //後ろのはみ出した部分を削除 deletearray @hystory[@hys_size],getarraysize(@hystory)-@hys_size; } // //履歴に追加するマップが重複した場合 //該当箇所を削除 // for( set @i,getarraysize(@hystory)-1; 0 <= @i; set @i,@i-1 ){ //数値と文字列を比較演算できないので、 //キャストっぽいのをやっとく set @conv,@box$[0][@menu]; if(@hystory[@i] == @conv){ deletearray @hystory[@i],1; set @i,@i-1; } } set @i,0; // //該当件数がいっぱいになった時 //一番古い履歴を削除 // if( @hys_size <= getarraysize(@hystory) ){ deletearray @hystory[0],1; } // //履歴に追加 // setarray @hystory[getarraysize(@hystory)],@box$[0][@menu]; // //指定したマップにワープ // //指定された行を探す set @Line,csvfind(@file_pota$,0,@box$[0][@menu]); //その行のワープ先データを使う warp csvread(@file_pota$,@Line,3),csvread(@file_pota$,@Line,4),csvread(@file_pota$,@Line,5); } //boxの初期化 for(set @i,0; @i < @nitems; set @i,@i+1){ setarray @box$[0][@i],0; setarray @box$[1][@i],0; } set @Line,0; set @menu,0; set @file_pota$,0; set @file_area$,0; set @i,0; set @nitems,0; set @hys_size,0; goto LEnd2; LEnd1: mes "[転送員]"; mes "いつでもご利用してくださいね。"; LEnd2: cutin "kafra_03",255; close; }