zmud中ansi的颜色丰富了游戏的内容,除了系统返回给客户端的ansi字符显示以外,我们也可以通过客户端的%ansi函数来显示丰富的信息:
#help ansi
#SHOW %ansi(high,red)Hello%ansi(blink,blue,white)Word
比如在状态window显示相关灭妖信息,局部突出怪的名字和地点,以及内力信息。
#stw %ansi(high,red)@guai_name(@guai_nick)%ansi(normal)%cr在%ansi(high,orange)@guai_place%ansi(normal)%cr怪的内力:%ansi(blink,blue,white)@guai_neili%ansi(normal)
其中%cr为换行,可以将显示分多行显示。%ansi(normal)为恢复系统默认颜色.
通过这个函数,我们在客户端也可以输出丰富的ansi文字,甚至可以通过这个来做颜色触发器(因为zmud对屏幕上所有信息都可以触发,不管是不是通过本地#say出来的)。
相同道理,文字显示适用于所有向屏幕输出信息的命令,包括#say/#show/#st/#stw等。
ansi颜色的定义可以参考:ansi.h
Ansi颜色:
[0m 表示ansi颜色结束
[1;33;45m第2项项五第[0m 表示以[1;33;45m定义的颜色文字直到[0m结束
[1;33;45m 其中1表示高亮 33高亮前景色 45表示背景色 m为颜色定义后缀
具体定义见:
// File : /include/ansi.h
// Creator : Gothic@TMI-2
//
// The standard set of ANSI codes for mudlib use.
#define ESC ""
#define CSI ESC + "["
/* Foreground Colors */
#define BLK ESC+"[30m" /* Black */
#define RED ESC+"[31m" /* Red */
#define GRN ESC+"[32m" /* Green */
#define YEL ESC+"[33m" /* Yellow */
#define BLU ESC+"[34m" /* Blue */
#define MAG ESC+"[35m" /* Magenta */
#define CYN ESC+"[36m" /* Cyan */
#define WHT ESC+"[37m" /* White */
/* Hi Intensity Foreground Colors */
#define HIR ESC+"[1;31m" /* Red */
#define HIG ESC+"[1;32m" /* Green */
#define HIY ESC+"[1;33m" /* Yellow */
#define HIB ESC+"[1;34m" /* Blue */
#define HIM ESC+"[1;35m" /* Magenta */
#define HIC ESC+"[1;36m" /* Cyan */
#define HIW ESC+"[1;37m" /* White */
/* High Intensity Background Colors */
#define HBRED ESC+"[41;1m" /* Red */
#define HBGRN ESC+"[42;1m" /* Green */
#define HBYEL ESC+"[43;1m" /* Yellow */
#define HBBLU ESC+"[44;1m" /* Blue */
#define HBMAG ESC+"[45;1m" /* Magenta */
#define HBCYN ESC+"[46;1m" /* Cyan */
#define HBWHT ESC+"[47;1m" /* White */
/* Background Colors */
#define BBLK ESC+"[40m" /* Black */
#define BRED ESC+"[41m" /* Red */
#define BGRN ESC+"[42m" /* Green */
#define BYEL ESC+"[43m" /* Yellow */
#define BBLU ESC+"[44m" /* Blue */
#define BMAG ESC+"[45m" /* Magenta */
#define BCYN ESC+"[46m" /* Cyan */
// #define BWHT ESC+"[47m" /* White */
#define NOR ESC+"[2;37;0m" /* Puts everything back to normal */
/* Additional ansi Esc codes added to ansi.h by Gothic april 23,1993 */
/* Note, these are Esc codes for VT100 terminals, and emmulators */
/* and they may not all work within the mud */
#define BOLD ESC+"[1m" /* Turn on bold mode */
#define CLR ESC+"[2J" /* Clear the screen */
#define HOME ESC+"[H" /* Send cursor to home position */
#define REF CLR+HOME /* Clear screen and home cursor */
#define BIGTOP ESC+"#3" /* Dbl height characters, top half */
#define BIGBOT ESC+"#4" /* Dbl height characters, bottem half */
#define SAVEC ESC+"[s" /* Save cursor position */
#define REST ESC+"[u" /* Restore cursor to saved position */
//#define REVINDEX ESC+"M" /* Scroll screen in opposite direction */
#define SINGW ESC+"#5" /* Normal, single-width characters */
#define DBL ESC+"#6" /* Creates double-width characters */
#define FRTOP ESC+"[2;25r" /* Freeze top line */
#define FRBOT ESC+"[1;24r" /* Freeze bottom line */
#define UNFR ESC+"[r" /* Unfreeze top and bottom lines */
#define BLINK ESC+"[5m" /* Initialize blink mode */
#define U ESC+"[4m" /* Initialize underscore mode */
#define REV ESC+"[7m" /* Turns reverse video mode on */
#define HIREV ESC+"[1,7m" /* Hi intensity reverse video */