回精華區
作者itoc.bbs@processor.tfcis.org (核心動力) 看板: plan
標題Re: [問題] 請問"在使用者列表按->鍵有選單"
時間動力核心 (2004/10/29 Fri 01:35:29) Updated: 2004/10/29
※ 引述《vividcat46.bbs@bbs.wretch.cc (祕密德˙凱特)》之銘言:
> 我想在站內的使用這列表 一按->鍵就有類似下列的選單出現
> 可以方便人家聊天或丟水球.q別人
> 要和他(她) (T)談天(F)下五子棋(P)鬥寵物(C)下象棋(D)下暗棋(N)沒事找錯人了?[N]

  使用者名單按 Enter 出現
  您想 Q)查詢 T)談天 1)黑白棋 2)五子棋 3)圍棋 4)軍棋 5)暗棋?
  若是選 1~5 則直接進入下棋,不再需要按 ^O

: ulist.c:ulist_talk()

- return XO_NONE;
+ return XO_FOOT;

: ulist.c:ulist_hello() 新增在 ulist_help() 前面

int talk_state = 0;
/* -1:離開Talk 0:一般Talk '1':五子棋 '2':五子棋 '3':圍棋 '4':軍棋 '5':暗棋 */

static int
ulist_hello(xo)
  XO *xo;
{
  int ch;
  UTMP *up;

  if (HAS_PERM(PERM_PAGE))
    ch = vans("您想和他 Q)查詢 T)談天 1)黑白棋 2)五子棋 "
      "3)圍棋 4)軍棋 5)暗棋?[Q] ");
  else
    ch = 'q';

  if (ch == 't')
    return ulist_talk(xo);

  if (ch < '1' || ch > '5')
    return ulist_query(xo);

  /* 下棋 */
  up = ulist_pool[xo->pos];
  if (can_override(up))
  {
    talk_state = ch;
    ch = talk_page(up);
    talk_state = 0;
  }
  return ch ? ulist_head(xo) : XO_FOOT;
}

: ulist.c:ulist_cb[]

- 'r', ulist_query,
+ 'r', ulist_hello,

: talk.c:talk_speak()

+ extern int talk_state;

static void
talk_speak(fd)
  int fd;
{
  ...

  for (;;)
  {
-   ch = vkey();
+   ch = (!talk_state) ? vkey() : (talk_state > 0) ? Ctrl('O') : Ctrl('C');

: talk.c:talk_page()

- if (vans("確定要和他/她談天嗎(Y/N)?[N] ") != 'y')
+ if (vans("確定要和他/她談天/下棋嗎(Y/N)?[N] ") != 'y')
    return 0;

  ...

- if (ans == 'y')
+ if (!talk_state && ans == 'y')
    talk_save();        /* lkchu.981201: talk 記錄處理 */

: bwboard.c:main_board()

+ extern int talk_state;

static int
main_board(sock, later)
  int sock, later;
{
  ...

  if (!later)
  {
+   if (!talk_state)
      c = vans("想下哪種棋 (1)黑白棋 ... (5)暗棋 (Q)取消? [Q] ");
+   else
+   {
+     c = talk_state;
+     talk_state = -1;
+   }


----------------------

  很髒的作法

  並且有一個 known problem 是:

  若被邀請下棋的那個人沒有 UFO_NTLOG
  那麼被邀請下棋的那個人在結束下棋時,系統會尋問是否儲存聊天記錄
  (但是沒有內容可供記錄)

--
  Origin:  Maple-itoc˙動力核心  processor.tfcis.org 
  Author: itoc itoc.Dorm11.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻