荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jjk (pq), 信区: InstallBBS
标  题: SMTH_007  聊天室中支持使用彩色文字
发信站: 荔园晨风BBS站 (Thu Nov 29 11:21:47 2001), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjk.bbs@bbs.pku.edu.cn 所发表 】
发信人: Admin (新的一天从零开始), 信区: BBSDev
标  题: SMTH_007  聊天室中支持使用彩色文字
发信站: 北大未名站 (2001年05月24日11:24:59 星期四), 站内信件

发信人: Leeward (AIX), 信区: BBSMan_Dev
标  题: SMTH_007  聊天室中支持使用彩色文字
发信站: BBS 水木清华站 (Wed Feb  3 14:49:29 1999)

本文描述的修改在 FireBird 2.5 和 2.6 上均可使用.

修改代码由 snow 于 96 年 10月25日 在水木清华站开发并运行.

使用方法:在要显示的字符前加 % 和一位数字(1-7)即可
比如:
%1hi,all (回车)
就可以在聊天室中显示带颜色的 hi,all 了.

具体颜色号码是:%1红  %2绿  %3黄  %4蓝  %5品  %6青 %7白
使用 %0 可以恢复无彩色显示的缺省模式.
使用连续的 %% 可以输出 % 字符, 以便处理需要输出 % 并紧跟一个 1-7 的数字的情况.

============================================================================

代码修改:在 bbs_src/chat.c 的 printchatline 函数首部(原始代码前),
          添加下列代码:
  char tmpstr[256];
  char *p;
  int i;

/* snow add at 10.25 */
  p = str;
  i = 0;

  while ( *p != 0 ) {
        if (*p=='%') {
          if ( *(p+1) == 0 ) {
                tmpstr[i] = '%';
                i++;
                p++;
          }
          else if ( *(p+1) == '%' ) {
                tmpstr[i] = '%';
                i++;
                p++;
                p++;
          }
          else if ( *(p+1)>'0' && *(p+1)<='7' ) {
                tmpstr[i++] =  27;
                tmpstr[i++] = '[';
                tmpstr[i++] = '3';
                tmpstr[i++] = *(p+1);
                tmpstr[i++] = 'm';
                p++;
                p++;
          }
          else if ( *(p+1) == '0' )
          {
                tmpstr[i++] =  27;
                tmpstr[i++] = '[';
                tmpstr[i++] = '0';
                tmpstr[i++] = 'm';
                p++;
                p++;
          }
          else {
                tmpstr[i] = '%';
                i++;
                p++;
                tmpstr[i] = *p;
                i++;
                p++;
          }
        }
        else {
                tmpstr[i] = *p;
                i++;
                p++;
        }
  }
  tmpstr[i++] =  27;
  tmpstr[i++] = '[';
  tmpstr[i++] = '0';
  tmpstr[i++] = 'm';
  tmpstr[i] = 0;

然后把原始代码中的
  outs(str);
改成
  outs(tmpstr); /* snow change at 10.25 */
--

        我 们 的 一 切 追 求 和 作 为, 都 有 一 个 令 人 厌 倦 的 过 程

   作 为 一 个 不 识 厌 倦 为 何 物 的 人, 便 掌 握 了 生 命 的 全 部 秘 密

※ 修改:·Leeward 於 Feb  8 02:58:56 修改本文·[FROM: bbs.huizhou.gd.]

--

     目前正在搜集整理内存管理相关资料
            欢迎提供

     泛一叶轻舟,漂流海上,逍遥有过于斯乎?


※ 来源:·北大未名站 bbs.pku.edu.cn·[FROM: 162.105.203.8]
--
※ 转寄:·北大未名站 bbs.pku.edu.cn·[FROM: 210.39.3.50]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店