aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2009-05-26 16:19:11 -0500
committermegamage <none@none>2009-05-26 16:19:11 -0500
commit8b26c1c728ad05046210605385d970b4352919e9 (patch)
treedf819e83977c153210ef512eada2608e31af588a
parent0652c95126d35ffcdfe7830ac873fe5b23183d93 (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.sql8
-rw-r--r--sql/updates/7893_01_mangos_command.sql10
-rw-r--r--src/game/Chat.cpp16
-rw-r--r--src/game/Chat.h1
-rw-r--r--src/game/Level1.cpp24
-rw-r--r--src/game/Level3.cpp92
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;