diff options
-rw-r--r-- | example/serverdata/permissions.xml | 2 | ||||
-rw-r--r-- | src/account-server/storage.cpp | 2 | ||||
-rw-r--r-- | src/common/transaction.h | 23 | ||||
-rw-r--r-- | src/game-server/commandhandler.cpp | 32 | ||||
-rw-r--r-- | src/protocol.h | 3 | ||||
-rw-r--r-- | src/sql/mysql/createTables.sql | 21 | ||||
-rw-r--r-- | src/sql/mysql/updates/update_12_to_13.sql | 29 | ||||
-rw-r--r-- | src/sql/sqlite/createTables.sql | 21 | ||||
-rw-r--r-- | src/sql/sqlite/updates/update_12_to_13.sql | 30 |
9 files changed, 156 insertions, 7 deletions
diff --git a/example/serverdata/permissions.xml b/example/serverdata/permissions.xml index 3f759951..52f9acaa 100644 --- a/example/serverdata/permissions.xml +++ b/example/serverdata/permissions.xml @@ -28,6 +28,8 @@ <allow>@ban</allow> <allow>@mute</allow> <allow>@history</allow> + <allow>@kick</allow> + <allow>@kill</allow> </class> <class level="5"> </class> diff --git a/src/account-server/storage.cpp b/src/account-server/storage.cpp index 43b32eeb..3862bd1b 100644 --- a/src/account-server/storage.cpp +++ b/src/account-server/storage.cpp @@ -39,7 +39,7 @@ static const char *DEFAULT_ITEM_FILE = "items.xml"; // Defines the supported db version static const char *DB_VERSION_PARAMETER = "database_version"; -static const char *SUPPORTED_DB_VERSION = "12"; +static const char *SUPPORTED_DB_VERSION = "13"; /* * MySQL specificities: diff --git a/src/common/transaction.h b/src/common/transaction.h index 2715176b..bc5d2a55 100644 --- a/src/common/transaction.h +++ b/src/common/transaction.h @@ -61,7 +61,28 @@ enum TRANS_TRADE_MONEY, TRANS_TRADE_ITEM, TRANS_ATTR_INCREASE, - TRANS_ATTR_DECREASE + TRANS_ATTR_DECREASE, + TRANS_CMD_MUTE, + TRANS_CMD_EXP, + TRANS_CMD_INVISIBLE, + TRANS_CMD_COMBAT, + TRANS_CMD_ANNOUNCE, + TRANS_CMD_LOCALANNOUNCE, + TRANS_CMD_KILL, + TRANS_CMD_FX, + TRANS_CMD_LOG, + TRANS_CMD_KILLMONSTERS, + TRANS_CMD_GOTO, + TRANS_CMD_GONEXT, + TRANS_CMD_GOPREV, + TRANS_CMD_IPBAN, + TRANS_CMD_WIPE_ITEMS, + TRANS_CMD_WIPE_LEVEL, + TRANS_CMD_SHUTDOWN_THIS, + TRANS_CMD_SHUTDOWN_ALL, + TRANS_CMD_RESTART_THIS, + TRANS_CMD_RESTART_ALL, + TRANS_CMD_ATTRIBUTE }; #endif diff --git a/src/game-server/commandhandler.cpp b/src/game-server/commandhandler.cpp index 1daa6acc..5fbcb211 100644 --- a/src/game-server/commandhandler.cpp +++ b/src/game-server/commandhandler.cpp @@ -705,6 +705,11 @@ static void handleGoto(Character *player, std::string &args) MapComposite *map = other->getMap(); const Point &pos = other->getPosition(); GameState::warp(player, map, pos.x, pos.y); + + // log transaction + std::stringstream msg; + msg << "User warped own character to " << other->getName(); + accountHandler->sendTransaction(player->getDatabaseID(), TRANS_CMD_GOTO, msg.str()); } static void handleRecall(Character *player, std::string &args) @@ -901,7 +906,7 @@ static void handleTakePermission(Character *player, std::string &args) accountHandler->changeAccountLevel(other, permission); // log transaction - std::string msg = "User took right " + strPermission + " to " + other->getName(); + std::string msg = "User took right " + strPermission + " from " + other->getName(); accountHandler->sendTransaction(player->getDatabaseID(), TRANS_CMD_SETGROUP, msg); say("Sorry, "+player->getName()+" revoked your rights of a "+strPermission, other); } @@ -969,6 +974,12 @@ static void handleAttribute(Character *player, std::string &args) // change the player's attribute other->setAttribute(attr, value); + + // log transaction + std::stringstream msg; + msg << "User changed attribute " << attr << " of player " << other->getName() + << " to " << value; + accountHandler->sendTransaction(player->getDatabaseID(), TRANS_CMD_ATTRIBUTE, msg.str()); } static void handleReport(Character *player, std::string &args) @@ -995,6 +1006,9 @@ static void handleAnnounce(Character *player, std::string &msg) } GameState::sayToAll(msg); + + // log transaction + accountHandler->sendTransaction(player->getDatabaseID(), TRANS_CMD_ANNOUNCE, msg); } static void handleWhere(Character *player, std::string &) @@ -1085,14 +1099,24 @@ static void handleMute(Character *player, std::string &args) targetMsg << player->getName() << " unmuted you."; userMsg << "You unmuted " << other->getName() << "."; } - GameState::sayTo(other, NULL, targetMsg.str()); - GameState::sayTo(player, NULL, userMsg.str()); + say(targetMsg.str(), other); + say(userMsg.str(), player); + + // log transaction + std::stringstream msg; + if (length > 0) + { + msg << "User muted " << other->getName() << " for " << length << " seconds."; + } else { + msg << "User unmuted " << other->getName(); + } + accountHandler->sendTransaction(player->getDatabaseID(), TRANS_CMD_MUTE, msg.str()); } static void handleDie(Character *player, std::string &args) { player->setAttribute(ATTR_HP, 0); - GameState::sayTo(player, NULL, "You've killed yourself."); + say("You've killed yourself.", player); } void CommandHandler::handleCommand(Character *player, diff --git a/src/protocol.h b/src/protocol.h index 08539203..7c2e8e59 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -259,7 +259,8 @@ enum { ERRMSG_ALREADY_TAKEN, // name used was already taken ERRMSG_SERVER_FULL, // the server is overloaded ERRMSG_TIME_OUT, // data failed to arrive in due time - ERRMSG_LIMIT_REACHED // limit reached + ERRMSG_LIMIT_REACHED, // limit reached + ERRMSG_ADMINISTRATIVE_LOGOFF // kicked by server administrator }; // used in AGMSG_REGISTER_RESPONSE to show state of item db diff --git a/src/sql/mysql/createTables.sql b/src/sql/mysql/createTables.sql index e080ec69..ab07cbda 100644 --- a/src/sql/mysql/createTables.sql +++ b/src/sql/mysql/createTables.sql @@ -456,3 +456,24 @@ INSERT INTO mana_transaction_codes VALUES ( 29, 'Trade money', 'Act INSERT INTO mana_transaction_codes VALUES ( 30, 'Trade items', 'Actions' ); INSERT INTO mana_transaction_codes VALUES ( 31, 'Attribute increased', 'Character' ); INSERT INTO mana_transaction_codes VALUES ( 32, 'Attribute decreased', 'Character' ); +INSERT INTO mana_transaction_codes VALUES ( 33, 'Command MUTE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 34, 'Command EXP', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 35, 'Command INVISIBLE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 36, 'Command COMBAT', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 37, 'Command ANNOUNCE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 38, 'Command ANNOUNCE_LOCAL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 39, 'Command KILL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 40, 'Command FX', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 41, 'Command LOG', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 42, 'Command KILLMONSTER', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 43, 'Command GOTO', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 44, 'Command GONEXT', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 45, 'Command GOPREV', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 46, 'Command IPBAN', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 47, 'Command WIPE_ITEMS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 48, 'Command WIPE_LEVEL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 49, 'Command SHUTDOWN_THIS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 50, 'Command SHUTDOWN_ALL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 51, 'Command RESTART_THIS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 52, 'Command RESTART_ALL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 53, 'Command ATTRIBUTE', 'Commands' ); diff --git a/src/sql/mysql/updates/update_12_to_13.sql b/src/sql/mysql/updates/update_12_to_13.sql new file mode 100644 index 00000000..27cb8340 --- /dev/null +++ b/src/sql/mysql/updates/update_12_to_13.sql @@ -0,0 +1,29 @@ +-- insert new transaction codes +INSERT INTO mana_transaction_codes VALUES ( 33, 'Command MUTE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 34, 'Command EXP', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 35, 'Command INVISIBLE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 36, 'Command COMBAT', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 37, 'Command ANNOUNCE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 38, 'Command ANNOUNCE_LOCAL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 39, 'Command KILL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 40, 'Command FX', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 41, 'Command LOG', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 42, 'Command KILLMONSTER', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 43, 'Command GOTO', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 44, 'Command GONEXT', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 45, 'Command GOPREV', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 46, 'Command IPBAN', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 47, 'Command WIPE_ITEMS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 48, 'Command WIPE_LEVEL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 49, 'Command SHUTDOWN_THIS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 50, 'Command SHUTDOWN_ALL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 51, 'Command RESTART_THIS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 52, 'Command RESTART_ALL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 53, 'Command ATTRIBUTE', 'Commands' ); + +-- Update database version. +UPDATE mana_world_states +SET value = '13', +moddate = UNIX_TIMESTAMP() +WHERE state_name = 'database_version'; + diff --git a/src/sql/sqlite/createTables.sql b/src/sql/sqlite/createTables.sql index 6ce52900..e279aece 100644 --- a/src/sql/sqlite/createTables.sql +++ b/src/sql/sqlite/createTables.sql @@ -441,3 +441,24 @@ INSERT INTO mana_transaction_codes VALUES ( 29, 'Trade money', 'Act INSERT INTO mana_transaction_codes VALUES ( 30, 'Trade items', 'Actions' ); INSERT INTO mana_transaction_codes VALUES ( 31, 'Attribute increased', 'Character' ); INSERT INTO mana_transaction_codes VALUES ( 32, 'Attribute decreased', 'Character' ); +INSERT INTO mana_transaction_codes VALUES ( 33, 'Command MUTE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 34, 'Command EXP', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 35, 'Command INVISIBLE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 36, 'Command COMBAT', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 37, 'Command ANNOUNCE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 38, 'Command ANNOUNCE_LOCAL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 39, 'Command KILL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 40, 'Command FX', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 41, 'Command LOG', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 42, 'Command KILLMONSTER', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 43, 'Command GOTO', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 44, 'Command GONEXT', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 45, 'Command GOPREV', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 46, 'Command IPBAN', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 47, 'Command WIPE_ITEMS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 48, 'Command WIPE_LEVEL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 49, 'Command SHUTDOWN_THIS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 50, 'Command SHUTDOWN_ALL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 51, 'Command RESTART_THIS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 52, 'Command RESTART_ALL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 53, 'Command ATTRIBUTE', 'Commands' ); diff --git a/src/sql/sqlite/updates/update_12_to_13.sql b/src/sql/sqlite/updates/update_12_to_13.sql new file mode 100644 index 00000000..af639df7 --- /dev/null +++ b/src/sql/sqlite/updates/update_12_to_13.sql @@ -0,0 +1,30 @@ +-- insert new transaction codes +INSERT INTO mana_transaction_codes VALUES ( 33, 'Command MUTE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 34, 'Command EXP', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 35, 'Command INVISIBLE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 36, 'Command COMBAT', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 37, 'Command ANNOUNCE', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 38, 'Command ANNOUNCE_LOCAL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 39, 'Command KILL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 40, 'Command FX', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 41, 'Command LOG', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 42, 'Command KILLMONSTER', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 43, 'Command GOTO', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 44, 'Command GONEXT', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 45, 'Command GOPREV', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 46, 'Command IPBAN', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 47, 'Command WIPE_ITEMS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 48, 'Command WIPE_LEVEL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 49, 'Command SHUTDOWN_THIS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 50, 'Command SHUTDOWN_ALL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 51, 'Command RESTART_THIS', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 52, 'Command RESTART_ALL', 'Commands' ); +INSERT INTO mana_transaction_codes VALUES ( 53, 'Command ATTRIBUTE', 'Commands' ); + +-- update the database version, and set date of update +UPDATE mana_world_states + SET value = '13', + moddate = strftime('%s','now') + WHERE state_name = 'database_version'; + + |