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灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP