[系統] 虛擬物品系統補完
主檔:/adm/daemons/vobjs_d.c
/include/vobjs.h
這兩個檔都已經 cp 給 highelf,檔案內容很單純,highelf
擁有的權限是..
一、其它 wiz 自行撰寫的 vobj.c,highelf 有權決定是否
寫入 vobjs.h 中。
二、highelf 可自行新增 vobjs_d.c 的函數(但不能更改原
先已存在的函數),以方便管理。
(有需要的話我也可以去新增)
三、vobjs 另有一個主檔放在 /adm/simul_efun 下,有幾個
關鍵函數..
// 設定 n 個 vobjs 給 user
void set_user_vobjs(object user,string vobjs_key,int n)
這是直接為 user 設定 vobjs_key 這個虛擬物品 n 個
* 這個還要加判斷,讀取 vobjs_key 這個物品的最大值設定
(一樣 wiz 的 vobj.c 中設定再由 vobjs_d.c 讀取)
===============================================================
// 增加(或減少) n 個 vobjs 給 user
void add_user_vobjs(object user,string vobjs_key,int n)
跟上面一樣要加同樣的判斷。
===============================================================
// 移除玩家身上某種 vobjs
void delete_user_vobjs(object user,string vobjs_key)
移除的判斷很少,不過我要參考其它有 delete_xxx 的系統。
===============================================================
// 讀取 vobjs_data 的內容
varargs mixed query_vobjs_data(string vobjs_key,string kind)
這是給特殊指令用的,使用 varargs 宣告語法
query_vobjs_data 不接任何東西,就讀取所有的 vobjs_data (mapping)
query_vobjs_data(vobjs_key) 不接 kind 就只讀取 vobjs_key 這個東西
的 data (mapping)
query_vobjs_data(vobjs_key,kind) 有接 kind 就讀取資料
mapping vobjs_data=(["_maker":"highelf",
"highelf_happyearth_breakfast":([
"name" : "羿雲特製早餐\",
"file" : "/d/ppl/highelf/happyearth/obj/breakfast",
"mark" : "吃了可以補血一萬hp的早餐\",]),
以上面來說..
query_vobjs_data("highelf_happyearth_breakfast") 就是讀
(["name" : "羿雲特製早餐\",
"file" : "/d/ppl/highelf/happyearth/obj/breakfast",
"mark" : "吃了可以補血一萬hp的早餐\",]), ])
query_vobjs_data("highelf_happyearth_breakfast","name") 就是讀
"羿雲特製早餐\"
(另外 highelf 你應該是設錯了,自訂的 vobj.c 只要設 happyearth_breakfast
就可以了)
目前則使用玩家身上的 temp_data["vobjs"] 欄位當做暫存用。
(要永久使用這個欄位也可以,因為原先的設定就是玩家 quit 就
清除玩家所打到的 vobjs,以後才可能保留)
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.105.143
推
01/16 00:27, , 1F
01/16 00:27, 1F
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19