作者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 ˙ ────…‥.‧︰.∵.