→ laechan :應該主問題是 2 那一個, 1~3 的情況下num<=j 有包含 07/16 21:33
我把 code 貼出來,有空我會看一下。
if(sscanf(str,"-memo %d",num)==1)
{
if(!wizardp(me) && (adv_guild!="magemaster" && adv_guild!="sage"))
return notify_fail("disapparate: 這個指令只有大魔導士跟秘印賢者"+
"可以使用喔.\n");
if(num<1 || num>DISAP_NUM1)
return notify_fail("disapparate: 數字範圍是 1~"+DISAP_NUM1+" 喔。\n");
env=environment(me);
tmp=base_name(env);
if(sscanf(tmp,"/%s/room/%s",tmp,str)==2 && atoi(str)>0 && atoi(str)<101)
{
disaps=(mixed)me->query("record_data/disapparate");
j=sizeof(disaps);
if(j<1) disaps=({});
if(num<j)
disaps[num-1] = base_name(env);
else
disaps+=({base_name(env)});
me->set("record_data/disapparate",disaps);
return notify_fail("disapparate: 記憶完畢。\n");
}
else
return notify_fail("disapparate: 這個地方不能記憶喔。\n");
}
初步看了一下..
一、忘記做 sizeof(disaps) 的判斷所以你可以記到第四個,
而且理論上你可以針對第 1~3 去做覆蓋,但無法動第四個
二、理論上應該是 if(num<=j) 而不是 if(num<j),比方你已
經有存一個地點了(sizeof(disaps)=1),則 memo 1 時,
它應該做的是 if(num<=j) 那一段。
這兩個我先改,其它有問題的改天再看。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.11.103