[ZM] [RELEASE] Running and Reloading!
-
This isn't true running and reloading, more so an illusion. In Black Ops 2, running and reloading at the same time isn’t actually a scriptable feature — it’s hard-locked by the game engine itself.
Why true “run + reload” isn’t possible in BO2 (and why this is a workaround)
When you reload:
• The engine forces the player out of sprint
• Sprint is only allowed while moving forward
• Reload animations temporarily override movement logic
• Scripts do not receive early reload input events
Because of this, there’s no exposed function in GSC to:
• Detect the reload button press early
• Override sprint restrictions
• Allow sprinting during reload
• Change movement state mid-animation
Those checks happen below the scripting layer, inside the player movement code (pm_* functions), which GSC can’t modify.
═══════════════════════════════════════════So how does this script work?
Instead of true sprint-reload, the script:
• Detects when the engine flags the player as “reloading”
• Temporarily boosts walk speed
• Restores normal speed once reload finishes
This creates the illusion of running while reloading:
• Movement feels faster
• No animation breaking
• No desync
• No crashes
It’s the closest possible result without engine hooks or custom DLLs.Path: Win + R "%localappdata%"
- Plutonium/storage/t6/scripts/zm
Raw Code:
#include maps\mp\_utility; init() { level thread onPlayerConnect(); } onPlayerConnect() { for ( ;; ) { level waittill("connected", player); player thread onPlayerSpawned(); } } onPlayerSpawned() { self endon("disconnect"); for ( ;; ) { self waittill("spawned_player"); // Start reload speed monitor self thread reloadWalkSpeedBoost(); } } reloadWalkSpeedBoost() { self endon("disconnect"); self endon("death"); normalSpeed = 1.0; // default speed is 1.0 reloadSpeed = 1.5; // adjust if needed (1.2–1.5 safe) wasReloading = false; for (;;) { isNowReloading = self isReloading(); // Detect reload START (edge detection) if ( isNowReloading && !wasReloading ) { self setMoveSpeedScale(reloadSpeed); } // Detect reload END if ( !isNowReloading && wasReloading ) { self setMoveSpeedScale(normalSpeed); } wasReloading = isNowReloading; wait 0.05; } } -
goated
-
undefined Astroolean referenced this topic