From 89893215e5b6bd858fbfc552766f9b275a840d9e Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Thu, 23 Oct 2008 20:44:30 +0400 Subject: [PATCH] Finish review/fix commands appropriate for console. Allow call 'help' command without args. --- sql/mangos.sql | 3 +- sql/updates/2008_10_23_05_mangos_command.sql | 4 +++ sql/updates/Makefile.am | 2 ++ src/game/Chat.cpp | 21 +++++++------ src/game/Chat.h | 1 - src/game/Level0.cpp | 16 +++++----- src/game/Level2.cpp | 32 +++++++++++++++++--- src/game/Level3.cpp | 5 --- 8 files changed, 55 insertions(+), 29 deletions(-) create mode 100644 sql/updates/2008_10_23_05_mangos_command.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index ab4129d10..e8a59be7c 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -251,7 +251,7 @@ INSERT INTO `command` VALUES ('guild invite',2,'Syntax: .guild invite $CharacterName $GuildName\r\n\r\nAdd $CharacterName into a guild $GuildName.'), ('guild rank',2,'Syntax: .guild rank $CharacterName #Rank\r\n\r\nSet for $CharacterName rank #Rank in a guild.'), ('guild uninvite',2,'Syntax: .guild uninvite $CharacterName\r\n\r\nRemove $CharacterName from a guild.'), -('help',0,'Syntax: .help $command\r\n\r\nDisplay usage instructions for the given $command.'), +('help',0,'Syntax: .help [$command]\r\n\r\nDisplay usage instructions for the given $command. If no $command provided show list available commands.'), ('hidearea',3,'Syntax: .hidearea #areaid\r\n\r\nHide the area of #areaid to the selected character. If no character is selected, hide this area to you.'), ('honor add',2,'Syntax: .honor add $amount\r\n\r\nAdd a certain amount of honor (gained today) to the selected player.'), ('honor addkill',2,'Syntax: .honor addkikll\r\n\r\nAdd the targeted unit as one of your pvp kills today (you only get honor if it\'s a racial leader or a player)'), @@ -390,7 +390,6 @@ INSERT INTO `command` VALUES ('tele group',1,'Syntax: .tele group#location\r\n\r\nTeleport a selected player and his group members to a given location.'), ('tele name',1,'Syntax: .tele name #playername #location\r\n\r\nTeleport a player to a given location.'), ('ticket',2,'Syntax: .ticket on\r\n .ticket off\r\n .ticket #num\r\n .ticket $character_name\r\n\r\non/off for GMs to show or not a new ticket directly, $character_name to show ticket of this character, #num to show ticket #num.'), -('transport',3,'Not yet implemented.'), ('unaura',3,'Syntax: .unaura #spellid\r\n\r\nRemove aura due to spell #spellid from the selected Unit.'), ('unban account',3,'Syntax is: unban account $Name\r\nUnban accounts for account name pattern.'), ('unban character',3,'Syntax is: unban character $Name\r\nUnban accounts for character name pattern.'), diff --git a/sql/updates/2008_10_23_05_mangos_command.sql b/sql/updates/2008_10_23_05_mangos_command.sql new file mode 100644 index 000000000..e88b51541 --- /dev/null +++ b/sql/updates/2008_10_23_05_mangos_command.sql @@ -0,0 +1,4 @@ +DELETE FROM command WHERE name IN ('help','transport'); + +INSERT INTO command VALUES +('help',0,'Syntax: .help [$command]\r\n\r\nDisplay usage instructions for the given $command. If no $command provided show list available commands.'); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index d2bf3d489..5c10eed8a 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -105,6 +105,7 @@ pkgdata_DATA = \ 2008_10_23_02_mangos_mangos_string.sql \ 2008_10_23_03_mangos_mangos_string.sql \ 2008_10_23_04_mangos_command.sql \ + 2008_10_23_05_mangos_command.sql \ README ## Additional files to include when running 'make dist' @@ -191,4 +192,5 @@ EXTRA_DIST = \ 2008_10_23_02_mangos_mangos_string.sql \ 2008_10_23_03_mangos_mangos_string.sql \ 2008_10_23_04_mangos_command.sql \ + 2008_10_23_05_mangos_command.sql \ README diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 3389c6462..355f24650 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -434,7 +434,7 @@ ChatCommand * ChatHandler::getCommandTable() { { "listbinds", SEC_MODERATOR, false, &ChatHandler::HandleInstanceListBindsCommand, "", NULL }, { "unbind", SEC_MODERATOR, false, &ChatHandler::HandleInstanceUnbindCommand, "", NULL }, - { "stats", SEC_MODERATOR, false, &ChatHandler::HandleInstanceStatsCommand, "", NULL }, + { "stats", SEC_MODERATOR, true, &ChatHandler::HandleInstanceStatsCommand, "", NULL }, { "savedata", SEC_MODERATOR, false, &ChatHandler::HandleInstanceSaveDataCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; @@ -461,13 +461,13 @@ ChatCommand * ChatHandler::getCommandTable() { "guild", SEC_ADMINISTRATOR, true, NULL, "", guildCommandTable }, { "cast", SEC_ADMINISTRATOR, false, NULL, "", castCommandTable }, { "reset", SEC_ADMINISTRATOR, false, NULL, "", resetCommandTable }, - { "instance", SEC_ADMINISTRATOR, false, NULL, "", instanceCommandTable }, + { "instance", SEC_ADMINISTRATOR, true, NULL, "", instanceCommandTable }, { "server", SEC_ADMINISTRATOR, true, NULL, "", serverCommandTable }, { "aura", SEC_ADMINISTRATOR, false, &ChatHandler::HandleAuraCommand, "", NULL }, { "unaura", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnAuraCommand, "", NULL }, { "announce", SEC_MODERATOR, true, &ChatHandler::HandleAnnounceCommand, "", NULL }, - { "notify", SEC_MODERATOR, false, &ChatHandler::HandleNotifyCommand, "", NULL }, + { "notify", SEC_MODERATOR, true, &ChatHandler::HandleNotifyCommand, "", NULL }, { "goname", SEC_MODERATOR, false, &ChatHandler::HandleGonameCommand, "", NULL }, { "namego", SEC_MODERATOR, false, &ChatHandler::HandleNamegoCommand, "", NULL }, { "groupgo", SEC_MODERATOR, false, &ChatHandler::HandleGroupgoCommand, "", NULL }, @@ -497,7 +497,6 @@ ChatCommand * ChatHandler::getCommandTable() { "allowmove", SEC_ADMINISTRATOR, false, &ChatHandler::HandleAllowMovementCommand, "", NULL }, { "linkgrave", SEC_ADMINISTRATOR, false, &ChatHandler::HandleLinkGraveCommand, "", NULL }, { "neargrave", SEC_ADMINISTRATOR, false, &ChatHandler::HandleNearGraveCommand, "", NULL }, - { "transport", SEC_ADMINISTRATOR, false, &ChatHandler::HandleSpawnTransportCommand, "", NULL }, { "explorecheat", SEC_ADMINISTRATOR, false, &ChatHandler::HandleExploreCheatCommand, "", NULL }, { "hover", SEC_ADMINISTRATOR, false, &ChatHandler::HandleHoverCommand, "", NULL }, { "levelup", SEC_ADMINISTRATOR, false, &ChatHandler::HandleLevelUpCommand, "", NULL }, @@ -507,20 +506,20 @@ ChatCommand * ChatHandler::getCommandTable() { "additemset", SEC_ADMINISTRATOR, false, &ChatHandler::HandleAddItemSetCommand, "", NULL }, { "bank", SEC_ADMINISTRATOR, false, &ChatHandler::HandleBankCommand, "", NULL }, { "wchange", SEC_ADMINISTRATOR, false, &ChatHandler::HandleChangeWeather, "", NULL }, - { "ticket", SEC_GAMEMASTER, false, &ChatHandler::HandleTicketCommand, "", NULL }, - { "delticket", SEC_GAMEMASTER, false, &ChatHandler::HandleDelTicketCommand, "", NULL }, + { "ticket", SEC_GAMEMASTER, true, &ChatHandler::HandleTicketCommand, "", NULL }, + { "delticket", SEC_GAMEMASTER, true, &ChatHandler::HandleDelTicketCommand, "", NULL }, { "maxskill", SEC_ADMINISTRATOR, false, &ChatHandler::HandleMaxSkillCommand, "", NULL }, { "setskill", SEC_ADMINISTRATOR, false, &ChatHandler::HandleSetSkillCommand, "", NULL }, { "whispers", SEC_MODERATOR, false, &ChatHandler::HandleWhispersCommand, "", NULL }, - { "pinfo", SEC_GAMEMASTER, false, &ChatHandler::HandlePInfoCommand, "", NULL }, + { "pinfo", SEC_GAMEMASTER, true, &ChatHandler::HandlePInfoCommand, "", NULL }, { "password", SEC_PLAYER, false, &ChatHandler::HandlePasswordCommand, "", NULL }, { "lockaccount", SEC_PLAYER, false, &ChatHandler::HandleLockAccountCommand, "", NULL }, { "respawn", SEC_ADMINISTRATOR, false, &ChatHandler::HandleRespawnCommand, "", NULL }, { "sendmail", SEC_MODERATOR, false, &ChatHandler::HandleSendMailCommand, "", NULL }, - { "rename", SEC_GAMEMASTER, false, &ChatHandler::HandleRenameCommand, "", NULL }, + { "rename", SEC_GAMEMASTER, true, &ChatHandler::HandleRenameCommand, "", NULL }, { "loadscripts", SEC_ADMINISTRATOR, true, &ChatHandler::HandleLoadScriptsCommand, "", NULL }, - { "mute", SEC_GAMEMASTER, false, &ChatHandler::HandleMuteCommand, "", NULL }, - { "unmute", SEC_GAMEMASTER, false, &ChatHandler::HandleUnmuteCommand, "", NULL }, + { "mute", SEC_GAMEMASTER, true, &ChatHandler::HandleMuteCommand, "", NULL }, + { "unmute", SEC_GAMEMASTER, true, &ChatHandler::HandleUnmuteCommand, "", NULL }, { "movegens", SEC_ADMINISTRATOR, false, &ChatHandler::HandleMovegensCommand, "", NULL }, { "cometome", SEC_ADMINISTRATOR, false, &ChatHandler::HandleComeToMeCommand, "", NULL }, { "damage", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDamageCommand, "", NULL }, @@ -788,6 +787,8 @@ bool ChatHandler::ShowHelpForSubCommands(ChatCommand *table, char const* cmd, ch continue; (list += "\n ") += table[i].Name; + if(table[i].ChildCommands) + list += " ..."; } if(list.empty()) diff --git a/src/game/Chat.h b/src/game/Chat.h index 8c6f19da7..6ab125f1a 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -335,7 +335,6 @@ class ChatHandler bool HandleUnAuraCommand(const char* args); bool HandleLinkGraveCommand(const char* args); bool HandleNearGraveCommand(const char* args); - bool HandleSpawnTransportCommand(const char* args); bool HandleExploreCheatCommand(const char* args); bool HandleTextEmoteCommand(const char* args); bool HandleNpcInfoCommand(const char* args); diff --git a/src/game/Level0.cpp b/src/game/Level0.cpp index d736b8bb5..4b9350c2c 100644 --- a/src/game/Level0.cpp +++ b/src/game/Level0.cpp @@ -33,15 +33,17 @@ bool ChatHandler::HandleHelpCommand(const char* args) { - if(!*args) - return false; - char* cmd = strtok((char*)args, " "); if(!cmd) - return false; - - if(!ShowHelpForCommand(getCommandTable(), cmd)) - SendSysMessage(LANG_NO_HELP_CMD); + { + ShowHelpForCommand(getCommandTable(), "help"); + ShowHelpForCommand(getCommandTable(), ""); + } + else + { + if(!ShowHelpForCommand(getCommandTable(), cmd)) + SendSysMessage(LANG_NO_HELP_CMD); + } return true; } diff --git a/src/game/Level2.cpp b/src/game/Level2.cpp index d305572e2..8fa4b219c 100644 --- a/src/game/Level2.cpp +++ b/src/game/Level2.cpp @@ -98,7 +98,7 @@ bool ChatHandler::HandleMuteCommand(const char* args) security = accmgr.GetSecurity(account_id); } - if(security >= m_session->GetSecurity()) + if(m_session && security >= m_session->GetSecurity()) { SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); SetSentErrorMessage(true); @@ -164,7 +164,7 @@ bool ChatHandler::HandleUnmuteCommand(const char* args) security = accmgr.GetSecurity(account_id); } - if(security >= m_session->GetSecurity()) + if(m_session && security >= m_session->GetSecurity()) { SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); SetSentErrorMessage(true); @@ -1810,7 +1810,8 @@ bool ChatHandler::HandlePInfoCommand(const char* args) Field* fields = result->Fetch(); username = fields[0].GetCppString(); security = fields[1].GetUInt32(); - if(m_session->GetSecurity() >= security) + + if(!m_session || m_session->GetSecurity() >= security) { last_ip = fields[2].GetCppString(); last_login = fields[3].GetCppString(); @@ -1892,6 +1893,13 @@ bool ChatHandler::HandleTicketCommand(const char* args) // ticket if (!px) { + if(!m_session) + { + SendSysMessage(LANG_PLAYER_NOT_FOUND); + SetSentErrorMessage(true); + return false; + } + size_t count; QueryResult *result = CharacterDatabase.Query("SELECT COUNT(ticket_id) FROM character_ticket"); if(result) @@ -1902,13 +1910,22 @@ bool ChatHandler::HandleTicketCommand(const char* args) else count = 0; - PSendSysMessage(LANG_COMMAND_TICKETCOUNT, count, m_session->GetPlayer()->isAcceptTickets() ? GetMangosString(LANG_ON) : GetMangosString(LANG_OFF)); + bool accept = m_session->GetPlayer()->isAcceptTickets(); + + PSendSysMessage(LANG_COMMAND_TICKETCOUNT, count, accept ? GetMangosString(LANG_ON) : GetMangosString(LANG_OFF)); return true; } // ticket on if(strncmp(px,"on",3) == 0) { + if(!m_session) + { + SendSysMessage(LANG_PLAYER_NOT_FOUND); + SetSentErrorMessage(true); + return false; + } + m_session->GetPlayer()->SetAcceptTicket(true); SendSysMessage(LANG_COMMAND_TICKETON); return true; @@ -1917,6 +1934,13 @@ bool ChatHandler::HandleTicketCommand(const char* args) // ticket off if(strncmp(px,"off",4) == 0) { + if(!m_session) + { + SendSysMessage(LANG_PLAYER_NOT_FOUND); + SetSentErrorMessage(true); + return false; + } + m_session->GetPlayer()->SetAcceptTicket(false); SendSysMessage(LANG_COMMAND_TICKETOFF); return true; diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index f616ee1f9..4e8431618 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -3590,11 +3590,6 @@ bool ChatHandler::HandleNearGraveCommand(const char* args) return true; } -bool ChatHandler::HandleSpawnTransportCommand(const char* /*args*/) -{ - return true; -} - //play npc emote bool ChatHandler::HandlePlayEmoteCommand(const char* args) {