作者laechan (小太保)
看板mud_sanc
标题Re: [抠顶] 消影术
时间Mon Jul 16 21:28:36 2012
我把 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
1F:→ laechan :应该主问题是 2 那一个, 1~3 的情况下num<=j 有包含 07/16 21:33