北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
12
返回列表 发新帖
楼主: muscle

GMCP信息太多,怎么能过滤掉?不显示在MUSH里面?

[复制链接]
 楼主| 发表于 2024-1-23 23:41:09 | 显示全部楼层
creat 发表于 2024-1-23 11:28 PM
找不到status说明没有同步成功,原因很多
检查是不是开了gmcp频道,脚本标识符是否设置成功,脚本语言是不 ...

目前的情况是,不开tune 频道,没法自动更新,开了满屏信息。。现在临时过滤解决。。
但是,status,在触发器里和定时器里是可以用的。。但是在脚本文件里调不出来。。语言应该是lua,计时器和触发都是打开的。。脚本标识符,我的理解是不是只是用来作命令行直接敲函数用的,随便设了个/,暂时没异常。。

就是脚本里用不了。。
code:
require"tprint" tprint(status)
busy = 0
function isBusy()
        busy = status.is_busy;
        return 0
end

报错:
Run-time error
World: 北侠
Immediate execution
D:\Soft\MUSHclient\lua\tprint.lua:34: bad argument #1 to 'pairs' (table expected, got nil)
stack traceback:
        [C]: in function 'pairs'
        D:\Soft\MUSHclient\lua\tprint.lua:34: in function 'tprint'
        [string "Script file"]:62: in main chunk

北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-1-24 00:36:21 | 显示全部楼层
没办法直接调用大神的代码,只能曲线救国。。
思路是,MUSH屏蔽了gmcp 信息,但是实际还是可以获取的,将之前屏蔽的gmcp 信息,筛选出包含"is_busy"字段的串,解析出来,判断之后,写入一个MUSH 的Variables "I_BUSY",需要的时候Get 一下。。遇到同样问题的兄嘚可以参考。

code:
i_busy = 0
function chkBusy(str)
        local a, b = string.find(str, "is_busy")
        if a ~= nil then
                a = string.sub(str, b+4, b+4)
                if a == "t" then
                        print("flag =", true)
                        SetVariable ("I_BUSY", 1)
                        i_busy = GetVariable("I_BUSY")
                        print("set =", i_busy)
                else
                        print("flag =", false)
                        SetVariable ("I_BUSY", 0)
                        i_busy = GetVariable("I_BUSY")
                        print("set =", i_busy)
                end
        end
end
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2024-1-24 00:43:56 | 显示全部楼层
脚本文件里必然是没有
准确的说login之后5秒左右服务器才会推送gmcp信息
提前设置必然会报错
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-1-24 01:16:08 | 显示全部楼层
creat 发表于 2024-1-24 12:43 AM
脚本文件里必然是没有
准确的说login之后5秒左右服务器才会推送gmcp信息
提前设置必然会报错 ...

之前用过一个老版本的状态插件,当时写过一个简单的爬树函数,在脚本里是可以调用status.qi的。。今天刚换了最新的版本,之前的代码就报错了。。

初步怀疑两个
1. 老版本没开gmcp,用的是被动触发。。
2. 新版本的某些机制和老版本可能有点区别。。

以前没用过MUSH,lua也是现学现用,用到什么函数查什么,所以有的问题比较低级。。大神多包涵。。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-1-24 01:22:59 | 显示全部楼层
正常来说的话,之前的版本,采用hp触发,虽然数据不实时更新,但是确实是可以调用到的。。
但是,原有代码现在也是直接报错,而且,调用函数也是在插件开始有数据,也就是gmcp 数据已经正常交互了,是否应该可以排除login 5秒的可能?

排除环境原因,如果我想在脚本代码中直接read 插件status数据的话。。请教大神,下面的这种方式是否有问题?

code:
require"tprint" tprint(status)
busy = 0
function isBusy()
        busy = status.is_busy
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
回复 支持 0 反对 1

使用道具 举报

发表于 2024-1-24 01:35:17 | 显示全部楼层
从状态插件正常显示姓名 id的时候开始
不报错的情况下status就应该可以正常使用了,之前不可使用,除非自行进行了初始化
具体怎么实现看你自己怎么写的
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 08:07 PM , Processed in 0.009313 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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