diff options
Diffstat (limited to 'src/game/Level2.cpp')
-rw-r--r-- | src/game/Level2.cpp | 153 |
1 files changed, 98 insertions, 55 deletions
diff --git a/src/game/Level2.cpp b/src/game/Level2.cpp index a449f15dfc3..4164c5cde3c 100644 --- a/src/game/Level2.cpp +++ b/src/game/Level2.cpp @@ -42,6 +42,7 @@ #include <iostream> #include <fstream> #include <map> +#include "GlobalEvents.h" static uint32 ReputationRankStrIndex[MAX_REPUTATION_RANK] = { @@ -99,7 +100,7 @@ bool ChatHandler::HandleMuteCommand(const char* args) security = accmgr.GetSecurity(account_id); } - if(security >= m_session->GetSecurity()) + if(m_session && security >= m_session->GetSecurity()) { SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); SetSentErrorMessage(true); @@ -165,7 +166,7 @@ bool ChatHandler::HandleUnmuteCommand(const char* args) security = accmgr.GetSecurity(account_id); } - if(security >= m_session->GetSecurity()) + if(m_session && security >= m_session->GetSecurity()) { SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); SetSentErrorMessage(true); @@ -555,38 +556,37 @@ bool ChatHandler::HandleGUIDCommand(const char* /*args*/) bool ChatHandler::HandleLookupFactionCommand(const char* args) { - if(!*args) + if (!*args) return false; - Player *target = getSelectedPlayer(); - if (!target) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } + // Can be NULL at console call + Player *target = getSelectedPlayer (); std::string namepart = args; std::wstring wnamepart; - if(!Utf8toWStr(namepart,wnamepart)) + if (!Utf8toWStr (namepart,wnamepart)) return false; // converting string that we try to find to lower case - wstrToLower( wnamepart ); + wstrToLower (wnamepart); uint32 counter = 0; // Counter for figure out that we found smth. - for (uint32 id = 0; id < sFactionStore.GetNumRows(); id++) - //for(FactionStateList::const_iterator itr = target->m_factions.begin(); itr != target->m_factions.end(); ++itr) + for (uint32 id = 0; id < sFactionStore.GetNumRows(); ++id) { - FactionEntry const *factionEntry = sFactionStore.LookupEntry(id); - //FactionEntry const *factionEntry = sFactionStore.LookupEntry(itr->second.ID); + FactionEntry const *factionEntry = sFactionStore.LookupEntry (id); if (factionEntry) { - FactionStateList::const_iterator repItr = target->m_factions.find(factionEntry->reputationListID); + FactionState const* repState = NULL; + if(target) + { + FactionStateList::const_iterator repItr = target->m_factions.find (factionEntry->reputationListID); + if(repItr != target->m_factions.end()) + repState = &repItr->second; + } - int loc = m_session->GetSessionDbcLocale(); + int loc = m_session ? m_session->GetSessionDbcLocale() : sWorld.GetDefaultDbcLocale(); std::string name = factionEntry->name[loc]; if(name.empty()) continue; @@ -596,7 +596,7 @@ bool ChatHandler::HandleLookupFactionCommand(const char* args) loc = 0; for(; loc < MAX_LOCALE; ++loc) { - if(loc==m_session->GetSessionDbcLocale()) + if(m_session && loc==m_session->GetSessionDbcLocale()) continue; name = factionEntry->name[loc]; @@ -613,26 +613,29 @@ bool ChatHandler::HandleLookupFactionCommand(const char* args) // send faction in "id - [faction] rank reputation [visible] [at war] [own team] [unknown] [invisible] [inactive]" format // or "id - [faction] [no reputation]" format std::ostringstream ss; - ss << id << " - |cffffffff|Hfaction:" << id << "|h[" << name << " " << localeNames[loc] << "]|h|r"; + if (m_session) + ss << id << " - |cffffffff|Hfaction:" << id << "|h[" << name << " " << localeNames[loc] << "]|h|r"; + else + ss << id << " - " << name << " " << localeNames[loc]; - if (repItr != target->m_factions.end()) + if (repState) // and then target!=NULL also { ReputationRank rank = target->GetReputationRank(factionEntry); std::string rankName = GetTrinityString(ReputationRankStrIndex[rank]); ss << " " << rankName << "|h|r (" << target->GetReputation(factionEntry) << ")"; - if(repItr->second.Flags & FACTION_FLAG_VISIBLE) + if(repState->Flags & FACTION_FLAG_VISIBLE) ss << GetTrinityString(LANG_FACTION_VISIBLE); - if(repItr->second.Flags & FACTION_FLAG_AT_WAR) + if(repState->Flags & FACTION_FLAG_AT_WAR) ss << GetTrinityString(LANG_FACTION_ATWAR); - if(repItr->second.Flags & FACTION_FLAG_PEACE_FORCED) + if(repState->Flags & FACTION_FLAG_PEACE_FORCED) ss << GetTrinityString(LANG_FACTION_PEACE_FORCED); - if(repItr->second.Flags & FACTION_FLAG_HIDDEN) + if(repState->Flags & FACTION_FLAG_HIDDEN) ss << GetTrinityString(LANG_FACTION_HIDDEN); - if(repItr->second.Flags & FACTION_FLAG_INVISIBLE_FORCED) + if(repState->Flags & FACTION_FLAG_INVISIBLE_FORCED) ss << GetTrinityString(LANG_FACTION_INVISIBLE_FORCED); - if(repItr->second.Flags & FACTION_FLAG_INACTIVE) + if(repState->Flags & FACTION_FLAG_INACTIVE) ss << GetTrinityString(LANG_FACTION_INACTIVE); } else @@ -1702,7 +1705,7 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) return false; } - if(name==m_session->GetPlayer()->GetName()) + if(m_session && name==m_session->GetPlayer()->GetName()) { SendSysMessage(LANG_COMMAND_KICKSELF); SetSentErrorMessage(true); @@ -1809,7 +1812,8 @@ bool ChatHandler::HandlePInfoCommand(const char* args) Field* fields = result->Fetch(); username = fields[0].GetCppString(); security = fields[1].GetUInt32(); - if(m_session->GetSecurity() >= security) + + if(!m_session || m_session->GetSecurity() >= security) { last_ip = fields[2].GetCppString(); last_login = fields[3].GetCppString(); @@ -1891,6 +1895,13 @@ bool ChatHandler::HandleTicketCommand(const char* args) // ticket<end> if (!px) { + if(!m_session) + { + SendSysMessage(LANG_PLAYER_NOT_FOUND); + SetSentErrorMessage(true); + return false; + } + size_t count; QueryResult *result = CharacterDatabase.Query("SELECT COUNT(ticket_id) FROM character_ticket"); if(result) @@ -1901,13 +1912,22 @@ bool ChatHandler::HandleTicketCommand(const char* args) else count = 0; - PSendSysMessage(LANG_COMMAND_TICKETCOUNT, count, m_session->GetPlayer()->isAcceptTickets() ? GetTrinityString(LANG_ON) : GetTrinityString(LANG_OFF)); + bool accept = m_session->GetPlayer()->isAcceptTickets(); + + PSendSysMessage(LANG_COMMAND_TICKETCOUNT, count, accept ? GetTrinityString(LANG_ON) : GetTrinityString(LANG_OFF)); return true; } // ticket on if(strncmp(px,"on",3) == 0) { + if(!m_session) + { + SendSysMessage(LANG_PLAYER_NOT_FOUND); + SetSentErrorMessage(true); + return false; + } + m_session->GetPlayer()->SetAcceptTicket(true); SendSysMessage(LANG_COMMAND_TICKETON); return true; @@ -1916,6 +1936,13 @@ bool ChatHandler::HandleTicketCommand(const char* args) // ticket off if(strncmp(px,"off",4) == 0) { + if(!m_session) + { + SendSysMessage(LANG_PLAYER_NOT_FOUND); + SetSentErrorMessage(true); + return false; + } + m_session->GetPlayer()->SetAcceptTicket(false); SendSysMessage(LANG_COMMAND_TICKETOFF); return true; @@ -3590,7 +3617,12 @@ bool ChatHandler::HandleLookupEventCommand(const char* args) if (Utf8FitTo(descr, wnamepart)) { char const* active = activeEvents.find(id) != activeEvents.end() ? GetTrinityString(LANG_ACTIVE) : ""; - PSendSysMessage(LANG_EVENT_ENTRY_LIST,id,id,descr.c_str(),active ); + + if(m_session) + PSendSysMessage(LANG_EVENT_ENTRY_LIST_CHAT,id,id,eventData.description.c_str(),active ); + else + PSendSysMessage(LANG_EVENT_ENTRY_LIST_CONSOLE,id,eventData.description.c_str(),active ); + ++counter; } } @@ -3615,7 +3647,11 @@ bool ChatHandler::HandleEventActiveListCommand(const char* args) uint32 event_id = *itr; GameEventData const& eventData = events[event_id]; - PSendSysMessage(LANG_EVENT_ENTRY_LIST,event_id,event_id,eventData.description.c_str(),active ); + if(m_session) + PSendSysMessage(LANG_EVENT_ENTRY_LIST_CHAT,event_id,event_id,eventData.description.c_str(),active ); + else + PSendSysMessage(LANG_EVENT_ENTRY_LIST_CONSOLE,event_id,eventData.description.c_str(),active ); + ++counter; } @@ -3848,7 +3884,7 @@ bool ChatHandler::HandleLearnAllRecipesCommand(const char* args) return false; } - if(!*args) + if (!*args) return false; std::wstring wnamepart; @@ -3916,54 +3952,54 @@ bool ChatHandler::HandleLearnAllRecipesCommand(const char* args) bool ChatHandler::HandleLookupPlayerIpCommand(const char* args) { - if(!*args) + if (!*args) return false; - std::string ip = strtok((char*)args, " "); - char* limit_str = strtok(NULL, " "); - int32 limit = limit_str ? atoi(limit_str) : -1; + std::string ip = strtok ((char*)args, " "); + char* limit_str = strtok (NULL, " "); + int32 limit = limit_str ? atoi (limit_str) : -1; - loginDatabase.escape_string(ip); + loginDatabase.escape_string (ip); - QueryResult* result = loginDatabase.PQuery("SELECT id,username FROM account WHERE last_ip = '%s'", ip.c_str()); + QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE last_ip = '%s'", ip.c_str ()); - return LookupPlayerSearchCommand(result,limit); + return LookupPlayerSearchCommand (result,limit); } bool ChatHandler::HandleLookupPlayerAccountCommand(const char* args) { - if(!*args) + if (!*args) return false; - std::string account = strtok((char*)args, " "); - char* limit_str = strtok(NULL, " "); - int32 limit = limit_str ? atoi(limit_str) : -1; + std::string account = strtok ((char*)args, " "); + char* limit_str = strtok (NULL, " "); + int32 limit = limit_str ? atoi (limit_str) : -1; - if(!AccountMgr::normilizeString(account)) + if (!AccountMgr::normilizeString (account)) return false; - loginDatabase.escape_string(account); + loginDatabase.escape_string (account); - QueryResult* result = loginDatabase.PQuery("SELECT id,username FROM account WHERE username = '%s'", account.c_str()); + QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE username = '%s'", account.c_str ()); - return LookupPlayerSearchCommand(result,limit); + return LookupPlayerSearchCommand (result,limit); } bool ChatHandler::HandleLookupPlayerEmailCommand(const char* args) { - if(!*args) + if (!*args) return false; - std::string email = strtok((char*)args, " "); - char* limit_str = strtok(NULL, " "); - int32 limit = limit_str ? atoi(limit_str) : -1; + std::string email = strtok ((char*)args, " "); + char* limit_str = strtok (NULL, " "); + int32 limit = limit_str ? atoi (limit_str) : -1; - loginDatabase.escape_string(email); + loginDatabase.escape_string (email); - QueryResult* result = loginDatabase.PQuery("SELECT id,username FROM account WHERE email = '%s'", email.c_str()); + QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE email = '%s'", email.c_str ()); - return LookupPlayerSearchCommand(result,limit); + return LookupPlayerSearchCommand (result,limit); } bool ChatHandler::LookupPlayerSearchCommand(QueryResult* result, int32 limit) @@ -4009,3 +4045,10 @@ bool ChatHandler::LookupPlayerSearchCommand(QueryResult* result, int32 limit) return true; } + +/// Triggering corpses expire check in world +bool ChatHandler::HandleServerCorpsesCommand(const char* /*args*/) +{ + CorpsesErase(); + return true; +} |