From 1a97446f34e63f57c0d0b2ad5bf3380ac01d0cab Mon Sep 17 00:00:00 2001 From: Kex Date: Sat, 4 Jul 2026 03:23:20 +0200 Subject: [PATCH 1/4] Ensure that map pointer is only spawned on server --- .../scripts/Game/ACE_Finger/GameMode/SCR_BaseGameMode.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/finger/scripts/Game/ACE_Finger/GameMode/SCR_BaseGameMode.c b/addons/finger/scripts/Game/ACE_Finger/GameMode/SCR_BaseGameMode.c index 5e191b3a2..1beb7f839 100644 --- a/addons/finger/scripts/Game/ACE_Finger/GameMode/SCR_BaseGameMode.c +++ b/addons/finger/scripts/Game/ACE_Finger/GameMode/SCR_BaseGameMode.c @@ -9,6 +9,9 @@ modded class SCR_BaseGameMode : BaseGameMode { super.OnPlayerRegistered(playerId); + if (!Replication.IsServer()) + return; + SCR_PlayerController playerController = SCR_PlayerController.Cast(GetGame().GetPlayerManager().GetPlayerController(playerId)); if (!playerController) return; @@ -37,6 +40,9 @@ modded class SCR_BaseGameMode : BaseGameMode { super.OnPlayerDisconnected(playerId, cause, timeout); + if (!Replication.IsServer()) + return; + ACE_Finger_MapPointer ptr; if (m_aACE_Finger_Pointers.Take(playerId, ptr)) SCR_EntityHelper.DeleteEntityAndChildren(ptr); From dd392c9769e8ace97f5d3acd97d449683095e912 Mon Sep 17 00:00:00 2001 From: Kex Date: Sat, 4 Jul 2026 03:23:42 +0200 Subject: [PATCH 2/4] Fix formatting --- .../Editor/UI/InfoDisplays/SCR_EditorPingInfoDisplay.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/finger/scripts/Game/ACE_Finger/Editor/UI/InfoDisplays/SCR_EditorPingInfoDisplay.c b/addons/finger/scripts/Game/ACE_Finger/Editor/UI/InfoDisplays/SCR_EditorPingInfoDisplay.c index d1f0879c8..cb7fa095e 100644 --- a/addons/finger/scripts/Game/ACE_Finger/Editor/UI/InfoDisplays/SCR_EditorPingInfoDisplay.c +++ b/addons/finger/scripts/Game/ACE_Finger/Editor/UI/InfoDisplays/SCR_EditorPingInfoDisplay.c @@ -46,7 +46,8 @@ modded class SCR_EditorPingInfoDisplay : SCR_InfoDisplay super.OnStartDraw(owner); m_pACE_Finger_EditorComponent = ACE_Finger_EditorComponent.Cast(ACE_Finger_EditorComponent.GetInstance(ACE_Finger_EditorComponent, true)); - if (!m_pACE_Finger_EditorComponent) return; + if (!m_pACE_Finger_EditorComponent) + return; m_pACE_Finger_EditorComponent.GetOnPingEntityRegister().Insert(OnPingEntityRegister); m_pACE_Finger_EditorComponent.GetOnPingEntityUnregister().Insert(OnPingEntityUnregister); @@ -62,7 +63,8 @@ modded class SCR_EditorPingInfoDisplay : SCR_InfoDisplay { super.OnStopDraw(owner); - if (!m_pACE_Finger_EditorComponent) return; + if (!m_pACE_Finger_EditorComponent) + return; m_pACE_Finger_EditorComponent.GetOnPingEntityRegister().Remove(OnPingEntityRegister); m_pACE_Finger_EditorComponent.GetOnPingEntityUnregister().Remove(OnPingEntityUnregister); From fe9bed023a985217b9e9e33b1aabf5eb82f484ac Mon Sep 17 00:00:00 2001 From: Kex Date: Sat, 4 Jul 2026 03:28:21 +0200 Subject: [PATCH 3/4] Make custom widget component with proper author visibility --- .../ACE_Finger_MapPointerWidgetComponent.c | 20 +++++++++++++++++++ .../Markers/SCR_MapMarkerWidgetComponent.c | 10 ---------- 2 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 addons/finger/scripts/Game/ACE_Finger/Map/Markers/ACE_Finger_MapPointerWidgetComponent.c delete mode 100644 addons/finger/scripts/Game/ACE_Finger/Map/Markers/SCR_MapMarkerWidgetComponent.c diff --git a/addons/finger/scripts/Game/ACE_Finger/Map/Markers/ACE_Finger_MapPointerWidgetComponent.c b/addons/finger/scripts/Game/ACE_Finger/Map/Markers/ACE_Finger_MapPointerWidgetComponent.c new file mode 100644 index 000000000..07e576cce --- /dev/null +++ b/addons/finger/scripts/Game/ACE_Finger/Map/Markers/ACE_Finger_MapPointerWidgetComponent.c @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------------------------ +//! Map marker layout component +//! Attached to root of marker base layout +class ACE_Finger_MapPointerWidgetComponent : SCR_MapMarkerWidgetComponent +{ + //------------------------------------------------------------------------------------------------ + void ResizeImage(float w, float h) + { + vector size = m_wMarkerIcon.GetSize(); + m_wMarkerIcon.SetSize(size[0] * w, size[1] * h); + } + + //------------------------------------------------------------------------------------------------ + //! Vanilla only shows author while mouse is hovering over the marker, but we want it to be permanently + //! shown when m_bShowAuthor is enabled + override protected void ShowAuthor(bool state) + { + super.ShowAuthor(m_bShowAuthor); + } +} diff --git a/addons/finger/scripts/Game/ACE_Finger/Map/Markers/SCR_MapMarkerWidgetComponent.c b/addons/finger/scripts/Game/ACE_Finger/Map/Markers/SCR_MapMarkerWidgetComponent.c deleted file mode 100644 index fc127f99f..000000000 --- a/addons/finger/scripts/Game/ACE_Finger/Map/Markers/SCR_MapMarkerWidgetComponent.c +++ /dev/null @@ -1,10 +0,0 @@ -//! Map marker layout component -//! Attached to root of marker base layout -modded class SCR_MapMarkerWidgetComponent : SCR_ScriptedWidgetComponent -{ - void ACE_ResizeImage(float w, float h) - { - vector size = m_wMarkerIcon.GetSize(); - m_wMarkerIcon.SetSize(size[0] * w, size[1] * h); - } -} From a26641384b2aeb988cdeac8a565d05e57cda574b Mon Sep 17 00:00:00 2001 From: Kex Date: Sat, 4 Jul 2026 03:29:25 +0200 Subject: [PATCH 4/4] Create derived layout and use new widget component --- .../UI/layouts/Map/ACE_Finger_MapPointer.layout | 9 +++++++++ .../Map/ACE_Finger_MapPointer.layout.meta | 17 +++++++++++++++++ .../ACE_Finger_MapUIPointerContainer.c | 6 +++--- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 addons/finger/UI/layouts/Map/ACE_Finger_MapPointer.layout create mode 100644 addons/finger/UI/layouts/Map/ACE_Finger_MapPointer.layout.meta diff --git a/addons/finger/UI/layouts/Map/ACE_Finger_MapPointer.layout b/addons/finger/UI/layouts/Map/ACE_Finger_MapPointer.layout new file mode 100644 index 000000000..bad2e1732 --- /dev/null +++ b/addons/finger/UI/layouts/Map/ACE_Finger_MapPointer.layout @@ -0,0 +1,9 @@ +FrameWidgetClass : "{DD15734EB89D74E2}UI/layouts/Map/MapMarkerBase.layout" { + components { + SCR_MapMarkerWidgetComponent "{5D5280F6FAEE865B}" { + Enabled 0 + } + ACE_Finger_MapPointerWidgetComponent "{69C808C9C9B8EB66}" { + } + } +} \ No newline at end of file diff --git a/addons/finger/UI/layouts/Map/ACE_Finger_MapPointer.layout.meta b/addons/finger/UI/layouts/Map/ACE_Finger_MapPointer.layout.meta new file mode 100644 index 000000000..10d4e4972 --- /dev/null +++ b/addons/finger/UI/layouts/Map/ACE_Finger_MapPointer.layout.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{F031C659D2F1C14B}UI/layouts/Map/ACE_Finger_MapPointer.layout" + Configurations { + LayoutResourceClass PC { + } + LayoutResourceClass XBOX_ONE : PC { + } + LayoutResourceClass XBOX_SERIES : PC { + } + LayoutResourceClass PS4 : PC { + } + LayoutResourceClass PS5 : PC { + } + LayoutResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/finger/scripts/Game/ACE_Finger/Map/ComponentsUI/ACE_Finger_MapUIPointerContainer.c b/addons/finger/scripts/Game/ACE_Finger/Map/ComponentsUI/ACE_Finger_MapUIPointerContainer.c index 8ab06462e..0c34d26bd 100644 --- a/addons/finger/scripts/Game/ACE_Finger/Map/ComponentsUI/ACE_Finger_MapUIPointerContainer.c +++ b/addons/finger/scripts/Game/ACE_Finger/Map/ComponentsUI/ACE_Finger_MapUIPointerContainer.c @@ -5,7 +5,7 @@ class ACE_Finger_MapUIPointerContainer : SCR_MapUIBaseComponent protected string m_sIconsContainer; protected Widget m_wIconsContainer; - [Attribute("{DD15734EB89D74E2}UI/layouts/Map/MapMarkerBase.layout", params: "layout")] + [Attribute("{F031C659D2F1C14B}UI/layouts/Map/ACE_Finger_MapPointer.layout", params: "layout")] protected ResourceName m_sPointerElementName; protected ref array m_aPointers = {}; @@ -150,12 +150,12 @@ class ACE_Finger_MapUIPointerContainer : SCR_MapUIBaseComponent FrameSlot.SetAlignment(w, 0.5, 0.2); UpdatePointerMarker(w, ptr); - SCR_MapMarkerWidgetComponent handler = SCR_MapMarkerWidgetComponent.Cast(w.FindHandler(SCR_MapMarkerWidgetComponent)); + ACE_Finger_MapPointerWidgetComponent handler = ACE_Finger_MapPointerWidgetComponent.Cast(w.FindHandler(ACE_Finger_MapPointerWidgetComponent)); if (!handler) return; handler.SetImage("{4020BDDA0BA7D5CF}UI/Textures/Icons/icons_gamepad/icons_gamepad.imageset", "stick_hold"); - handler.ACE_ResizeImage(0.6, 0.6); + handler.ResizeImage(0.6, 0.6); handler.SetColor(Color.Orange); handler.SetAuthor(GetGame().GetPlayerManager().GetPlayerName(ptr.GetOwnerPlayerID())); handler.SetAuthorVisible(true);