北大侠客行MUD论坛

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

mush客户端,触发器匹配颜色可以自定义吗

[复制链接]
发表于 2021-7-9 19:26:46 | 显示全部楼层 |阅读模式

  最近脚伤了,下了北侠情怀起来,建了个星宿号,看论坛有辩毒任务加毒技,兴冲冲的跑去做起触发来,搞半天终于调好了,没成想多了个啥粉色毒草,这个触发气的样式匹配里面居然就是没有粉色,也不知道那里可以自定义,有哪位大神知道的帮忙指导下啊,感谢!!!
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2021-7-10 08:53:10 | 显示全部楼层
----获取当前行的styles--
                           function styles()
                                return GetStyleInfo( GetLinesInBufferCount() )                                                                          
                            end
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
回复 支持 1 反对 0

使用道具 举报

发表于 2021-7-10 09:15:06 | 显示全部楼层
首先ansi颜色分为1-黑、2-红、3-绿、4-黄、5-蓝、6-洋红、7-青、8-白这8种
然后又细分为正常字体和加粗字体一共16个颜色

你说的粉色是视觉颜色,其实是定义在在8大类16种颜色中的一个。
这个是可以随意在ansi配置里随便更改的,你的客户端显示的粉色,我这里可能显示的是蓝色或者黑色
所以具体对应哪个颜色需要去查询自己的ansi颜色定义。
掌握这个原理就可以在触发里选择正确的颜色了。

当然mush在颜色触发这部分比较弱。
但是没关系我们可以通过函数来获取触发内容的颜色信息,一下子就变得非常强大了。
相关函数包括无极总提到的GetStyleInfo,可以获取从服务器下发的颜色类型
还有BoldColour、NormalColour,负责获取本地颜色配置的对应信息。
颜色标号从1-8对应前面提到的8种颜色
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2021-7-10 13:16:51 | 显示全部楼层
lua 脚本,有第四个参数

https://www.gammon.com.au/scripts/doc.php?general=triggers

For Lua, the fourth argument (which you can optionally supply) is returned with a table of each style run for the triggered line. Inside that table (which starts at 1 for the first style) is a table per style. Per style, you will get four entries:


    textcolour - the RGB colour of the text in that style run
    backcolour - the RGB colour of the background colour in that style run
    text - the text of that style run
    length - the length of that style run
    style - style flags (or'ed together): bold=1, underline=2, blink=4.

参考:

https://github.com/jarlyyn/helllua/blob/master/mods/walk.mod

walk_on_room=function (name, line, wildcards,styles)
        __textindex=1
        if ((#wildcards[1])~=0)and((#wildcards[1])==styles[1]["length"]) then
                __textindex=2
        end
        if ((#styles)==__textindex)and(styles[__textindex]["textcolour"]==ColourNameToRGB("Cyan")) then
                _roomname=((styles[__textindex]["text"]))
        end
end
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2021-7-10 16:19:51 | 显示全部楼层
creat 发表于 2021-7-10 09:15 AM
首先ansi颜色分为1-黑、2-红、3-绿、4-黄、5-蓝、6-洋红、7-青、8-白这8种
然后又细分为正常字体和加粗字体 ...

是的我看到了ansi这里面的颜色设置,这个是影响输出显示文本颜色的,但是举例实际应用,还是拿星宿任务来说,任务要求采集粉色毒草,那么我最简单的办法是在触发器里面做匹配,文本,和颜色,刚好触发器下面的下拉菜单就有颜色匹配,而且提供了那八种匹配的选项,恰恰没有粉色匹配选项,那么任务没有需要黄色匹配,我想把黄色改为粉色,如下图,不知道有没有设置可以自定义修改,

本帖子中包含更多资源

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

x

点评

请仔细数一下,颜色触发一共有9个选项。除了any,剩下的对应ansi顺序  发表于 2021-7-10 06:35 PM
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2021-7-10 16:22:42 | 显示全部楼层
suwuji 发表于 2021-7-10 08:53 AM
----获取当前行的styles--
                           function styles()
                               ...

感谢,我看到了之前帖子的强盗任务相关颜色匹配的脚本,基本上按那个改改就行,我其实是想知道客户端提供的颜色匹配触发能自定义吗?就是下面回复的帖子里面的图片,做体能也不知道怎么图片没上传成功
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2021-7-11 20:50:28 | 显示全部楼层
用 GetStyleInfo(line_num,1,1)打印出来样式颜色信息,发现貌似NPC发布任务的颜色是跟output的ANSI颜色的某个颜色区间匹配,举个例子,NPC发布任务要求蓝色三叶毒草,output的ANSI实际显示信息可能是blue或者navy,总之mushclient客户端界面对颜色匹配可能没那么好,但提供了函数去抓颜色匹配
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2021-7-12 13:35:42 | 显示全部楼层
shizhongyu 发表于 2021-7-11 08:50 PM
用 GetStyleInfo(line_num,1,1)打印出来样式颜色信息,发现貌似NPC发布任务的颜色是跟output的ANSI颜色的某 ...

你要理解mush的逻辑。

因为我自己做的客户端这块要保证和mush接口的兼容性,所以大概的了解了一下思路

mush这块的style并不是  一个逻辑数据,而是一个实际渲染的数据。

所以获取到的是rgb颜色。

那怎么办呢?

你需要用 BoldColour和NormalColour +ansi色号换取rgb色号,做对比和匹配。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2021-10-21 17:25:22 | 显示全部楼层
derkran 发表于 2021-8-1 05:32 PM
请教大佬,blowtorch能做颜色触发么

这个你得问bt专业的大佬
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 04:29 AM , Processed in 0.014263 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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