From 8bce35372c5d7d851549fa96c0ac8ece88e7401f Mon Sep 17 00:00:00 2001 From: Nico <122193236+Nico8340@users.noreply.github.com> Date: Tue, 27 Feb 2024 01:27:23 +0100 Subject: [PATCH 1/4] Add events Adding new events to the built-in events --- Client/mods/deathmatch/logic/CClientGame.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Client/mods/deathmatch/logic/CClientGame.cpp b/Client/mods/deathmatch/logic/CClientGame.cpp index 63bd6174bec..cde079fd690 100644 --- a/Client/mods/deathmatch/logic/CClientGame.cpp +++ b/Client/mods/deathmatch/logic/CClientGame.cpp @@ -2744,7 +2744,10 @@ void CClientGame::AddBuiltInEvents() m_Events.AddEvent("onClientMarkerHit", "entity, matchingDimension", NULL, false); m_Events.AddEvent("onClientMarkerLeave", "entity, matchingDimension", NULL, 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); From 08a5abfe9643f6b4fc35a980c0e98c013416a6d7 Mon Sep 17 00:00:00 2001 From: Nico <122193236+Nico8340@users.noreply.github.com> Date: Tue, 27 Feb 2024 01:28:05 +0100 Subject: [PATCH 2/4] Add logic Fix old logic, call new events --- .../mods/deathmatch/logic/CClientMarker.cpp | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/Client/mods/deathmatch/logic/CClientMarker.cpp b/Client/mods/deathmatch/logic/CClientMarker.cpp index d193ab1823d..e15582046db 100644 --- a/Client/mods/deathmatch/logic/CClientMarker.cpp +++ b/Client/mods/deathmatch/logic/CClientMarker.cpp @@ -412,25 +412,41 @@ void CClientMarker::StreamOut() void CClientMarker::Callback_OnCollision(CClientColShape& Shape, CClientEntity& Entity) { - if (IS_PLAYER(&Entity)) + if (GetInterior() == Entity.GetInterior()) { // Call the marker hit event CLuaArguments Arguments; - Arguments.PushElement(&Entity); // player that hit it - Arguments.PushBoolean((GetDimension() == Entity.GetDimension())); // matching dimension? + Arguments.PushElement(&Entity); // Hit element + Arguments.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? CallEvent("onClientMarkerHit", Arguments, true); + + if (IS_PLAYER(&Entity)) + { + 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)) + if (GetInterior() == Entity.GetInterior()) { // Call the marker hit event CLuaArguments Arguments; - Arguments.PushElement(&Entity); // player that hit it - Arguments.PushBoolean((GetDimension() == Entity.GetDimension())); // matching dimension? + Arguments.PushElement(&Entity); // Hit element + Arguments.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? CallEvent("onClientMarkerLeave", Arguments, true); + + if (IS_PLAYER(&Entity)) + { + CLuaArguments Arguments2; + Arguments2.PushElement(this); // marker + Arguments2.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? + Entity.CallEvent("onPlayerMarkerLeave", Arguments2, false); + } } } From 4d465e2bb51ea95dd9b98045e87847a29ebd3a1d Mon Sep 17 00:00:00 2001 From: Nico <122193236+Nico8340@users.noreply.github.com> Date: Tue, 20 Aug 2024 23:08:19 +0200 Subject: [PATCH 3/4] Make suggested changes --- Client/mods/deathmatch/logic/CClientGame.cpp | 4 +- .../mods/deathmatch/logic/CClientMarker.cpp | 60 +++++++++---------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Client/mods/deathmatch/logic/CClientGame.cpp b/Client/mods/deathmatch/logic/CClientGame.cpp index 749ed93bd33..84d3ba487c6 100644 --- a/Client/mods/deathmatch/logic/CClientGame.cpp +++ b/Client/mods/deathmatch/logic/CClientGame.cpp @@ -2728,8 +2728,8 @@ 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); m_Events.AddEvent("onClientPlayerMarkerHit", "marker, matchingDimension", NULL, false); m_Events.AddEvent("onClientPlayerMarkerLeave", "marker, matchingDimension", NULL, false); diff --git a/Client/mods/deathmatch/logic/CClientMarker.cpp b/Client/mods/deathmatch/logic/CClientMarker.cpp index c417449c996..fc2d73c752f 100644 --- a/Client/mods/deathmatch/logic/CClientMarker.cpp +++ b/Client/mods/deathmatch/logic/CClientMarker.cpp @@ -412,42 +412,42 @@ void CClientMarker::StreamOut() void CClientMarker::Callback_OnCollision(CClientColShape& Shape, CClientEntity& Entity) { - if (GetInterior() == Entity.GetInterior()) - { - // Call the marker hit event - CLuaArguments Arguments; - Arguments.PushElement(&Entity); // Hit element - Arguments.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? - CallEvent("onClientMarkerHit", Arguments, true); + if (GetInterior() != Entity.GetInterior()) + return; - if (IS_PLAYER(&Entity)) - { - CLuaArguments Arguments2; - Arguments2.PushElement(this); // marker - Arguments2.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? - Entity.CallEvent("onClientPlayerMarkerHit", Arguments2, false); - } - } + // 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 (GetInterior() == Entity.GetInterior()) - { - // Call the marker hit event - CLuaArguments Arguments; - Arguments.PushElement(&Entity); // Hit element - Arguments.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? - CallEvent("onClientMarkerLeave", Arguments, true); + if (GetInterior() != Entity.GetInterior()) + return; - if (IS_PLAYER(&Entity)) - { - CLuaArguments Arguments2; - Arguments2.PushElement(this); // marker - Arguments2.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? - Entity.CallEvent("onPlayerMarkerLeave", Arguments2, false); - } - } + // 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) From a5c2b6399e287765f65dfb7e878394055aecd027 Mon Sep 17 00:00:00 2001 From: Nico <122193236+Nico8340@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:36:23 +0200 Subject: [PATCH 4/4] Make suggested changes --- Client/mods/deathmatch/logic/CClientGame.cpp | 4 +- .../mods/deathmatch/logic/CClientMarker.cpp | 44 +++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Client/mods/deathmatch/logic/CClientGame.cpp b/Client/mods/deathmatch/logic/CClientGame.cpp index 84d3ba487c6..50bf7871439 100644 --- a/Client/mods/deathmatch/logic/CClientGame.cpp +++ b/Client/mods/deathmatch/logic/CClientGame.cpp @@ -2731,8 +2731,8 @@ void CClientGame::AddBuiltInEvents() m_Events.AddEvent("onClientMarkerHit", "entity, matchingDimension", nullptr, false); m_Events.AddEvent("onClientMarkerLeave", "entity, matchingDimension", nullptr, false); - m_Events.AddEvent("onClientPlayerMarkerHit", "marker, matchingDimension", NULL, false); - m_Events.AddEvent("onClientPlayerMarkerLeave", "marker, matchingDimension", NULL, false); + 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); diff --git a/Client/mods/deathmatch/logic/CClientMarker.cpp b/Client/mods/deathmatch/logic/CClientMarker.cpp index fc2d73c752f..05fe69143f6 100644 --- a/Client/mods/deathmatch/logic/CClientMarker.cpp +++ b/Client/mods/deathmatch/logic/CClientMarker.cpp @@ -410,44 +410,44 @@ void CClientMarker::StreamOut() } } -void CClientMarker::Callback_OnCollision(CClientColShape& Shape, CClientEntity& Entity) +void CClientMarker::Callback_OnCollision(CClientColShape& shape, CClientEntity& entity) { - if (GetInterior() != Entity.GetInterior()) + 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); + CLuaArguments arguments; + arguments.PushElement(&entity); // Hit element + arguments.PushBoolean(GetDimension() == entity.GetDimension()); // Matching dimension? + CallEvent("onClientMarkerHit", arguments, true); - if (!IS_PLAYER(&Entity)) + if (!IS_PLAYER(&entity)) return; - CLuaArguments Arguments2; - Arguments2.PushElement(this); // marker - Arguments2.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? - Entity.CallEvent("onClientPlayerMarkerHit", Arguments2, false); + 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 (GetInterior() != Entity.GetInterior()) + 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); + CLuaArguments arguments; + arguments.PushElement(&entity); // Hit element + arguments.PushBoolean(GetDimension() == entity.GetDimension()); // Matching dimension? + CallEvent("onClientMarkerLeave", arguments, true); - if (!IS_PLAYER(&Entity)) + if (!IS_PLAYER(&entity)) return; - CLuaArguments Arguments2; - Arguments2.PushElement(this); // marker - Arguments2.PushBoolean(GetDimension() == Entity.GetDimension()); // Matching dimension? - Entity.CallEvent("onPlayerMarkerLeave", Arguments2, false); + CLuaArguments arguments2; + arguments2.PushElement(this); // marker + arguments2.PushBoolean(GetDimension() == entity.GetDimension()); // Matching dimension? + entity.CallEvent("onPlayerMarkerLeave", arguments2, false); } void CClientMarker::CreateOfType(int iType)