Skip to content

WAW Modding Releases & Resources

Plutonium T4 Mod releases and resources go here.

120 Topics 476 Posts
  • 3 Votes
    1 Posts
    4k Views
    No one has replied
  • Official WAW Mod Tools

    Pinned Locked Dec 23, 2020, 5:33 PM
    19 Votes
    1 Posts
    9k Views
    No one has replied
  • 1 Votes
    1 Posts
    2k Views
    No one has replied
  • 6 Votes
    1 Posts
    7k Views
    No one has replied
  • 12 Votes
    10 Posts
    6k Views

    where do i put this files

  • Aesthetic Kar98k

    Nov 29, 2024, 8:33 AM
    1 Votes
    3 Posts
    427 Views

    Must have been offline for awhile i didnt see this! Nice👍 also that custom hands be looking sick asf😆👌

  • 0 Votes
    5 Posts
    132 Views

    FomroMadia Thank u!

  • [ZM] Discarded V3 - Mod Menu

    Nov 21, 2021, 1:49 AM
    4 Votes
    53 Posts
    22k Views

    is there a way to make the round changer work? i want to start games at round 20,50, or 100 for challenges, but the zombies health is always stuck at round 1 still

  • Verruckt Uncensored

    Jun 1, 2023, 8:06 AM
    4 Votes
    4 Posts
    2k Views

    Thank you for the mod, nice to see that some people understand authenticity and immersion.

  • 1 Votes
    4 Posts
    916 Views

    Made an update to the script: The timer now begins as soon as the game starts instead of waiting until the beginning of round one. Posting updated script here as I don't have permission to edit the OP:

    #include maps\_utility; #include common_scripts\utility; #include maps\_zombiemode_utility; init() { // ============================================================================================================ // _ __ _ __ _____ ____ __ __________ // | | / /___ | | / / / ___// __ \/ / / _/_ __/ // | | /| / / __ `/ | /| / / ______ \__ \/ /_/ / / / / / / WaW-Split (Version 1.1) // | |/ |/ / /_/ /| |/ |/ / /_____/ ___/ / ____/ /____/ / / / // |__/|__/\__,_/ |__/|__/ /____/_/ /_____/___/ /_/ // // // Customizable speedrun split timer for World at War (Plutonium) w/ optional backspeed fix. // Complies with ZWR world record rules: // https://zwr.gg/rules/#section-1 // https://zwr.gg/rules/#section-19 // https://zwr.gg/leaderboards/waw/100-speedrun/shi-no-numa/ // // ============================================== TIMER SETTINGS ============================================ // // WARNINGS: // - The backspeed fix will carry over between games. If you want to revert the backspeed fix, // run a map once with "level.FIX_BACKSPEED = false" to restore default values, or use commands // - Adjusting spacing drastically might cause overlapping elements // - Adding too many HUD elements can cause them to dissapear or glitch out, // Keep HISTORY_MAX_COUNT and MILESTONES at reasonable levels (<12 between both) // // Adjust timer position with the X and Y coordinates // Color values are (RED, GREEN, YELLOW) each with a value between 0.0 and 1.0 // Alpha values are between 0.0 and 1.0 level.FIX_BACKSPEED = true; // Disable this to revert the backspeed fix level.HUD_X_COORD = -100; // Move the timer on X axis (left=negative) level.HUD_Y_COORD = 0; // Move the timer on Y axis (up=negative) level.HUD_COL_SPACING = 70; // Space between the label/value columns level.HUD_ROW_SPACING = 10; // Space between the data rows level.GAME_TIME_COLOR = (1, 0, 0); level.GAME_TIME_ALPHA = 1; level.ROUND_TIME_HIDDEN = false; // Hide the current round timer and round history level.ROUND_TIME_LABEL_COLOR = (1, 1, 1); level.ROUND_TIME_VALUE_COLOR = (1, 1, 1); level.ROUND_TIME_ALPHA = 1; level.HISTORY_HIDE_EMPTY = false; // Keep history rows hidden until they are populated level.HISTORY_MAX_COUNT = 4; // Max history to show for previous rounds (0 to hide) level.HISTORY_LABEL_COLOR = (0.6, 0.6, 0.6); // WARNING: Don't set HISTORY_MAX_COUNT too high! level.HISTORY_VALUE_COLOR = (0.6, 0.6, 0.6); level.HISTORY_ALPHA = 0.9; level.HISTORY_LABEL_TEXT = "Round"; level.HISTORY_LABEL_DELIMITER = ":"; level.MILESTONES_HIDDEN = false; // Hide the Round milestones section level.MILESTONES = []; // Cumulative time will show on HUD upon reaching certain rounds level.MILESTONES[0] = 10; // Usefull for world record attempts (ex: 30, 50, 70, 100) level.MILESTONES[1] = 30; // WARNING: Don't add too many! keep [index] increasing by 1 level.MILESTONES[2] = 50; level.MILESTONES[3] = 70; level.MILESTONES[4] = 100; level.MILESTONES_LABEL_COLOR = (0.4, 0.7, 0.4); level.MILESTONES_VALUE_COLOR = (0.4, 0.7, 0.4); level.MILESTONES_ALPHA = 0.9; level.MILESTONES_LABEL_TEXT = "Total"; level.MILESTONES_LABEL_DELIMITER = ":"; // =========================================================================================================== thread on_connect(); } game_timer() { hud = create_simple_hud( self ); hud.foreground = true; hud.sort = 1; hud.hidewheninmenu = true; hud.alignX = "left"; hud.alignY = "top"; hud.x = level.HUD_X_COORD; hud.y = level.HUD_Y_COORD; hud.alpha = level.GAME_TIME_ALPHA; hud.color = level.GAME_TIME_COLOR; hud.fontscale = 2; hud setTimerUp(0); } round_timer() { label = create_simple_hud( self ); label.foreground = true; label.sort = 1; label.hidewheninmenu = true; label.alignX = "left"; label.alignY = "top"; label.x = level.HUD_X_COORD; label.y = level.HUD_Y_COORD + (level.HUD_ROW_SPACING * 2); label.alpha = level.ROUND_TIME_ALPHA; label.color = level.ROUND_TIME_LABEL_COLOR; label.fontscale = 1; time = create_simple_hud( self ); time.foreground = true; time.sort = 1; time.hidewheninmenu = true; time.alignX = "left"; time.alignY = "top"; time.x = level.HUD_X_COORD + level.HUD_COL_SPACING; time.y = level.HUD_Y_COORD + (level.HUD_ROW_SPACING * 2); time.alpha = level.ROUND_TIME_ALPHA; time.color = level.ROUND_TIME_VALUE_COLOR; time.fontscale = 1; roundHistory = spawnStruct(); init_round_history(roundHistory); for (;;) { time setTimerUp(0); roundStart = GetTime() / 1000; currentRound = level.round_number; if (!isdefined(currentRound)) currentRound = 1; label SetText(level.HISTORY_LABEL_TEXT + " " + currentRound + level.HISTORY_LABEL_DELIMITER); // Don't do anything when starting round 1 if (currentRound == 1) level waittill("round_transition"); level waittill("round_transition"); if (level.HISTORY_MAX_COUNT == 0) continue; roundEnd = GetTime() / 1000; roundDuration = format_seconds(roundEnd - roundStart); enqueue_round_history(roundHistory, currentRound, roundDuration); refresh_round_history_hud(roundHistory); } } milestone_timers() { level waittill("round_transition"); gameStart = GetTime() / 1000; milestonesHit = 0; if (level.ROUND_TIME_HIDDEN) { yCoord = level.HUD_Y_COORD + (level.HUD_ROW_SPACING * 2); } else { yCoord = level.HUD_Y_COORD + (level.HUD_ROW_SPACING * (level.HISTORY_MAX_COUNT + 4)); } for (;;) { level waittill("round_transition"); currentRound = level.round_number; isMilestone = false; for (i = 0; i < level.MILESTONES.size; i++) { if (level.MILESTONES[i] == currentRound) { isMilestone = true; break; } } if (!isMilestone) continue; milestonesHit++; elapsed = format_seconds((GetTime() / 1000) - gameStart); label = create_simple_hud( self ); label.foreground = true; label.sort = 1; label.hidewheninmenu = true; label.alignX = "left"; label.alignY = "top"; label.x = level.HUD_X_COORD; label.y = yCoord; label.alpha = level.MILESTONES_ALPHA; label.color = level.MILESTONES_LABEL_COLOR; label.fontscale = 1; label SetText(level.MILESTONES_LABEL_TEXT + " 1-" + currentRound + level.MILESTONES_LABEL_DELIMITER); time = create_simple_hud( self ); time.foreground = true; time.sort = 1; time.hidewheninmenu = true; time.alignX = "left"; time.alignY = "top"; time.x = level.HUD_X_COORD + level.HUD_COL_SPACING; time.y = yCoord; time.alpha = level.MILESTONES_ALPHA; time.color = level.MILESTONES_VALUE_COLOR; time.fontscale = 1; time SetText(elapsed); if (milestonesHit >= level.MILESTONES.size) return; yCoord = yCoord + level.HUD_ROW_SPACING; } } init_round_history(roundHistory) { roundHistory.queue = []; // Index starts at last position and becomes 0 on round 1 roundHistory.indexOfNewest = level.HISTORY_MAX_COUNT - 1; if (roundHistory.queue < level.HISTORY_MAX_COUNT) { yCoord = level.HUD_Y_COORD + (level.HUD_ROW_SPACING * 3); for (i = 0; i < level.HISTORY_MAX_COUNT; i++) { label = create_simple_hud( self ); label.foreground = true; label.sort = 1; label.hidewheninmenu = true; label.alignX = "left"; label.alignY = "top"; label.x = level.HUD_X_COORD; label.y = yCoord; label.alpha = level.HISTORY_ALPHA; label.color = level.HISTORY_LABEL_COLOR; label.fontscale = 1; value = create_simple_hud( self ); value.foreground = true; value.sort = 1; value.hidewheninmenu = true; value.alignX = "left"; value.alignY = "top"; value.x = level.HUD_X_COORD + level.HUD_COL_SPACING; value.y = yCoord; value.alpha = level.HISTORY_ALPHA; value.color = level.HISTORY_VALUE_COLOR; value.fontscale = 1; if (!level.HISTORY_HIDE_EMPTY) { label SetText("..."); value SetText("--:--"); } roundData = spawnStruct(); roundData.hudLabel = label; roundData.hudValue = value; roundHistory.queue[i] = roundData; yCoord = yCoord + level.HUD_ROW_SPACING; } } } enqueue_round_history(roundHistory, currentRound, roundDuration) { if (roundHistory.indexOfNewest == level.HISTORY_MAX_COUNT - 1) { roundHistory.indexOfNewest = 0; } else { roundHistory.indexOfNewest++; } roundHistory.queue[roundHistory.indexOfNewest].hudLabel SetText(level.HISTORY_LABEL_TEXT + " " + currentRound + level.HISTORY_LABEL_DELIMITER); roundHistory.queue[roundHistory.indexOfNewest].hudValue SetText(roundDuration); } refresh_round_history_hud(roundHistory) { if (roundHistory.queue.size <= 1) return; yCoord = level.HUD_Y_COORD + (level.HUD_ROW_SPACING * 3); updatedCount = 0; updateIndex = roundHistory.indexOfNewest; // Reposition hud elements into correct order while(updatedCount < level.HISTORY_MAX_COUNT) { roundHistory.queue[updateIndex].hudLabel.y = yCoord; roundHistory.queue[updateIndex].hudValue.y = yCoord; updatedCount++; yCoord = yCoord + level.HUD_ROW_SPACING; if (updateIndex == 0) { updateIndex = level.HISTORY_MAX_COUNT - 1; } else { updateIndex--; } } } format_seconds(secs) { secs = int(secs); hrs = int(secs / 3600); mins = int((secs % 3600) / 60); secs = secs % 60; // Add leading zeros for formatting if necessary if (secs < 10) { secs = "0" + secs; } if (mins < 10 && hrs != 0) { mins = "0" + mins; } if (hrs > 0) { return hrs + ":" + mins + ":" + secs; } else { return mins + ":" + secs; } } patch_notifier() { hud = create_simple_hud( self ); hud.foreground = true; hud.sort = 1; hud.hidewheninmenu = true; hud.alignX = "center"; hud.alignY = "bottom"; hud.horzAlign = "center"; hud.vertAlign = "bottom"; hud.x = 0; hud.y = 0; hud.alpha = 0.5; hud.fontscale = 1; flag_wait("all_players_spawned"); backspeedStatus = ""; if (getdvarfloat("player_backSpeedScale") != 0.7 || getdvarfloat("player_strafeSpeedScale") != 0.8) { backspeedStatus = "+ backspeed "; } hud SetText("Custom timer " + backspeedStatus + "patch in use (waw-split v1.1)"); wait(10); hud destroy(); } round_monitor() { for (;;) { roundStart = level.round_start_time; while(roundStart == level.round_start_time) { wait(0.25); } level notify("round_transition"); } } on_connect() { for(;;) { level waittill("connecting", player); player thread on_player_spawned(); } } on_player_spawned() { level waittill("connected", player); self thread round_monitor(); self thread game_timer(); if (!level.ROUND_TIME_HIDDEN) self thread round_timer(); if (!level.MILESTONES_HIDDEN) self thread milestone_timers(); // Backspeed fix (enforce the default values first) self SetClientDvars("player_backSpeedScale", "0.7", "player_strafeSpeedScale", "0.8"); if(level.FIX_BACKSPEED) { self SetClientDvars("player_backSpeedScale", "1", "player_strafeSpeedScale", "1"); } self thread patch_notifier(); }
  • WaW L4D2 hud

    Dec 7, 2024, 6:33 AM
    2 Votes
    6 Posts
    671 Views
  • 0 Votes
    1 Posts
    140 Views
    No one has replied
  • 3 Votes
    4 Posts
    518 Views

    as a barcelona fan,thank you.

  • Astolfo Perk Icons WaW ZM!

    Mar 10, 2023, 8:47 AM
    1 Votes
    6 Posts
    2k Views

    I put the files in the correct folder but it doesn't seem to want to load. I get an error that says "ERROR: image 'images/specialty_juggernaut_zombies.iwi' is version 13 but should be version 6". What should I do?

  • 0 Votes
    5 Posts
    3k Views

    UrNotThat6uy this is for the Mod Tools

  • [ZM] [WaW]Touhou Perk Icons

    Jun 1, 2024, 1:29 AM
    0 Votes
    3 Posts
    732 Views

    HELL YEAH🗣🔥

  • 5 Votes
    19 Posts
    7k Views

    javascript_616 late reply but it's all explained in the post. when you click the download you will be presented with installation instructions. custom maps and mods follow the exact same installation: you put them in the mods folder, simple as that. yes, this changes the vanilla maps only when you are using the mod

  • Flicks Galaxy Camo Pack

    Jul 9, 2023, 10:26 AM
    2 Votes
    5 Posts
    2k Views
  • 1 Votes
    8 Posts
    758 Views

    thanks man, great job!

  • 6 Votes
    10 Posts
    4k Views

    Love the camo looks amazing