[Release] [T4] [Zombies] ZPause T4 - a synced co-op pause mod by Xep
-
ZPause T4
Synced co-op pause for World at War Zombies (Plutonium T4)
by Xep
A port of ZPause, the Black Ops II pause mod, to World
at War — by way of the Black Ops 1 port, which is far
closer to this engine.Any player can pause. Any player can unpause. The state lives on
level, so it's
identical for everyone — there's no per-client state that can desync.- Zombies stop where they are, and the spawner slows to a crawl
- Players are locked and can't be hurt
- Powerup timers, effect countdowns and bleedout all hold
- Resumes on a 3‑2‑1 countdown with a short grace period
- Optional vote-to-pause, so a pause has to carry the room
Requirements
Plutonium T4 (World at War), zombies. No other mods or dependencies.
Only the host needs this file. Everything runs on the host and reaches everyone else
as ordinary server-to-client traffic. Players joining your game install nothing.Download & Source
Latest Version Download:
https://github.com/Xeptix/ZPauseT4/releases/latest
GitHub Source Code:
https://github.com/Xeptix/ZPauseT4
All ports in one download:
ZPause [Treyarch Bundle], on the ZPause release page:
https://github.com/Xeptix/ZPause/releases/latestInstall
Copy the Plutonium folder from the download into:
%localappdata%It mirrors your existing
%localappdata%\Plutoniumexactly, so Windows will ask whether to
merge — say yes. The only thing it replaces is an olderzpause.gsc.That puts the file here:
%localappdata%\Plutonium\storage\t4\raw\scripts\sp\zpause.gscsp, notzm— World at War zombies runs on the singleplayer script tree. That's the
same folder Plutonium's own scripts live in.There's no mod-folder version. Plutonium's
modsfolder and its in-game Mods menu are
Black Ops II features; T4 has neither.install.batin the download does the same copy for you if you'd rather — it lists what
it's about to install, asks once, then copies. Nothing is deleted or downloaded.You don't need to restart the game to reload a script — just end the current match and
start a new one.Usage
Action Input Pause / unpause hold crouch + melee together for ~0.3s Vote yes, while a vote is open the same combo Vote no, while a vote is open hold aim + melee Crouching or prone counts, by any binding — the script reads your stance rather than a
key, so it doesn't matter which of the crouch binds you use.There are no chat commands. World at War has no
saycallback for a script to bind
to, so everything is on the combos.Fewer combos than the other ports. World at War has no
jumpbuttonpressed()or
throwbuttonpressed()at all, so anything using jump or grenade is unavailable here.
What's left:crouch_melee(default),use_melee,ads_melee,ads_use.While you're down
You can't crouch from the floor, and once you've bled out the engine stops delivering
those buttons at all. Downed and spectating players switch to use + aim, and
use + fire for a no vote. The HUD shows awhile down:line whenever anybody is in
that state.Voting
Off by default.
zp_vote 1and a pause has to carry the room instead of any one player
stopping the game. Calling a vote is the same action as pausing; the vote runs 30 seconds
and everyone gets a tally with the count, the clock and how each player voted.Configuration
Every setting is at the top of the file, and each one is also a dvar of the same name:
zp_countdown 5The config is re-read whenever a pause is requested, so a change takes effect on the
next pause — no map restart needed.Dvar Default What it does zp_button_combo1Enable the button combos. zp_combocrouch_meleePause combo: crouch_melee,use_melee,ads_melee,ads_use.zp_button_hold_time0.3How long a combo must be held. zp_combo_deaduse_adsCombo used while downed or spectating. ""= no button in that state.zp_vote_no_combo_deaduse_attackThe same, for a no vote. zp_vote0Put pauses to a vote. zp_vote_min2Minimum yes votes, whatever the player count. zp_vote_percent51Percent of players who must vote yes. zp_vote_time30Seconds a vote stays open. zp_vote_unpause0Resuming needs a vote too. zp_vote_hold0Freeze the game while the vote runs, and resume if it fails. zp_vote_initiator_yes1Whoever called the vote counts as a yes. zp_vote_lockout10Seconds before another vote can be called after one fails. zp_vote_alive_only1Leave bled-out spectators out of the threshold and the count. zp_vote_hud1Show the vote tally on screen. zp_vote_show_voters1List each player and how they voted. zp_vote_result_time2Seconds the result stands on the tally afterwards. zp_vote_no_comboads_meleeCombo for a no vote. zp_countdown3Seconds of 3‑2‑1 before play resumes. zp_grace2Seconds of invulnerability after resuming. zp_cooldown2Minimum seconds between toggles. zp_max_pause_time0Auto-resume after N seconds. 0= unlimited.zp_drift_guard1Snap back any AI that still manages to move. zp_spawn_delay3Seconds of spawn delay per live zombie while paused. 0= don't touch the spawner.zp_spawn_delay_max60Cap on that delay. zp_stop_anims1Cut scripted animations, so zombies can't finish tearing a barrier through the pause. zp_godmode1Make players invulnerable while paused. zp_control_guard1Re-apply the player freeze every tick. zp_freeze_bleedout1Stop downed players bleeding out. zp_freeze_powerups1Stop ground powerups timing out. zp_freeze_effects1Hold the powerup effect timers. zp_silence_zombies1Stop zombies growling while paused. zp_show_hint1Tell players how to pause when they spawn. zp_hud_timer1Show who paused and how long it's been. zp_hud_positioncenterWhere the pause banner sits: top,center,middle,bottom,left,right.zp_vote_hud_positiontopWhere the vote tally sits. zp_hud_glow1Black glow behind the HUD text. zp_hud_binds1Draw combos as each player's bound buttons instead of words. zp_hud_panel0Black slab behind the whole block. zp_hud_panel_alpha0.45How opaque that slab is. zp_hud_panel_width340How wide it is, in HUD units. zp_blackout0Black out everyone's screen while paused (anti-scouting). zp_blur1Blur everyone's screen while paused. zp_blur_amount1.5Blur strength. zp_pause_soundbox_poofPlayed when the game is paused. ""= silent.zp_countdown_soundcha_chingPlayed on each countdown tick. zp_resume_soundperks_power_onPlayed when play resumes. How it works
Black Ops II ships a working full-game pause — it's what runs during a host migration
— and the original ZPause is built on that recipe. World at War has no host migration in
zombies and nodisablezombies()builtin, so the engine-level AI freeze isn't available.
It's done in script instead:- The AI enforcer holds
ignoreall, pins every goal to where the zombie is standing,
and snaps back anything that drifts. On Black Ops II this is a safety net around the
engine freeze; here it is the freeze. zp_stop_animscancels scripted animations, because a zombie tearing a barrier is
driven by its animation rather than by pathing. Everything cancelled is released again
on resume.- The spawner is slowed, not gated. See below.
- The stuck-zombie watchdog.
round_spawn_failsafe()kills any zombie that hasn't
moved 24 units in 30 seconds, and a paused zombie trips it every time. ZPause keeps the
barrier-chunk timestamp fresh, which the watchdog honours. - Ground powerups.
powerup_timeout()is a plainwait()chain, so the thread is cut
and restarted on resume. - Bleedout is pinned so a downed player doesn't bleed out.
The spawner
Black Ops 1 and II both close the
spawn_zombiesflag, which is what their spawn loop
blocks on. World at War has no such flag, andround_spawning()copies the round's
budget into a local before the loop starts, so that's out of reach too.This matters more than it sounds:
level.zombie_totalis the round's whole allocation and
it decrements per spawn, so an ungated pause could drain an entire round into a frozen
crowd at the windows and hand it all back at once on resume.The one live lever is the spawn delay, which the loop re-reads every pass. It can't stop
spawning outright — a plainwait()can't be interrupted, so whatever delay is in flight
when you resume has to run out first. So the delay scales with how many zombies are
already up:Zombies up Delay while paused 1 5s 10 30s 20 60s (capped) Few zombies about and it stays short — little is spawning anyway and the resume is prompt.
A big horde already up and it stretches to a minute, which is exactly when nobody wants
more of them and nobody notices the gap.zp_spawn_delay 0leaves the spawner alone
entirely.The pause clock is in minutes
World at War has no HUD timer element, so a clock has to be drawn as text, and every
distinct string costs a configstring. A ticking second counter burns one a second until
the pool runs dry and drops the server. Minutes bound the whole set to about sixty
strings, all reused.Notes
- Zombies stand still rather than freeze solid. Their animation is cancelled rather
than frozen; a true animation freeze isn't reachable from server-side GSC. - Not held: the magic box close timer, trap durations and Easter egg step timers.
Ports
Same mod, same version numbering, on three engines:
- Black Ops II — https://github.com/Xeptix/ZPause
- Black Ops — https://github.com/Xeptix/ZPauseT5
- World at War — https://github.com/Xeptix/ZPauseT4
Credits
- Xep — author
- Treyarch —
_zombiemode.gsc - plutoniummod/t4-scripts — stock T4 script reference
-
ZPause T4 v1.4
Eleven new settings, a settings editor so you never need the console, and two more games —
ZPause now runs on all five Treyarch zombies titles.Download: https://github.com/Xeptix/ZPauseT4/releases/latest
One thing changes on its own
zp_blackoutis on by default now, at the newzp_blackout_alphaof0.2. It was off
in v1.3, so this is the one thing you'll notice straight away: the screen dims slightly
while paused. It's there to carry the pause text over a bright skybox.zp_blackout 0puts it back,zp_blackout_alpha 1gives the full blackout it used to be.
zp_blur_amountwent from1.5to2for the same reason. The installer mentions both
when you update if you'd been leaving them alone.New — who decides
All off by default, and they don't fight each other:
zp_host_only— only the host can pause or resume.zp_host_approve— anyone can ask, the host answers yes or no. It runs on the same
yes/no combo a vote uses, which is what lets it work on an engine with no chat.zp_ready_check— resuming waits for everyone to say they're back. Not a vote:
nobody says no and it can't fail.zp_max_pauses— a cap per match.
New — pausing without being asked
zp_pause_on_disconnect— pause when somebody drops, so whoever is left isn't
overrun while they rejoin.zp_round_pause— hold the pause until the round is over instead of freezing the
game mid-horde.
New — a settings editor
The installer sets every dvar for you now. It reads the list out of the script you've
actually got installed, so it's always right for your version, and offers a list rather
than a blank prompt for anything that takes fixed values — which matters here, since World
at War has four combos where the other ports have seven or ten.It writes the values into the installed script — which is what makes them stick, since
Plutonium regenerates its own player cfg — and also exports a portablezpause.cfgfor a
dedicated server. Keep several profiles and switch between them. Settings are re-applied
after every update.The installer has also grown into a manager: what's installed and at which version,
removal, GitHub fetch, and a doctor for the things that actually go wrong. It asks before
every network call. And it's one installer for all five games now — keep a copy on your PC
and it can install any of them later.New — settings apply without a map restart
The config is re-read every five seconds while you're playing, and again whenever a pause
is requested.This one matters more here than anywhere else: it's what finally lets
zp_combobe
changed by hand. Before, changing it needed a pause to take effect — and with no chat
commands on this engine, the combo is the thing that asks for one.set zp_config_print 1prints every setting with its current value.Also new
zp_hud— turn the pause block off entirely, for a recording or a server with its
own overlay.zp_easeandzp_ease_time— config parity with the other ports. No effect on
this engine; the README says why.
Fixed
- A zombie paused at a window now carries on where it was. One still walking used to
start tearing from wherever it stood; one already tearing came back, tore the boards
around the one it had been holding, and climbed through with that one still up. On
resume, a zombie short of its spot walks the rest of the way first, and every board is
handed back.
New — Black Ops III and Black Ops 4
Both debut at v1.4, same version number and the same feature set allowing for what each
engine can do:- Black Ops III — https://github.com/Xeptix/ZPauseT7
- Black Ops 4 — https://github.com/Xeptix/ZPauseT8
That's all five Treyarch zombies games now. Each has a download of its own, and
ZPause [Treyarch Bundle] on the ZPause release page carries all five — one download,
one installer that knows every game.Install
Unchanged. Run
installer\windows\install.batfrom the extracted folder, or copy the
Plutoniumfolder into%localappdata%yourself. Your oldzpause.gscis replaced in
place, so there's nothing to clean up first.No game restart needed — end the current match and start a new one. Only the host needs the
file.Full dvar list and the how-it-works writeup are in the README:
https://github.com/Xeptix/ZPauseT4 -
ZPause T4 v1.5
Chat commands, a settings menu while paused, settings that stay set — and a fix that
matters: anybody can unpause again, not only whoever paused.Download: https://github.com/Xeptix/ZPauseT4/releases/latest
Fixed — read these first
- Anybody can unpause, not only whoever paused. The crouch half of a combo reads the
stance you're in, and freezing a player freezes their stance — so whoever paused stayed
crouched and everybody else, frozen standing, could never make it. While paused, resume
with use + aim (or!unpause). The pause banner says so. use_adsanduse_attackdo what they say. Both are the default down combos, and
neither name was ever tested for, so both fell through to crouch + melee — the one combo a
downed player can't make.
New — chat commands
!pause,!p,!unpause,!resume, andyes/nowhile a vote is open — the same words
as Black Ops II. This port shipped without them because nothing in World at War's own
scripts listens for chat; the game raises it anyway.zp_allow_short_wordswidens them to
the bare words, off by default.New — a settings menu while paused
The host holds fire + melee: aim and fire move through the list, grenade changes a
setting, melee closes it, and what the setting does is written under the list.zp_menu 0
turns it off.New — settings stick
The menu saves to
scriptdata\zpause.cfgas it closes, and the script reads it back as the
next match loads. The installer's settings editor writes the same file and opens on it, so
the menu and the installer always agree.Also
zp_freeze_players 0lets players walk around a paused game with their weapons down.
Not recommended — doors, the box and perks still work.noneempties a setting from the console, soset zp_pause_sound noneis silence.- Changing
zp_godmodeduring a pause no longer leaves players invulnerable after it. - The installer's
-Toworks when it already remembers a folder.
Install
Unchanged. Run
installer\windows\install.batfrom the extracted folder, or copy the
Plutoniumfolder into%localappdata%yourself. Your settings are carried over. No game
restart needed — end the current match and start a new one. Only the host needs the file.Full dvar list and the how-it-works writeup are in the README:
https://github.com/Xeptix/ZPauseT4 - Anybody can unpause, not only whoever paused. The crouch half of a combo reads the
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