maper 发表于 2009-3-7 21:49:58

mush抓取聊天信息颜色,真正实现zmud的#cap功能

以前在mush中抓取聊天信息使用的是AppendToNotepad函数,不过这样抓出来的聊天信息仅仅是文本,没有丰富多彩的颜色。今天逛mush官网发现了一个真正实现zmud中#cap命令的方法,与大家共享。效果如下:


   首先新建一个聊天窗口:file---new world,名称为“chats_pkuxkx”,ip地址为0.0.0.0,保存位置为主窗口文件所在的文件夹(如果不清楚,在主窗口中立即执行print(GetInfo(67))即可清楚)。然后在主窗口中载入插件color_chat,这样就可以将聊天信息原原本本的抓取到chats_pkuxkx聊天窗口了。

      另外如果在聊天窗口中载入插件color_chat_chat,并修改world_name = "pkuxkx" 中pkuxkx为主窗口的名称,这样在聊天窗口中输入命令可以在主窗口中反应。

插件的修改:
1、color_chat

<!--Triggers-->
<triggers>
<trigger
   enabled="y"
   match="^(>)*( )*【(闲聊| 天色 |谣言|保卫|动作|江湖传闻|北侠公告|北侠QQ群|江湖逸事)】"增加或减少频道修改这里。
omit_from_output="y" :这里y表示在主窗口中不显示聊天信息,改成"n"表示在主窗口中显示聊天信息。
   regexp="y"
   script="color_chats"
   sequence="100"
>
</trigger>
<trigger
   enabled="y"
   match="^(>)*( )*(你告诉|.+告诉你|你回答|.+回答你)"
   omit_from_output="y" :同上。
   regexp="y"
   script="color_chats"
   sequence="100"
>
</trigger>
</triggers>

<!--Script-->
<script>
<![CDATA[
chat_world = "chats_pkuxkx"这里可以修改聊天信息窗口的名称。
local first_time = true

function color_chats (name, line, wildcards, styles)

-- try to find "chat" world
local w = GetWorld (chat_world)-- get "chat" world

-- if not found, try to open it
if first_time and not w then
    local filename = GetInfo (67) .. chat_world .. ".mcl"
    Open (filename)
    w = GetWorld (chat_world)-- try again
    if not w then
      ColourNote ("white", "red", "Can't open chat world file: " .. filename)
      first_time = false-- don't repeatedly show failure message
    end -- can't find world
end -- can't find world first time around

if w then-- if present
    for _, v in ipairs (styles) do
      w:ColourTell (RGBColourToName (v.textcolour),
                  RGBColourToName (v.backcolour),
                  v.text)
    end -- for each style run
    w:Note ("")-- wrap up line

end -- world found

end -- function redirect
]]>
</script>
</muclient>

2、color_chat_chat

<!--Script-->
<script>
<![CDATA[
world_name = "pkuxkx" pkuxkx是主窗口的名称。

function OnPluginCommandEntered (command)

local w = GetWorld (world_name)-- find world

-- not found? show error
if not w then
    ColourNote ("white", "red", "World " .. world_name .. " is not open")
else
    w:Execute (command)-- execute command (handle aliases, etc.)
    PushCommand (command)-- save in command history
end -- if

return ("\t")-- clear command

end -- OnPluginCommandEntered


]]>
</script>


参考mush官网:http://www.gammon.com.au/forum/?id=7991

有问题请跟帖。

[ 本帖最后由 maper 于 2009-3-7 10:04 PM 编辑 ]

basara 发表于 2009-3-8 04:59:46

赞啊ttk_05

当时活鱼放出那个脚本我试过后发现不是彩色的, 到Mush官网查看提示可以可以做成原色输出, 但是没细研究过, 没想到今天maper就和盘托出解决方案了, 很好很强大!

sure 发表于 2009-3-8 08:51:04

改天我搞一个js的,哼哼
不喜欢lua、vb

sure 发表于 2009-3-8 09:16:02

AppendToNotepad是写到记事本程序的窗口,记事本拿有彩色的?
刚试了一下这两个插件,so good,用着先,这样mush就把mud当聊天室了,很好很强大!!

sure 发表于 2009-3-8 09:16:51

Nick Gammon是lua派的,他的论坛上全是luattk_13 ttk_13

maper 发表于 2009-3-8 09:33:56

mush里面的notepad不像windows的记事本,可以用NotepadColour改变记事本的字体颜色和背景色,不过都是统一的。
lua挺好用的。

whuan 发表于 2009-3-8 21:17:28

厉害
没仔细看,做成plugin了吗?
做成了我直接用

maper 发表于 2009-3-8 22:07:07

原帖由 whuan 于 2009-3-8 09:17 PM 发表 http://pkuxkx.com/forum/images/common/back.gif
厉害
没仔细看,做成plugin了吗?
做成了我直接用
最后面有两个插件,可以直接用。

wellcome 发表于 2009-3-10 23:53:57

快睡觉了,才发现这个帖子。既解决了我前期踢出的问题,又起到学习作用,多谢多谢。

whuan 发表于 2009-3-11 17:41:49

挺好用的
能不能自动打开那个chats_pkuxkx的文件?
页: [1] 2 3
查看完整版本: mush抓取聊天信息颜色,真正实现zmud的#cap功能