作者laechan (挥泪斩马云)
看板mud_sanc
标题[闲聊] 当你携带某个东西时你会常驻某个效果
时间Tue Sep 18 11:15:03 2018
我一直在想这东西要怎麽写,sanc防具型态很多,所以很多时候
并不需要写这个(比方把这个效果放在特定某个型态的防具即可)
,但有时可能还是会有用到的时候。
晚点我拟几种可行的做法。
第一种是比较懒的做法,用 present 来做,给特殊的 id,然後
搭配 heart_beat 每分钟去呼叫特定函数,然後允许玩家可以最
长 59 秒该物品消失时效果仍常驻,判断的时间一到,发现该玩
家没有该物品,该效果就消失。这时效果用 set_temp 是最直觉
的做法。
也就是说大部份时间是去读玩家的 temp_data,每分钟做的判断
才去做 present。
第二种是将这些物品全部写成虚拟物品,那判断只要一行:
if(user->query_vobjs("xxx")>0)
虚拟物品也具有方便控制玩家不能轻易丢弃、给人、贩卖,但是
比方以受诅咒的某物为例,玩家身上带有该物时 3p 减半,那怎
麽设定该效果的常驻?我认为最终还是会回到 set_temp 以及周
期性 check 的设定方式上。
第三种就是以 set_temp 及周期性 check 为出发点,然後再运用
times_check 原本就会周期性呼叫的做法,设定一个这类物品的
主控台,由它去执行对线上所有玩家「当他们持有某些物品时就
做哪些常驻效果」,这样或许会比较好,但是其运作复杂度就会
跟以下的东西成正比:
1.线上玩家数量。
2.有多少种类的物品需执行这样的判断。
[编辑中]
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.106.224
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1537240507.A.FA3.html
※ 编辑: laechan (122.117.106.224), 09/18/2018 11:23:45