rendered paste bodyIndex: Chat.cpp
===================================================================
--- Chat.cpp (revision 5647)
+++ Chat.cpp (working copy)
@@ -334,6 +334,7 @@
{ "ticket", SEC_GAMEMASTER, &ChatHandler::HandleTicketCommand, "", NULL },
{ "delticket", SEC_GAMEMASTER, &ChatHandler::HandleDelTicketCommand, "", NULL },
{ "maxskill", SEC_ADMINISTRATOR, &ChatHandler::HandleMaxSkillCommand, "", NULL },
+ { "getskillvalue", SEC_GAMEMASTER, &ChatHandler::HandleGetSkillValueCommand, "", NULL },
{ "setskill", SEC_ADMINISTRATOR, &ChatHandler::HandleSetSkillCommand, "", NULL },
{ "whispers", SEC_MODERATOR, &ChatHandler::HandleWhispersCommand, "", NULL },
{ "say", SEC_MODERATOR, &ChatHandler::HandleSayCommand, "", NULL },
Index: Chat.h
===================================================================
--- Chat.h (revision 5647)
+++ Chat.h (working copy)
@@ -302,6 +302,7 @@
bool HandleTicketCommand(const char* args);
bool HandleDelTicketCommand(const char* args);
bool HandleMaxSkillCommand(const char* args);
+ bool HandleGetSkillValueCommand(const char* args);
bool HandleSetSkillCommand(const char* args);
bool HandleListCreatureCommand(const char* args);
bool HandleListItemCommand(const char* args);
Index: Level3.cpp
===================================================================
--- Level3.cpp (revision 5647)
+++ Level3.cpp (working copy)
@@ -582,6 +582,53 @@
return true;
}
+bool ChatHandler::HandleGetSkillValueCommand(const char* args)
+{
+ Player* target = getSelectedPlayer();
+ if(!target)
+ {
+ SendSysMessage(LANG_PLAYER_NOT_FOUND);
+ return true;
+ }
+
+ if(!*args)
+ return false;
+
+ std::string namepart = args;
+ uint32 counter = 0; // Counter for figure out that we found smth.
+
+ // converting string that we try to find to lower case
+ std::transform( namepart.begin(), namepart.end(), namepart.begin(), ::tolower );
+
+ // Search in SkillLine.dbc
+ for (uint32 id = 0; id < sSkillLineStore.GetNumRows(); id++)
+ {
+ SkillLineEntry const *skillInfo = sSkillLineStore.LookupEntry(id);
+ if(skillInfo)
+ {
+ // name - is first name field from dbc (English localized)
+ std::string name = skillInfo->name[sWorld.GetDBClang()];
+
+ // converting SkillName to lower case
+ std::transform( name.begin(), name.end(), name.begin(), ::tolower );
+
+ if (name.find(namepart) != std::string::npos)
+ {
+ uint16 skillvalue = target->GetSkillValue(id);
+ uint16 skillvaluemax = target->GetMaxSkillValue(id);
+ // send skill in "id - [namedlink] currentskill/maxskill" format
+
PSendSysMessage(LANG_SKILL_LIST,id,id,skillInfo->name[sWorld.GetDBClang()],skillvalue,skillvaluemax,(target->HasSkill(id) ? GetMangosString(LANG_KNOWN) : ""));
+
+ ++counter;
+ }
+ }
+ }
+ if (counter == 0) // if counter == 0 then we found nth
+ SendSysMessage(LANG_COMMAND_NOSKILLFOUND);
+ return true;
+}
+
+
bool ChatHandler::HandleSetSkillCommand(const char* args)
{
// number or [name] Shift-click form |color|Hskill:skill_id|h[name]|h|r