北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 1664|回复: 32

命令缓存到底解决了什么问题,新人太困难了。

[复制链接]
发表于 2024-9-6 12:25:57 | 显示全部楼层 |阅读模式
我查看了一下记录,命令缓存是为了解决服务器的负担,这个我可以理解。设置剑心居是为了解决学习、领悟、练功指令过多,我也可以理解。前提都是为了更好的让玩家玩 mud,服务器不卡。但是游戏中那些进不了无法拜师,无法在剑心居学习的就应该因为游戏的设定,全部进缓存吗?是否可以让这些新人必须学习的人也享受一下,不急缓存的福利。
1 、天龙寺的师傅段誉,这个是没法拜师的,每次更新不到 3 分钟就给做任务的人杀了,要学段誉的武功就必须要在他活在的时候学习。一般学习机器人就是不停的等他复活,复活了学一下,死了继续学,哪怕是有很多无效指令。没有谁可以一直在电脑面前,一直盯着。
2 、朱熹,学习读书写字的师傅,这个也是没有办法进入剑心居的吧,学习也会进缓存。
3 、侠客岛面壁,这个设置时间长一点,可以避免进入缓存。但是没有人说在一个号进入面壁就一直等着面壁玩吧,一定会去玩其他的号,但是连坐机制,就是一个号面壁,另外一个号只要稍微做快了一点就进缓存。一旦进了缓存就是一个 ip 完全废了。
4 、丐帮找黄蓉学读书写字也是一样。
目前只发现这三个地方因为学习会进入缓存。希望 wiz 可以看在新人不易的情况下,改进一下这些因为无法拜师,无法进入剑心居学习的地方。降低连坐机制对于小号的惩罚。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-9-6 12:27:45 | 显示全部楼层
欢迎使用 PaoTin++。
PaoTin++ 检测 NPC 很方便。写个 if 语句就可以不用发无效命令了。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-9-6 12:32:58 | 显示全部楼层
1、打晕段誉,搬到旁边学,没有拦路就没有杀害
2、学读书写字可以读书或者剑心居找师傅,师傅多少会点
3、面壁的白天间隔加长,晚上间隔恢复
4、同理
总结,拉长时间间隔
最后,topcmd是为了解决服务器负担,剑心居是解决练功负担,这种拜不了师的属于意料之外的,不多。在开发维护人员只有一个的情况下,多担当体谅下,自己改下机子
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-9-6 14:13:17 | 显示全部楼层
dddr 发表于 2024-9-6 12:32 PM
1、打晕段誉,搬到旁边学,没有拦路就没有杀害
2、学读书写字可以读书或者剑心居找师傅,师傅多少会点
3、 ...

多少级可以打败段誉,可以打败段誉的应该不用去段誉哪里学习了吧。这种确实不太多,但是对于天龙寺的来说,段誉应该是绕不开的坎吧。
其实修改机器是可以,但是改多少合适,因为缓存是动态的,可能前面一两天都没有问题,后面每一天都有问题,而且缓存是累加的,今天 1 小时,明天就 2 小时。而根据服务器负担动态调整指令间隔,这个对我只会使用简单的机器的人,有难度。或者说有什么指令可以反馈服务器负担,好参考修改机器。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-9-6 14:14:00 | 显示全部楼层
dtp 发表于 2024-9-6 12:27 PM
欢迎使用 PaoTin++。
PaoTin++ 检测 NPC 很方便。写个 if 语句就可以不用发无效命令了。 ...

使用的就是 PaoTin++,但是忘记了有检查 NPC 这个功能。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-9-6 14:15:42 | 显示全部楼层
克服一下吧。我吐槽太多快被记上小本本了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-9-6 14:33:59 | 显示全部楼层
case 发表于 2024-9-6 02:13 PM
多少级可以打败段誉,可以打败段誉的应该不用去段誉哪里学习了吧。这种确实不太多,但是对于天龙寺的来说 ...

我做过一个水温系统。

接管全部发送的指令

根据过去一段时间内的指令数,动态调整发送频率,还有多种模式切换。

可以试试往那个放线发展。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-9-6 14:37:44 | 显示全部楼层
本帖最后由 jarlyyn 于 2024-9-6 02:41 PM 编辑
case 发表于 2024-9-6 02:13 PM
多少级可以打败段誉,可以打败段誉的应该不用去段誉哪里学习了吧。这种确实不太多,但是对于天龙寺的来说 ...





具体的实现是用变体漏桶算法的

参考

https://www.pkuxkx.com/forum/thread-49204-1-1.html

实际代码

  1.     })
  2.     App.Core.Overheat.Commands = {
  3.         "west": 13,
  4.         "w": 13,
  5.         "north": 13,
  6.         "n": 13,
  7.         "east": 13,
  8.         "e": 13,
  9.         "south": 13,
  10.         "s": 13,
  11.         "up": 13,
  12.         "u": 13,
  13.         "down": 13,
  14.         "d": 13,
  15.         "enter": 13,
  16.         "out": 13,
  17.         "xiaojing": 13,
  18.         "biandao": 13,
  19.         "northeast": 13,
  20.         "ne": 13,
  21.         "southeast": 13,
  22.         "se": 13,
  23.         "southwest": 13,
  24.         "sw": 13,
  25.         "northwest": 13,
  26.         "nw": 13,
  27.         "northup": 13,
  28.         "nu": 13,
  29.         "eastup": 13,
  30.         "eu": 13,
  31.         "southup": 13,
  32.         "su": 13,
  33.         "westup": 13,
  34.         "wu": 13,
  35.         "northdown": 13,
  36.         "nd": 13,
  37.         "eastdown": 13,
  38.         "ed": 13,
  39.         "southdown": 13,
  40.         "sd": 13,
  41.         "westdown": 13,
  42.         "eu": 13,
  43.         "i": 15,
  44.         "i2": 8,
  45.         "l": 20,
  46.         "ask":50,
  47.         "jq":160,
  48.         "wield":5,
  49.         "jifa":10,
  50.         "skills":123,
  51.     }
  52.     App.Core.Overheat.Value = 0
  53.     App.Core.Overheat.Current = 0
  54.     App.Core.Overheat.IsOverThreshold = function () {
  55.         return App.Core.Overheat.Value > App.Core.OverheatMode.Current().Threshold();
  56.     }
  57.     App.Core.Overheat.OnTimer = function () {
  58.         App.Core.Overheat.Last.unshift(App.Core.Overheat.Current)
  59.         if (App.Core.Overheat.Last.length > max) {
  60.             App.Core.Overheat.Last = App.Core.Overheat.Last.slice(0, -1)
  61.         }
  62.         App.Core.Overheat.Last = [...App.Core.Overheat.Last]
  63.         App.Core.Overheat.Value = 0
  64.         if (App.Core.Overheat.Last.length) {
  65.             for (var i = 0; i < App.Core.Overheat.Last.length; i++) {
  66.                 App.Core.Overheat.Value += App.Core.Overheat.Last[i]
  67.             }
  68.             App.Core.Overheat.Value=Math.floor(App.Core.Overheat.Value/App.Core.Overheat.Last.length)
  69.             let shortvalue=0
  70.             let shortlist=App.Core.Overheat.Last.slice(-short)
  71.             for (var i = 0; i < shortlist.length; i++) {
  72.                 shortvalue += shortlist[i]
  73.             }
  74.             shortvalue=Math.floor(shortvalue/shortlist.length)
  75.             if (shortvalue>App.Core.Overheat.Value){
  76.                 App.Core.Overheat.Value=shortvalue
  77.             }
  78.         }
  79.         App.Core.Overheat.Current = 0
  80.         App.Raise("core.overheat.updated", App.Core.Overheat.Value)
  81.     }
  82.     App.RegisterCallback("app.core.overheat.onsend", function (data) {
  83.         if (App.Data.Room.Name&&App.Data.Room.Location){
  84.             return;
  85.         }
  86.         if (data) {
  87.             for (var i = 0; i < data.length; i++) {
  88.                 let v = App.Core.Overheat.Commands[data[i]]
  89.                 if (v) {
  90.                     App.Core.Overheat.Current += v
  91.                 }
  92.             }
  93.         }
  94.     })
  95.     App.Bind("Send", "app.core.overheat.onsend")

复制代码


建立高消耗指令清单

记录所有已发送的指令消耗,统计最近的一段时间的消耗,并进行限流。

我这里还建立了个长和短两个限流,避免 突发 和 长期低温过热。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-9-6 15:14:50 | 显示全部楼层
谢谢了,我先去学习一下编程,然后建立一个这样的系统,有方向了。感谢感谢
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-9-19 12:20:45 | 显示全部楼层
找朱熹学习都进缓存,这还咋玩

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-12-25 03:00 PM , Processed in 0.013813 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表