00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <client/ClientAdmin.h>
00022 #include <client/ScorchedClient.h>
00023 #include <client/ClientChannelManager.h>
00024 #include <client/ClientAdminResultHandler.h>
00025 #include <tank/TankContainer.h>
00026 #include <console/Console.h>
00027 #include <coms/ComsMessageSender.h>
00028 #include <coms/ComsAdminMessage.h>
00029 #include <common/Defines.h>
00030
00031 ClientAdmin *ClientAdmin::instance_ = 0;
00032
00033 ClientAdmin *ClientAdmin::instance()
00034 {
00035 if (!instance_)
00036 {
00037 instance_ = new ClientAdmin();
00038 }
00039 return instance_;
00040 }
00041
00042 ClientAdmin::ClientAdmin()
00043 {
00044
00045 new ConsoleRuleMethodIAdapter<ClientAdmin>(
00046 this, &ClientAdmin::adminHelp, "admin",
00047 ConsoleUtil::formParams(ConsoleRuleParam("help")));
00048
00049
00050 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00051 this, &ClientAdmin::adminNoParams, "admin",
00052 ConsoleUtil::formParams(ConsoleRuleParam("killall")),
00053 (unsigned int) ComsAdminMessage::AdminKillAll);
00054 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00055 this, &ClientAdmin::adminNoParams, "admin",
00056 ConsoleUtil::formParams(ConsoleRuleParam("newgame")),
00057 (unsigned int) ComsAdminMessage::AdminNewGame);
00058 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00059 this, &ClientAdmin::adminNoParams, "admin",
00060 ConsoleUtil::formParams(ConsoleRuleParam("showbanned")),
00061 (unsigned int) ComsAdminMessage::AdminShowBanned);
00062 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00063 this, &ClientAdmin::adminNoParams, "admin",
00064 ConsoleUtil::formParams(ConsoleRuleParam("show")),
00065 (unsigned int) ComsAdminMessage::AdminShow);
00066 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00067 this, &ClientAdmin::adminNoParams, "admin",
00068 ConsoleUtil::formParams(ConsoleRuleParam("logout")),
00069 (unsigned int) ComsAdminMessage::AdminLogout);
00070 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00071 this, &ClientAdmin::adminNoParams, "admin",
00072 ConsoleUtil::formParams(ConsoleRuleParam("synccheck")),
00073 (unsigned int) ComsAdminMessage::AdminSyncCheck);
00074
00075
00076 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00077 this, &ClientAdmin::adminOneParam, "admin",
00078 ConsoleUtil::formParams(ConsoleRuleParam("kick"),
00079 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00080 (unsigned int) ComsAdminMessage::AdminKick);
00081 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00082 this, &ClientAdmin::adminOneParam, "admin",
00083 ConsoleUtil::formParams(ConsoleRuleParam("ban"),
00084 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00085 (unsigned int) ComsAdminMessage::AdminBan);
00086 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00087 this, &ClientAdmin::adminOneParam, "admin",
00088 ConsoleUtil::formParams(ConsoleRuleParam("flag"),
00089 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00090 (unsigned int) ComsAdminMessage::AdminFlag);
00091 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00092 this, &ClientAdmin::adminOneParam, "admin",
00093 ConsoleUtil::formParams(ConsoleRuleParam("mute"),
00094 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00095 (unsigned int) ComsAdminMessage::AdminMute);
00096 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00097 this, &ClientAdmin::adminOneParam, "admin",
00098 ConsoleUtil::formParams(ConsoleRuleParam("permmute"),
00099 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00100 (unsigned int) ComsAdminMessage::AdminPermMute);
00101 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00102 this, &ClientAdmin::adminOneParam, "admin",
00103 ConsoleUtil::formParams(ConsoleRuleParam("unpermmute"),
00104 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00105 (unsigned int) ComsAdminMessage::AdminUnPermMute);
00106 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00107 this, &ClientAdmin::adminOneParam, "admin",
00108 ConsoleUtil::formParams(ConsoleRuleParam("unmute"),
00109 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00110 (unsigned int) ComsAdminMessage::AdminUnMute);
00111 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00112 this, &ClientAdmin::adminOneParam, "admin",
00113 ConsoleUtil::formParams(ConsoleRuleParam("poor"),
00114 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00115 (unsigned int) ComsAdminMessage::AdminPoor);
00116
00117
00118 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00119 this, &ClientAdmin::adminOneParam, "admin",
00120 ConsoleUtil::formParams(ConsoleRuleParam("talk"),
00121 ConsoleRuleParam("text", ConsoleRuleTypeString)),
00122 (unsigned int) ComsAdminMessage::AdminTalk);
00123 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00124 this, &ClientAdmin::adminOneParam, "admin",
00125 ConsoleUtil::formParams(ConsoleRuleParam("admintalk"),
00126 ConsoleRuleParam("text", ConsoleRuleTypeString)),
00127 (unsigned int) ComsAdminMessage::AdminAdminTalk);
00128 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00129 this, &ClientAdmin::adminOneParam, "admin",
00130 ConsoleUtil::formParams(ConsoleRuleParam("message"),
00131 ConsoleRuleParam("text", ConsoleRuleTypeString)),
00132 (unsigned int) ComsAdminMessage::AdminMessage);
00133 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00134 this, &ClientAdmin::adminOneParam, "admin",
00135 ConsoleUtil::formParams(ConsoleRuleParam("add"),
00136 ConsoleRuleParam("playertype", ConsoleRuleTypeString)),
00137 (unsigned int) ComsAdminMessage::AdminAdd);
00138
00139
00140 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00141 this, &ClientAdmin::adminTwoParam, "admin",
00142 ConsoleUtil::formParams(ConsoleRuleParam("slap"),
00143 ConsoleRuleParam("player", ConsoleRuleTypeNumber),
00144 ConsoleRuleParam("amount", ConsoleRuleTypeNumber)),
00145 (unsigned int) ComsAdminMessage::AdminSlap);
00146
00147
00148 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00149 this, &ClientAdmin::adminTwoParam, "admin",
00150 ConsoleUtil::formParams(ConsoleRuleParam("login"),
00151 ConsoleRuleParam("username", ConsoleRuleTypeString),
00152 ConsoleRuleParam("password", ConsoleRuleTypeString)),
00153 (unsigned int) ComsAdminMessage::AdminLogin);
00154 new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00155 this, &ClientAdmin::adminNoParams, "admin",
00156 ConsoleUtil::formParams(ConsoleRuleParam("login")),
00157 (unsigned int) ComsAdminMessage::AdminLogin);
00158 }
00159
00160 ClientAdmin::~ClientAdmin()
00161 {
00162
00163 }
00164
00165 void ClientAdmin::adminNoParams(std::vector<ConsoleRuleValue> &values,
00166 unsigned int userData)
00167 {
00168 ComsAdminMessage::ComsAdminMessageType type =
00169 (ComsAdminMessage::ComsAdminMessageType) userData;
00170
00171 unsigned int sid = ClientAdminResultHandler::instance()->getSid();
00172 ComsAdminMessage message(sid, type);
00173 ComsMessageSender::sendToServer(message);
00174
00175 if (type == ComsAdminMessage::AdminLogout)
00176 {
00177 ClientChannelManager::instance()->removeChannel("admin");
00178 }
00179 else if (type == ComsAdminMessage::AdminLogin)
00180 {
00181 ClientChannelManager::instance()->addChannel("general", "admin");
00182 }
00183 }
00184
00185 void ClientAdmin::adminOneParam(std::vector<ConsoleRuleValue> &values,
00186 unsigned int userData)
00187 {
00188 ComsAdminMessage::ComsAdminMessageType type =
00189 (ComsAdminMessage::ComsAdminMessageType) userData;
00190
00191 ConsoleRuleValue param = values[2];
00192
00193 unsigned int sid = ClientAdminResultHandler::instance()->getSid();
00194 ComsAdminMessage message(sid, type, param.valueString.c_str());
00195 ComsMessageSender::sendToServer(message);
00196 }
00197
00198 void ClientAdmin::adminTwoParam(std::vector<ConsoleRuleValue> &values,
00199 unsigned int userData)
00200 {
00201 ComsAdminMessage::ComsAdminMessageType type =
00202 (ComsAdminMessage::ComsAdminMessageType) userData;
00203
00204 ConsoleRuleValue param1 = values[2];
00205 ConsoleRuleValue param2 = values[3];
00206
00207 unsigned int sid = ClientAdminResultHandler::instance()->getSid();
00208 ComsAdminMessage message(sid, type,
00209 param1.valueString.c_str(), param2.valueString.c_str());
00210 ComsMessageSender::sendToServer(message);
00211
00212 if (type == ComsAdminMessage::AdminLogin)
00213 {
00214 ClientChannelManager::instance()->addChannel("general", "admin");
00215 }
00216 }
00217
00218 void ClientAdmin::adminHelp()
00219 {
00220 Console::instance()->addLine(false, " help - This help");
00221 Console::instance()->addLine(false, " login <username> <password> - Login as admin");
00222 Console::instance()->addLine(false, " logout - Logoff as admin");
00223 Console::instance()->addLine(false, " show - Show ids for all current players");
00224 Console::instance()->addLine(false, " showbanned - Shows all banned/perm muted players");
00225 Console::instance()->addLine(false, " killall - Kills all current players and starts next round");
00226 Console::instance()->addLine(false, " newgame - Kills all current players and starts new game");
00227 Console::instance()->addLine(false, " kick <player id> - Kicks specified player");
00228 Console::instance()->addLine(false, " ban <player id> - Bans and kicks specified player");
00229 Console::instance()->addLine(false, " poor <player id> - Removes all money from player");
00230 Console::instance()->addLine(false, " mute <player id> - Mutes specified player for everyone");
00231 Console::instance()->addLine(false, " flag <player id> - Flags specified player for all admins");
00232 Console::instance()->addLine(false, " unmute <player id> - Un-mutes specified player for everyone");
00233 Console::instance()->addLine(false, " permmute <player id> - Mutes specified player for everyone perminantly");
00234 Console::instance()->addLine(false, " unpermmute <player id> - Un-Mutes specified player for everyone perminantly");
00235 Console::instance()->addLine(false, " slap <player id> <health> - Removes health from specified player");
00236 Console::instance()->addLine(false, " talk <text> - Admin talk to all players (white with no name)");
00237 Console::instance()->addLine(false, " admintalk <text> - Admin talk to all admin players only");
00238 Console::instance()->addLine(false, " message <text> - Message to all players (yellow in center of screen)");
00239 Console::instance()->addLine(false, " synccheck - Check client landscape is in sync with server");
00240 }