aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2010-05-28 02:07:47 +0200
committerSpp <spp@jorge.gr>2010-05-28 02:07:47 +0200
commitf14ab71fad59a27d2ba505ae76831d293701dace (patch)
tree6d807ebf242e0358911e38e0174fea465857d673
parent7ac8e6571d3530d0d37fd60887928fe12afe4df2 (diff)
Fix SMSG_LOGOUT_RESPONSE
- Use correct structure format - Send opcode when instant logout --HG-- branch : trunk
-rw-r--r--src/game/MiscHandler.cpp31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp
index e27a4cb491e..ea6f892c126 100644
--- a/src/game/MiscHandler.cpp
+++ b/src/game/MiscHandler.cpp
@@ -355,17 +355,20 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPacket & /*recv_data*/)
if (uint64 lguid = GetPlayer()->GetLootGUID())
DoLootRelease(lguid);
- //Can not logout if...
- if (GetPlayer()->isInCombat() || //...is in combat
- GetPlayer()->duel || //...is in Duel
- GetPlayer()->HasAura(9454) || //...is frozen by GM via freeze command
- //...is jumping ...is falling
- GetPlayer()->m_movementInfo.HasMovementFlag(MOVEMENTFLAG_JUMPING | MOVEMENTFLAG_FALLING))
- {
- WorldPacket data(SMSG_LOGOUT_RESPONSE, (2+4)) ;
- data << (uint8)0xC;
+ uint8 reason = 0;
+
+ if (GetPlayer()->isInCombat())
+ reason = 1;
+ else if (GetPlayer()->m_movementInfo.HasMovementFlag(MOVEMENTFLAG_JUMPING | MOVEMENTFLAG_FALLING))
+ reason = 3; // is jumping or falling
+ else if (GetPlayer()->duel || GetPlayer()->HasAura(9454)) // is dueling or frozen by GM via freeze command
+ reason = 2; // FIXME - Need the correct value
+
+ if (reason)
+ {
+ WorldPacket data(SMSG_LOGOUT_RESPONSE, 1+4);
+ data << uint8(reason);
data << uint32(0);
- data << uint8(0);
SendPacket(&data);
LogoutRequest(0);
return;
@@ -375,6 +378,10 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPacket & /*recv_data*/)
if (GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) || GetPlayer()->isInFlight() ||
GetSecurity() >= sWorld.getConfig(CONFIG_INSTANT_LOGOUT))
{
+ WorldPacket data(SMSG_LOGOUT_RESPONSE, 1+4);
+ data << uint8(0);
+ data << uint32(16777216);
+ SendPacket(&data);
LogoutPlayer(true);
return;
}
@@ -391,9 +398,9 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPacket & /*recv_data*/)
GetPlayer()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
}
- WorldPacket data(SMSG_LOGOUT_RESPONSE, 5);
- data << uint32(0);
+ WorldPacket data(SMSG_LOGOUT_RESPONSE, 1+4);
data << uint8(0);
+ data << uint32(0);
SendPacket(&data);
LogoutRequest(time(NULL));
}