mud 板


LINE

看板 mud  RSS
灌个水。(真物理灌水,咕噜咕噜... sanc 还没真正实装这个东西,想说来研究看看,或许打着打着, sanc 那边就给它实装了也说不定。 在部份 mud,玩家资料档的 obj_data 栏位可以做如下储存: obj_data ([ "/weapon/lodoos/sword1#123456":(["improve_lv":5, ...]), . . ]) 也就是以物品的档名做为 key 值,後面接这个物品的额外储存资 料,当玩家 login 时,依照 key 值 clone_object 物品出来的 同时,再做以下的动作: ob=clone_object(files); foreach(str in keys(obj_data[files])) ob->set(str,obj_data[files][str]); 例如把上述的 improve_lv 值 5 设定到该 clone_object 出来的 物品上面,再把该物品 move 到玩家身上。 这类关於额外储存的资料,需满足以下条件: 一、最少设定(储存)项目 二、最简设定(储存)原则 比方也有人是用 refine 做为精链的意思,我个人的评估思维是, 如果指令敲起来好敲(refine蛮好敲的),意思也有点儿到了,长度 没有很长....这里的长度指的是 refine_lv 精链等级 refine_stat 精链所提升的属性质 . . 做为储存栏位来说看起来还 ok,那我多半就会用了。 那首先就 refine_lv 即精链等级来说,像 RO 可以精练到 1x 等 ,而且是武器防具都可以,而且还有套装及插卡方面的设定,还会 有依精链值做额外属性加成的设定,因此我会一并考虑精链是否额 外储存 refine_stat 的问题。 我的思维是,假设做额外储存,那直觉上会有几个问题: 1.如果我改变精链规则,我很难去更动之前已被玩家精链的物品 2.若不存这个栏位,我怎麽解决载入时的 loading 问题 3.我将来要怎麽去统一管理这些已经被精链的物品的refine_stat 储存值 1 的部份就是说,比方我原先订 +1 就是该武防各属性 +5,那後来 我觉得 +5 太多了想改 +3 时,玩家之前已精链的东西我就得做额 外的处理(把那些 +5 改成 +3)。 而既然以後可能会有这个问题,那还不如在 loading 时就处理: ob=clone_object(files); foreach(str in keys(obj_data[files])) { ob->set(str,obj_data[files][str]); switch(str) { case "refine_lv": lv=obj_data[files][str]; ob->set("refine_stat",lv*5); . . 上面的意思就是说我只储存 refine_lv,而当玩家登入时,我再依该 物品的 refine_lv 值,来设定 refine_stat 的值是多少;玩家save 或是把该物品储放进仓库时,只存 refine_lv 不存 refine_stat,也 就是上述的最少设定(储存)项目,而上面的 switch..case.. 用来做 为额外的处理。 那麽 coding 常遇到的情况就是 当我们储存的项目越多时 就可以减少很多额外的处理 当我们储存的项目很少时 就需要很多其它额外的处理 例如我们只单存一个 refine_lv 时,就可以想见在很多地方都需要先 读取出这个值,然後再做额外的运算来得到其它我们想要的东西,例 如 refine_stat、refine_name、.... 等等。 通常根据均值定理,可得出一个适当的储存项目数量,使得储存的项 目不至於过多,且不会增加很多需做的额外处理。 但是根据经验,其实还有另一种做法,就是 RO 所采取的额外描述法 例如 RO 的蛇披,它的 Special DEX 部份是这麽说的 https://upload.8591.com.tw/ware/201905/1557133186868273AY.png
Dex+1 精链值+8时Dex+3 当精链值+9时MATK+1% 当精练值+12时ASPD+1,固定咏唱时间-7% 也就是说,玩家登入或从仓库拿出此物品时,只载入 refine_lv 的设 定值,但是当玩家做 wear 或 wield 时,才做以下的动作: lv=ob->query("refine_lv"); switch(lv) { case 1..7: ob->add("stat/dex",1); case 8 : ob->add("stat/dex",3); . . } 而其它时候,比方玩家 view 该物品时,只会看到上面的「描述」,以 及该物品的精链值,既然玩家只有在做 wear 及 wield 时,该精链值才 会有作用,那自然只需在玩家 wear 及 wield 时做相关的处理就好。 我相信 RO 也是这样做的,所以它们才会规定物品在手持或穿戴时无法 精链,必须先脱下来才行。 因此理论上,只储存 refine_lv 值应该是可以的。 而这可以带来几个好处: 一、refine_lv 这个储存栏位的变动性不高,应该确定就是这个栏位, 连同精链指令也可以顺便定为 refine。 二、之後可以只先处理 wield/wear 指令,马上就能进行相关测试,例 如穿脱时的玩家属性变化、quit/login 时是否正常载入等。 三、再之後才是其它与观看该物品相关的指令,例如 inventory、look 、view、auc、.....等。 精链名称的部份,最直觉是以下的显示: +0时: 罗德斯长剑(lodoos sword) +9时: +9罗德斯长剑(lodoos sword) 然後最优先考量是战斗时,是否希望+9出现: 你以手中的罗德斯长剑刺向小麻雀 你以手中的+9罗德斯长剑刺向小麻雀 看起来好像让 +9 出现也不错?当然这与各家 mud 风格有关且因人而 异。 其它的话问题就小一点,如果希望到处都能带 +9,那麽在载入时就做 处理是比较好的: foreach(str in keys(obj_data[files])) { ob->set(str,obj_data[files][str]); switch(str) { case "refine_lv": lv=obj_data[files][str]; if(lv>0) { shorts=ob->query("short"); ob->set("short",sprintf(HIG"+%d"NOR"%-s",lv,shorts)); . . 这样它就到处带 +9 时,那万一玩家将 +9 精链成 +10 呢,也很简单 因为它格式是固定的: shorts=ob->query("short"); lv=ob->query("refine_lv"); shorts=replace_string(shorts,"+"+lv,"+"+(lv+1)); 因为 +n 这个东西在物品的 short 只会出现在精链识别名称区块,平 常不可能有精链值为 0 的物品,其名称会带 +n 的,就容易做名称上 的取代。 有时间再打点别的回在下篇。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.66.104 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud/M.1590030949.A.FC2.html ※ 编辑: laechan (114.33.66.104 台湾), 05/21/2020 11:16:04 laechan:转录至看板 mud_sanc 05/21 11:16 ※ 编辑: laechan (114.33.66.104 台湾), 05/21/2020 11:19:21
1F:推 tsetsethatha: 感谢发文 !! 05/21 12:20
2F:推 smmoon : 幻世的宝石系统也类似作法 clone_object() 05/22 09:44
每个 mud 有每个 mud 的风格,设定也因人而异,出发点都差不多, 过程则会在各种思维及考量下而迥异,但只要弄出来的东西都是可以 work 的就行了,特别是2020的现在,随便弄一台server功能都数倍 於以前,目前比较不需要考量很多(我主要是已经习惯了)。 ※ 编辑: laechan (114.33.66.104 台湾), 05/22/2020 10:53:54
3F:推 dontpkme : 感谢分享思路 05/22 15:38
4F:→ taily : 我那边是 int wear(){ if( ::wear() ){ .... 05/22 17:51
5F:→ taily : 我写过精练,是属於你外部储存,如果要修改已经精练的 05/22 18:03
6F:→ taily : 再read_file()单一档案,取代refine_state对我较简单 05/22 18:05







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

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

TOP