diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp | 16 | ||||
-rwxr-xr-x | src/server/game/Entities/Creature/Creature.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 44 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.h | 1 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 7 | ||||
-rwxr-xr-x | src/server/game/Maps/Map.cpp | 15 | ||||
-rwxr-xr-x | src/server/game/Maps/Map.h | 2 | ||||
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp | 13 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 28 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSession.h | 2 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSocket.cpp | 17 | ||||
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 3 |
12 files changed, 81 insertions, 73 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp index c41ce1881d8..fb97feb8ab4 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp @@ -433,29 +433,27 @@ void npc_escortAI::Start(bool bIsActiveAttacker, bool bRun, uint64 uiPlayerGUID, { if (me->getVictim()) { - sLog->outError("TSCR ERROR: EscortAI attempt to Start while in combat. Scriptname: %s, creature entry: %u", me->GetScriptName().c_str(), me->GetEntry()); + sLog->outError("TSCR ERROR: EscortAI (script: %s, creature entry: %u) attempts to Start while in combat", me->GetScriptName().c_str(), me->GetEntry()); return; } if (HasEscortState(STATE_ESCORT_ESCORTING)) { - sLog->outError("TSCR: EscortAI attempt to Start while already escorting."); + sLog->outError("TSCR: EscortAI (script: %s, creature entry: %u) attempts to Start while already escorting", me->GetScriptName().c_str(), me->GetEntry()); return; } if (!ScriptWP) // sd2 never adds wp in script, but tc does { - - if (!WaypointList.empty()) - WaypointList.clear(); - - FillPointMovementListForCreature(); - + if (!WaypointList.empty()) + WaypointList.clear(); + FillPointMovementListForCreature(); } if (WaypointList.empty()) { - sLog->outErrorDb("TSCR: EscortAI Start with 0 waypoints (possible missing entry in script_waypoint. Quest: %u).", pQuest ? pQuest->GetQuestId() : 0); + sLog->outErrorDb("TSCR: EscortAI (script: %s, creature entry: %u) starts with 0 waypoints (possible missing entry in script_waypoint. Quest: %u).", + me->GetScriptName().c_str(), me->GetEntry(), pQuest ? pQuest->GetQuestId() : 0); return; } diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 0634d89fba1..9c8e52fa81b 100755 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -751,7 +751,7 @@ bool Creature::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry, CreatureInfo const *cinfo = ObjectMgr::GetCreatureTemplate(Entry); if (!cinfo) { - sLog->outErrorDb("Creature entry %u does not exist.", Entry); + sLog->outErrorDb("Creature::Create(): creature template (guidlow: %u, entry: %u) does not exist.", guidlow, Entry); return false; } @@ -759,7 +759,7 @@ bool Creature::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry, if (!IsPositionValid()) { - sLog->outError("Creature (guidlow %d, entry %d) not loaded. Suggested coordinates isn't valid (X: %f Y: %f)",guidlow,Entry,x,y); + sLog->outError("Creature::Create(): given coordinates for creature (guidlow %d, entry %d) are not valid (X: %f, Y: %f, Z: %f, O: %f)", guidlow, Entry, x, y, z, ang); return false; } @@ -1254,7 +1254,7 @@ bool Creature::CreateFromProto(uint32 guidlow, uint32 Entry, uint32 vehId, uint3 CreatureInfo const *cinfo = ObjectMgr::GetCreatureTemplate(Entry); if (!cinfo) { - sLog->outErrorDb("Creature entry %u does not exist.", Entry); + sLog->outErrorDb("Creature::CreateFromProto(): creature template (guidlow: %u, entry: %u) does not exist.", guidlow, Entry); return false; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ea221d844ac..581450a0ae1 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1846,13 +1846,14 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati { if (!MapManager::IsValidMapCoord(mapid, x, y, z, orientation)) { - sLog->outError("TeleportTo: invalid map %d or absent instance template.", mapid); + sLog->outError("TeleportTo: invalid map (%d) or invalid coordinates (X: %f, Y: %f, Z: %f, O: %f) given when teleporting player (GUID: %u, name: %s, map: %d, X: %f, Y: %f, Z: %f, O: %f).", + mapid, x, y, z, orientation, GetGUIDLow(), GetName(), GetMapId(), GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation()); return false; } if ((GetSession()->GetSecurity() < SEC_GAMEMASTER) && sDisableMgr->IsDisabledFor(DISABLE_TYPE_MAP, mapid, this)) { - sLog->outError("Player %s tried to enter a forbidden map %u", GetName(), mapid); + sLog->outError("Player (GUID: %u, name: %s) tried to enter a forbidden map %u", GetGUIDLow(), GetName(), mapid); SendTransferAborted(mapid, TRANSFER_ABORT_MAP_NOT_ALLOWED); return false; } @@ -6619,39 +6620,27 @@ void Player::CheckAreaExploreAndOutdoor() uint32 Player::TeamForRace(uint8 race) { - ChrRacesEntry const* rEntry = sChrRacesStore.LookupEntry(race); - if (!rEntry) + if (ChrRacesEntry const* rEntry = sChrRacesStore.LookupEntry(race)) { - sLog->outError("Race %u not found in DBC: wrong DBC files?",uint32(race)); - return ALLIANCE; - } - - switch(rEntry->TeamID) - { - case 7: return ALLIANCE; - case 1: return HORDE; + switch (rEntry->TeamID) + { + case 1: return HORDE; + case 7: return ALLIANCE; + } + sLog->outError("Race (%u) has wrong teamid (%u) in DBC: wrong DBC files?", uint32(race), rEntry->TeamID); } + else + sLog->outError("Race (%u) not found in DBC: wrong DBC files?", uint32(race)); - sLog->outError("Race %u have wrong teamid %u in DBC: wrong DBC files?",uint32(race),rEntry->TeamID); return ALLIANCE; } -uint32 Player::getFactionForRace(uint8 race) -{ - ChrRacesEntry const* rEntry = sChrRacesStore.LookupEntry(race); - if (!rEntry) - { - sLog->outError("Race %u not found in DBC: wrong DBC files?",uint32(race)); - return 0; - } - - return rEntry->FactionID; -} - void Player::setFactionForRace(uint8 race) { m_team = TeamForRace(race); - setFaction(getFactionForRace(race)); + + ChrRacesEntry const* rEntry = sChrRacesStore.LookupEntry(race); + setFaction(rEntry ? rEntry->FactionID : 0); } ReputationRank Player::GetReputationRank(uint32 faction) const @@ -8056,7 +8045,8 @@ void Player::CastItemCombatSpell(Unit *target, WeaponAttackType attType, uint32 SpellEntry const *spellInfo = sSpellStore.LookupEntry(pEnchant->spellid[s]); if (!spellInfo) { - sLog->outError("Player::CastItemCombatSpell Enchant %i, cast unknown spell %i", pEnchant->ID, pEnchant->spellid[s]); + sLog->outError("Player::CastItemCombatSpell(GUID: %u, name: %s, enchant: %i): unknown spell %i is casted, ignoring...", + GetGUIDLow(), GetName(), pEnchant->ID, pEnchant->spellid[s]); continue; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index a4f5b42286c..4d445464a41 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1927,7 +1927,6 @@ class Player : public Unit, public GridObject<Player> static uint32 TeamForRace(uint8 race); uint32 GetTeam() const { return m_team; } TeamId GetTeamId() const { return m_team == ALLIANCE ? TEAM_ALLIANCE : TEAM_HORDE; } - static uint32 getFactionForRace(uint8 race); void setFactionForRace(uint8 race); void InitDisplayIds(); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 67090442e76..2d359ba2fa7 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -16565,9 +16565,10 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const break; } - if (GetVehicle()) - if (!this->HasUnitMovementFlag(MOVEMENTFLAG_ROOT)) - sLog->outError("Unit does not have MOVEMENTFLAG_ROOT but is in vehicle!"); + if (Vehicle* pVehicle = GetVehicle()) + if (!HasUnitMovementFlag(MOVEMENTFLAG_ROOT)) + sLog->outError("Unit (GUID: " UI64FMTD ", entry: %u) does not have MOVEMENTFLAG_ROOT but is in vehicle (ID: %u)!", + GetGUID(), GetEntry(), pVehicle->GetVehicleInfo()->m_ID); *data << uint32(GetUnitMovementFlags()); // movement flags *data << uint16(m_movementInfo.flags2); // 2.3.0 diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 1e2e55a7cde..1a158833072 100755 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2368,7 +2368,7 @@ bool InstanceMap::Add(Player *player) // for normal instances cancel the reset schedule when the // first player enters (no players yet) - SetResetSchedule(false); + SetResetSchedule(false, player); sLog->outDetail("MAP: Player '%s' entered instance '%u' of map '%s'", player->GetName(), GetInstanceId(), GetMapName()); // initialize unload state @@ -2402,7 +2402,7 @@ void InstanceMap::Remove(Player *player, bool remove) m_unloadTimer = m_unloadWhenEmpty ? MIN_UNLOAD_DELAY : std::max(sWorld->getIntConfig(CONFIG_INSTANCE_UNLOAD_DELAY), (uint32)MIN_UNLOAD_DELAY); Map::Remove(player, remove); // for normal instances schedule the reset after all players have left - SetResetSchedule(true); + SetResetSchedule(true, player); } void InstanceMap::CreateInstanceData(bool load) @@ -2529,18 +2529,19 @@ void InstanceMap::SendResetWarnings(uint32 timeLeft) const itr->getSource()->SendInstanceResetWarning(GetId(), itr->getSource()->GetDifficulty(IsRaid()), timeLeft); } -void InstanceMap::SetResetSchedule(bool on) +void InstanceMap::SetResetSchedule(bool on, Player* player) { // only for normal instances // the reset time is only scheduled when there are no payers inside // it is assumed that the reset time will rarely (if ever) change while the reset is scheduled if (IsDungeon() && !HavePlayers() && !IsRaidOrHeroicDungeon()) { - InstanceSave *save = sInstanceSaveMgr->GetInstanceSave(GetInstanceId()); - if (!save) - sLog->outError("InstanceMap::SetResetSchedule: cannot turn schedule %s, no save available for instance %d of %d", on ? "on" : "off", GetInstanceId(), GetId()); - else + if (InstanceSave *save = sInstanceSaveMgr->GetInstanceSave(GetInstanceId())) sInstanceSaveMgr->ScheduleReset(on, save->GetResetTime(), InstanceSaveManager::InstResetEvent(0, GetId(), Difficulty(GetSpawnMode()), GetInstanceId())); + else + sLog->outError("InstanceMap::SetResetSchedule: cannot turn schedule %s, there is no save information for instance (map [id: %u, name: %s], instance id: %u) due to player (GUID: %u, name: %s) %s", + on ? "on" : "off", GetId(), GetMapName(), GetInstanceId(), + player->GetGUIDLow(), player->GetName(), on ? "leave" : "entrance"); } } diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index c98bdce473b..b98e65811a6 100755 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -595,7 +595,7 @@ class InstanceMap : public Map void UnloadAll(); bool CanEnter(Player* player); void SendResetWarnings(uint32 timeLeft) const; - void SetResetSchedule(bool on); + void SetResetSchedule(bool on, Player* player); uint32 GetMaxPlayers() const; uint32 GetMaxResetDelay() const; diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp index ca7efa7c032..7671a737233 100755 --- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp @@ -295,13 +295,20 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket & recv_data) } ChrClassesEntry const* classEntry = sChrClassesStore.LookupEntry(class_); - ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race_); + if (!classEntry) + { + data << (uint8)CHAR_CREATE_FAILED; + SendPacket(&data); + sLog->outError("Class (%u) not found in DBC while creating new char for account (ID: %u): wrong DBC files or cheater?", class_, GetAccountId()); + return; + } - if (!classEntry || !raceEntry) + ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race_); + if (!raceEntry) { data << (uint8)CHAR_CREATE_FAILED; SendPacket(&data); - sLog->outError("Class: %u or Race %u not found in DBC (Wrong DBC files?) or Cheater?", class_, race_); + sLog->outError("Race (%u) not found in DBC while creating new char for account (ID: %u): wrong DBC files or cheater?", race_, GetAccountId()); return; } diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 7a0e3a6b51c..3d92be5f699 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -189,12 +189,11 @@ void WorldSession::QueuePacket(WorldPacket *new_packet) } /// Logging helper for unexpected opcodes -void WorldSession::LogUnexpectedOpcode(WorldPacket *packet, const char *reason) +void WorldSession::LogUnexpectedOpcode(WorldPacket *packet, const char* status, const char *reason) { - sLog->outError("SESSION: received unexpected opcode %s (0x%.4X) %s", - LookupOpcodeName(packet->GetOpcode()), - packet->GetOpcode(), - reason); + sLog->outError("SESSION (account: %u, guidlow: %u, char: %s): received unexpected opcode %s (0x%.4X, status: %s) %s", + GetAccountId(), m_GUIDLow, _player ? _player->GetName() : "<none>", + LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode(), status, reason); } /// Logging helper for unexpected opcodes @@ -238,7 +237,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) { // skip STATUS_LOGGEDIN opcode unexpected errors if player logout sometime ago - this can be network lag delayed packets if (!m_playerRecentlyLogout) - LogUnexpectedOpcode(packet, "the player has not logged in yet"); + LogUnexpectedOpcode(packet, "STATUS_LOGGEDIN", "the player has not logged in yet"); } else if (_player->IsInWorld()) { @@ -251,7 +250,8 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) break; case STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT: if (!_player && !m_playerRecentlyLogout) - LogUnexpectedOpcode(packet, "the player has not logged in yet and not recently logout"); + LogUnexpectedOpcode(packet, "STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT", + "the player has not logged in yet and not recently logout"); else { // not expected _player or must checked in packet hanlder @@ -263,9 +263,9 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) break; case STATUS_TRANSFER: if (!_player) - LogUnexpectedOpcode(packet, "the player has not logged in yet"); + LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player has not logged in yet"); else if (_player->IsInWorld()) - LogUnexpectedOpcode(packet, "the player is still in world"); + LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player is still in world"); else { sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); @@ -278,7 +278,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) // prevent cheating with skip queue wait if (m_inQueue) { - LogUnexpectedOpcode(packet, "the player not pass queue yet"); + LogUnexpectedOpcode(packet, "STATUS_AUTHED", "the player not pass queue yet"); break; } @@ -293,10 +293,14 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) LogUnprocessedTail(packet); break; case STATUS_NEVER: - sLog->outError("SESSION: received not allowed opcode %s (0x%.4X)", LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); + sLog->outError("SESSION (account: %u, guidlow: %u, char: %s): received not allowed opcode %s (0x%.4X)", + GetAccountId(), m_GUIDLow, _player ? _player->GetName() : "<none>", + LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); break; case STATUS_UNHANDLED: - sLog->outDebug("SESSION: received not handled opcode %s (0x%.4X)", LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); + sLog->outDebug("SESSION (account: %u, guidlow: %u, char: %s): received not handled opcode %s (0x%.4X)", + GetAccountId(), m_GUIDLow, _player ? _player->GetName() : "<none>", + LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); break; } } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 926b0ac32e9..b16d61f8da7 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -882,7 +882,7 @@ class WorldSession void moveItems(Item* myItems[], Item* hisItems[]); // logging helper - void LogUnexpectedOpcode(WorldPacket *packet, const char * reason); + void LogUnexpectedOpcode(WorldPacket *packet, const char* status, const char *reason); void LogUnprocessedTail(WorldPacket *packet); uint32 m_GUIDLow; // set loggined or recently logout player (while m_playerRecentlyLogout set) diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 084eade7555..ba119e324a2 100755 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -494,8 +494,12 @@ int WorldSocket::handle_input_header (void) if ((header.size < 4) || (header.size > 10240) || (header.cmd > 10240)) { - sLog->outError ("WorldSocket::handle_input_header: client sent malformed packet size = %d , cmd = %d", - header.size, header.cmd); + Player *_player = m_Session ? m_Session->GetPlayer() : NULL; + sLog->outError ("WorldSocket::handle_input_header(): client (account: %u, char [GUID: %u, name: %s]) sent malformed packet (size: %d , cmd: %d)", + m_Session ? m_Session->GetAccountId() : 0, + _player ? _player->GetGUIDLow() : 0, + _player ? _player->GetName() : "<none>", + header.size, header.cmd); errno = EINVAL; return -1; @@ -1030,9 +1034,12 @@ int WorldSocket::HandlePing (WorldPacket& recvPacket) if (m_Session && m_Session->GetSecurity() == SEC_PLAYER) { - sLog->outError ("WorldSocket::HandlePing: Player kicked for " - "over-speed pings address = %s", - GetRemoteAddress().c_str()); + Player* _player = m_Session->GetPlayer(); + sLog->outError("WorldSocket::HandlePing: Player (account: %u, GUID: %u, name: %s) kicked for over-speed pings (address: %s)", + m_Session->GetAccountId(), + _player ? _player->GetGUIDLow() : 0, + _player ? _player->GetName() : "<none>", + GetRemoteAddress().c_str()); return -1; } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 2665884cee7..ee340965d23 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2374,7 +2374,8 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) AddUnitTarget(driver, i); break; default: - sLog->outError("Unhandled spell target %u", cur); + sLog->outError("SPELL (caster[type: %u; guidlow: %u], spell: %u): unhandled spell target (%u)", + m_caster->GetTypeId(), m_caster->GetGUIDLow(), m_spellInfo->Id, cur); break; } break; |