回精華區
作者itoc, 信區: itoc
標題[功能] acct.c struct.h talk.c 心情
時間04/08/20
作者: itoc (哼哼 不跟我去吃飯) 看板: plan
標題: [功能] struct.h acct.c talk.c 心情
時間: Wed Aug  7 12:02:37 2002                          Updated: 2004/07/14

  改 struct ACCT,要轉換 .ACCT
  改 struct UTMP,要清 shm

※ 引述《tandrian.bbs@ntcb.twbbs.org.tw (幻域魔城後祖)》之銘言:
>         請問如何增加  心情~~ ??   ^^
> No.  P  代號         暱稱               故鄉           動態  心情  發呆

: struct.h

  #define UNLEN   23            /* Length of user name */
+ #define FLLEN   4             /* Length if feeling */

: struct.h:strcut ACCT

  char username[UNLEN + 1];     /* 暱稱 */
+ char feeling[FLLEN + 1];      /* 心情 */

: struct.h:struct UTMP

  char username[UNLEN + 1];     /* user's nickname */
+ char feeling[FLLEN + 1];      /* user's feeling */

: acct.c acct_show()

  prints("  \033[32m我的暱稱:\033[37m%-35s\033[32m擁有銀幣:\033[37m%d\n",
    u->username, u->money);

+ prints("  \033[32m我的心情:\033[37m%-35s\n", u->feeling);

  prints("  \033[32m真實姓名:\033[37m%-35s\033[32m擁有金幣:\033[37m%d\n",
    u->realname, u->gold);

: acct.c acct_setup()

  i++;
  str = x.username;
  while (1)
  {
    if (vget(i, 0, "暱    稱:", str, UNLEN + 1, GCARRY))
      break;
  };

+ i++;
+ str = x.feeling;
+ while (1)
+ {
+   if (vget(i, 0, "心    情:", str, FLLEN + 1, GCARRY))
+     break;
+ };

: bbsd.c utmp_setup()

  strcpy(utmp.userid, cuser.userid);
+ strcpy(utmp.feeling, cuser.feeling);

: talk.c ulist_item() 版面自定

- prints("%6d%c%c%s%-13s%-*.*s%s%-*.*s%-11.10s%s\n",
+ prints("%6d%c%c%s%-13s%-*.*s%s%-*.*s%-11.10s%-5.4s%s\n",
    num, ufo & UFO_CLOAK ? ')' : ' ', pager,
    wcolor[fcolor], up->userid,
-   (d_cols >> 1) + 21, (d_cols >> 1) + 20, up->username,
+   (d_cols >> 1) + 19, (d_cols >> 1) + 18, up->username,
      fcolor > 0 ? "\033[m" : "",
-   d_cols - (d_cols >> 1) + 19, d_cols - (d_cols >> 1) + 18,
+   d_cols - (d_cols >> 1) + 17, d_cols - (d_cols >> 1) + 16,
      pickup_ship ? pal_ship(fcolor, up->userno) :
    ...
    ...
-   bmode(up, 0), buf);
+   bmode(up, 0), up->feeling, buf);
}

: theme.h 版面自定

  改 NECKER_ULIST

: config.h

#define HAVE_CHANGE_NICK        /* 使用者名單 ^N 永久更改暱稱 */

+ #define HAVE_CHANGE_FEEL        /* 使用者名單 M 永久更改心情 */

#define HAVE_CHANGE_FROM        /* 使用者名單 ^F 暫時更改故鄉 */

#define HAVE_CHANGE_ID          /* 使用者名單 ^D 暫時更改 ID */

: talk.c 新增 ulist_feelchange() 於 ulist_nickchange() 下面

#ifdef HAVE_CHANGE_FEEL
static int
ulist_feelchange(xo)
  XO *xo;
{
  char *str, buf[FLLEN + 1];

  if (!cuser.userlevel)
    return XO_NONE;

  strcpy(buf, str = cutmp->feeling);
  if (vget(b_lines, 0, "請輸入新的心情:", buf, FLLEN + 1, GCARRY))
  {
    if (strcmp(buf, str))
    {
      strcpy(str, buf);
      strcpy(cuser.feeling, buf);       /* 心情也一併更換 cuser. */
      return ulist_body(xo);
    }
  }
  return XO_FOOT;
}
#endif

: talk.c talk_cb[]

#ifdef HAVE_CHANGE_NICK
  Ctrl('N'), ulist_nickchange,
#endif
+#ifdef HAVE_CHANGE_FEEL
+ 'M', ulist_feelchange,
+#endif
#ifdef HAVE_CHANGE_FROM
  Ctrl('F'), ulist_fromchange,
#endif

: acct.c u_info()

int
u_info()
{
  char *str, username[UNLEN + 1];
+ char *ptr, feeling[FLLEN + 1];

  move(MENU_XNOTE, 0);
  strcpy(username, str = cuser.username);
+ strcpy(feeling, ptr = cuser.feeling);
  acct_setup(&cuser, 0);
  if (strcmp(username, str))
    memcpy(cutmp->username, str, UNLEN + 1);
+ if (strcmp(feeling, ptr))
+   memcpy(cutmp->feeling, ptr, FLLEN + 1);
  return 0;
}

--
□ 本文章由 itoc140.113.128.62 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻