diff options
author | megamage <none@none> | 2009-05-26 16:19:11 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-05-26 16:19:11 -0500 |
commit | 8b26c1c728ad05046210605385d970b4352919e9 (patch) | |
tree | df819e83977c153210ef512eada2608e31af588a | |
parent | 0652c95126d35ffcdfe7830ac873fe5b23183d93 (diff) |
[7893] Fixed work chat guild commands that expect guild name in args. Now guild name always must be in "". Author: VladimirMangos
--HG--
branch : trunk
-rw-r--r-- | sql/mangos.sql | 8 | ||||
-rw-r--r-- | sql/updates/7893_01_mangos_command.sql | 10 | ||||
-rw-r--r-- | src/game/Chat.cpp | 16 | ||||
-rw-r--r-- | src/game/Chat.h | 1 | ||||
-rw-r--r-- | src/game/Level1.cpp | 24 | ||||
-rw-r--r-- | src/game/Level3.cpp | 92 |
6 files changed, 65 insertions, 86 deletions
diff --git a/sql/mangos.sql b/sql/mangos.sql index f7bdd8120e7..2530e9d5811 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -23,7 +23,7 @@ DROP TABLE IF EXISTS `db_version`; CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, - `required_7886_01_mangos_petcreateinfo_spell` bit(1) default NULL + `required_7893_01_mangos_command` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -339,9 +339,9 @@ INSERT INTO `command` VALUES ('gps',1,'Syntax: .gps [$name|$shift-link]\r\n\r\nDisplay the position information for a selected character or creature (also if player name $name provided then for named player, or if creature/gameobject shift-link provided then pointed creature/gameobject if it loaded). Position information includes X, Y, Z, and orientation, map Id and zone Id'), ('groupgo',1,'Syntax: .groupgo [$charactername]\r\n\r\nTeleport the given character and his group to you. Teleported only online characters but original selected group member can be offline.'), ('guid',2,'Syntax: .guid\r\n\r\nDisplay the GUID for the selected character.'), -('guild create',2,'Syntax: .guild create [$GuildLeaderName] $GuildName\r\n\r\nCreate a guild named $GuildName with the player $GuildLeaderName (or selected) as leader.'), -('guild delete',2,'Syntax: .guild delete $GuildName\r\n\r\nDelete guild $GuildName.'), -('guild invite',2,'Syntax: .guild invite [$CharacterName] $GuildName\r\n\r\nAdd player $CharacterName (or selected) into a guild $GuildName.'), +('guild create',2,'Syntax: .guild create [$GuildLeaderName] "$GuildName"\r\n\r\nCreate a guild named $GuildName with the player $GuildLeaderName (or selected) as leader. Guild name must in quotes.'), +('guild delete',2,'Syntax: .guild delete "$GuildName"\r\n\r\nDelete guild $GuildName. Guild name must in quotes.'), +('guild invite',2,'Syntax: .guild invite [$CharacterName] "$GuildName"\r\n\r\nAdd player $CharacterName (or selected) into a guild $GuildName. Guild name must in quotes.'), ('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 player $CharacterName (or selected) from a guild.'), ('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/7893_01_mangos_command.sql b/sql/updates/7893_01_mangos_command.sql new file mode 100644 index 00000000000..8b21a405ee4 --- /dev/null +++ b/sql/updates/7893_01_mangos_command.sql @@ -0,0 +1,10 @@ +ALTER TABLE db_version CHANGE COLUMN required_7886_01_mangos_petcreateinfo_spell required_7893_01_mangos_command bit; + +DELETE FROM `command` WHERE `name` IN ( + 'guild create','guild delete','guild invite' +); + +INSERT INTO `command` VALUES +('guild create',2,'Syntax: .guild create [$GuildLeaderName] "$GuildName"\r\n\r\nCreate a guild named $GuildName with the player $GuildLeaderName (or selected) as leader. Guild name must in quotes.'), +('guild invite',2,'Syntax: .guild invite [$CharacterName] "$GuildName"\r\n\r\nAdd player $CharacterName (or selected) into a guild $GuildName. Guild name must in quotes.'), +('guild delete',2,'Syntax: .guild delete "$GuildName"\r\n\r\nDelete guild $GuildName. Guild name must in quotes.'); diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 31df4ee6718..e10c093e0e3 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -1696,6 +1696,22 @@ void ChatHandler::extractOptFirstArg(char* args, char** arg1, char** arg2) *arg2 = p2; } +char* ChatHandler::extractQuotedArg( char* args ) +{ + if(!*args) + return NULL; + + if(*args=='"') + return strtok(args+1, "\""); + else + { + char* space = strtok(args, "\""); + if(!space) + return false; + return strtok(NULL, "\""); + } +} + bool ChatHandler::needReportToTarget(Player* chr) const { Player* pl = m_session->GetPlayer(); diff --git a/src/game/Chat.h b/src/game/Chat.h index f7a587ce463..725217ef69b 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -574,6 +574,7 @@ class ChatHandler // if args have single value then it return in arg2 and arg1 == NULL void extractOptFirstArg(char* args, char** arg1, char** arg2); + char* extractQuotedArg(char* args); uint32 extractSpellIdFromLink(char* text); uint64 extractGuidFromLink(char* text); diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp index 83d08529424..054040fb708 100644 --- a/src/game/Level1.cpp +++ b/src/game/Level1.cpp @@ -2380,17 +2380,7 @@ bool ChatHandler::HandleSendMailCommand(const char* args) if(!tail1) return false; - char* msgSubject; - if(*tail1=='"') - msgSubject = strtok(tail1+1, "\""); - else - { - char* space = strtok(tail1, "\""); - if(!space) - return false; - msgSubject = strtok(NULL, "\""); - } - + char* msgSubject = extractQuotedArg(tail1); if (!msgSubject) return false; @@ -2398,17 +2388,7 @@ bool ChatHandler::HandleSendMailCommand(const char* args) if(!tail2) return false; - char* msgText; - if(*tail2=='"') - msgText = strtok(tail2+1, "\""); - else - { - char* space = strtok(tail2, "\""); - if(!space) - return false; - msgText = strtok(NULL, "\""); - } - + char* msgText = extractQuotedArg(tail2); if (!msgText) return false; diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 724dfe24a36..0b883b137de 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -3778,14 +3778,20 @@ bool ChatHandler::HandleLookupTaxiNodeCommand(const char * args) */ bool ChatHandler::HandleGuildCreateCommand(const char* args) { - char* nameStr; - char* guildStr; - extractOptFirstArg((char*)args,&nameStr,&guildStr); - if(!guildStr) - return false; + if(!*args) + return false; + // if not guild name only (in "") then player name Player* target; - if(!extractPlayerTarget(nameStr,&target)) + if(!extractPlayerTarget(*args!='"' ? (char*)args : NULL, &target)) + return false; + + char* tailStr = *args!='"' ? strtok(NULL, "") : (char*)args; + if(!tailStr) + return false; + + char* guildStr = extractQuotedArg(tailStr); + if(!guildStr) return false; std::string guildname = guildStr; @@ -3811,17 +3817,23 @@ bool ChatHandler::HandleGuildCreateCommand(const char* args) bool ChatHandler::HandleGuildInviteCommand(const char *args) { - char* nameStr; - char* guildNameStr; - extractOptFirstArg((char*)args,&nameStr,&guildNameStr); - if(!guildNameStr) - return false; + if(!*args) + return false; + // if not guild name only (in "") then player name uint64 target_guid; - if(!extractPlayerTarget(nameStr,NULL,&target_guid)) + if(!extractPlayerTarget(*args!='"' ? (char*)args : NULL, NULL, &target_guid)) return false; - std::string glName = guildNameStr; + char* tailStr = *args!='"' ? strtok(NULL, "") : (char*)args; + if(!tailStr) + return false; + + char* guildStr = extractQuotedArg(tailStr); + if(!guildStr) + return false; + + std::string glName = guildStr; Guild* targetGuild = objmgr.GetGuildByName (glName); if (!targetGuild) return false; @@ -3887,11 +3899,11 @@ bool ChatHandler::HandleGuildDeleteCommand(const char* args) if (!*args) return false; - char* par1 = strtok ((char*)args, " "); - if (!par1) + char* guildStr = extractQuotedArg((char*)args); + if(!guildStr) return false; - std::string gld = par1; + std::string gld = guildStr; Guild* targetGuild = objmgr.GetGuildByName (gld); if (!targetGuild) @@ -6951,17 +6963,7 @@ bool ChatHandler::HandleSendItemsCommand(const char* args) if(!tail1) return false; - char* msgSubject; - if(*tail1=='"') - msgSubject = strtok(tail1+1, "\""); - else - { - char* space = strtok(tail1, "\""); - if(!space) - return false; - msgSubject = strtok(NULL, "\""); - } - + char* msgSubject = extractQuotedArg(tail1); if (!msgSubject) return false; @@ -6969,17 +6971,7 @@ bool ChatHandler::HandleSendItemsCommand(const char* args) if(!tail2) return false; - char* msgText; - if(*tail2=='"') - msgText = strtok(tail2+1, "\""); - else - { - char* space = strtok(tail2, "\""); - if(!space) - return false; - msgText = strtok(NULL, "\""); - } - + char* msgText = extractQuotedArg(tail2); if (!msgText) return false; @@ -7082,17 +7074,7 @@ bool ChatHandler::HandleSendMoneyCommand(const char* args) if (!tail1) return false; - char* msgSubject; - if (*tail1=='"') - msgSubject = strtok(tail1+1, "\""); - else - { - char* space = strtok(tail1, "\""); - if (!space) - return false; - msgSubject = strtok(NULL, "\""); - } - + char* msgSubject = extractQuotedArg(tail1); if (!msgSubject) return false; @@ -7100,17 +7082,7 @@ bool ChatHandler::HandleSendMoneyCommand(const char* args) if (!tail2) return false; - char* msgText; - if (*tail2=='"') - msgText = strtok(tail2+1, "\""); - else - { - char* space = strtok(tail2, "\""); - if (!space) - return false; - msgText = strtok(NULL, "\""); - } - + char* msgText = extractQuotedArg(tail2); if (!msgText) return false; |