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 @@ -2741,10 +2741,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", nullptr, false);
m_Events.AddEvent("onClientPlayerMarkerLeave", "marker, matchingDimension", nullptr, false);

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

Expand Down
52 changes: 34 additions & 18 deletions Client/mods/deathmatch/logic/CClientMarker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,28 +410,44 @@ void CClientMarker::StreamOut()
}
}

void CClientMarker::Callback_OnCollision(CClientColShape& Shape, CClientEntity& Entity)
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)
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
Loading