回精華區
作者Dinsam.bbs@ccudream.twbbs.org (前世.. o.O) 看板: plan
標題[功能]人氣指數/好奇指數
時間中正築夢園 (Sun, 07 Sep 2003 11:03:17 +0800) Updated: 2005/02/18
  改 struct ACCT,要轉換 .ACCT

: struct.h:struct ACCT

  int numlogins;        /* 上站次數 */
  int numposts;         /* 發表次數 */
+ int toquery;          /* 好奇度 */
+ int bequery;          /* 人氣度 */

: acct.c:acct_show()

+ prints("  \033[32m人氣指數:\033[37m%-35d\033[32m好奇指數:\033[37m%d\n",
+   u->bequery,u->toquery);

  prints("  \033[32m郵件信箱:\033[37m%s\n", u->email);

: acct.c:acct_setup()

    sprintf(buf, "%d", u->gold);
    vget(++i, 0, "金    幣:", buf, 10, GCARRY);
    if ((num = atoi(buf)) >= 0)
      x.gold = num;

+   sprintf(buf, "%d", u->toquery);
+   vget(++i, 0, "好 奇 度:", buf, 10, GCARRY);
+   if ((num = atoi(buf)) >= 0)
+     x.toquery = num;

+   sprintf(buf, "%d", u->bequery);
+   vget(++i, 0, "人 氣 度:", buf, 10, GCARRY);
+   if ((num = atoi(buf)) >= 0)
+     x.bequery = num;

: bbsd.c:u_exit()

        cuser.userlevel = tuser.userlevel;
        cuser.tvalid = tuser.tvalid;
+       cuser.bequery = tuser.bequery;

: acct.c:u_setup() 底下新增此函式

void
acct_bequery(acct)
  ACCT *acct;
{
  acct->bequery++;
  acct_save(acct);
}

: maple.p

  int acct_get(char *msg, ACCT *acct);
+ void acct_bequery(ACCT *acct);

: talk.c:do_query()

  UTMP *up;
  int userno, rich;
+ static int lastQueryUserno = -1;      /* 記錄上一個查詢的人 */

  ...
  ...

+ prints("[人氣指數] %d [好奇指數] %d\n", acct->bequery, acct->toquery);

  prints("[來源] (%s) %s\n",
    Btime(&acct->lastlogin), acct->lasthost);

  ...
  ...

+ /* 如果查詢者不是自己或guest,也跟上一個查詢的不同,那麼加人氣、好奇指數 */
+ if (acct->userno != lastQueryUserno &&
+   strcmp(userid, cuser.userid) && strcmp(STR_GUEST, cuser.userid))
+ {
+   lastQueryUserno = acct->userno;
+   acct_bequery(acct);
+   cuser.toquery++;
+ }

  showplans(userid);

──────────────────────────────────────

  以下是人氣、好奇指數之排行榜,也可不做

: topusr.c

#define OUTFILE_BIRTHDAY BBSHOME"/gem/@/@-birthday"
+ #define OUTFILE_TOPTOQUERY BBSHOME"/gem/@/@-toquery"
+ #define OUTFILE_TOPBEQUERY BBSHOME"/gem/@/@-bequery"

...

- static DATA toplogins[TOPNUM], topposts[TOPNUM],
-       topmoney[TOPNUM], topgold[TOPNUM];
+ static DATA toplogins[TOPNUM], topposts[TOPNUM],
+       topmoney[TOPNUM], topgold[TOPNUM],
+       toptoquery[TOPNUM],topbequery[TOPNUM];

: topusr.c:topusr()

+ if ((p = findmin(&toptoquery))->num < acct->toquery)
+ {
+   str_ncpy(p->userid, acct->userid, sizeof(p->userid));
+   str_ncpy(p->username, acct->username, sizeof(p->username));
+   p->num = acct->toquery;
+ }

+ if ((p = findmin(&topbequery))->num < acct->bequery)
+ {
+   str_ncpy(p->userid, acct->userid, sizeof(p->userid));
+   str_ncpy(p->username, acct->username, sizeof(p->username));
+   p->num = acct->bequery;
+ }
}

: topusr.c:main()

  memset(&topgold, 0, sizeof(topgold));
+ memset(&toptoquery, 0, sizeof(toptoquery));
+ memset(&topbequery, 0, sizeof(topbequery));

  ...
  ...

  qsort(topgold, TOPNUM, sizeof(DATA), sort_compare);
  write_data(OUTFILE_TOPGOLD, "金幣富豪抓狂榜", &topgold);

+ qsort(toptoquery, TOPNUM, sizeof(DATA), sort_compare);
+ write_data(OUTFILE_TOPTOQUERY, "好奇指數排行榜", &toptoquery);

+ qsort(topbequery, TOPNUM, sizeof(DATA), sort_compare);
+ write_data(OUTFILE_TOPBEQUERY, "人氣指數排行榜", &topbequery);

: BBS 站上 (A)nnounce

  裡面新增 (D)資料 二筆

  標題:好奇指數排行榜
  檔名:-toquery

  標題:人氣指數排行榜
  檔名:-bequery

--
     ˙    ˙ ◢▇◣ ◢▇◣ ▇  ▇ █▇◣ █▇◣ █▇◣ ◢▇◣ █▇▉   
  ˙          █     █     █  █ █  ▉ █  ▉ █▆   █▆▉ ▉▉▉ 
     ˙     ◥█◤ ◥█◤ ◥█◤ ██◤ █◥▆ █▆◤ █  ▉ ▉▉▉˙  
  CDBBS  中正築夢園BBS站 歡迎蒞臨參觀 cd.twbbs.org  (140.123.20.230)    
 http://cd.twbbs.org   Author: Dinsam      ★ From: 218.171.110.27     
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻