aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-04-09 17:24:39 +0200
committerShauren <shauren.trinity@gmail.com>2013-04-09 17:24:39 +0200
commit12a828fdbc01b9fca817829f9da3be2cf8cedf46 (patch)
treebedf2c3cf036f4e56635f4e41c41b4e72f9418a3 /src/server/scripts/Commands
parentc34fd8d862fa85e8e1ed9d6abac349647f6cc082 (diff)
Core/Movement
* Implemented a generic way of sending movement packets depending on who controls the unit (player or server controlled) * Added possibility to specify extra elements in movement packets (such as speed, extra passenger guid, collision height and similar) without having to add a special element only for these * Removed Unit::SendMovementFlagUpdate as it was something working only in 3.3.5a and earlier (no serverside HEARTBEAT opcode exists now)
Diffstat (limited to 'src/server/scripts/Commands')
-rw-r--r--src/server/scripts/Commands/cs_cheat.cpp15
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp10
-rw-r--r--src/server/scripts/Commands/cs_gm.cpp10
3 files changed, 26 insertions, 9 deletions
diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp
index 3ca81e3e6f3..aeac475fdb1 100644
--- a/src/server/scripts/Commands/cs_cheat.cpp
+++ b/src/server/scripts/Commands/cs_cheat.cpp
@@ -185,10 +185,11 @@ public:
std::string argstr = (char*)args;
+ Player* target = handler->GetSession()->GetPlayer();
if (!*args)
{
- argstr = (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_WATERWALK)) ? "off" : "on";
- if (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_WATERWALK))
+ argstr = (target->GetCommandStatus(CHEAT_WATERWALK)) ? "off" : "on";
+ if (target->GetCommandStatus(CHEAT_WATERWALK))
argstr = "off";
else
argstr = "on";
@@ -196,15 +197,17 @@ public:
if (argstr == "off")
{
- handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_WATERWALK);
- handler->GetSession()->GetPlayer()->SendMovementSetWaterWalking(false); // OFF
+ target->SetCommandStatusOff(CHEAT_WATERWALK);
+ target->RemoveUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
+ target->SendMovementWaterWalking(); // OFF
handler->SendSysMessage("Waterwalking is OFF. You can't walk on water.");
return true;
}
else if (argstr == "on")
{
- handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_WATERWALK);
- handler->GetSession()->GetPlayer()->SendMovementSetWaterWalking(true); // ON
+ target->SetCommandStatusOn(CHEAT_WATERWALK);
+ target->AddUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
+ target->SendMovementWaterWalking(); // ON
handler->SendSysMessage("Waterwalking is ON. You can walk on water.");
return true;
}
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index 56b8d251de6..1c3968cae8e 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -1331,7 +1331,15 @@ public:
target->SetExtraUnitMovementFlags(moveFlagsExtra);
}
- target->SendMovementFlagUpdate();
+ if (target->GetTypeId() != TYPEID_PLAYER)
+ target->DestroyForNearbyPlayers(); // Force new SMSG_UPDATE_OBJECT:CreateObject
+ else
+ {
+ WorldPacket data(SMSG_PLAYER_MOVE);
+ target->WriteMovementInfo(data);
+ target->SendMessageToSet(&data, true);
+ }
+
handler->PSendSysMessage(LANG_MOVEFLAGS_SET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags());
}
diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp
index a99957a07c0..e0c338a2dbf 100644
--- a/src/server/scripts/Commands/cs_gm.cpp
+++ b/src/server/scripts/Commands/cs_gm.cpp
@@ -103,9 +103,15 @@ public:
WorldPacket data;
if (strncmp(args, "on", 3) == 0)
- target->SendMovementSetCanFly(true);
+ {
+ target->AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY);
+ target->SendMovementCanFlyChange();
+ }
else if (strncmp(args, "off", 4) == 0)
- target->SendMovementSetCanFly(false);
+ {
+ target->RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_FLY);
+ target->SendMovementCanFlyChange();
+ }
else
{
handler->SendSysMessage(LANG_USE_BOL);