|
本帖最后由 suwuji 于 2021-11-29 10:45 PM 编辑
使用范例:
脚本调用
cprint("$HIG$你$HIY$好") --本地输出
sprint("$HIG$你$HIY$好") --模拟服务端信息
--当前行内色彩替换
recolor("aqua","yellow") --触发器当前行色彩修改,调试好后勾选屏蔽显示
- --[[
- cprint.lua
- ]]
- function cprint_ansi_color_init()
- local ESC = '\27'
- return {
- -- 前景色
- BLK = ESC.."[30m", -- 黑色
- RED = ESC.."[31m", -- 红色
- GRN = ESC.."[32m", -- 绿色
- YEL = ESC.."[33m", -- 黄色
- BLU = ESC.."[34m", -- 蓝色
- MAG = ESC.."[35m", -- 紫色
- CYN = ESC.."[36m", -- 青色
- WHT = ESC.."[37m", -- 白色
- -- 加强前景色
- GRA = ESC.."[1;30m", -- 灰色
- HIR = ESC.."[1;31m", -- 亮红
- HIG = ESC.."[1;32m", -- 亮绿
- HIY = ESC.."[1;33m", -- 亮黄
- HIB = ESC.."[1;34m", -- 亮蓝
- HIM = ESC.."[1;35m", -- 亮紫
- HIC = ESC.."[1;36m", -- 亮青
- HIW = ESC.."[1;37m", -- 亮白
- -- 背景色
- BBLK = ESC.."[40m", --黑色
- BRED = ESC.."[41m", --红色
- BGRN = ESC.."[42m", --绿色
- BYEL = ESC.."[43m", -- 黄色
- BBLU = ESC.."[44m", --蓝色
- BMAG = ESC.."[45m", --紫色
- BCYN = ESC.."[46m", --青色
- BWHT = ESC.."[47m", -- 白色
- -- 加强背景色,一般不用会引起前景变色
- HBRED = ESC.."[41;1m", -- 亮红
- HBGRN = ESC.."[42;1m", -- 亮绿
- HBYEL = ESC.."[43;1m", -- 亮黄
- HBBLU = ESC.."[44;1m", -- 亮蓝
- HBMAG = ESC.."[45;1m", -- 亮紫
- HBCYN = ESC.."[46;1m", -- 亮青
- HBWHT = ESC.."[47;1m", -- 亮白
- --字形控
- B = ESC.."[1m", --加重
- I = ESC.."[3m", --斜体
- U = ESC.."[4m", --下划线
- REV = ESC.."[7m", --反色
- HIREV = ESC.."[1;7m", --高亮反色
- BLINK = ESC.."[5m", --闪烁,mushclient里BLINK和I显示一致
- CROSS = ESC.."[9m", --删除线
- -- 返回普通
- NOR = ESC.."[2;37;0m",
- }
- end
- if ansi_color==nil then ansi_color = cprint_ansi_color_init() end
- function ansi(str)
- if str==nil or str=="%$" or str=="nil" then return "" end
- local s,e = string.find(str,"%$([^%$]+)%$")
- if s~=nil and e~=nil then
- local mc = string.sub(str,s+1,e-1)
- if ansi_color[mc]==nil then
- print("$"..mc..'$没有此颜色定义!可用的有:\n')
- for k,v in pairs(ansi_color) do
- print("$"..k.."$")
- end
- print('\n')
- return ansi(string.sub(str,1,s-1))..ansi(string.sub(str,e+1))
- else
- return ansi(string.sub(str,1,s-1))..ansi_color[mc]..ansi(string.sub(str,e+1))
- end
- else
- return str
- end
- end
- ----获取当前行的styles--
- function styles()
- return GetStyleInfo(GetLinesInBufferCount())
- end
- ----获取当前行info--
- function infos()
- return GetLineInfo(GetLinesInBufferCount())
- end
- ----当前行色彩数--
- function styles_count()
- return table.getn(styles())
- end
- function rgbname(color)
- return RGBColourToName(color)
- end
- --
- function debugcolor()
- local sall = styles()
- for k,v in ipairs(sall) do
- ColourTell(RGBColourToName(v.textcolour),RGBColourToName(v.backcolour),v.text)
- end
- ColourNote(0,0,"")
- for k,v in ipairs(sall) do
- print(RGBColourToName(v.textcolour)..","..RGBColourToName(v.backcolour).."=>"..v.text)
- end
- end
- --色彩文字替换显示函数(自定义显示效果)
- function recolor(textcolour,new_textcolour,backcolour,new_backcolour,text,new_text)
- if textcolour==nil and backcolour==nil and text==nil then
- debugcolor()
- return
- end
-
- local sall = styles()
- for k,v in ipairs(sall) do
-
- local forecolor = ""
- local backcolor = ""
- local tt = ""
- if textcolour and textcolour==RGBColourToName(v.textcolour) then
- forecolor = new_textcolour
- else
- forecolor = RGBColourToName(v.textcolour)
- end
-
- if backcolour and backcolour==RGBColourToName(v.backcolour) then
- backcolor = new_backcolour
- else
- backcolor = RGBColourToName(v.backcolour)
- end
- if text and text==v.text then
- --替换
- if new_text~=nil then
- tt = new_text
- else
- tt = v.text
- end
- else
- --不替换
- tt = v.text
- end
-
- ColourTell(forecolor,backcolor,tt)
- end
- ColourNote(0,0,"")
- end
- ----本地彩色文字输出(提示用)--
- function cprint(str)
- AnsiNote(ansi(str)..ansi_color.NOR)
- end
- ----模拟服务端文字输出(可触发)--
- function sprint(str)
- Simulate(ansi(str)..ansi_color.NOR)
- end
复制代码
|
|