[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 on
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login