diff options
author | Shauren <shauren.trinity@gmail.com> | 2013-05-24 18:31:19 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2013-05-24 18:31:19 +0200 |
commit | bda68d3f9d9546ebf87afbeed02a51fc96f60d5f (patch) | |
tree | ceaa6841f4ac564bcc8e80785a23d6ab3a386a9f /src/server/scripts | |
parent | fd0397cbd260fd46eeec1a415a7ba5f799989daf (diff) |
Core/Commands: Fixed wrong field types used in db queries for pinfo command and output alive state if target is offline
Diffstat (limited to 'src/server/scripts')
-rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 1842563ba66..3051580a933 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1550,9 +1550,9 @@ public: std::string eMail = handler->GetTrinityString(LANG_ERROR); uint32 security = 0; std::string lastIp = handler->GetTrinityString(LANG_ERROR); - uint32 locked = 0; + uint8 locked = 0; std::string lastLogin = handler->GetTrinityString(LANG_ERROR); - int16 flogin = 0; + uint32 failedLogins = 0; uint32 latency = 0; std::string OS = "None"; @@ -1636,6 +1636,12 @@ public: mapId = fields[6].GetUInt16(); areaId = fields[7].GetUInt16(); gender = fields[8].GetUInt8(); + uint32 health = fields[9].GetUInt32(); + uint32 playerFlags = fields[10].GetUInt32(); + if (!health || playerFlags & PLAYER_FLAGS_GHOST) + alive = "No"; + else + alive = "Yes"; } // Query the prepared statement for login data @@ -1658,15 +1664,8 @@ public: lastIp = fields[3].GetString(); lastLogin = fields[4].GetString(); - // For crossplattforming. Quoting ByteConverter.h - /** ByteConverter reverses the byte order. This is used - for cross platform where they have different endians. - */ - uint32 ip = inet_addr(lastIp.c_str()); - #if TRINITY_ENDIAN == BIGENDIAN EndianConvertReverse(ip); - #endif // If ip2nation table is populated, it displays the country PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP2NATION_COUNTRY); @@ -1682,8 +1681,8 @@ public: muteTime = fields[5].GetUInt64(); muteReason = fields[6].GetString(); muteBy = fields[7].GetString(); - flogin = fields[8].GetInt16(); - locked = fields[9].GetUInt16(); + failedLogins = fields[8].GetUInt32(); + locked = fields[9].GetUInt8(); OS = fields[10].GetString(); } @@ -1752,13 +1751,13 @@ public: handler->PSendSysMessage(LANG_PINFO_ACC_ACCOUNT, userName.c_str(), accId, security); // Output VI. LANG_PINFO_ACC_LASTLOGIN - handler->PSendSysMessage(LANG_PINFO_ACC_LASTLOGIN, lastLogin.c_str(), flogin); + handler->PSendSysMessage(LANG_PINFO_ACC_LASTLOGIN, lastLogin.c_str(), failedLogins); // Output VIII. LANG_PINFO_ACC_OS handler->PSendSysMessage(LANG_PINFO_ACC_OS, OS.c_str(), latency, eMail.c_str()); // Output IX. LANG_PINFO_ACC_IP - handler->PSendSysMessage(LANG_PINFO_ACC_IP, lastIp.c_str(), locked == 0 ? "No" : "Yes"); + handler->PSendSysMessage(LANG_PINFO_ACC_IP, lastIp.c_str(), locked ? "Yes" : "No"); // Output X. LANG_PINFO_CHR_LEVEL handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL, level, xp, xptotal, (xptotal - xp)); @@ -1830,16 +1829,15 @@ public: if (result6) { // Define the variables, so the compiler knows they exist - int rmailint = 0; + uint32 rmailint = 0; // Fetch the fields - readmail is a SUM(x) and given out as char! Thus... Field* fields = result6->Fetch(); - const char* readmail = fields[0].GetCString(); + std::string readmail = fields[0].GetString(); uint64 totalmail = fields[1].GetUInt64(); // ... we have to convert it from Char to int. We can use totalmail as it is - if (readmail) - rmailint = atoi(readmail); + rmailint = atol(readmail.c_str()); // Output XXII. LANG_INFO_CHR_MAILS if at least one mails is given if (totalmail >= 1) |