diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 632b65d98b..0d684789df 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -1641,7 +1641,7 @@ void CGame::AddBuiltInEvents() m_Events.AddEvent("onPlayerTriggerInvalidEvent", "eventName, isAdded, isRemote", nullptr, false); m_Events.AddEvent("onPlayerChangesProtectedData", "element, key, value", nullptr, false); m_Events.AddEvent("onPlayerChangesWorldSpecialProperty", "property, enabled", nullptr, false); - m_Events.AddEvent("onPlayerTeleport", "", nullptr, false); + m_Events.AddEvent("onPlayerTeleport", "previousX, previousY, previousZ, currentX, currentY, currentZ", nullptr, false); // Ped events m_Events.AddEvent("onPedVehicleEnter", "vehicle, seat, jacked", NULL, false); diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 2079adf2d2..144cdc661c 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -1477,6 +1477,12 @@ bool CStaticFunctionDefinitions::SetElementInterior(CElement* pElement, unsigned BitStream.pBitStream->Write(static_cast((bSetPosition) ? 1 : 0)); if (bSetPosition) { + if (IS_PLAYER(pElement)) + { + CPlayer* player = static_cast(pElement); + player->SetTeleported(true); + } + BitStream.pBitStream->Write(vecPosition.fX); BitStream.pBitStream->Write(vecPosition.fY); BitStream.pBitStream->Write(vecPosition.fZ); diff --git a/Server/mods/deathmatch/logic/packets/CPlayerPuresyncPacket.cpp b/Server/mods/deathmatch/logic/packets/CPlayerPuresyncPacket.cpp index 5aef18566f..151106979b 100644 --- a/Server/mods/deathmatch/logic/packets/CPlayerPuresyncPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CPlayerPuresyncPacket.cpp @@ -141,6 +141,12 @@ bool CPlayerPuresyncPacket::Read(NetBitStreamInterface& BitStream) if (!pSourcePlayer->GetTeleported()) { CLuaArguments arguments; + arguments.PushNumber(playerPosition.fX); + arguments.PushNumber(playerPosition.fY); + arguments.PushNumber(playerPosition.fZ); + arguments.PushNumber(position.data.vecPosition.fX); + arguments.PushNumber(position.data.vecPosition.fY); + arguments.PushNumber(position.data.vecPosition.fZ); pSourcePlayer->CallEvent("onPlayerTeleport", arguments, nullptr); }