ES2 MUD LIB :: 東方故事二(ES2) 天朝帝國 mudlib 瀏覽展示
/doc/mudlib/std/item/combined
□ COMBINE_ITEM (標準物件﹕可合併表示的物件)
有時候我們會做一些人們時常會攜帶量較多的物件﹐例如金幣、飛鏢、符紙等等﹐若
是這些物件每一個都用一個物件代表﹐不但浪費記憶體﹐而且 inventory 列出來也
會太長﹐因此這個標準物件被設計用來讓一些攜帶量經常很多的物件繼承。
這些邏輯上是很多個﹐但實際上 MudOS 只用一個物件代表的物件﹐外觀看起來會像是
兩瓶藥水
十五把飛刀
一百二十兩銀子
換句話說﹐就是 <數量><單位><名稱> 的格式﹐因為中文的語法可以很安全地依此規
律造出相當通順的名詞片語﹐所以你只需要正確地設定好 <單位> 跟 <名稱>﹐<數量>
部份就由這個標準物件中的幾個函數替你解決。
int query_amount()
這個函數傳回此物品邏輯上的數量﹐你也可以用這個函數的傳回值是否大於零來判
斷一個物件是否是這類「可合併表示」的物件﹐query_amount()在大多數的情況下
傳回的都是一個大於等於 1 的整數﹐傳回零的情形請見下面 set_amount()的說明
。
void set_amount(int v)
設定物件的邏輯數量﹐其中傳入值 v 不得小於零﹐若等於零則物件會被用一個
call_out 摧毀﹐以確保用 call_other 呼叫這個函數 return 之後﹐這個物件
仍然可用﹐因此如果你無法確定你呼叫 set_amount() (或 add_amount()) 之後
物件的邏輯數量不會等於零﹐最好呼叫後再用 query_amount() 檢查一次。
set_amount() 同時也會根據物品的邏輯數量更新它的重量﹐以及環境的負重。
void add_amount(int v)
改變物品的邏輯數量﹐v 值會被加到目前的數量上﹐一個常用的呼叫方式是
add_amount(-1); 表示物品被「用掉」﹐一個。
□ 需要繫結的函數
string short()
varargs int move(mixed dest, int silent)
Elon@ES2 (07-05-95) drafted.
Annihilator@ES2 (07/14/95) refined.