以下不适用国家药水。
这个我刚洗澡时有想了一下,大致是读取 potion_shop.c
就可以办到,写进 questing 也可以。
/* 虚拟药水补给所 for inherit
[email protected] in 1999.08.07
[email protected] in 1999.10.10 修改为永久保存 */
没想到自 3p 药水虚拟化到现在已经 20 年了。
玩家在 buy 药水时:
// num=想购买的某种药水的数量
// pnum=该种药水目前身上的数量
// max_num=该种药水目前的可购买量
pnum=user_potion_num(ob,kind);
max_num=axiom_carry(ob,kind,num,pnum,ff);
if(num>max_num)
{
num=max_num;
if(num<=0)
{
shows("me",ob,sname+"的$K罐数或总药水罐数已经达到满档,不用再购买了。\n",
kind,0);
return 1;
}
shows("me",ob,sname+"只能再购买 $n 罐的$K。\n",kind,num);
}
这样就很简单了用 questing 就可以解决:
max_num=(int)questing("potion_shop","max_num",kind,({num}));
if(max_num<1)
return notify_fail("你已经无法再携带更多的药水囉.\n");
else if(num>max_num)
return notify_fail("你最多只能再携带 "+(max_num-num)+" 罐药水喔.\n");
上面的 questing 用法我已经新增了。以下实验:
> drink list
生命药水:105罐,魔法药水:0罐,内力药水:0罐。(114:114:114)
我最多可以带 114 罐药水。
> running
编辑结束并存盘(.). 中途放弃编辑(~q).讯息暂时中断。
__________________________________________________________________
write(questing("potion_shop","max_num","hp",({10}))+"\n");
========== 程式执行区 ==========
9
========== 程式执行区 ==========
也就是说当我想带 hp 药水 10 罐时,经过计算,我最多将只能
带 9 罐。
Laechan