Core/Packets: Use a single method to send SMSG_ACTIVATETAXIREPLY

Also fix a typo introduced in 703ad4889
This commit is contained in:
Nay
2012-02-18 23:03:41 +00:00
parent 703ad48890
commit 0a0233b215
6 changed files with 38 additions and 49 deletions
+10 -31
View File
@@ -20269,9 +20269,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
// not let cheating with start flight in time of logout process || while in combat || has type state: stunned || has type state: root // not let cheating with start flight in time of logout process || while in combat || has type state: stunned || has type state: root
if (GetSession()->isLogingOut() || isInCombat() || HasUnitState(UNIT_STATE_STUNNED) || HasUnitState(UNIT_STATE_ROOT)) if (GetSession()->isLogingOut() || isInCombat() || HasUnitState(UNIT_STATE_STUNNED) || HasUnitState(UNIT_STATE_ROOT))
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXIPLAYERBUSY);
data << uint32(ERR_TAXIPLAYERBUSY);
GetSession()->SendPacket(&data);
return false; return false;
} }
@@ -20284,26 +20282,20 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
// not let cheating with start flight mounted // not let cheating with start flight mounted
if (IsMounted()) if (IsMounted())
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXIPLAYERALREADYMOUNTED);
data << uint32(ERR_TAXIPLAYERALREADYMOUNTED);
GetSession()->SendPacket(&data);
return false; return false;
} }
if (IsInDisallowedMountForm()) if (IsInDisallowedMountForm())
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXIPLAYERSHAPESHIFTED);
data << uint32(ERR_TAXIPLAYERSHAPESHIFTED);
GetSession()->SendPacket(&data);
return false; return false;
} }
// not let cheating with start flight in time of logout process || if casting not finished || while in combat || if not use Spell's with EffectSendTaxi // not let cheating with start flight in time of logout process || if casting not finished || while in combat || if not use Spell's with EffectSendTaxi
if (IsNonMeleeSpellCasted(false)) if (IsNonMeleeSpellCasted(false))
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXIPLAYERBUSY);
data << uint32(ERR_TAXIPLAYERBUSY);
GetSession()->SendPacket(&data);
return false; return false;
} }
} }
@@ -20332,9 +20324,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
TaxiNodesEntry const* node = sTaxiNodesStore.LookupEntry(sourcenode); TaxiNodesEntry const* node = sTaxiNodesStore.LookupEntry(sourcenode);
if (!node) if (!node)
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXINOSUCHPATH);
data << uint32(ERR_TAXINOSUCHPATH);
GetSession()->SendPacket(&data);
return false; return false;
} }
@@ -20347,18 +20337,14 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
(node->z - GetPositionZ())*(node->z - GetPositionZ()) > (node->z - GetPositionZ())*(node->z - GetPositionZ()) >
(2*INTERACTION_DISTANCE)*(2*INTERACTION_DISTANCE)*(2*INTERACTION_DISTANCE)) (2*INTERACTION_DISTANCE)*(2*INTERACTION_DISTANCE)*(2*INTERACTION_DISTANCE))
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXITOOFARAWAY);
data << uint32(ERR_TAXITOOFARAWAY);
GetSession()->SendPacket(&data);
return false; return false;
} }
} }
// node must have pos if taxi master case (npc != NULL) // node must have pos if taxi master case (npc != NULL)
else if (npc) else if (npc)
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXIUNSPECIFIEDSERVERERROR);
data << uint32(ERR_TAXIUNSPECIFIEDSERVERERROR);
GetSession()->SendPacket(&data);
return false; return false;
} }
@@ -20421,9 +20407,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
// in spell case allow 0 model // in spell case allow 0 model
if ((mount_display_id == 0 && spellid == 0) || sourcepath == 0) if ((mount_display_id == 0 && spellid == 0) || sourcepath == 0)
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXIUNSPECIFIEDSERVERERROR);
data << uint32(ERR_TAXIUNSPECIFIEDSERVERERROR);
GetSession()->SendPacket(&data);
m_taxi.ClearTaxiDestinations(); m_taxi.ClearTaxiDestinations();
return false; return false;
} }
@@ -20435,9 +20419,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
if (money < totalcost) if (money < totalcost)
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXINOTENOUGHMONEY);
data << uint32(ERR_TAXINOTENOUGHMONEY);
GetSession()->SendPacket(&data);
m_taxi.ClearTaxiDestinations(); m_taxi.ClearTaxiDestinations();
return false; return false;
} }
@@ -20459,10 +20441,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
} }
else else
{ {
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); GetSession()->SendActivateTaxiReply(ERR_TAXIOK);
data << uint32(ERR_TAXIOK);
GetSession()->SendPacket(&data);
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_ACTIVATETAXIREPLY");
GetSession()->SendDoFlight(mount_display_id, sourcepath); GetSession()->SendDoFlight(mount_display_id, sourcepath);
} }
return true; return true;
-17
View File
@@ -466,23 +466,6 @@ enum PlayerFieldByte2Flags
PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW = 0x40 PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW = 0x40
}; };
enum ActivateTaxiReplies
{
ERR_TAXIOK = 0,
ERR_TAXIUNSPECIFIEDSERVERERROR = 1,
ERR_TAXINOSUCHPATH = 2,
ERR_TAXINOTENOUGHMONEY = 3,
ERR_TAXITOOFARAWAY = 4,
ERR_TAXINOVENDORNEARBY = 5,
ERR_TAXINOTVISITED = 6,
ERR_TAXIPLAYERBUSY = 7,
ERR_TAXIPLAYERALREADYMOUNTED = 8,
ERR_TAXIPLAYERSHAPESHIFTED = 9,
ERR_TAXIPLAYERMOVING = 10,
ERR_TAXISAMENODE = 11,
ERR_TAXINOTSTANDING = 12
};
enum MirrorTimerType enum MirrorTimerType
{ {
FATIGUE_TIMER = 0, FATIGUE_TIMER = 0,
+9
View File
@@ -292,3 +292,12 @@ void WorldSession::HandleActivateTaxiOpcode(WorldPacket & recv_data)
GetPlayer()->ActivateTaxiPathTo(nodes, npc); GetPlayer()->ActivateTaxiPathTo(nodes, npc);
} }
void WorldSession::SendActivateTaxiReply(ActivateTaxiReply reply)
{
WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4);
data << uint32(reply);
SendPacket(&data);
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_ACTIVATETAXIREPLY");
}
@@ -3405,4 +3405,21 @@ enum RemoveMethod
GROUP_REMOVEMETHOD_LEAVE = 2, GROUP_REMOVEMETHOD_LEAVE = 2,
}; };
enum ActivateTaxiReply
{
ERR_TAXIOK = 0,
ERR_TAXIUNSPECIFIEDSERVERERROR = 1,
ERR_TAXINOSUCHPATH = 2,
ERR_TAXINOTENOUGHMONEY = 3,
ERR_TAXITOOFARAWAY = 4,
ERR_TAXINOVENDORNEARBY = 5,
ERR_TAXINOTVISITED = 6,
ERR_TAXIPLAYERBUSY = 7,
ERR_TAXIPLAYERALREADYMOUNTED = 8,
ERR_TAXIPLAYERSHAPESHIFTED = 9,
ERR_TAXIPLAYERMOVING = 10,
ERR_TAXISAMENODE = 11,
ERR_TAXINOTSTANDING = 12
};
#endif #endif
+1
View File
@@ -571,6 +571,7 @@ class WorldSession
void HandleActivateTaxiOpcode(WorldPacket& recvPacket); void HandleActivateTaxiOpcode(WorldPacket& recvPacket);
void HandleActivateTaxiExpressOpcode(WorldPacket& recvPacket); void HandleActivateTaxiExpressOpcode(WorldPacket& recvPacket);
void HandleMoveSplineDoneOpcode(WorldPacket& recvPacket); void HandleMoveSplineDoneOpcode(WorldPacket& recvPacket);
void SendActivateTaxiReply(ActivateTaxiReply reply);
void HandleTabardVendorActivateOpcode(WorldPacket& recvPacket); void HandleTabardVendorActivateOpcode(WorldPacket& recvPacket);
void HandleBankerActivateOpcode(WorldPacket& recvPacket); void HandleBankerActivateOpcode(WorldPacket& recvPacket);
+1 -1
View File
@@ -342,7 +342,7 @@ class spell_dru_starfall_dummy : public SpellScriptLoader
Unit* caster = GetCaster(); Unit* caster = GetCaster();
// Shapeshifting into an animal form or mounting cancels the effect // Shapeshifting into an animal form or mounting cancels the effect
if (caster->GetCreatureType() == CREATURE_TYPE_BEAST() || caster->IsMounted()) if (caster->GetCreatureType() == CREATURE_TYPE_BEAST || caster->IsMounted())
{ {
if (SpellInfo const* spellInfo = GetTriggeringSpell()) if (SpellInfo const* spellInfo = GetTriggeringSpell())
caster->RemoveAurasDueToSpell(spellInfo->Id); caster->RemoveAurasDueToSpell(spellInfo->Id);