From 97e8490c749924dbdc01452dc352769876ac4133 Mon Sep 17 00:00:00 2001 From: piaip Date: Mon, 17 Mar 2008 17:37:41 +0000 Subject: - register: allow expiring accounts created more than one year before. - chicken: demand money after user decided pet's name (otherwise aborting connection will not get pet) git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4003 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/chicken.c | 14 ++++++++++++-- mbbsd/register.c | 20 ++++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/mbbsd/chicken.c b/mbbsd/chicken.c index fd51d6d0..4de2bb85 100644 --- a/mbbsd/chicken.c +++ b/mbbsd/chicken.c @@ -200,16 +200,18 @@ new_chicken(void) mychicken.type = i; - reload_money(); price = egg_price[(int)mychicken.type]; + reload_money(); if (cuser.money < price) { vmsgf("錢不夠買蛋蛋,蛋蛋要 %d 元", price); return 0; } - vice(price, "寵物蛋"); + while (strlen(mychicken.name) < 3) + { getdata(8, 0, "幫牠取個好名字:", mychicken.name, sizeof(mychicken.name), DOECHO); + } mychicken.lastvisit = mychicken.birthday = mychicken.cbirth = now; mychicken.food = 0; @@ -228,6 +230,14 @@ new_chicken(void) mychicken.mm = 0; mychicken.mm_max = 0; + reload_money(); + if (cuser.money < price) + { + vmsg("錢不夠了。"); + return 0; + } + vice(price, "寵物蛋"); + // flush it setuserfile(fn, FN_CHICKEN); fd = open(fn, O_WRONLY|O_CREAT, 0666); diff --git a/mbbsd/register.c b/mbbsd/register.c index ec79f1c6..31a2b7e9 100644 --- a/mbbsd/register.c +++ b/mbbsd/register.c @@ -263,13 +263,16 @@ check_and_expire_account(int uid, const userec_t * urec) snprintf(genbuf, sizeof(genbuf), "#%d %-12s %15.15s %d %d %d", uid, urec->userid, ctime4(&(urec->lastlogin)) + 4, urec->numlogins, urec->numposts, val); - if (val > -1 * 60 * 24 * 365) { - log_usies("CLEAN", genbuf); - kill_user(uid, urec->userid); - } else { - val = 0; - log_usies("DATED", genbuf); - } + + // 2008/03/18: ??? 這邊原來的 code 到底目的為何? + // 原 code 從 rev1 開始, 一年內 CLEAN+清, + // 一年以上寫 "DATED", 真是猜不透啊 + // 推測原來的人可能想寫 "一年以上刪,一年內傳回 0" + // 這是由於找不到帳號時會 for-loop 跑 check_and_expire_account, + // 其它時候則是 new account 直接跑。 + log_usies("DATED", genbuf); + log_usies("CLEAN", genbuf); + kill_user(uid, urec->userid); } return val; } @@ -548,7 +551,8 @@ new_register(void) if (bad_user_id(passbuf)) outs("無法接受這個代號,請使用英文字母,並且不要包含空格\n"); else if ((id = getuser(passbuf, &xuser)) && - (minute = check_and_expire_account(id, &xuser)) >= 0) { + (minute = check_and_expire_account(id, &xuser)) > 0) + { if (minute == 999999) // XXX magic number. It should be greater than MAX_USERS at least. outs("此代號已經有人使用 是不死之身"); else { -- cgit v1.2.3