aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobingad <robingad@rambler.ru>2021-01-25 19:29:59 +0200
committerGitHub <noreply@github.com>2021-01-25 18:29:59 +0100
commit5274f5ea545d19d0aa1a0f26b3c09c1585862304 (patch)
tree991259ca9c2badb34acd041d9b0d1eea5966e3dd
parentafbe45091d13ff535548da30442f2985c985347e (diff)
Core/Commands: Fixed .go zonexy command (#25825)
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp11
-rw-r--r--src/server/scripts/Commands/cs_go.cpp3
2 files changed, 9 insertions, 5 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index f0400732fde..0c8df3a5b78 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -3119,7 +3119,7 @@ bool DB2Manager::GetUiMapPosition(float x, float y, float z, int32 mapId, int32
DBCPosition2D uiPosition
{
- // x any y are swapped
+ // x and y are swapped
((1.0f - (1.0f - relativePosition.Y)) * uiMapAssignment->UiMin.X) + ((1.0f - relativePosition.Y) * uiMapAssignment->UiMax.X),
((1.0f - (1.0f - relativePosition.X)) * uiMapAssignment->UiMin.Y) + ((1.0f - relativePosition.X) * uiMapAssignment->UiMax.Y)
};
@@ -3144,10 +3144,11 @@ void DB2Manager::Zone2MapCoordinates(uint32 areaId, float& x, float& y) const
if (assignment.second->MapID >= 0 && assignment.second->MapID != areaEntry->ContinentID)
continue;
- float tmpY = 1.0 - ((y - assignment.second->UiMin.Y) / (assignment.second->UiMax.Y - assignment.second->UiMin.Y));
- float tmpX = 1.0 - ((x - assignment.second->UiMin.X) / (assignment.second->UiMax.X - assignment.second->UiMin.X));
- y = ((1.0 - tmpY) * assignment.second->Region[0].X) + (tmpY * assignment.second->Region[1].X);
- x = ((1.0 - tmpX) * assignment.second->Region[0].Y) + (tmpX * assignment.second->Region[1].Y);
+ float tmpY = (y - assignment.second->UiMax.Y) / (assignment.second->UiMin.Y - assignment.second->UiMax.Y);
+ float tmpX = (x - assignment.second->UiMax.X) / (assignment.second->UiMin.X - assignment.second->UiMax.X);
+ x = assignment.second->Region[0].X + tmpY * (assignment.second->Region[1].X - assignment.second->Region[0].X);
+ y = assignment.second->Region[0].Y + tmpX * (assignment.second->Region[1].Y - assignment.second->Region[0].Y);
+
break;
}
}
diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp
index e49e81c7e83..7e0c3624cd5 100644
--- a/src/server/scripts/Commands/cs_go.cpp
+++ b/src/server/scripts/Commands/cs_go.cpp
@@ -505,6 +505,9 @@ public:
return false;
}
+ x /= 100.0f;
+ y /= 100.0f;
+
sDB2Manager.Zone2MapCoordinates(areaEntry->ParentAreaID ? uint32(areaEntry->ParentAreaID) : areaId, x, y);
if (!MapManager::IsValidMapCoord(zoneEntry->ContinentID, x, y))