Skip to content
Merged
9 changes: 6 additions & 3 deletions Client/mods/deathmatch/logic/CClientGame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2728,10 +2728,13 @@ void CClientGame::AddBuiltInEvents()
m_Events.AddEvent("onClientCursorMove", "relativeX, relativeX, absoluteX, absoluteY, worldX, worldY, worldZ", NULL, false);

// Marker events
m_Events.AddEvent("onClientMarkerHit", "entity, matchingDimension", NULL, false);
m_Events.AddEvent("onClientMarkerLeave", "entity, matchingDimension", NULL, false);
m_Events.AddEvent("onClientMarkerHit", "entity, matchingDimension", nullptr, false);
m_Events.AddEvent("onClientMarkerLeave", "entity, matchingDimension", nullptr, false);

// Marker events
m_Events.AddEvent("onClientPlayerMarkerHit", "marker, matchingDimension", NULL, false);
m_Events.AddEvent("onClientPlayerMarkerLeave", "marker, matchingDimension", NULL, false);

// Pickup events
m_Events.AddEvent("onClientPickupHit", "entity, matchingDimension", NULL, false);
m_Events.AddEvent("onClientPickupLeave", "entity, matchingDimension", NULL, false);

Expand Down
48 changes: 32 additions & 16 deletions Client/mods/deathmatch/logic/CClientMarker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -412,26 +412,42 @@ void CClientMarker::StreamOut()

void CClientMarker::Callback_OnCollision(CClientColShape& Shape, CClientEntity& Entity)
{
if (IS_PLAYER(&Entity))
{
// Call the marker hit event
CLuaArguments Arguments;
Arguments.PushElement(&Entity); // player that hit it
Arguments.PushBoolean((GetDimension() == Entity.GetDimension())); // matching dimension?
CallEvent("onClientMarkerHit", Arguments, true);
}
if (GetInterior() != Entity.GetInterior())
return;

// Call the marker hit event
CLuaArguments Arguments;
Arguments.PushElement(&Entity); // Hit element
Arguments.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension?
CallEvent("onClientMarkerHit", Arguments, true);

if (!IS_PLAYER(&Entity))
return;

CLuaArguments Arguments2;
Arguments2.PushElement(this); // marker
Arguments2.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension?
Entity.CallEvent("onClientPlayerMarkerHit", Arguments2, false);
}

void CClientMarker::Callback_OnLeave(CClientColShape& Shape, CClientEntity& Entity)
{
if (IS_PLAYER(&Entity))
{
// Call the marker hit event
CLuaArguments Arguments;
Arguments.PushElement(&Entity); // player that hit it
Arguments.PushBoolean((GetDimension() == Entity.GetDimension())); // matching dimension?
CallEvent("onClientMarkerLeave", Arguments, true);
}
if (GetInterior() != Entity.GetInterior())
return;

// Call the marker leave event
CLuaArguments Arguments;
Arguments.PushElement(&Entity); // Hit element
Arguments.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension?
CallEvent("onClientMarkerLeave", Arguments, true);

if (!IS_PLAYER(&Entity))
return;

CLuaArguments Arguments2;
Arguments2.PushElement(this); // marker
Arguments2.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension?
Entity.CallEvent("onPlayerMarkerLeave", Arguments2, false);
}

void CClientMarker::CreateOfType(int iType)
Expand Down