以前在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
首先新建一个聊天窗口: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