From c374f3245abcfca2bcf9da375c38dcc60f75d30e Mon Sep 17 00:00:00 2001 From: click Date: Sat, 13 Nov 2010 22:29:46 +0100 Subject: Scripts/Commands: Add tele and event commands to commandscripts system and streamlining the command selection process to ensure the correct command is run when using abbreviations Patch by Paradox (some cleanups was needed) --HG-- branch : trunk --- src/server/game/Chat/Chat.cpp | 58 +++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 38 deletions(-) (limited to 'src/server/game/Chat/Chat.cpp') diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 0aaecd233f5..2aaa3992572 100755 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -160,15 +160,6 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; - static ChatCommand eventCommandTable[] = - { - { "activelist", SEC_GAMEMASTER, true, OldHandler<&ChatHandler::HandleEventActiveListCommand>, "", NULL }, - { "start", SEC_GAMEMASTER, true, OldHandler<&ChatHandler::HandleEventStartCommand>, "", NULL }, - { "stop", SEC_GAMEMASTER, true, OldHandler<&ChatHandler::HandleEventStopCommand>, "", NULL }, - { "", SEC_GAMEMASTER, true, OldHandler<&ChatHandler::HandleEventInfoCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - static ChatCommand gobjectCommandTable[] = { { "activate", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleActivateObjectCommand>, "", NULL }, @@ -465,16 +456,6 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; - static ChatCommand teleCommandTable[] = - { - { "add", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleTeleAddCommand>, "", NULL }, - { "del", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleTeleDelCommand>, "", NULL }, - { "name", SEC_MODERATOR, true, OldHandler<&ChatHandler::HandleTeleNameCommand>, "", NULL }, - { "group", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleTeleGroupCommand>, "", NULL }, - { "", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleTeleCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - static ChatCommand titlesCommandTable[] = { { "add", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleTitlesAddCommand>, "", NULL }, @@ -533,9 +514,7 @@ ChatCommand * ChatHandler::getCommandTable() static ChatCommand commandTable[] = { - { "tele", SEC_MODERATOR, true, NULL, "", teleCommandTable }, { "character", SEC_GAMEMASTER, true, NULL, "", characterCommandTable}, - { "event", SEC_GAMEMASTER, false, NULL, "", eventCommandTable }, { "gobject", SEC_GAMEMASTER, false, NULL, "", gobjectCommandTable }, { "honor", SEC_GAMEMASTER, false, NULL, "", honorCommandTable }, { "wp", SEC_GAMEMASTER, false, NULL, "", wpCommandTable }, @@ -854,6 +833,26 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand *table, const char* text, co if (!hasStringAbbr(table[i].Name, cmd.c_str())) continue; + bool match = false; + if (strlen(table[i].Name) > strlen(cmd.c_str())) + { + for (uint32 j = 0; table[j].Name != NULL; ++j) + { + if (!hasStringAbbr(table[j].Name, cmd.c_str())) + continue; + + if (strcmp(table[j].Name,cmd.c_str()) != 0) + continue; + else + { + match = true; + break; + } + } + } + if (match) + continue; + // select subcommand from child commands list if (table[i].ChildCommands != NULL) { @@ -874,23 +873,6 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand *table, const char* text, co if (!table[i].Handler || !isAvailable(table[i])) continue; - bool match = false; - if (strlen(table[i].Name) > strlen(cmd.c_str())) - { - for (uint32 j = 0; table[j].Name != NULL; ++j) - { - if (strcmp(table[j].Name,cmd.c_str()) != 0) - continue; - else - { - match = true; - break; - } - } - } - if (match) - continue; - SetSentErrorMessage(false); // table[i].Name == "" is special case: send original command to handler if ((table[i].Handler)(this, strlen(table[i].Name) != 0 ? text : oldtext)) -- cgit v1.2.3