aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp16
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp6
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp44
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h1
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp7
-rwxr-xr-xsrc/server/game/Maps/Map.cpp15
-rwxr-xr-xsrc/server/game/Maps/Map.h2
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/CharacterHandler.cpp13
-rwxr-xr-xsrc/server/game/Server/WorldSession.cpp28
-rwxr-xr-xsrc/server/game/Server/WorldSession.h2
-rwxr-xr-xsrc/server/game/Server/WorldSocket.cpp17
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp3
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;