作者itoc, 信區: itoc
標題[功能] bmw.c 水球列表 tag 廣播
時間04/03/04
作者: itoc (核心動力) 看板: itoc
標題: Re: [問題]Tagger放到bmw
時間: 2004/03/04 Thu 12:49:59 Updated: 2004/03/05
送廣播給被 tag 的這些人
: bmw.c:bmw_broadcast() 新增此函式於 bmw_help() 前面
static int
bmw_broadcast(xo)
XO *xo;
{
int tag, locus, userno;
char *dir;
BMW *bmw, xbmw, benz;
UTMP *up;
tag = AskTag("特定對象廣播");
if (tag < 0)
return XO_FOOT;
benz.caller = NULL;
bmw_edit(NULL, "★廣播:", &benz);
if (!benz.caller) /* bmw_edit() 中回答 No 不送出廣播 */
return XO_FOOT;
/* itoc.000213: 加 "> " 為了與一般水球區分 */
sprintf(benz.userid, "%s> ", cuser.userid);
bmw = tag ? &xbmw : (BMW *) xo_pool + xo->pos - xo->top;
dir = xo->dir;
locus = 0;
do
{
if (tag)
EnumTag(bmw, dir, locus, sizeof(BMW));
/* itoc.010304: 讓傳訊的 bmw 也可以回 */
/* 我送水球給別人,回給收訊者;別人送水球給我,回給送訊者 */
userno = (bmw->sender == cuser.userno) ? bmw->recver : bmw->sender;
if (!userno)
continue;
if (up = utmp_find(userno))
{
#ifdef HAVE_NOBROAD
if (up->ufo & UFO_RCVER)
continue;
#endif
if (can_override(up))
{
benz.recver = userno;
bmw_send(up, &benz);
}
}
} while (++locus < tag);
return XO_FOOT;
}
: bmw.c:bmw_cb[]
+ 'B', bmw_broadcast,
'h', bmw_help
--
╭┼ Origin: Maple-itoc˙動力核心 processor.tfcis.org
╰╮ Modify: 2004/03/04 Thu 12:50:44