建议修改流口水的提示
本帖最后由 darkstar 于 2011-12-28 01:04 AM 编辑上个星期我挂机冥想(这个挂机不违反规定吧?),人出门去了,结果robot没做好出错了,买了一堆的干粮掉莫高窟里。我承认我的robot没做好,我有错,可我不是故意的。问题在于,wiz修改了莫高窟,可这根本就是治标不治本的办法。莫高窟fix了,还有书院呢?达摩院呢?武当呢?
根本的问题不在于房间会不会自动消除物品的问题,而在于那个毫无意义的咽口水提示。遇到一群挂机的恶鬼时,地上如果掉几千个干粮,一下系统就卡了。这种毫无意义的提示,我不明白为什么不改。
就算是为了丰富游戏内容,那单独给自己一个提示,再设置一个提示的CD时间就好了,至于搞一个无间断重复的公共提示吗?
北大侠客行MUD,中国最好的MUD 我以前一直以为这是个玩家命令输出的emote 上个星期我挂机冥想(这个挂机不违反规定吧?),人出门去了,结果robot没做好出错了,买了一堆的干粮掉莫高 ...
darkstar 发表于 2011-12-28 08:45 AM http://pkuxkx.com/forum/images/common/back.gif
mud是以 object 为单位组织的,当你输入eat的时候,系统要查找当前房间和你的身上所有包含有eat这个动作的物体,然后逐个调用。如果第一个物体就能吃,那就结束。如果不能吃,比如在地上,那就继续找下一个物体。所以,如果地上有1000个干粮,那么就要调用eat 1000次。最关键的是,这1000次函数调用,是在一个时间片内完成的,也就是说必须一次完成。所以整个系统就会卡。而“吞口水”这个提示,并非立即输出,它被放到了缓冲区了,在系统以后的时间片里再做处理。所以,提示没有太大问题,因为它不是即时的。
最后,自己有问题就改正,找另一个问题出来并不能减轻你自身的问题。不要让北侠被迫改成一个房间里只能有xxx个物体。到时候某些场合又要出错。比如当铺的箱子,你的宝石袋。 所有同一物品为一个object呢
huacuoh 发表于 2011-12-28 09:16 AM http://pkuxkx.com/forum/images/common/back.gif
那不叫同一个object,叫同一个sourcefile。那也是多个object。否则ganliang 1吃完了,剩下的999个干粮也没了。 难道不咽口水不行吗? 本帖最后由 darkstar 于 2011-12-28 01:42 AM 编辑
回复 5# jason
没看过源代码,我从你说的东西来推理,不对的地方请见谅:
按我的理解,当输入eat命令时,系统判断顺序是:
1、先检查是否有公共命令eat,有就调用,没有就跳入第3步;
2、有公共命令eat,调用,如果返回1,就结束,如果返回0,就跳入第3步;
3、判断房间里、身上有没有物体带有特别的eat命令。
我估摸着,eat并不是个公共命令,而是附带在干粮上的函数,所以输入eat的时候,前两步会被直接跳过,直接开始遍历身上和房间里的干粮,每一个干粮上的eat函数都要执行一遍。
其实,像eat、drink这种经常要被频繁调用的,完全可以做成一个公共命令,当输入eat object的时候,先检查set food,如果是1,就遍历房间里是否存在一个id为object的物体,并且这个物体有可吃的属性或函数(返回值为1),如果有就吃,没有这个object或者set food 0,就同样检查自己身上是否有object。一个简单的办法就是,每一个食物设置一个数值a表示能吃的次数,另一个数值b表示每次吃恢复的数值,每次执行eat命令时,恢复b数值的食物,同时a减1,a减到0就吃完。这样就不会存在1000个干粮就要调用1000次eat函数。
因为存在被大量重复调用函数的只有吃喝两件事,所以要做修改的只是吃喝两个命令,当然,各种食物的源文件都要做一些修改。
以上仅供参考。 其实这个问题出自一个”保护性”的改动。以前地上的干粮是能吃的,这样第一个eat函数就返回了。后来有人用在地上放的酒袋下毒,有玩家抱怨,就改成地上的默认不能吃了。大家看看怎么办 我觉得给玩家用一个属性来判断,属狗的肯定会吃地上的,属龙的自然不会吃,这样多好 回复 9# mml
龙是吃肉的,不吃干粮 举报darkstar'灌水!建议关禁闭!
页:
[1]
2