发信人: allenwu (未注册用户·别理我,烦着呢,滚!!!!), 信区: ANSI
标 题: 6. 彩色id,彩色昵称
发信站: 日月光华 (2003年12月14日00:44:12 星期天), 站内信件
BBS中id或昵称里一般是不允许使用ANSI的。
不过有时候看见某些人发出的文章标题处昵称是彩色的或者有闪烁等效果。
发表的文章,头上那些文章信息是系统加的,不可能人为修改。
做出彩色昵称等效果,其实是利用ANSI的光标控制,用新的内容覆盖掉旧的内容
还是先介绍一下需要用到的控制符:
*[H 光标定位,
实际使用时一般为*[m;nH,其中m,n是两个正整数,表示将光标移到第m行第n列
同样不能移出屏幕,所以一般m取1~24,n取1~80
*[s 存储光标位置
*[u 恢复光标位置(回到最近一次*[s所在的地方)
*[K 删除到行末(fterm和sterm用当前背景色填充,cterm用默认背景色填充)
*[f 作用和用法和*[H完全一样
现在看如何覆盖原来的内容,文章信息大致是这样的:
发信人: ???? (??????), 信区: ??????
标 题: ???????????????????
发信站: ???????????
发信人的id是从第1行第9个字符开始的, 如果在qmd里面写上*[1;9H并跟上自己加上
色彩的id,那么解释到这行时,光标会跳到第1行第9列(id开始处),然后写上后面的内
容,将原先的内容覆盖掉,这样文章发出来,看到的就是彩色的id了
但是光这样还不行,光标移到顶上去了,id是覆盖掉了,可是其后面的内容(比如ip
等)也一同上移了,这可不是我们想要的效果。所以还要考虑把光标移回来,由于不可能
确定在第几行使用qmd,一般的方法是在*[1;1H的前面加上*[s,在适当地方加上*[u恢复
光标位置,例如
*[s*[1;9H相关代码*[u
同样的方式,也可以做出彩色昵称等
注意原有内容是无法修改的,如果覆盖上去的内容长度和原来的不一致,就可能会
有问题,比如正好将原有的某个汉字的左半部分覆盖留下了右半部分,造成乱码等。因
此,如果覆盖上去的内容长度与原来不一致,需要做点处理,比如用空格补齐长度,或
用*[K将光标所在位置直至该行行末的内容全删掉等等,用*[K的注意,fterm和sterm用
当前背景色填充,不是默认背景色的话先用*[m等方法切换为默认背景色
使用这种方法的也有很多弊端,举例来说:
如果文章较长,翻页才解释到光标定位这行,这时候第一行已经不是原来的发信人
等的了,会将其他内容覆盖掉,也有可能造成乱码等
如果别人用r/a引用方式来回你的文章,是会引用你的qmd的,而代码并不认人,还
是会去覆盖第一行内容,明明是他的文章,显示的却是你的id,这就不妙了。而且这是
个没有办法解决的问题,好在默认的方式不会引用你的qmd。(因此注意了,不要在文章
正文里面写这种代码,会影响到回文的人的)
另外提一句,注意代码里面字母的大小写,如果不小心把*[u写成了*[U,会影响到
cterm2000的用户的,那是cterm2000的一个未公开的控制符
--
※ 来源:·日月光华 bbs.fudan.edu.cn·[FROM: 10.85.24.241]
Sender: allenwu Unregistered user. Ignore me. I’m annoyed. Get lost. Message area: ANSI
Title: 6. Color ID, color nickname
Sending site: Sun and Moon Guanghua December 14, 2003 00:44:12 Sunday, site mail
ANSI is generally not allowed to be used in IDs or nicknames in BBS
However, sometimes I see that the nickname in the title of the article posted by some people is colored or has flashing effects.
Published articles. The article information at the top is added by the system and cannot be modified manually.
To create effects such as colorful nicknames, you actually use ANSI cursor control to overwrite the old content with new content.
Let’s first introduce the control symbols that need to be used.
*[H cursor positioning
In actual use, it is generally *[m;nH, where m and n are two positive integers, which means moving the cursor to the mth row and nth column.
It also cannot be moved out of the screen, so generally m is taken as 1 24 and n is taken as 1 80
*[s stores cursor position
*[u restores the cursor position and returns to where the last *[s was.
*[K Delete to the end of the line fterm and sterm are filled with the current background color cterm is filled with the default background color
*[f has exactly the same function and usage as *[H
Now let’s look at how to overwrite the original content. The article information is roughly like this
Sender: ???? ??????, Area: ??????
Title: ??????????????????
Sending station: ????????????
The sender's ID starts from the 9th character on line 1. If you write *[1;9H in qmd and follow it with yourself
When interpreting the id of the color, the cursor will jump to the beginning of the id in row 1, column 9, and then write the following content.
Overwrite the original content so that when the article is published, all you see is the colored ID.
But this alone is not enough. The cursor moves to the top and the id is overwritten, but the content behind it, such as ip
etc. has also been moved up. This is not the effect we want, so we have to consider moving the cursor back because it is impossible.
Determine which line to use qmd. The general method is to add *[s in front of *[1;1H. Add *[u to restore in the appropriate place.
Cursor position Example
*[s*[1;9H related codes*[u
In the same way, you can also make colorful nicknames, etc.
Note that the original content cannot be modified. If the length of the overwritten content is inconsistent with the original, it may
There is a problem. For example, the left half of an original Chinese character happens to be covered, leaving the right half, resulting in garbled characters, etc.
If the length of the overwritten content is inconsistent with the original, some processing needs to be done, such as filling the length with spaces or
Use *[K to delete all the content from the cursor position to the end of the line, etc. Notes on using *[K fterm and sterm
If the current background color is not the default background color, use *[m or other methods to switch to the default background color first.
There are also many disadvantages to using this method. For example
If the article is long, it takes turning the page to explain the line where the cursor is positioned. At this time, the first line is no longer the original sender.
Wait, it will overwrite other content, and may also cause garbled characters, etc.
If someone else uses r a citation to reply to your article, they will quote your qmd, but the code will not recognize the person.
It will overwrite the first line of content. It is obviously his article, but your ID is displayed. This is not good. And this is
This is an unsolvable problem. Fortunately, the default method does not reference your qmd, so please be careful not to include it in the article.
Writing this kind of code in the text will affect the people who write the palindrome.
In addition, pay attention to the capitalization of letters in the code. If you accidentally write *[u instead of *[U, it will affect
For users of cterm2000, that is an undisclosed control character of cterm2000.
Source: Sun and Moon Guanghua bbs.fudan.edu.cn [FROM: 10.85.24.241]