作者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
→ laechan :PS storeroom 也可以當做「不會被系統清掉」的房間設 04/30 16:32
→ laechan : 計參考,它有設 set("pre_clean",1); 也有自訂 04/30 16:33
→ laechan :int clean_up() { return 0; } 這樣幾乎就不會被清掉 04/30 16:33