aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Entities/Object/Object.cpp17
-rwxr-xr-xsrc/server/game/Entities/Object/Updates/UpdateData.h2
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp36
3 files changed, 35 insertions, 20 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index ae68624e58e..d4e48548aa0 100755
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -301,9 +301,9 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const
*data << self->GetSpeed(MOVE_WALK);
*data << self->GetSpeed(MOVE_RUN);
- *data << self->GetSpeed(MOVE_SWIM_BACK);
- *data << self->GetSpeed(MOVE_SWIM);
*data << self->GetSpeed(MOVE_RUN_BACK);
+ *data << self->GetSpeed(MOVE_SWIM);
+ *data << self->GetSpeed(MOVE_SWIM_BACK);
*data << self->GetSpeed(MOVE_FLIGHT);
*data << self->GetSpeed(MOVE_FLIGHT_BACK);
*data << self->GetSpeed(MOVE_TURN_RATE);
@@ -423,9 +423,7 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const
// 0x2
if (flags & UPDATEFLAG_TRANSPORT)
- {
*data << uint32(getMSTime()); // ms time
- }
// 0x80
if (flags & UPDATEFLAG_VEHICLE) // unused for now
@@ -434,11 +432,14 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const
*data << float(((Creature*)this)->GetOrientation()); // facing adjustment
}
- // 0x800
- if (flags & UPDATEFLAG_UNK2)
- *data << uint16(0) << uint16(0) << uint16(0); //unk
+ // 0x800 - AnimKits
+ if (flags & UPDATEFLAG_ANIMKITS)
+ *data << uint16(0) << uint16(0) << uint16(0); //unk
+
+ // 0x200
+ if (flags & UPDATEFLAG_ROTATION)
+ *data << int64(((GameObject*)this)->GetRotation());
-
// 0x1000
if (flags & UPDATEFLAG_UNK3)
*data << uint8(0);//unk counter to read uint32 values
diff --git a/src/server/game/Entities/Object/Updates/UpdateData.h b/src/server/game/Entities/Object/Updates/UpdateData.h
index 4e74e67f986..d1bdad13a19 100755
--- a/src/server/game/Entities/Object/Updates/UpdateData.h
+++ b/src/server/game/Entities/Object/Updates/UpdateData.h
@@ -44,7 +44,7 @@ enum OBJECT_UPDATE_FLAGS
UPDATEFLAG_POSITION = 0x0100,
UPDATEFLAG_ROTATION = 0x0200,
UPDATEFLAG_UNK3 = 0x0400,
- UPDATEFLAG_UNK4 = 0x0800,
+ UPDATEFLAG_ANIMKITS = 0x0800,
UPDATEFLAG_UNK5 = 0x1000,
UPDATEFLAG_UNK6 = 0x2000
};
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 975a999267b..4d9dd6aa669 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7302,17 +7302,31 @@ void Player::SendCurrencies() const
for (PlayerCurrenciesMap::const_iterator itr = m_currencies.begin(); itr != m_currencies.end(); ++itr)
{
- CurrencyTypesEntry const* entry = sCurrencyTypesStore.LookupEntry(itr->first);
- if (!entry)
- continue;
-
- uint32 precision = (entry->Flags & 0x8) ? 100 : 1;
- packet << uint32(itr->second.weekCount / precision);
- packet << uint8(0); // unknown
- packet << uint32(entry->ID);
- packet << uint32(sWorld->GetNextWeeklyQuestsResetTime() - 1*WEEK);
- packet << uint32(_GetCurrencyWeekCap(entry) / precision);
- packet << uint32(itr->second.totalCount / precision);
+ CurrencyTypesEntry const* entry = sCurrencyTypesStore.LookupEntry(itr->first);
+ if (!entry)
+ continue;
+
+ uint32 precision = (entry->Flags & 0x8) ? 100 : 1;
+ packet.WriteBit(_GetCurrencyWeekCap(entry) / precision);
+ packet.WriteBit(0);
+ packet.WriteBit(itr->second.weekCount / precision);
+ }
+
+ for (PlayerCurrenciesMap::const_iterator itr = m_currencies.begin(); itr != m_currencies.end(); ++itr)
+ {
+ CurrencyTypesEntry const* entry = sCurrencyTypesStore.LookupEntry(itr->first);
+ if (!entry)
+ continue;
+
+ uint32 precision = (entry->Flags & 0x8) ? 100 : 1;
+ packet << uint32(entry->ID);
+ if (uint32 weekCap = (_GetCurrencyWeekCap(entry) / precision))
+ packet << uint32(weekCap);
+ packet << uint32(itr->second.totalCount / precision);
+ packet << uint8(0); // unknown
+ //packet << uint32(0); // season total earned
+ if (uint32 weekCount = (itr->second.weekCount / precision))
+ packet << uint32(weekCount);
}
GetSession()->SendPacket(&packet);