荔园在线

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

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


发信人: AM (头发好短了:P), 信区: InstallBBS
标  题: [合集]help~关于作者在线颜色显示
发信站: 荔园晨风BBS站 (Mon Jan 26 21:40:38 2004), 站内信件

AM.bbs@TaoLiBBS.3322.ORG (世界的黑暗) 于Sat Dec 27 01:10:06 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

1、在permission里面增加一个#define DEF_COLORAUTHOR 0x400000000
2、在main.c的user_login()最后面增加
    setuserfile(fname, "Colors");
    onlinecolor = 32;           /* 缺省绿色 */
    if ((fp = fopen(fname, "r")) != NULL) {
        if (fgets(buf, STRLEN, fp) != NULL) {
            onlinecolor = atoi(buf);
        }
        fclose(fp);
    }
3、修改bbs.c的*readdoent()
            //在线作者姓名
    if (DEFINE(DEF_COLOEDAUTHOR) && user_isactive(ent->owner))
        sprintf(file_owner, "1;%dm%-12.12s", onlinecolor, ent->owner);
    else
        sprintf(file_owner, "%-12.12s", ent->owner);
4、修改mail.c的*maildoent()
    file_owner_color[0] = '\0';
    if (DEFINE(DEF_COLOEDAUTHOR)) {
        uactive_flag = user_isactive(b2);
        if (uactive_flag)
            sprintf(file_owner_color, "^[[1;%dm", onlinecolor);
    }
5、在bcache.c里增加一个函数
/*判断userid是否在线*/
int user_isactive(char *userid)
{
    struct user_info *uentp;
    int i;

    /* 转信的用户不用统计 */
    if (!isalpha(userid[0]))
        return 0;
    if (!isalnum(userid[strlen(userid) - 1]))
        return 0;
    resolve_utmp();
    for (i = 0; i < USHM_SIZE; i++) {
        uentp = &(utmpshm->uinfo[i]);
        if (uentp != NULL) {
            if (!strcmp(uentp->userid, userid)) {
                if (!uentp->active || !uentp->pid || isreject(uentp))
                    continue;   /* 碰巧不在 */
                else if ((!uentp->invisible) || (uentp->uid == usernum)
                         || (uentp->invisible)
                         && HAS_PERM(PERM_SYSOP | PERM_SEECLOAK))
                    return 1;
                else
                    return 0;   /* 取第一个即可,节省CPU */
            }
        }

    }
    return 0;
}
6、src/xyz.c的void x_edits()
增加/home/?/userid/Color文件
    if (ch == 5) {
        setuserfile(buf, "Colors");
        onlinecolor = 32;       /* 缺省绿色 */
        if ((fp = fopen(buf, "r")) != NULL) {
            if (fgets(buf, STRLEN, fp) != NULL) {
                onlinecolor = atoi(buf);
            }
            fclose(fp);
        }
    }

上面当然都增加了相应的变量
编译完了,重新登陆,并无作者颜色显示......
不知道哪里还少了。。。。。请执教,谢谢~

stiger@smth.org (stiger) 于Sat Dec 27 01:03:25 2003)
提到:
转信站: SZU!news.ccie.net.cn!maily.cic.tsinghua.edu.cn!SMTH

看看我的函数

int isonline(char *s){

    int tuid;
        struct user_info uin;
        extern int t_cmpuids();

    if(DEFINE(DEF_NOTMSGFRIEND)) return 7;
    tuid=getuser(s);
    if (tuid==0) return 7;
        search_ulist(&uin,t_cmpuids,tuid);
    if (uin.active && uin.pid && !uin.invisible ) {
        return 2;
    } else if(uin.active && uin.pid && uin.invisible && (HAS_PERM(PERM_SEECLOAK)
||usernum == uin.uid)) {
        return 6;
    } else  return 7;

    return 7;
}



AM.bbs@TaoLiBBS.3322.ORG (世界的黑暗) 于Sat Dec 27 01:19:25 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

这是仿照BMonline写的吧?
我的是FB2Kv1126,我是参考ZV的fb2kv1129改的
        ~~~~~~~~~~~~~~~~~~~~~~~这个拒绝好友信息吧?
return 7在哪?

stiger@smth.org (stiger) 于Sat Dec 27 01:11:42 2003)
提到:
转信站: SZU!news.ccie.net.cn!maily.cic.tsinghua.edu.cn!SMTH

我的就是fb2kv1126

DEF_NOTMSGFRIEND 我改为定义是否彩色显示在线作者了。



AM.bbs@TaoLiBBS.3322.ORG (世界的黑暗) 于Sat Dec 27 01:40:37 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

改了,编译OK,只是好像还是不行:(
帮我看看前面是不是漏了什么


stiger@smth.org (stiger) 于Sat Dec 27 01:38:40 2003)
提到:
转信站: SZU!news.ccie.net.cn!maily.cic.tsinghua.edu.cn!SMTH

readdoent里显示有很多状况的,要看看



AM@smth.org (静态运动) 于Sat Dec 27 01:51:02 2003)
提到:
转信站: SZU!news.ccie.net.cn!maily.cic.tsinghua.edu.cn!SMTH

好像没有吧。。。。里面的好像不用去管他,ent->owner已经重新赋值了


turbozv@bbs.pku.edu.cn (ZV) 于Sat Dec 27 10:39:33 2003)
提到:
转信站: SZU!news.ccie.net.cn!news.happynet.org!PKU

其实是一样的代码
不过你的函数返回的状态比较详细 ^_^

我那个没有用回调函数,呵呵,硬来的..



AM.bbs@TaoLiBBS.3322.ORG (爱自己) 于Sat Dec 27 10:54:53 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

...................
快帮我看看还少了哪里。。。。。

turbozv@bbs.pku.edu.cn (ZV) 于Sat Dec 27 11:30:42 2003)
提到:
转信站: SZU!news.ccie.net.cn!news.happynet.org!PKU

因为 0x4 0000 0000  已经超出了32-bit.



AM.bbs@TaoLiBBS.3322.ORG (爱自己) 于Sat Dec 27 11:44:11 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

我写多了一个0....ft



AM.bbs@TaoLiBBS.3322.ORG (爱自己) 于Sat Dec 27 11:44:28 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

我在这里写多了一个0而已


yuhuan.bbs@ytht.net (二月二十一(八)) 于Sat Dec 27 14:18:32 2003)
提到:
转信站: SZU!news.ccie.net.cn!news.happynet.org!YTHT

return 2 6 7
ft

TurboZV.bbs@bbs.uestc.edu.cn (重构中……) 于Sat Dec 27 10:37:23 2003)
提到:
转信站: SZU!news.ccie.net.cn!news.uestc.edu.cn!UESTC

因为 0x4 0000 0000  已经超出了32-bit.




AM.bbs@TaoLiBBS.3322.ORG (爱自己) 于Sat Dec 27 17:02:34 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

汗...我前面说了我只是在这里多写了一个0而已....
现在只排到31,还没超出32啦,现在是0x40000000


turbozv@bbs.pku.edu.cn (ZV) 于Sat Dec 27 17:10:26 2003)
提到:
转信站: SZU!news.ccie.net.cn!news.happynet.org!PKU

刚才那篇文章是专信delay的问题

你说的第三步,后面在格式化输出到 buf (sprintf(buf, xxx))
你再确认一下不是直接用的ent->owner, 而是file_owner?

3、修改bbs.c的*readdoent()
            //在线作者姓名
    if (DEFINE(DEF_COLOEDAUTHOR) && user_isactive(ent->owner))
        sprintf(file_owner, "1;%dm%-12.12s", onlinecolor, ent->owner);
    else
        sprintf(file_owner, "%-12.12s", ent->owner);



AM.bbs@TaoLiBBS.3322.ORG (爱自己) 于Sat Dec 27 17:27:27 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

哦。。。是不是把后面的全改成file_owner?


stiger@smth.org (stiger) 于Sat Dec 27 18:47:27 2003)
提到:
转信站: SZU!news.ccie.net.cn!maily.cic.tsinghua.edu.cn!SMTH

2 6 7是颜色呀, 32m 36m 37m
hehe



AM (明年今日) 于Sat Dec 27 18:52:51 2003提到:

怪不得一开始看不懂,^_^

不过我不知道为啥,不成功,今晚再看看吧


turbozv@bbs.pku.edu.cn (ZV) 于Sun Dec 28 12:28:45 2003)
提到:
转信站: SZU!news.ccie.net.cn!news.happynet.org!PKU

nod nod



AM.bbs@TaoLiBBS.3322.ORG (爱自己) 于Sun Dec 28 12:42:45 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

全改了就问题大了。。。。。。。。

因为你的*readdoent()是重新写过的
很不一样
我试着修改后就over了

因为ID具有颜色,所以在刊登者这里把颜色代码也算入ID的长度里面了
后面的日期也跟着往前移了几位-_-!!

最要命的是,所有ID都具有颜色-_-!!

turbozv@bbs.pku.edu.cn (ZV) 于Sun Dec 28 12:56:50 2003)
提到:
转信站: SZU!news.ccie.net.cn!news.happynet.org!PKU

没问题呀?(当然我是全部重新写过readdoent())

现有的代码,你只替换 ent->owner 为 file_owner( with color )
就好了,FB以前的代码直接用
TITLE = ent->title;
TITLE[xx] = '\0';
已经修正过标题长度了。

你把你改后有问题的代码帖出来吧。大家一起看看:)



AM.bbs@TaoLiBBS.3322.ORG (爱自己) 于Sun Dec 28 13:10:27 2003)
提到:
转信站: SZU!news.ccie.net.cn!TaoLi

呵呵,我看过了你的,你把处理标题那些单独重写了
我想移过去都很难,

我等会给你发过去看看吧
   ~~~~~~~~~~~~~o...这个我好像没有在意到这行


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

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