看板 mud_sanc 關於我們 聯絡資訊
我把 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
laechan :應該主問題是 2 那一個, 1~3 的情況下num<=j 有包含 07/16 21:33