darkstar 发表于 2011-12-28 10:09:54

建议eat、drink修改为公共命令

像干粮酒袋这种低价值、一买就很多个的东西,带有自身附加的命令很容易出问题。

假如想破坏游戏,只要挂个机器人不断买干粮扔书院,15分钟之内可以堆上几万个干粮,还花不了多少gold,估计系统就卡得不行了……

像eat、drink这种经常要被频繁调用的,应该做成一个公共命令,当输入eat object的时候,先检查set food 值,如果是1,就遍历房间里是否存在一个id为object的物体,并且这个物体有可吃的属性,有就吃,没有,或者set food 0的,就同样检查自己身上。

简单解决办法就是,每一个食物设置一个数值a表示能吃的次数,另一个数值b表示每次吃恢复的数值,每次执行eat命令时,恢复b数值的食物,同时a减1,a减到0就吃完。

特别需求的解决:1、需要有特别的吃的动作?给食物设置一个eatmsg的字符,吃的时候调用就是了;2、吃东西附带特殊效果?设置一个eat_func()函数,吃的时候调用就是了。

这样就不会存在10000个干粮就要调用10000次eat函数。

因为存在被大量重复调用函数的只有吃喝两件事,所以要做修改的只是吃喝两个命令,当然,各种食物的源文件都要做一些修改。

以上仅供参考。

(刚才那贴不知道为什么锁了,这里单独发一次,wiz觉得不合适就删了吧)

北大侠客行MUD,中国最好的MUD

lequn 发表于 2011-12-28 10:16:12

本帖最后由 lequn 于 2011-12-28 10:17 AM 编辑

像eat、drink这种经常要被频繁调用的,应该做成一个公共命令,当输入eat object的时候,先检查set food 值,如果是1,就遍历房间里是否存在一个id为object的物体,并且这个物体有可吃的属性,有就吃,没有,或者set food 0的,就同样检查自己身上。

1、eat,drink的东西能不能只检查身上,
2、eat,drink的东西,掉地上就消失。现在吃过一口的干粮掉地上本来就是直接消失的。

darkstar 发表于 2011-12-28 10:17:45

回复 2# lequn

默认没有set food的时候就只检查身上的

因此对于大部分人都是只检查自己身上的

这样修改就不会造成大量重复调用

jason 发表于 2011-12-28 10:36:59

像干粮酒袋这种低价值、一买就很多个的东西,带有自身附加的命令很容易出问题。

假如想破坏游戏,只要挂 ...
darkstar 发表于 2011-12-28 10:09 AM http://pkuxkx.com/forum/images/common/back.gif


    之所以锁了就是因为开始讨论技术方案了,而我没办法跟你解释清楚为什么eat不能做成命令。

labaz 发表于 2011-12-28 10:39:57

回复 4# jason


darkstar被J鄙视了,laugh

mml 发表于 2011-12-28 10:43:42

把干粮和酒袋做的很重,没人只能背一个

labaz 发表于 2011-12-28 10:45:49

本帖最后由 labaz 于 2011-12-28 10:47 AM 编辑

回复 6# mml


你这是要做人肉干和人皮酒袋呢?
一次地上扔一个,循环下来也就一会的事,只要钱够

darkstar 发表于 2011-12-28 10:48:58

回复 4# jason


    哦,那算了,反正这也不是俺该操心的事。玩家只要享受游戏就好咯

jason 发表于 2011-12-28 10:49:52

回复jason


    哦,那算了,反正这也不是俺该操心的事。玩家只要享受游戏就好咯
darkstar 发表于 2011-12-28 10:48 AM http://pkuxkx.com/forum/images/common/back.gif


    欢迎你玩出感情后来做wiz

darkstar 发表于 2011-12-28 10:57:11

欢迎你玩出感情后来做wiz
jason 发表于 2011-12-28 02:49 AM http://pkuxkx.com/forum/images/common/back.gif


    水平不够耶,编程只学了半吊子,只能添乱什么的 yct45
页: [1] 2
查看完整版本: 建议eat、drink修改为公共命令