diff --git a/SDK b/SDK index 3ee7bc4ab..324eb8083 160000 --- a/SDK +++ b/SDK @@ -1 +1 @@ -Subproject commit 3ee7bc4ab20c22359c34c08c38f93815b44bffd5 +Subproject commit 324eb8083f8e32d973353d41288679e52544e22f diff --git a/Server/Components/NPCs/NPC/npc.cpp b/Server/Components/NPCs/NPC/npc.cpp index 0aab1c4ad..77397fe20 100644 --- a/Server/Components/NPCs/NPC/npc.cpp +++ b/Server/Components/NPCs/NPC/npc.cpp @@ -280,6 +280,24 @@ void NPC::setVehicleRotation(const GTAQuat& rotation, bool immediateUpdate) } } +Vector3 NPC::getVehiclePosition() const +{ + if (vehicle_ && vehicleSeat_ != SEAT_NONE) + { + return position_; + } + return Vector3(0.0f, 0.0f, 0.0f); +} + +GTAQuat NPC::getVehicleRotation() const +{ + if (vehicle_ && vehicleSeat_ != SEAT_NONE) + { + return rotation_; + } + return GTAQuat(); +} + int NPC::getVirtualWorld() const { return player_->getVirtualWorld(); diff --git a/Server/Components/NPCs/NPC/npc.hpp b/Server/Components/NPCs/NPC/npc.hpp index e29345b6c..83261c3ae 100644 --- a/Server/Components/NPCs/NPC/npc.hpp +++ b/Server/Components/NPCs/NPC/npc.hpp @@ -262,6 +262,10 @@ class NPC : public INPC, public PoolIDProvider, public NoCopy void setVehicleRotation(const GTAQuat& rotation, bool immediateUpdate) override; + Vector3 getVehiclePosition() const override; + + GTAQuat getVehicleRotation() const override; + void setPositionHandled(const Vector3& position, bool immediateUpdate) { if (vehicle_ && vehicleSeat_ != SEAT_NONE) diff --git a/Server/Components/Pawn/Scripting/NPC/Natives.cpp b/Server/Components/Pawn/Scripting/NPC/Natives.cpp index a148d96ff..a4f67654d 100644 --- a/Server/Components/Pawn/Scripting/NPC/Natives.cpp +++ b/Server/Components/Pawn/Scripting/NPC/Natives.cpp @@ -80,6 +80,12 @@ SCRIPT_API(NPC_SetVehiclePos, bool(INPC& npc, Vector3 position)) return true; } +SCRIPT_API(NPC_GetVehiclePos, bool(INPC& npc, Vector3& position)) +{ + position = npc.getVehiclePosition(); + return true; +} + SCRIPT_API(NPC_GetPos, bool(INPC& npc, Vector3& position)) { position = npc.getPosition(); @@ -98,6 +104,12 @@ SCRIPT_API(NPC_SetVehicleRot, bool(INPC& npc, Vector3 rotation)) return true; } +SCRIPT_API(NPC_GetVehicleRot, bool(INPC& npc, Vector3& rotation)) +{ + rotation = npc.getVehicleRotation().ToEuler(); + return true; +} + SCRIPT_API(NPC_GetRot, bool(INPC& npc, Vector3& rotation)) { rotation = npc.getRotation().ToEuler();