rendered paste bodyIndex: src/game/Map.cpp===================================================================--- src/game/Map.cpp (revision 5483)+++ src/game/Map.cpp (working copy)@@ -24,6 +24,9 @@ #include "CellImpl.h" #include "InstanceData.h" #include "Map.h"+#include "BattleGround.h"+#include "BattleGroundMgr.h"+#include "BattleGroundAB.h" #include "GridNotifiersImpl.h" #include "Config/ConfigEnv.h" #include "Transports.h"@@ -625,6 +628,8 @@ player->AddToWorld(); + LoadDefaultWorldStates(player);+ SendInitSelf(player); SendInitTransports(player); @@ -740,6 +745,349 @@ i_data->Update(t_diff); } +// This needs to be entirely rewritten for efficiency. I just do not know how to+void Map::LoadDefaultWorldStates(Player* player)+{+ // data depends on zoneid/mapid...+ BattleGround* bg = player->GetBattleGround();+ uint16 NumberOfFields = 0;+ uint32 mapid = player->GetMapId();+ uint32 zoneid = player->GetZoneId();+ uint32 areaid = player->GetAreaId();+ sLog.outDebug("Sending SMSG_INIT_WORLD_STATES to Map:%u, Zone: %u", mapid, zoneid);+ // may be exist better way to do this...+ switch(zoneid)+ {+ case 0:+ case 1:+ case 4:+ case 8:+ case 10:+ case 11:+ case 12:+ case 36:+ case 38:+ case 40:+ case 41:+ case 51:+ case 267:+ case 1519:+ case 1537:+ case 2257:+ case 2918:+ NumberOfFields = 6;+ break;+ case 2597:+ NumberOfFields = 81;+ break;+ case 3277:+ NumberOfFields = 14;+ break;+ case 3358:+ NumberOfFields = 38;+ break;+ case 3483:+ NumberOfFields = 22;+ break;+ case 3519:+ NumberOfFields = 36;+ break;+ case 3521:+ NumberOfFields = 35;+ break;+ case 3698:+ case 3702:+ case 3968:+ NumberOfFields = 9;+ break;+ case 3703:+ NumberOfFields = 9;+ break;+ default:+ NumberOfFields = 10;+ break;+ }++ WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(NumberOfFields*8)));+ data << mapid; // mapid+ data << zoneid; // zone id+ data << areaid; // area id, new 2.1.0+ data << NumberOfFields; // count of uint64 blocks+ data << uint32(0x8d8) << uint32(0x0); // 1+ data << uint32(0x8d7) << uint32(0x0); // 2+ data << uint32(0x8d6) << uint32(0x0); // 3+ data << uint32(0x8d5) << uint32(0x0); // 4+ data << uint32(0x8d4) << uint32(0x0); // 5+ data << uint32(0x8d3) << uint32(0x0); // 6+ if(mapid == 530) // Outland+ {+ data << uint32(0x9bf) << uint32(0x0); // 7+ data << uint32(0x9bd) << uint32(0xF); // 8+ data << uint32(0x9bb) << uint32(0xF); // 9+ }+ switch(zoneid)+ {+ case 1:+ case 11:+ case 12:+ case 38:+ case 40:+ case 51:+ case 1519:+ case 1537:+ case 2257:+ break;+ case 2597: // AV+ data << uint32(0x7ae) << uint32(0x1); // 7+ data << uint32(0x532) << uint32(0x1); // 8+ data << uint32(0x531) << uint32(0x0); // 9+ data << uint32(0x52e) << uint32(0x0); // 10+ data << uint32(0x571) << uint32(0x0); // 11+ data << uint32(0x570) << uint32(0x0); // 12+ data << uint32(0x567) << uint32(0x1); // 13+ data << uint32(0x566) << uint32(0x1); // 14+ data << uint32(0x550) << uint32(0x1); // 15+ data << uint32(0x544) << uint32(0x0); // 16+ data << uint32(0x536) << uint32(0x0); // 17+ data << uint32(0x535) << uint32(0x1); // 18+ data << uint32(0x518) << uint32(0x0); // 19+ data << uint32(0x517) << uint32(0x0); // 20+ data << uint32(0x574) << uint32(0x0); // 21+ data << uint32(0x573) << uint32(0x0); // 22+ data << uint32(0x572) << uint32(0x0); // 23+ data << uint32(0x56f) << uint32(0x0); // 24+ data << uint32(0x56e) << uint32(0x0); // 25+ data << uint32(0x56d) << uint32(0x0); // 26+ data << uint32(0x56c) << uint32(0x0); // 27+ data << uint32(0x56b) << uint32(0x0); // 28+ data << uint32(0x56a) << uint32(0x1); // 29+ data << uint32(0x569) << uint32(0x1); // 30+ data << uint32(0x568) << uint32(0x1); // 13+ data << uint32(0x565) << uint32(0x0); // 32+ data << uint32(0x564) << uint32(0x0); // 33+ data << uint32(0x563) << uint32(0x0); // 34+ data << uint32(0x562) << uint32(0x0); // 35+ data << uint32(0x561) << uint32(0x0); // 36+ data << uint32(0x560) << uint32(0x0); // 37+ data << uint32(0x55f) << uint32(0x0); // 38+ data << uint32(0x55e) << uint32(0x0); // 39+ data << uint32(0x55d) << uint32(0x0); // 40+ data << uint32(0x3c6) << uint32(0x4); // 41+ data << uint32(0x3c4) << uint32(0x6); // 42+ data << uint32(0x3c2) << uint32(0x4); // 43+ data << uint32(0x516) << uint32(0x1); // 44+ data << uint32(0x515) << uint32(0x0); // 45+ data << uint32(0x3b6) << uint32(0x6); // 46+ data << uint32(0x55c) << uint32(0x0); // 47+ data << uint32(0x55b) << uint32(0x0); // 48+ data << uint32(0x55a) << uint32(0x0); // 49+ data << uint32(0x559) << uint32(0x0); // 50+ data << uint32(0x558) << uint32(0x0); // 51+ data << uint32(0x557) << uint32(0x0); // 52+ data << uint32(0x556) << uint32(0x0); // 53+ data << uint32(0x555) << uint32(0x0); // 54+ data << uint32(0x554) << uint32(0x1); // 55+ data << uint32(0x553) << uint32(0x1); // 56+ data << uint32(0x552) << uint32(0x1); // 57+ data << uint32(0x551) << uint32(0x1); // 58+ data << uint32(0x54f) << uint32(0x0); // 59+ data << uint32(0x54e) << uint32(0x0); // 60+ data << uint32(0x54d) << uint32(0x1); // 61+ data << uint32(0x54c) << uint32(0x0); // 62+ data << uint32(0x54b) << uint32(0x0); // 63+ data << uint32(0x545) << uint32(0x0); // 64+ data << uint32(0x543) << uint32(0x1); // 65+ data << uint32(0x542) << uint32(0x0); // 66+ data << uint32(0x540) << uint32(0x0); // 67+ data << uint32(0x53f) << uint32(0x0); // 68+ data << uint32(0x53e) << uint32(0x0); // 69+ data << uint32(0x53d) << uint32(0x0); // 70+ data << uint32(0x53c) << uint32(0x0); // 71+ data << uint32(0x53b) << uint32(0x0); // 72+ data << uint32(0x53a) << uint32(0x1); // 73+ data << uint32(0x539) << uint32(0x0); // 74+ data << uint32(0x538) << uint32(0x0); // 75+ data << uint32(0x537) << uint32(0x0); // 76+ data << uint32(0x534) << uint32(0x0); // 77+ data << uint32(0x533) << uint32(0x0); // 78+ data << uint32(0x530) << uint32(0x0); // 79+ data << uint32(0x52f) << uint32(0x0); // 80+ data << uint32(0x52d) << uint32(0x1); // 81+ break;+ case 3277: // WS+ if (bg && bg->GetTypeID() == BATTLEGROUND_WS)+ bg->FillInitialWorldStates(data);+ else+ {+ data << uint32(0x62d) << uint32(0x0); // 7 1581 alliance flag captures+ data << uint32(0x62e) << uint32(0x0); // 8 1582 horde flag captures+ data << uint32(0x609) << uint32(0x0); // 9 1545 unk, set to 1 on alliance flag pickup...+ data << uint32(0x60a) << uint32(0x0); // 10 1546 unk, set to 1 on horde flag pickup, after drop it's -1+ data << uint32(0x60b) << uint32(0x2); // 11 1547 unk+ data << uint32(0x641) << uint32(0x3); // 12 1601 unk (max flag captures?)+ data << uint32(0x922) << uint32(0x1); // 13 2338 horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)+ data << uint32(0x923) << uint32(0x1); // 14 2339 alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)+ }+ break;+ case 3358: // AB+ if (bg && bg->GetTypeID() == BATTLEGROUND_AB)+ bg->FillInitialWorldStates(data);+ else+ {+ data << uint32(0x6e7) << uint32(0x0); // 7 1767 stables alliance+ data << uint32(0x6e8) << uint32(0x0); // 8 1768 stables horde+ data << uint32(0x6e9) << uint32(0x0); // 9 1769 unk, ST?+ data << uint32(0x6ea) << uint32(0x0); // 10 1770 stables (show/hide)+ data << uint32(0x6ec) << uint32(0x0); // 11 1772 farm (0 - horde controlled, 1 - alliance controlled)+ data << uint32(0x6ed) << uint32(0x0); // 12 1773 farm (show/hide)+ data << uint32(0x6ee) << uint32(0x0); // 13 1774 farm color+ data << uint32(0x6ef) << uint32(0x0); // 14 1775 gold mine color, may be FM?+ data << uint32(0x6f0) << uint32(0x0); // 15 1776 alliance resources+ data << uint32(0x6f1) << uint32(0x0); // 16 1777 horde resources+ data << uint32(0x6f2) << uint32(0x0); // 17 1778 horde bases+ data << uint32(0x6f3) << uint32(0x0); // 18 1779 alliance bases+ data << uint32(0x6f4) << uint32(0x7d0); // 19 1780 max resources (2000)+ data << uint32(0x6f6) << uint32(0x0); // 20 1782 blacksmith color+ data << uint32(0x6f7) << uint32(0x0); // 21 1783 blacksmith (show/hide)+ data << uint32(0x6f8) << uint32(0x0); // 22 1784 unk, bs?+ data << uint32(0x6f9) << uint32(0x0); // 23 1785 unk, bs?+ data << uint32(0x6fb) << uint32(0x0); // 24 1787 gold mine (0 - horde contr, 1 - alliance contr)+ data << uint32(0x6fc) << uint32(0x0); // 25 1788 gold mine (0 - conflict, 1 - horde)+ data << uint32(0x6fd) << uint32(0x0); // 26 1789 gold mine (1 - show/0 - hide)+ data << uint32(0x6fe) << uint32(0x0); // 27 1790 gold mine color+ data << uint32(0x700) << uint32(0x0); // 28 1792 gold mine color, wtf?, may be LM?+ data << uint32(0x701) << uint32(0x0); // 29 1793 lumber mill color (0 - conflict, 1 - horde contr)+ data << uint32(0x702) << uint32(0x0); // 30 1794 lumber mill (show/hide)+ data << uint32(0x703) << uint32(0x0); // 31 1795 lumber mill color color+ data << uint32(0x732) << uint32(0x1); // 32 1842 stables (1 - uncontrolled)+ data << uint32(0x733) << uint32(0x1); // 33 1843 gold mine (1 - uncontrolled)+ data << uint32(0x734) << uint32(0x1); // 34 1844 lumber mill (1 - uncontrolled)+ data << uint32(0x735) << uint32(0x1); // 35 1845 farm (1 - uncontrolled)+ data << uint32(0x736) << uint32(0x1); // 36 1846 blacksmith (1 - uncontrolled)+ data << uint32(0x745) << uint32(0x2); // 37 1861 unk+ data << uint32(0x7a3) << uint32(0x708); // 38 1955 warning limit (1800)+ }+ break;+ case 3483: // Hellfire Peninsula+ data << uint32(0x9ba) << uint32(0x1); // 10+ data << uint32(0x9b9) << uint32(0x1); // 11+ data << uint32(0x9b5) << uint32(0x0); // 12+ data << uint32(0x9b4) << uint32(0x1); // 13+ data << uint32(0x9b3) << uint32(0x0); // 14+ data << uint32(0x9b2) << uint32(0x0); // 15+ data << uint32(0x9b1) << uint32(0x1); // 16+ data << uint32(0x9b0) << uint32(0x0); // 17+ data << uint32(0x9ae) << uint32(0x0); // 18 horde pvp objectives captured+ data << uint32(0x9ac) << uint32(0x0); // 19+ data << uint32(0x9a8) << uint32(0x0); // 20+ data << uint32(0x9a7) << uint32(0x0); // 21+ data << uint32(0x9a6) << uint32(0x1); // 22+ break;+ case 3519: // Terokkar Forest+ data << uint32(0xa41) << uint32(0x0); // 10+ data << uint32(0xa40) << uint32(0x14); // 11+ data << uint32(0xa3f) << uint32(0x0); // 12+ data << uint32(0xa3e) << uint32(0x0); // 13+ data << uint32(0xa3d) << uint32(0x5); // 14+ data << uint32(0xa3c) << uint32(0x0); // 15+ data << uint32(0xa87) << uint32(0x0); // 16+ data << uint32(0xa86) << uint32(0x0); // 17+ data << uint32(0xa85) << uint32(0x0); // 18+ data << uint32(0xa84) << uint32(0x0); // 19+ data << uint32(0xa83) << uint32(0x0); // 20+ data << uint32(0xa82) << uint32(0x0); // 21+ data << uint32(0xa81) << uint32(0x0); // 22+ data << uint32(0xa80) << uint32(0x0); // 23+ data << uint32(0xa7e) << uint32(0x0); // 24+ data << uint32(0xa7d) << uint32(0x0); // 25+ data << uint32(0xa7c) << uint32(0x0); // 26+ data << uint32(0xa7b) << uint32(0x0); // 27+ data << uint32(0xa7a) << uint32(0x0); // 28+ data << uint32(0xa79) << uint32(0x0); // 29+ data << uint32(0x9d0) << uint32(0x5); // 30+ data << uint32(0x9ce) << uint32(0x0); // 31+ data << uint32(0x9cd) << uint32(0x0); // 32+ data << uint32(0x9cc) << uint32(0x0); // 33+ data << uint32(0xa88) << uint32(0x0); // 34+ data << uint32(0xad0) << uint32(0x0); // 35+ data << uint32(0xacf) << uint32(0x1); // 36+ break;+ case 3521: // Zangarmarsh+ data << uint32(0x9e1) << uint32(0x0); // 10+ data << uint32(0x9e0) << uint32(0x0); // 11+ data << uint32(0x9df) << uint32(0x0); // 12+ data << uint32(0xa5d) << uint32(0x1); // 13+ data << uint32(0xa5c) << uint32(0x0); // 14+ data << uint32(0xa5b) << uint32(0x1); // 15+ data << uint32(0xa5a) << uint32(0x0); // 16+ data << uint32(0xa59) << uint32(0x1); // 17+ data << uint32(0xa58) << uint32(0x0); // 18+ data << uint32(0xa57) << uint32(0x0); // 19+ data << uint32(0xa56) << uint32(0x0); // 20+ data << uint32(0xa55) << uint32(0x1); // 21+ data << uint32(0xa54) << uint32(0x0); // 22+ data << uint32(0x9e7) << uint32(0x0); // 23+ data << uint32(0x9e6) << uint32(0x0); // 24+ data << uint32(0x9e5) << uint32(0x0); // 25+ data << uint32(0xa00) << uint32(0x0); // 26+ data << uint32(0x9ff) << uint32(0x1); // 27+ data << uint32(0x9fe) << uint32(0x0); // 28+ data << uint32(0x9fd) << uint32(0x0); // 29+ data << uint32(0x9fc) << uint32(0x1); // 30+ data << uint32(0x9fb) << uint32(0x0); // 31+ data << uint32(0xa62) << uint32(0x0); // 32+ data << uint32(0xa61) << uint32(0x1); // 33+ data << uint32(0xa60) << uint32(0x1); // 34+ data << uint32(0xa5f) << uint32(0x0); // 35+ break;+ case 3698: // Nagrand Arena+ data << uint32(0xa0f) << uint32(0x0); // 7+ data << uint32(0xa10) << uint32(0x0); // 8+ data << uint32(0xa11) << uint32(0x0); // 9+ break;+ case 3702: // Blade's Edge Arena+ data << uint32(0x9f0) << uint32(0x0); // 7+ data << uint32(0x9f1) << uint32(0x0); // 8+ data << uint32(0x9f3) << uint32(0x0); // 9+ break;+ case 3968: // Ruins of Lordaeron+ data << uint32(0xbb8) << uint32(0x0); // 7+ data << uint32(0xbb9) << uint32(0x0); // 8+ data << uint32(0xbba) << uint32(0x0); // 9+ break;+ case 3703: // Shattrath City+ break;+ default:+ data << uint32(0x914) << uint32(0x0); // 7+ data << uint32(0x913) << uint32(0x0); // 8+ data << uint32(0x912) << uint32(0x0); // 9+ data << uint32(0x915) << uint32(0x0); // 10+ break;+ }+ player->GetSession()->SendPacket(&data);+}++void Map::SendWorldStateInit(Player* player)+{+ WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8);+ HM_NAMESPACE::hash_map<uint32,uint32>::iterator itr;+ for(itr = WorldState_fieldmap.begin(); itr != WorldState_fieldmap.end(); ++itr)+ data << (*itr).first << (*itr).second;+ player->GetSession()->SendPacket(&data);+}++void Map::UpdateWorldState(uint32 field, uint32 value)+{+ WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8);+ data << field;+ data << value;+ WorldState_fieldmap[0] = field;+ WorldState_fieldmap[1] = value;++ for(PlayerList::const_iterator itr = i_Players.begin(); itr != i_Players.end(); ++itr)+ (*itr)->GetSession()->SendPacket(&data);+}+ void Map::Remove(Player *player, bool remove) { if (Instanceable())@@ -1453,6 +1801,15 @@ transData.BuildPacket(&packet); player->GetSession()->SendPacket(&packet); }+inline void Map::setNGrid(NGridType *grid, uint32 x, uint32 y)+{+ if(x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS)+ {+ sLog.outError("map::setNGrid() Invalid grid coordinates found: %d, %d!",x,y);+ assert(false);+ }+ i_grids[x][y] = grid;+} uint32 Map::GetPlayersCountExceptGMs() const {Index: src/game/Map.h===================================================================--- src/game/Map.h (revision 5483)+++ src/game/Map.h (working copy)@@ -114,7 +114,7 @@ #define MAX_HEIGHT 100000.0f // can be use for find ground height at surface #define INVALID_HEIGHT -100000.0f // for check, must be equal to VMAP_INVALID_HEIGHT, real value for unknown height is VMAP_INVALID_HEIGHT_VALUE -class MANGOS_DLL_DECL Map : public GridRefManager<NGridType>, public MaNGOS::ObjectLevelLockable<Map, ZThread::Mutex>+class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::ObjectLevelLockable<Map, ZThread::Mutex> { public: typedef std::list<Player*> PlayerList;@@ -131,6 +131,12 @@ virtual void Update(const uint32&); + void LoadDefaultWorldStates(Player*);+ void SendWorldStateInit(Player*);+ void UpdateWorldState(uint32 field, uint32 value);++ std::list<Player*> GetPlayers() { return i_Players;};+ void MessageBroadcast(Player *, WorldPacket *, bool to_self, bool own_team_only = false); void MessageBroadcast(WorldObject *, WorldPacket *);@@ -266,15 +272,7 @@ bool isGridObjectDataLoaded(uint32 x, uint32 y) const { return getNGrid(x,y)->isGridObjectDataLoaded(); } void setGridObjectDataLoaded(bool pLoaded, uint32 x, uint32 y) { getNGrid(x,y)->setGridObjectDataLoaded(pLoaded); } - inline void setNGrid(NGridType* grid, uint32 x, uint32 y)- {- if(x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS)- {- sLog.outError("map::setNGrid() Invalid grid coordinates found: %d, %d!",x,y);- assert(false);- }- i_grids[x][y] = grid;- }+ inline void setNGrid(NGridType* grid, uint32 x, uint32 y); protected: typedef MaNGOS::ObjectLevelLockable<Map, ZThread::Mutex>::Lock Guard; @@ -289,6 +287,8 @@ time_t i_gridExpiry; + HM_NAMESPACE::hash_map<uint32, uint32> WorldState_fieldmap;+ MapEntry const* i_mapEntry; time_t i_resetTime; uint32 i_resetDelayTime;Index: src/game/Player.cpp===================================================================--- src/game/Player.cpp (revision 5483)+++ src/game/Player.cpp (working copy)@@ -7022,336 +7022,6 @@ GetSession()->SendPacket( &data ); } -void Player::SendUpdateWorldState(uint32 Field, uint32 Value)-{- WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8);- data << Field;- data << Value;- SendMessageToSet(&data, true);- //GetSession()->SendPacket(&data);-}--void Player::SendInitWorldStates()-{- // data depends on zoneid/mapid...- BattleGround* bg = GetBattleGround();- uint16 NumberOfFields = 0;- uint32 mapid = GetMapId();- uint32 zoneid = GetZoneId();- uint32 areaid = GetAreaId();- sLog.outDebug("Sending SMSG_INIT_WORLD_STATES to Map:%u, Zone: %u", mapid, zoneid);- // may be exist better way to do this...- switch(zoneid)- {- case 0:- case 1:- case 4:- case 8:- case 10:- case 11:- case 12:- case 36:- case 38:- case 40:- case 41:- case 51:- case 267:- case 1519:- case 1537:- case 2257:- case 2918:- NumberOfFields = 6;- break;- case 2597:- NumberOfFields = 81;- break;- case 3277:- NumberOfFields = 14;- break;- case 3358:- NumberOfFields = 38;- break;- case 3483:- NumberOfFields = 22;- break;- case 3519:- NumberOfFields = 36;- break;- case 3521:- NumberOfFields = 35;- break;- case 3698:- case 3702:- case 3968:- NumberOfFields = 9;- break;- case 3703:- NumberOfFields = 9;- break;- default:- NumberOfFields = 10;- break;- }-- WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(NumberOfFields*8)));- data << mapid; // mapid- data << zoneid; // zone id- data << areaid; // area id, new 2.1.0- data << NumberOfFields; // count of uint64 blocks- data << uint32(0x8d8) << uint32(0x0); // 1- data << uint32(0x8d7) << uint32(0x0); // 2- data << uint32(0x8d6) << uint32(0x0); // 3- data << uint32(0x8d5) << uint32(0x0); // 4- data << uint32(0x8d4) << uint32(0x0); // 5- data << uint32(0x8d3) << uint32(0x0); // 6- if(mapid == 530) // Outland- {- data << uint32(0x9bf) << uint32(0x0); // 7- data << uint32(0x9bd) << uint32(0xF); // 8- data << uint32(0x9bb) << uint32(0xF); // 9- }- switch(zoneid)- {- case 1:- case 11:- case 12:- case 38:- case 40:- case 51:- case 1519:- case 1537:- case 2257:- break;- case 2597: // AV- data << uint32(0x7ae) << uint32(0x1); // 7- data << uint32(0x532) << uint32(0x1); // 8- data << uint32(0x531) << uint32(0x0); // 9- data << uint32(0x52e) << uint32(0x0); // 10- data << uint32(0x571) << uint32(0x0); // 11- data << uint32(0x570) << uint32(0x0); // 12- data << uint32(0x567) << uint32(0x1); // 13- data << uint32(0x566) << uint32(0x1); // 14- data << uint32(0x550) << uint32(0x1); // 15- data << uint32(0x544) << uint32(0x0); // 16- data << uint32(0x536) << uint32(0x0); // 17- data << uint32(0x535) << uint32(0x1); // 18- data << uint32(0x518) << uint32(0x0); // 19- data << uint32(0x517) << uint32(0x0); // 20- data << uint32(0x574) << uint32(0x0); // 21- data << uint32(0x573) << uint32(0x0); // 22- data << uint32(0x572) << uint32(0x0); // 23- data << uint32(0x56f) << uint32(0x0); // 24- data << uint32(0x56e) << uint32(0x0); // 25- data << uint32(0x56d) << uint32(0x0); // 26- data << uint32(0x56c) << uint32(0x0); // 27- data << uint32(0x56b) << uint32(0x0); // 28- data << uint32(0x56a) << uint32(0x1); // 29- data << uint32(0x569) << uint32(0x1); // 30- data << uint32(0x568) << uint32(0x1); // 13- data << uint32(0x565) << uint32(0x0); // 32- data << uint32(0x564) << uint32(0x0); // 33- data << uint32(0x563) << uint32(0x0); // 34- data << uint32(0x562) << uint32(0x0); // 35- data << uint32(0x561) << uint32(0x0); // 36- data << uint32(0x560) << uint32(0x0); // 37- data << uint32(0x55f) << uint32(0x0); // 38- data << uint32(0x55e) << uint32(0x0); // 39- data << uint32(0x55d) << uint32(0x0); // 40- data << uint32(0x3c6) << uint32(0x4); // 41- data << uint32(0x3c4) << uint32(0x6); // 42- data << uint32(0x3c2) << uint32(0x4); // 43- data << uint32(0x516) << uint32(0x1); // 44- data << uint32(0x515) << uint32(0x0); // 45- data << uint32(0x3b6) << uint32(0x6); // 46- data << uint32(0x55c) << uint32(0x0); // 47- data << uint32(0x55b) << uint32(0x0); // 48- data << uint32(0x55a) << uint32(0x0); // 49- data << uint32(0x559) << uint32(0x0); // 50- data << uint32(0x558) << uint32(0x0); // 51- data << uint32(0x557) << uint32(0x0); // 52- data << uint32(0x556) << uint32(0x0); // 53- data << uint32(0x555) << uint32(0x0); // 54- data << uint32(0x554) << uint32(0x1); // 55- data << uint32(0x553) << uint32(0x1); // 56- data << uint32(0x552) << uint32(0x1); // 57- data << uint32(0x551) << uint32(0x1); // 58- data << uint32(0x54f) << uint32(0x0); // 59- data << uint32(0x54e) << uint32(0x0); // 60- data << uint32(0x54d) << uint32(0x1); // 61- data << uint32(0x54c) << uint32(0x0); // 62- data << uint32(0x54b) << uint32(0x0); // 63- data << uint32(0x545) << uint32(0x0); // 64- data << uint32(0x543) << uint32(0x1); // 65- data << uint32(0x542) << uint32(0x0); // 66- data << uint32(0x540) << uint32(0x0); // 67- data << uint32(0x53f) << uint32(0x0); // 68- data << uint32(0x53e) << uint32(0x0); // 69- data << uint32(0x53d) << uint32(0x0); // 70- data << uint32(0x53c) << uint32(0x0); // 71- data << uint32(0x53b) << uint32(0x0); // 72- data << uint32(0x53a) << uint32(0x1); // 73- data << uint32(0x539) << uint32(0x0); // 74- data << uint32(0x538) << uint32(0x0); // 75- data << uint32(0x537) << uint32(0x0); // 76- data << uint32(0x534) << uint32(0x0); // 77- data << uint32(0x533) << uint32(0x0); // 78- data << uint32(0x530) << uint32(0x0); // 79- data << uint32(0x52f) << uint32(0x0); // 80- data << uint32(0x52d) << uint32(0x1); // 81- break;- case 3277: // WS- if (bg && bg->GetTypeID() == BATTLEGROUND_WS)- bg->FillInitialWorldStates(data);- else- {- data << uint32(0x62d) << uint32(0x0); // 7 1581 alliance flag captures- data << uint32(0x62e) << uint32(0x0); // 8 1582 horde flag captures- data << uint32(0x609) << uint32(0x0); // 9 1545 unk, set to 1 on alliance flag pickup...- data << uint32(0x60a) << uint32(0x0); // 10 1546 unk, set to 1 on horde flag pickup, after drop it's -1- data << uint32(0x60b) << uint32(0x2); // 11 1547 unk- data << uint32(0x641) << uint32(0x3); // 12 1601 unk (max flag captures?)- data << uint32(0x922) << uint32(0x1); // 13 2338 horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)- data << uint32(0x923) << uint32(0x1); // 14 2339 alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)- }- break;- case 3358: // AB- if (bg && bg->GetTypeID() == BATTLEGROUND_AB)- bg->FillInitialWorldStates(data);- else- {- data << uint32(0x6e7) << uint32(0x0); // 7 1767 stables alliance- data << uint32(0x6e8) << uint32(0x0); // 8 1768 stables horde- data << uint32(0x6e9) << uint32(0x0); // 9 1769 unk, ST?- data << uint32(0x6ea) << uint32(0x0); // 10 1770 stables (show/hide)- data << uint32(0x6ec) << uint32(0x0); // 11 1772 farm (0 - horde controlled, 1 - alliance controlled)- data << uint32(0x6ed) << uint32(0x0); // 12 1773 farm (show/hide)- data << uint32(0x6ee) << uint32(0x0); // 13 1774 farm color- data << uint32(0x6ef) << uint32(0x0); // 14 1775 gold mine color, may be FM?- data << uint32(0x6f0) << uint32(0x0); // 15 1776 alliance resources- data << uint32(0x6f1) << uint32(0x0); // 16 1777 horde resources- data << uint32(0x6f2) << uint32(0x0); // 17 1778 horde bases- data << uint32(0x6f3) << uint32(0x0); // 18 1779 alliance bases- data << uint32(0x6f4) << uint32(0x7d0); // 19 1780 max resources (2000)- data << uint32(0x6f6) << uint32(0x0); // 20 1782 blacksmith color- data << uint32(0x6f7) << uint32(0x0); // 21 1783 blacksmith (show/hide)- data << uint32(0x6f8) << uint32(0x0); // 22 1784 unk, bs?- data << uint32(0x6f9) << uint32(0x0); // 23 1785 unk, bs?- data << uint32(0x6fb) << uint32(0x0); // 24 1787 gold mine (0 - horde contr, 1 - alliance contr)- data << uint32(0x6fc) << uint32(0x0); // 25 1788 gold mine (0 - conflict, 1 - horde)- data << uint32(0x6fd) << uint32(0x0); // 26 1789 gold mine (1 - show/0 - hide)- data << uint32(0x6fe) << uint32(0x0); // 27 1790 gold mine color- data << uint32(0x700) << uint32(0x0); // 28 1792 gold mine color, wtf?, may be LM?- data << uint32(0x701) << uint32(0x0); // 29 1793 lumber mill color (0 - conflict, 1 - horde contr)- data << uint32(0x702) << uint32(0x0); // 30 1794 lumber mill (show/hide)- data << uint32(0x703) << uint32(0x0); // 31 1795 lumber mill color color- data << uint32(0x732) << uint32(0x1); // 32 1842 stables (1 - uncontrolled)- data << uint32(0x733) << uint32(0x1); // 33 1843 gold mine (1 - uncontrolled)- data << uint32(0x734) << uint32(0x1); // 34 1844 lumber mill (1 - uncontrolled)- data << uint32(0x735) << uint32(0x1); // 35 1845 farm (1 - uncontrolled)- data << uint32(0x736) << uint32(0x1); // 36 1846 blacksmith (1 - uncontrolled)- data << uint32(0x745) << uint32(0x2); // 37 1861 unk- data << uint32(0x7a3) << uint32(0x708); // 38 1955 warning limit (1800)- }- break;- case 3483: // Hellfire Peninsula- data << uint32(0x9ba) << uint32(0x1); // 10- data << uint32(0x9b9) << uint32(0x1); // 11- data << uint32(0x9b5) << uint32(0x0); // 12- data << uint32(0x9b4) << uint32(0x1); // 13- data << uint32(0x9b3) << uint32(0x0); // 14- data << uint32(0x9b2) << uint32(0x0); // 15- data << uint32(0x9b1) << uint32(0x1); // 16- data << uint32(0x9b0) << uint32(0x0); // 17- data << uint32(0x9ae) << uint32(0x0); // 18 horde pvp objectives captured- data << uint32(0x9ac) << uint32(0x0); // 19- data << uint32(0x9a8) << uint32(0x0); // 20- data << uint32(0x9a7) << uint32(0x0); // 21- data << uint32(0x9a6) << uint32(0x1); // 22- break;- case 3519: // Terokkar Forest- data << uint32(0xa41) << uint32(0x0); // 10- data << uint32(0xa40) << uint32(0x14); // 11- data << uint32(0xa3f) << uint32(0x0); // 12- data << uint32(0xa3e) << uint32(0x0); // 13- data << uint32(0xa3d) << uint32(0x5); // 14- data << uint32(0xa3c) << uint32(0x0); // 15- data << uint32(0xa87) << uint32(0x0); // 16- data << uint32(0xa86) << uint32(0x0); // 17- data << uint32(0xa85) << uint32(0x0); // 18- data << uint32(0xa84) << uint32(0x0); // 19- data << uint32(0xa83) << uint32(0x0); // 20- data << uint32(0xa82) << uint32(0x0); // 21- data << uint32(0xa81) << uint32(0x0); // 22- data << uint32(0xa80) << uint32(0x0); // 23- data << uint32(0xa7e) << uint32(0x0); // 24- data << uint32(0xa7d) << uint32(0x0); // 25- data << uint32(0xa7c) << uint32(0x0); // 26- data << uint32(0xa7b) << uint32(0x0); // 27- data << uint32(0xa7a) << uint32(0x0); // 28- data << uint32(0xa79) << uint32(0x0); // 29- data << uint32(0x9d0) << uint32(0x5); // 30- data << uint32(0x9ce) << uint32(0x0); // 31- data << uint32(0x9cd) << uint32(0x0); // 32- data << uint32(0x9cc) << uint32(0x0); // 33- data << uint32(0xa88) << uint32(0x0); // 34- data << uint32(0xad0) << uint32(0x0); // 35- data << uint32(0xacf) << uint32(0x1); // 36- break;- case 3521: // Zangarmarsh- data << uint32(0x9e1) << uint32(0x0); // 10- data << uint32(0x9e0) << uint32(0x0); // 11- data << uint32(0x9df) << uint32(0x0); // 12- data << uint32(0xa5d) << uint32(0x1); // 13- data << uint32(0xa5c) << uint32(0x0); // 14- data << uint32(0xa5b) << uint32(0x1); // 15- data << uint32(0xa5a) << uint32(0x0); // 16- data << uint32(0xa59) << uint32(0x1); // 17- data << uint32(0xa58) << uint32(0x0); // 18- data << uint32(0xa57) << uint32(0x0); // 19- data << uint32(0xa56) << uint32(0x0); // 20- data << uint32(0xa55) << uint32(0x1); // 21- data << uint32(0xa54) << uint32(0x0); // 22- data << uint32(0x9e7) << uint32(0x0); // 23- data << uint32(0x9e6) << uint32(0x0); // 24- data << uint32(0x9e5) << uint32(0x0); // 25- data << uint32(0xa00) << uint32(0x0); // 26- data << uint32(0x9ff) << uint32(0x1); // 27- data << uint32(0x9fe) << uint32(0x0); // 28- data << uint32(0x9fd) << uint32(0x0); // 29- data << uint32(0x9fc) << uint32(0x1); // 30- data << uint32(0x9fb) << uint32(0x0); // 31- data << uint32(0xa62) << uint32(0x0); // 32- data << uint32(0xa61) << uint32(0x1); // 33- data << uint32(0xa60) << uint32(0x1); // 34- data << uint32(0xa5f) << uint32(0x0); // 35- break;- case 3698: // Nagrand Arena- data << uint32(0xa0f) << uint32(0x0); // 7- data << uint32(0xa10) << uint32(0x0); // 8- data << uint32(0xa11) << uint32(0x0); // 9- break;- case 3702: // Blade's Edge Arena- data << uint32(0x9f0) << uint32(0x0); // 7- data << uint32(0x9f1) << uint32(0x0); // 8- data << uint32(0x9f3) << uint32(0x0); // 9- break;- case 3968: // Ruins of Lordaeron- data << uint32(0xbb8) << uint32(0x0); // 7- data << uint32(0xbb9) << uint32(0x0); // 8- data << uint32(0xbba) << uint32(0x0); // 9- break;- case 3703: // Shattrath City- break;- default:- data << uint32(0x914) << uint32(0x0); // 7- data << uint32(0x913) << uint32(0x0); // 8- data << uint32(0x912) << uint32(0x0); // 9- data << uint32(0x915) << uint32(0x0); // 10- break;- }- GetSession()->SendPacket(&data);-}- uint32 Player::GetXPRestBonus(uint32 xp) { uint32 rested_bonus = (uint32)GetRestBonus(); // xp for each rested bonus@@ -16060,7 +15730,6 @@ SendInitialActionButtons(); SendInitialReputations(); UpdateZone(GetZoneId());- SendInitWorldStates(); // SMSG_SET_AURA_SINGLE Index: src/game/Player.h===================================================================--- src/game/Player.h (revision 5483)+++ src/game/Player.h (working copy)@@ -1643,8 +1643,6 @@ void CastItemEquipSpell(Item *item); void CastItemCombatSpell(Item *item,Unit* Target, WeaponAttackType attType); - void SendInitWorldStates();- void SendUpdateWorldState(uint32 Field, uint32 Value); void SendDirectMessage(WorldPacket *data); void SendAuraDurationsForTarget(Unit* target);