diff options
author | Philipp Sehmisch <mana@crushnet.org> | 2011-03-18 20:14:57 +0100 |
---|---|---|
committer | Philipp Sehmisch <mana@crushnet.org> | 2011-03-18 20:15:49 +0100 |
commit | c4f3d184abeda63abcfdaa386b4846e94bfed1f9 (patch) | |
tree | 0882b3a10184236d88d0ea8b4ed69cd1c39e2ba9 /src/account-server | |
parent | 9344a79233882ac278b3812b91b6edf874ef5d16 (diff) | |
download | manaserv-c4f3d184abeda63abcfdaa386b4846e94bfed1f9.tar.gz manaserv-c4f3d184abeda63abcfdaa386b4846e94bfed1f9.tar.bz2 manaserv-c4f3d184abeda63abcfdaa386b4846e94bfed1f9.tar.xz manaserv-c4f3d184abeda63abcfdaa386b4846e94bfed1f9.zip |
Improved @ban command
When banning a character, the game master now sets a time unit (m, h, d, w
or y for minutes, hours, days, weeks or years) after the duration.
Ban durations longer than 2^16 minutes are now possible.
The banned character is now kicked automatically and the banning character
receives a feedback chat message.
Reviewed-by: Thorbjorn
Diffstat (limited to 'src/account-server')
-rw-r--r-- | src/account-server/serverhandler.cpp | 2 | ||||
-rw-r--r-- | src/account-server/storage.cpp | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/account-server/serverhandler.cpp b/src/account-server/serverhandler.cpp index dd6a82e9..5b88348c 100644 --- a/src/account-server/serverhandler.cpp +++ b/src/account-server/serverhandler.cpp @@ -383,7 +383,7 @@ void ServerHandler::processMessage(NetComputer *comp, MessageIn &msg) case GAMSG_BAN_PLAYER: { int id = msg.readInt32(); - int duration = msg.readInt16(); + int duration = msg.readInt32(); storage->banCharacter(id, duration); } break; diff --git a/src/account-server/storage.cpp b/src/account-server/storage.cpp index 333f3aaf..fdcb1cd9 100644 --- a/src/account-server/storage.cpp +++ b/src/account-server/storage.cpp @@ -1649,6 +1649,7 @@ void Storage::banCharacter(int id, int duration) { try { + // check the account of the character std::ostringstream query; query << "select user_id from " << CHARACTERS_TBL_NAME << " where id = '" << id << "';"; @@ -1659,10 +1660,12 @@ void Storage::banCharacter(int id, int duration) return; } + uint64_t bantime = (uint64_t)time(0) + (uint64_t)duration * 60u; + // ban the character std::ostringstream sql; sql << "update " << ACCOUNTS_TBL_NAME << " set level = '" << AL_BANNED << "', banned = '" - << time(0) + duration * 60 + << bantime << "' where id = '" << info(0, 0) << "';"; mDb->execSql(sql.str()); } |