作者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翻