[12211] Fix taxies

Original author: @Shauren

Signed-off-by: Yaki Khadafi <elsoldollo@gmail.com>
This commit is contained in:
Yaki Khadafi 2012-09-10 13:35:46 +03:00 committed by Antz
parent 9690f8d80d
commit 257afbf540
8 changed files with 37 additions and 37 deletions

View file

@ -771,8 +771,8 @@ void LoadDBCStores(const std::string& dataPath)
}
// valid taxi network node
uint8 field = (uint8)((i - 1) / 32);
uint32 submask = 1<<((i-1)%32);
uint8 field = (uint8)((i - 1) / 8);
uint32 submask = 1 << ((i-1) % 8);
sTaxiNodesMask[field] |= submask;
if (node->MountCreatureID[0] && node->MountCreatureID[0] != 32981)
@ -787,9 +787,8 @@ void LoadDBCStores(const std::string& dataPath)
sOldContinentsNodesMask[field] |= submask;
// fix DK node at Ebon Hold
if (i == 315) {
if (i == 315)
((TaxiNodesEntry*)node)->MountCreatureID[1] = 32981;
}
}
}

View file

@ -2446,6 +2446,6 @@ struct TaxiPathNodePtr
typedef Path<TaxiPathNodePtr,TaxiPathNodeEntry const> TaxiPathNodeList;
typedef std::vector<TaxiPathNodeList> TaxiPathNodesByPath;
#define TaxiMaskSize 14
typedef uint32 TaxiMask[TaxiMaskSize];
#define TaxiMaskSize 114
typedef uint8 TaxiMask[TaxiMaskSize];
#endif

View file

@ -5244,8 +5244,8 @@ uint32 ObjectMgr::GetNearestTaxiNode(float x, float y, float z, uint32 mapid, Te
if (!node || node->map_id != mapid || !node->MountCreatureID[team == ALLIANCE ? 1 : 0])
continue;
uint8 field = (uint8)((i - 1) / 32);
uint32 submask = 1 << ((i - 1) % 32);
uint8 field = (uint8)((i - 1) / 8);
uint8 submask = 1 << ((i - 1) % 8);
// skip not taxi network nodes
if ((sTaxiNodesMask[field] & submask) == 0)

View file

@ -491,13 +491,13 @@ void InitializeOpcodes()
//OPCODE(CMSG_TAXICLEARALLNODES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(CMSG_TAXIENABLEALLNODES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(CMSG_TAXISHOWNODES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(SMSG_SHOWTAXINODES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_TAXINODE_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiNodeStatusQueryOpcode );
//OPCODE(SMSG_TAXINODE_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_TAXIQUERYAVAILABLENODES, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes );
//OPCODE(CMSG_ACTIVATETAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode );
//OPCODE(SMSG_ACTIVATETAXIREPLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_NEW_TAXI_PATH, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(SMSG_SHOWTAXINODES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_TAXINODE_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiNodeStatusQueryOpcode );
OPCODE(SMSG_TAXINODE_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_TAXIQUERYAVAILABLENODES, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes );
OPCODE(CMSG_ACTIVATETAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode );
OPCODE(SMSG_ACTIVATETAXIREPLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(SMSG_NEW_TAXI_PATH, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_TRAINER_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTrainerListOpcode );
OPCODE(SMSG_TRAINER_LIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_TRAINER_BUY_SPELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTrainerBuySpellOpcode );
@ -847,7 +847,7 @@ void InitializeOpcodes()
//OPCODE(CMSG_GM_NUKE_ACCOUNT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(MSG_GM_DESTROY_CORPSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(CMSG_GM_DESTROY_ONLINE_CORPSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(CMSG_ACTIVATETAXIEXPRESS, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiExpressOpcode );
OPCODE(CMSG_ACTIVATETAXIEXPRESS, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiExpressOpcode );
//OPCODE(SMSG_SET_FACTION_ATWAR, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_GAMETIMEBIAS_SET, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_DEBUG_ACTIONS_START, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@ -966,7 +966,7 @@ void InitializeOpcodes()
//OPCODE(SMSG_SPLINE_SET_FLIGHT_BACK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_MAELSTROM_INVALIDATE_CACHE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//OPCODE(SMSG_FLIGHT_SPLINE_SYNC, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_SET_TAXI_BENCHMARK_MODE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTaxiBenchmarkOpcode );
OPCODE(CMSG_SET_TAXI_BENCHMARK_MODE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTaxiBenchmarkOpcode );
//OPCODE(SMSG_JOINED_BATTLEGROUND_QUEUE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(SMSG_REALM_SPLIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_REALM_SPLIT, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRealmSplitOpcode );
@ -1232,7 +1232,7 @@ void InitializeOpcodes()
//OPCODE(SMSG_AUCTION_LIST_PENDING_SALES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_MODIFY_COOLDOWN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_PET_UPDATE_COMBO_POINTS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_ENABLETAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes );
OPCODE(CMSG_ENABLETAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes );
//OPCODE(SMSG_PRE_RESURRECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(SMSG_AURA_UPDATE_ALL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(SMSG_AURA_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );

View file

@ -476,13 +476,13 @@ enum Opcodes
CMSG_TAXICLEARALLNODES = 0x11A7,
CMSG_TAXIENABLEALLNODES = 0x11A8,
CMSG_TAXISHOWNODES = 0x11A9,
SMSG_SHOWTAXINODES = 0x11AA,
CMSG_TAXINODE_STATUS_QUERY = 0x11AB,
SMSG_TAXINODE_STATUS = 0x11AC,
CMSG_TAXIQUERYAVAILABLENODES = 0x11AD,
CMSG_ACTIVATETAXI = 0x11AE,
SMSG_ACTIVATETAXIREPLY = 0x11AF,
SMSG_NEW_TAXI_PATH = 0x11B0,
SMSG_SHOWTAXINODES = 0x2A36, // 4.3.4 15595
CMSG_TAXINODE_STATUS_QUERY = 0x2F25, // 4.3.4 15595
SMSG_TAXINODE_STATUS = 0x2936, // 4.3.4 15595
CMSG_TAXIQUERYAVAILABLENODES = 0x6C06, // 4.3.4 15595
CMSG_ACTIVATETAXI = 0x6E06, // 4.3.4 15595
SMSG_ACTIVATETAXIREPLY = 0x6A37, // 4.3.4 15595
SMSG_NEW_TAXI_PATH = 0x4B35, // 4.3.4 15595
CMSG_TRAINER_LIST = 0x2336, // 4.3.4 15595
SMSG_TRAINER_LIST = 0x4414, // 4.3.4 15595
CMSG_TRAINER_BUY_SPELL = 0x4415, // 4.3.4 15595
@ -832,7 +832,7 @@ enum Opcodes
CMSG_GM_NUKE_ACCOUNT = 0x1310,
MSG_GM_DESTROY_CORPSE = 0x1311,
CMSG_GM_DESTROY_ONLINE_CORPSE = 0x1312,
CMSG_ACTIVATETAXIEXPRESS = 0x1313,
CMSG_ACTIVATETAXIEXPRESS = 0x0515, // 4.3.4 15595
SMSG_SET_FACTION_ATWAR = 0x1314,
SMSG_GAMETIMEBIAS_SET = 0x1315,
CMSG_DEBUG_ACTIONS_START = 0x1316,
@ -951,7 +951,7 @@ enum Opcodes
SMSG_SPLINE_SET_FLIGHT_BACK_SPEED = 0x1387,
CMSG_MAELSTROM_INVALIDATE_CACHE = 0x1388,
SMSG_FLIGHT_SPLINE_SYNC = 0x1389,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x138A,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x4314, // 4.3.4 15595
SMSG_JOINED_BATTLEGROUND_QUEUE = 0x138B,
SMSG_REALM_SPLIT = 0x2714, // 4.3.4 15595
CMSG_REALM_SPLIT = 0x2906, // 4.3.4 15595
@ -1217,7 +1217,7 @@ enum Opcodes
SMSG_AUCTION_LIST_PENDING_SALES = 0x1491,
SMSG_MODIFY_COOLDOWN = 0x6016, // 4.3.4 15595
SMSG_PET_UPDATE_COMBO_POINTS = 0x1493,
CMSG_ENABLETAXI = 0x1494,
CMSG_ENABLETAXI = 0x0C16, // 4.3.4 15595
SMSG_PRE_RESURRECT = 0x1495,
SMSG_AURA_UPDATE_ALL = 0x6916, // 4.3.4 15595
SMSG_AURA_UPDATE = 0x4707, // 4.3.4 15595

View file

@ -180,21 +180,22 @@ void PlayerTaxi::LoadTaxiMask(const char* data)
(index < TaxiMaskSize) && (iter != tokens.end()); ++iter, ++index)
{
// load and set bits only for existing taxi nodes
m_taximask[index] = sTaxiNodesMask[index] & uint32(atol((*iter).c_str()));
m_taximask[index] = sTaxiNodesMask[index] & uint8(atol((*iter).c_str()));
}
}
void PlayerTaxi::AppendTaximaskTo(ByteBuffer& data, bool all)
{
data << uint32(TaxiMaskSize);
if (all)
{
for (uint8 i = 0; i < TaxiMaskSize; ++i)
data << uint32(sTaxiNodesMask[i]); // all existing nodes
data << uint8(sTaxiNodesMask[i]); // all existing nodes
}
else
{
for (uint8 i = 0; i < TaxiMaskSize; ++i)
data << uint32(m_taximask[i]); // known nodes
data << uint8(m_taximask[i]); // known nodes
}
}
@ -262,7 +263,7 @@ uint32 PlayerTaxi::GetCurrentTaxiPath() const
std::ostringstream& operator<< (std::ostringstream& ss, PlayerTaxi const& taxi)
{
for (int i = 0; i < TaxiMaskSize; ++i)
ss << taxi.m_taximask[i] << " ";
ss << uint32(taxi.m_taximask[i]) << " "; // cast to prevent conversion to char
return ss;
}

View file

@ -915,14 +915,14 @@ class MANGOS_DLL_SPEC PlayerTaxi
bool IsTaximaskNodeKnown(uint32 nodeidx) const
{
uint8 field = uint8((nodeidx - 1) / 32);
uint32 submask = 1 << ((nodeidx - 1) % 32);
uint8 field = uint8((nodeidx - 1) / 8);
uint8 submask = 1 << ((nodeidx - 1) % 8);
return (m_taximask[field] & submask) == submask;
}
bool SetTaximaskNode(uint32 nodeidx)
{
uint8 field = uint8((nodeidx - 1) / 32);
uint32 submask = 1 << ((nodeidx - 1) % 32);
uint8 field = uint8((nodeidx - 1) / 8);
uint8 submask = 1 << ((nodeidx - 1) % 8);
if ((m_taximask[field] & submask) != submask)
{
m_taximask[field] |= submask;

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "12210"
#define REVISION_NR "12211"
#endif // __REVISION_NR_H__