mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 19:37:03 +00:00
[12211] Fix taxies
Original author: @Shauren Signed-off-by: Yaki Khadafi <elsoldollo@gmail.com>
This commit is contained in:
parent
9690f8d80d
commit
257afbf540
8 changed files with 37 additions and 37 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 );
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "12210"
|
||||
#define REVISION_NR "12211"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue