mud_sanc 板


LINE

底下是幾個原則設定... 一、虛擬物品暫時不予儲存(放在玩家的 temp_data 區) 二、允許 wiz 可自訂屬於自己的虛擬物品資料庫,包括虛擬物品 指向的實體物件、虛擬物品ID、虛擬物品中文名,各自的資料 庫各自進行資料的增減(因此該資料庫存放位置由 wiz 決定). 除了該 wiz 外其它 wiz 無法去做資料的增減. 三、wiz 必須透過申請來建立自己的資料庫。會有個總資料庫由我 建置,它會去抓取各 wiz 自建的資料庫的所有資料來總存放。 四、假設我的虛擬物品資料庫為 /u/l/laechan/vobj.c, 它的內容 為... // 檔名不一定要這麼取 ====== /u/l/aechan/vobj.c ====== inherit ROOM; // 統一定為 vobjs_data // 所有虛擬物品必須依 key 的開頭字母做排序以避免重覆 // name 與 file 兩個子 key 必備, mark 非必要 // name 盡量等於實體物件名(無色碼與空白) // file 指向實體物件檔名(預設 .c 檔) // mark 是用來做特殊判斷用(也可當成 wiz 自行 remark 用), 可有可無 mapping vobjs_data=(["_maker":"laechan", // _maker:誰建置這個虛擬物品系統 "crystal" : ([ "name" : "水晶", "file" : "/u/l/laechan/obj/crystal", "mark" : "解盜賊任務時會用到的東西",]), "disk" : ([ "name" : "光碟", "file" : "/u/l/laechan/obj/disk", "mark" : "解盜賊任務時會用到的東西",]), ]); // 統一的函數名 set_vobjs() 一定要有 void set_vobjs() { // 避免產生 bug if(file_exists("/adm/daemons/vobjs_d.c")) "/adm/daemons/vobjs_d"->set_vobjs(vobjs_data); } // 一定要有 void create() { ::create(); seteuid(getuid(this_object())); set("light",1); set("short","虛擬物品資料房"); set_vobjs(); // 一定要有, 保證 update 房間就去 set } // 統一的函數名 vobjs_data() mapping vobjs_data() { return vobjs_data; } // 底下還可自行撰寫 void init 函數來自定 add_action 做 // show 資料用之類的, 但不能有刪改 vobjs_data 的東西 要增減或刪改資料就透過 ed 去新增然後 update 該物件即可 完成更新. 我自己的我待會就會先建好, 若我有建好, wizs 就可透過底   下方式確認... call /u/l/laechan/vobjs;vobjs_data 去看看 vobjs 有沒有回傳東西. 各 wizs 可先完成這一部份並聯絡我向我報備自建的資料庫的完整路 徑檔名為何. 建議先弄個測試的即可. vobj 指向的實體物品則可以是現存的任何的 obj, 如生命水晶、小 地圖、去刀粉、... 底下是你們上面邊弄, 我也邊弄的東西... 五、放在玩家 temp_data 區的虛擬物品資料... mapping vobjs = query_vobjs(ppl); (這個其實等於 vobjs = ppl->query_temp("vobjs"); 但不建議   使用這種呼叫) objs 會 = (["laechan_crystal" : 3, "laechan_disk" : 5, . . ]); 這樣可確保各 wiz 所定的 vobjs 其 key 都是獨特的, 因為   它們都會被加上建置者的 id, 例如我自己建的 crystal, 我   的虛擬物品 id 就會是 laechan_crystal. 所以假若 wizs 要增改玩家的 vobjs 資料, 有三種方法 1)直接讀取玩家的 vobjs 做 mapping 資料異動 讀出來的 vobjs 更動 => 玩家身上的 temp_data["vobjs"] 就會一起更動 2)直接 ppl->set_temp("vobjs/key名",數量); \ ppl->add_temp("vobjs/key名",數量); -- 不建議使用,但最直覺 ppl->delete_temp("vobjs/key名",數量); / 3)透過全域函數 set_vobjs(ppl,key名,數量); add_vobjs(ppl,key名,數量); delete_vobjs(ppl,key名); 請盡量使用第三種方法, 透過全域函數來做資料更動的最大優   點, 就是將來若讀取方式異動時, wizs 不用去更改呼叫方法, 只需我去更動全域函數的內容即可, 避免日後大規模異動. (以前為了將 add("warexp" 改成 add_warexp 曾大費功夫) 這個弄好了會公告. 六、指令 vobjs 玩家操作這個指令, 跟 wiz 操作會看到不太相同的結果. 這個弄好了也會公告. 暫時先用上面的, 先弄出一個雛型, 然後測試一陣子找出可修改 的地方, 再討論看看怎麼更動較 ok. (例如是否要確保資料更新的安全性而採用更嚴謹的處理方式等) 最後, 上面設定原則也確立了實體物品與虛擬物品的共存性, 例 如玩家身上可能有實體的生命水晶, 但可能也有 n 顆虛擬的生命 水晶. 在過渡時期這應該是最佳的設定方式. Laechan --



※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 218.170.230.61 (09/24 10:40)
1F:推 hlead :/u/n/norr/vobj.c 09/26 21:29
2F:推 hlead :NAME可以配色彩嗎= =? 09/26 21:32
3F:→ laechan :name暫時不能配色彩(因為關係到排版) 09/26 23:16
4F:→ laechan :(而且我忘記了.. name 要有最大長度,這個會在新一篇 09/26 23:16
5F:→ laechan :說明, 同樣也是要方便排版) 09/26 23:16
6F:→ laechan :更新步驟 1)修改 /include/vobjs.h 09/26 23:17
7F:→ laechan :2)update /adm/daemons/vobjs_d.c 09/26 23:17
8F:→ laechan :3)call /adm/daemons/vobjs_d;vobjs_data 確認 09/26 23:18







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP