回文章列表
作者chrisliu.bbs@loli.twbbs.org (ChrisLiu*) 看板: itoc
標題Re: [問題] 精華區內推文未讀方法二,評分別人看+消不掉等問題
時間蘿莉小站 (2007/11/05 Mon 14:50:08)
※ 引述《Zichi.bbs@bbs.wretch.cc (外表是最好的掩飾)》之銘言:
> 請問各位,因為精華區程式碼跟現在有點出入,改出來的結果不合
> 1.出現評分一次會+2,所以推文三次分數會變成6分

    我猜是 post.c:addscore()、post_score() 的部份有重複加到?

    curraddscore 或者是 hdd->score、hdr->score

> 2.原推文的+號會消失,其他user文章列表+號一直存在

    應該是下面的部份少了 BMAX 的關係

> 3.> 2123 +6 11/01 XXXX           ◆ sad
> 以下是我亂改的部份,請大家指教
> ***HDR 新增一個欄位給已讀未讀輔助判斷
> 精華區內
> : post.c:post_attr()
> - attr = brh_unread(hdr->chrono) ? 0 : 0x20;
> + attr = brh_unread(BMAX(hdr->chrono, hdr->stamp)) ? 0 : 0x20;
> 因為版本不同,我修改紅色部分
> #ifdef HAVE_REFUSEMARK
>   attr = ((mode & POST_BOTTOM) || !brh_unread(hdr->chrono) ||
> !chkrestrict(hdr)) ? 0x20 : 0;
> #else
>   attr = ((mode & POST_BOTTOM) || !brh_unread(hdr->chrono, hdr->stamp)) ?
> 0x20 : 0;

    這段應該修正為

    attr = ((mode & POST_BOTTOM) || !brh_unread(BMAX(hdr->chrono, hdr->stamp))
    ? 0x20 : 0;

    不過這段的判斷式跟以前剛好是相反是 :p

> : post.c:do_post()
> 找不到這段

    [deleted]

> 請問這條+ void post_history(XO *xo, HDR *hdr); 是加在maple.p 的 post.c內嗎?

    只要加在 maple.p 裏面都可以,不過依照檔案來分類比較清楚。

> : etc/stamp 新增一個檔案
> 請問這是在 /home/bbs/etc/ 內建一個目錄嗎? 還是新增一個stamp檔案呢

    在 /home/bbs/etc/ 建立一個名為 stamp 的檔案,空白或是內容隨意。

> 我是建立一個目錄 stamp目錄內 隨便做一個test.c
> : post.c:addscore()
>   hdd->xmode |= POST_SCORE;
>   hdd->score += curraddscore;  //這條裡面沒有,要自己加還是不理了呢

    20071022 的版本應該是不用理他,我是以這個版本來回答的。

> ------------------------------------------------------------------------------
> 另外關於站簽的作者與來源的長度
> 我們的站簽 ID 跟 來源同一列
> 如果長ID + 長來源 這樣站簽會被擠到下一列
> 有沒有辦法ID 與 來源 就給固定長度,超過切掉
> ex .162-72-69-48-dynamic.kbronet.com.tw
>     超過變成162-72-69-48-dynamic.kbr  這樣呢

  %10.10s 保留10個字元並靠右對齊
  // "     12345"  /* 少於 10 個字元時 */

  %-10.10s 保留10個字元並靠左對齊
  // "12345     "  /* 少於 10 個字元時 */

  多於 10 個都會被切掉。

> 第一次碰BBS改程式碼,請前輩多多指教,卸卸^^

  精華區中對應到新版本有更動的部份

  [功能] HDR 新增一個欄位給已讀未讀輔助判斷

: post.c:post_attr()

#ifdef HAVE_REFUSEMARK
!  attr = ((mode & POST_BOTTOM) ||
  !brh_unread(BMAX(hdr->chrono, hdr->stamp)) || !chkrestrict(hdr)) ? 0x20 : 0;
#else
!  attr =
  ((mode & POST_BOTTOM) ||
  !brh_unread(BMAX(hdr->chrono, hdr->stamp))) ? 0x20 : 0;
#endif

: post.c:do_post()

- #if 1   /* itoc.010205: post 完文章就記錄,使不出現未閱讀的+號 */
-   chrono = hdr.chrono;
-  prev = ((mode = rec_num(folder, sizeof(HDR)) - 2) >= 0 &&
  !rec_get(folder, &buf, sizeof(HDR), mode)) ? buf.chrono : chrono;

- brh_add(prev, chrono, chrono);
- #endif
+ post_history(xo, &hdr);


  [修正] 被評分過的文章變未讀

: post.c:addscore()

  hdd->xmode |= POST_SCORE;
  if (curraddscore > 0)
  {
    if (hdd->score < 35)
      hdd->score++;
  }
  else
  {
    if (hdd->score > -35)
      hdd->score--;
  }
+ hdd->stamp = ram->stamp;


--
  以上 code 以 20071022 為底
  沒有實際測試 :p 有錯請鞭~
--
 ˙ chrisliu -- not-a-legal-address    ﹒.˙.
 ˙ 克里斯劉個人站 ˙ loli.twbbs.org ˙ ───…‥.‧︰.∵.
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻