[10324] Implement new basic functions for chat command parsing.

* Now can be used as quotes any strings with symbols ' " [] around.
  For example can be used: .additem [Tourch] or .additem "Tourch".
  And in similar cases wher before [] or "" only canbe used in commands.

* New functions support propertly extraction shift-links as optional first args
* Also added more safe functions for extraction int32/uint32/float values.

For more wide use new functuons specialized extraction functions also need chnaged to same way work.
This is goal for future work at this part code.
This commit is contained in:
VladimirMangos 2010-08-06 06:14:18 +04:00
parent 373f607a44
commit edace1948e
7 changed files with 365 additions and 126 deletions

View file

@ -1891,19 +1891,15 @@ bool ChatHandler::HandleSendMailCommand(char* args)
if (!extractPlayerTarget(args, &target, &target_guid, &target_name))
return false;
char* tail1 = strtok(NULL, "");
if(!tail1)
char* tail = strtok(NULL, "");
if(!tail)
return false;
char* msgSubject = extractQuotedArg(tail1);
char* msgSubject = ExtractQuotedArg(&tail);
if (!msgSubject)
return false;
char* tail2 = strtok(NULL, "");
if(!tail2)
return false;
char* msgText = extractQuotedArg(tail2);
char* msgText = ExtractQuotedArg(&tail);
if (!msgText)
return false;
@ -1925,11 +1921,7 @@ bool ChatHandler::HandleSendMailCommand(char* args)
// teleport player to given game_tele.entry
bool ChatHandler::HandleTeleNameCommand(char* args)
{
char* nameStr;
char* teleStr;
extractOptFirstArg(args, &nameStr, &teleStr);
if (!teleStr)
return false;
char* nameStr = ExtractOptArg(&args);
Player* target;
uint64 target_guid;
@ -1938,7 +1930,7 @@ bool ChatHandler::HandleTeleNameCommand(char* args)
return false;
// id, or string, or [name] Shift-click form |color|Htele:id|h[name]|h|r
GameTele const* tele = extractGameTeleFromLink(teleStr);
GameTele const* tele = extractGameTeleFromLink(args);
if (!tele)
{
SendSysMessage(LANG_COMMAND_TELE_NOTFOUND);