From 2ef7bd0473f0a43c12c475ac3151cb316e41a81f Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 9 Mar 2026 21:40:10 +0100 Subject: [PATCH] 1.1.1 --- .../Game/GTGAutorun/SCR_AutorunComponent.c | 42 ++++++++++-------- resourceDatabase.rdb | Bin 1073 -> 1073 bytes 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/Scripts/Game/GTGAutorun/SCR_AutorunComponent.c b/Scripts/Game/GTGAutorun/SCR_AutorunComponent.c index 312494e..98c3aa6 100644 --- a/Scripts/Game/GTGAutorun/SCR_AutorunComponent.c +++ b/Scripts/Game/GTGAutorun/SCR_AutorunComponent.c @@ -12,7 +12,6 @@ class SCR_AutorunComponent: ScriptComponent protected SCR_CharacterControllerComponent m_CharacterController; protected InputManager m_InputManager; - // --- NEU: Hilfsfunktion für die Sicherung (damit wir den Code nicht doppelt schreiben müssen) --- protected void CheckForExistingInput(bool isEnabled) { if (isEnabled && m_InputManager.GetActionValue("CharacterForward") > 0.5) @@ -21,22 +20,31 @@ class SCR_AutorunComponent: ScriptComponent m_bWaitForKeyRelease = false; } - // --- Aktion für SPRINTEN (Rennen) --- protected void OnAutorunPressed() { - m_bIsAutoSprintEnabled = !m_bIsAutoSprintEnabled; - if (m_bIsAutoSprintEnabled) m_bIsAutoWalkEnabled = false; // Gehen ausschalten, falls an + bool wasAutowalking = m_bIsAutoWalkEnabled; // Prüfen, ob wir vorher schon gegangen sind - CheckForExistingInput(m_bIsAutoSprintEnabled); + m_bIsAutoSprintEnabled = !m_bIsAutoSprintEnabled; + if (m_bIsAutoSprintEnabled) m_bIsAutoWalkEnabled = false; + + // Sicherung nur aktivieren, wenn wir nicht direkt aus dem Autowalk kommen + if (!wasAutowalking) + CheckForExistingInput(m_bIsAutoSprintEnabled); + else + m_bWaitForKeyRelease = false; // Sauberer Übergang } - // --- Aktion für GEHEN/JOGGEN (Normales Laufen) --- protected void OnAutowalkPressed() { - m_bIsAutoWalkEnabled = !m_bIsAutoWalkEnabled; - if (m_bIsAutoWalkEnabled) m_bIsAutoSprintEnabled = false; // Sprint ausschalten, falls an + bool wasAutorunning = m_bIsAutoSprintEnabled; // Prüfen, ob wir vorher schon gerannt sind - CheckForExistingInput(m_bIsAutoWalkEnabled); + m_bIsAutoWalkEnabled = !m_bIsAutoWalkEnabled; + if (m_bIsAutoWalkEnabled) m_bIsAutoSprintEnabled = false; + + if (!wasAutorunning) + CheckForExistingInput(m_bIsAutoWalkEnabled); + else + m_bWaitForKeyRelease = false; } protected void OnLifeStateChangedCallback() @@ -53,7 +61,6 @@ class SCR_AutorunComponent: ScriptComponent protected void OnPrepareControlsCallback(IEntity owner, ActionManager am, float dt, bool player) { - // Abbrechen, wenn weder Sprint noch Gehen aktiv sind if (!m_bIsAutoSprintEnabled && !m_bIsAutoWalkEnabled) return; @@ -65,7 +72,6 @@ class SCR_AutorunComponent: ScriptComponent m_bWaitForKeyRelease = false; } - // Autorun abbrechen, wenn manuell eingegriffen wird if (!m_InputManager.IsContextActive("CharacterMovementContext") || am.GetActionTriggered("GadgetMap") || Math.AbsFloat(rightInput) >= 0.75 || @@ -76,27 +82,25 @@ class SCR_AutorunComponent: ScriptComponent return; } - // Bewegungswerte setzen: "Forward" (W-Taste) ist bei beiden aktiv + // Bewegung immer erzwingen m_InputManager.SetActionValue("CharacterForward", 1.0); - // "Sprint" (Shift-Taste) kommt nur beim Autorun dazu + // Explizit sagen: Sprint AN oder Sprint AUS if (m_bIsAutoSprintEnabled) - { m_InputManager.SetActionValue("CharacterSprint", 1.0); - } + else + m_InputManager.SetActionValue("CharacterSprint", 0.0); // Verhindert, dass der Sprint stecken bleibt! } override void OnPostInit(IEntity owner) { m_CharacterController = SCR_CharacterControllerComponent.Cast(owner.FindComponent(SCR_CharacterControllerComponent)); - if (!m_CharacterController) - return; + if (!m_CharacterController) return; m_InputManager = GetGame().GetInputManager(); m_CharacterController.m_OnPrepareControls.Insert(OnPrepareControlsCallback); - // Beide Actions registrieren m_InputManager.AddActionListener("SCR_Autorun", EActionTrigger.DOWN, OnAutorunPressed); - m_InputManager.AddActionListener("SCR_Autowalk", EActionTrigger.DOWN, OnAutowalkPressed); // <--- NEU + m_InputManager.AddActionListener("SCR_Autowalk", EActionTrigger.DOWN, OnAutowalkPressed); } } \ No newline at end of file diff --git a/resourceDatabase.rdb b/resourceDatabase.rdb index a45ee24f78c49a50405ec832cf707840341a29ff..6a908a2947ba82a88979bcc9279792e241904693 100644 GIT binary patch delta 41 xcmdnUv5{lLDki2P&&g|;E^(%MT+W!q%fR3`*^XI$@-pUT4pq;~86pe}3;;364DSE{ delta 41 zcmV+^0M`Gp2(bvTssaM&5|gX~(h2cA(`a7}002RgJ_8?