假設一 mapping objs = (["檔名" : 物件, ...]) 存放了所有武器
的檔名及該檔名所指向的物件。
定義一個 mixed types = ({"blade","lance","sword","axe",
"wand","rod","dagger","bow","gun"})
mapping objs;
static mixed types = ({"blade","lance","sword","axe",
"wand","rod","dagger","bow","gun"})
// 上述兩個設為全域變數
void show_data(string str,int s)
{
// 第一次呼叫該函數時, s=0
string str="",files,t;
mixed keys_objs;
object ob;
if(s>sizeof(types))
{
write("資料顯示完畢.\n");
return 1;
}
if(s==sizeof(types))
{
str="其它類武器總覽:\n"+
"======================================================\n";
keys_objs=keys(objs);
foreach(files in keys_objs)
{
if(!ob=objs[files]) continue;
if((string)ob->query("type")!=t) continue;
str+=sprintf("%s %s\n",ob->query("short"),files);
}
write_file("/open/cmds/loadall_other.data",str);
write("其它類武器資料存檔完成.\n"+
"全部工作已結束,感謝你的使用。\n");
return 1;
}
t=types[s];
str=t+" 類武器總覽:\n"+
"======================================================\n";
keys_objs=keys(objs);
foreach(files in keys_objs)
{
if(!ob=objs[files]) continue;
if((string)ob->query("type")!=t) continue;
str+=sprintf("%s %s\n",ob->query("short"),files);
map_delete(objs,files);
}
write_file("/open/cmds/loadall_"+t+".data",str);
write(t+" 類武器資料存檔完成, 請按 enter 鍵繼續......");
input_to("show_data",0,s+1,str); // 重覆 input_to 自己, 同時 s+1
return 1;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 61.225.184.225 (11/15 11:19)
※ 編輯: laechan 來自: 61.225.184.225 (11/15 11:23)