作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] shop
时间Mon Apr 30 16:31:49 2012
※ 引述《justinj (黑旋风)》之铭言:
: 给norr的:
: storeroom我觉得应该是放样品的吧....
: 那程式写法就可以这样写
: 到回圈那边开始
: if(!ob=present(str,storeroom)) return notify_fail("没有这个物品哦!\n");
: //第i个物品的东西我没写进去....请自行补吧.....
: //还有如果是马房请另外写吧...
: if(ob->query("mass")*num>user_mass) return notify_fail("你买的东西重量超过你的负重哦!\n");
: for(i=0;i<num;i++) clone_object(base_name(ob))->move_to(ppl);
: //接下来是金钱的计算...就不说了...
: //不过我觉得钱够不够也要移到前面判断....
用 storeroom 是很多 mud 的共通写法,它的好处就是
我今天 sell 一个东西进去时,若该物 storeroom 没有,
则该物 ob->move(storeroom);
则 list 商店时,只需要 obs=all_inventory(storeroom),
则 foreach(ob in obs) 所列的东西「即是商店内的所有
东西」,而且要读这些东西的资料(如价格)都不必重新去
clone 这些东西。
它也很方便做排序,比方我买光商店的第 5 件东西,买
最後一件时就是做 ob from storeroom moveto ppl,这
时 storeroom 就没有该物品,list 时自然也不会有。
它更重要的功能是指定物品,比方 buy sword 2 指定购
买商店的第二种 sword 时,它的做法就是..
ob = present("sword 2",storeroom);
要修改跟 storeroom 有关的东西时先确定有上述概念即
可。
LAechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 223.141.186.229
1F:→ laechan :PS storeroom 也可以当做「不会被系统清掉」的房间设 04/30 16:32
2F:→ laechan : 计参考,它有设 set("pre_clean",1); 也有自订 04/30 16:33
3F:→ laechan :int clean_up() { return 0; } 这样几乎就不会被清掉 04/30 16:33