All pastes #993622 Raw Edit

Etwas

public text v1 · immutable
#993622 ·published 2008-04-22 19:14 UTC
rendered paste body
Index: 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