diff --git a/.gitignore b/.gitignore index b831b43..258bff5 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ gsc_changes.txt zpam_changes.txt what_to_test.txt source_compiled -/zpam321.iwd +/*.iwd diff --git a/README.md b/README.md index 885512b..a3be981 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Introduction -Mod zPAM3.21 is new version of PAM mode for COD2.
+Mod zPAM3.22 is new version of PAM mode for COD2.
The code form previous zPAM 2.07 version is completely rewritten and ported to new code base, which helped in the implementation of new features and bug fixes. @@ -9,10 +9,12 @@ Work on this pam was iniciated by me in 2015 a was not never fully finished. In ## Download - Actual version: - - 2021/05/16 - zPAM 3.21 + - 2021/07/15 - zPAM 3.22 - Previous versions: + + - 2021/05/16 - zPAM 3.21 - 2021/05/05 - zPAM 3.20 - 2021/01/05 - zPAM 3.1 BETA 6 - 2020/11/29 - zPAM 3.1 BETA 5 @@ -23,6 +25,37 @@ Work on this pam was iniciated by me in 2015 a was not never fully finished. In ## Changelog +
zPAM 3.22 changes (click to open) +

+ +#### Bugs fixed: +- [3.3.18] Quick menu settings - settings for 'Show enemy list' was not correctly saved - fixed +- [3.3.29] Score changing via menu - fixed issue when score is changed to halftime state (for example 10:2 in cg_mr12) - halftime was then called again -> fixed + +#### News: +- [3.3.42] Players left - when last player in team is killed, text "Allies Eliminated" / "Axis Eliminated" is showed + (this change was already in zPAM3.20 - i forgot to write it to the change list) +- [3.3.43] When you hit your teammate, reddish hit mark is showed
+ +- Added text warning on screen to select a team when you ESC welcome (server info) menu + +#### Update of existing: +- [3.3.32] New damage feedback for assists - text "assist" is showed instead of hit mark
+ +- [3.3.41] When 5min timer expires between maps / halfs, warning text is showed for better indication that one team ready will skip the readyup
+ +- [3.3.42] Players left - when some player were killed, "bouncy" animation was used for text. Its removed now because the number sometimes incomprehensibly moved all over the screen +- [3.3.42] Players left - when last player in team is killed, text "Allies Eliminated" / "Axis Eliminated" is now showed in red color. +- [3.3.10] Match info - improved detection of new match with different team +- [3.3.2] Auto-recording - ensuring my team name is always first in demo name +- [3.3.17] Scoreboard menu - when final scoreboard is showed, players names are showed with colors now +

+
+ + + + +
zPAM 3.21 changes (click to open)

@@ -37,6 +70,8 @@ Work on this pam was iniciated by me in 2015 a was not never fully finished. In

+ +
zPAM 3.20 changes (click to open)

@@ -87,21 +122,26 @@ r_polygonOffsetScale and r_polygonOffsetBias warning appears even if they were c ## Installation -- Download zPAM 3.21 and extract folders with files into following locations: +- Download zPAM 3.22 and extract folders with files into following locations: - ./pb/pbsvuser.cfg - - ./main/zpam321.iwd + - ./main/zpam322.iwd - ./main/mp_toujane_fix_v2.iwd - ./main/mp_burgundy_fix_v1.iwd - ./main/server.cfg + - ./main/public.cfg + + +- Add ```+exec server.cfg``` into command line arguments and edit the *server.cfg* file to configure your server +- If you are running public server, add ```+exec public.cfg``` into command line arguments and edit the *public.cfg* file to configure your public server +- If you use these .cfg files, make sure no other .cfg files are executed! - Notes: - When your server is runned, you may get an error message saying "PAM is not installed correctly". To fix this error, follow instructions in [Troubleshooting](#troubleshooting) section - mp_toujane_fix_v2.iwd and mp_burgundy_fix_v1.iwd are fixed version of original maps - these files needs to be included with PAM, more info in [Questions & Answers](#questions--answers) section - Toujane FIX changes: https://github.com/eyza-cod2/mp_toujane_fix - - Burgundy FIX changes: https://github.com/eyza-cod2/mp_burgundy_fix. - - server.cfg - exec this file for fast server configuration and in case you are running a public server (+exec server) - - you have to enable downloading via cvar sv_wwwDownload 1 and specify a download url via cvar sv_wwwBaseURL "url"; if you dont have any, you can use sv_wwwBaseURL "http://cod2x.me/zpam321" (this is to make sure fixed maps are downloaded in fast way for players) + - Burgundy FIX changes: https://github.com/eyza-cod2/mp_burgundy_fix + - you have to enable downloading via cvar sv_wwwDownload 1 and specify a download url via cvar sv_wwwBaseURL "url"; if you dont have any, you can use sv_wwwBaseURL "http://cod2x.me/zpam322" (this is to make sure fixed maps are downloaded in fast way for players) ## Contact @@ -109,11 +149,27 @@ Write message on discord LetsPlay Europe in #cod2-zpam-3 channel.< Or add me on discord eyza#7930
Or write me on email kratas.tom@seznam.cz

-Supporters: askeslav, tomik, cokY, Sk1lzZ, YctN, kebit, foxbuster, <==Mustang==>Clan from Hungary, hubertgruber / dutch, excel -

Please support this work on my Paypal -> https://paypal.me/kratasy
+## Supporters + +**askeslav, tomik, lampy**
+Big thanks for consulting and testing + +**YctN** (discord: FGH - YctN#1140)
+Big thanks for server support, hosting and fixed maps consulting + +**Stendby** (discord: Stendby#3298)
+Big thanks for fixed maps + +**mtN** (discord: mtN#8249)
+Big thanks for PAM promoting + +**Other supporters:**
+cokY, Sk1lzZ, YctN, kebit, foxbuster, <==Mustang==>Clan from Hungary, hubertgruber / dutch, excel, shady + +

## Questions & Answers @@ -335,8 +391,8 @@ Example: "autorecording_1|matchinfo_1|score_0|playersleft_1" ## Troubleshooting ### Error "zPAM is not installed correctly" -#### Iwd file zpam321.iwd must be installed in main folder. (fs_game) - - From version 3.21, all iwd files have to be installed in main folder. +#### Iwd file zpam322.iwd must be installed in main folder. (fs_game) + - From version 3.20, all iwd files have to be installed in main folder. This is because of bug that cvars / settings changed in game are not saved into the config when running a game with fs_game set. Make sure cvar /fs_game is empty and iwd files are placed in main folder. @@ -348,7 +404,7 @@ Make sure cvar /fs_game is empty and iwd files are placed in main folder. #### WWW downloading must be enabled. Set sv_wwwDownload and sv_wwwBaseURL - You have to enable www downloading via cvar /sv_wwwDownload 1 and specify a download url via cvar /sv_wwwBaseURL "url". -- If you dont have any url, you can use /sv_wwwBaseURL "http://cod2x.me/zpam321" +- If you dont have any url, you can use /sv_wwwBaseURL "http://cod2x.me/zpam322" - This is to make sure fixed maps are downloaded in fast way for players #### Old pam / maps detected in main folder. Delete iwd file you see above. @@ -566,7 +622,8 @@ Added posibility to call bash mode from menu.
[3.3.29] Score changing via menu - in first readyup, you can change a score of teams (in case wrong pam_mode was set, server crash, etc..)
[3.3.30] New spectating system - new UI, auto-spectator is now better, score stats, player progress stats, etc..
[3.3.31] Round report - at the end of the round info about kills and hits you made are printed
-[3.3.32] New damage feedback for assists - when player damaged by you is killed, damage feedback cross is showed
+[3.3.32] New damage feedback for assists - when player damaged by you is killed, "assist" text is showed on screen
+
[3.3.33] Players left - new player names list of alive enemy players above players left counter (can be turned off via menu)
[3.3.34] In readyup, you can throw nades like in strat mode
[3.3.35] New custom settings for map mode in rcon menu - a few of the settings can be changed (for example shotgun rebalance, fast-reload fix) and this change stays applied in next maps
@@ -577,8 +634,12 @@ Added posibility to call bash mode from menu.
[3.3.38] Score in left-top corner can by enabled via settings menu
[3.3.39] For future hit diagnostics, at the end of each round info about hits is saved to cvar pam_damage_debug
[3.3.40] Hitbox rebalance - if you fire from rifle or scope to left arm at +-20* degress, it will be changed to kill to body
-[3.3.41] In halftime-readyup and between map readyup, when 5min timer expire, red timer is showed. If all players from 1 team are ready, match automatically start even if opponent team is not ready.
+[3.3.41] In halftime-readyup and between map readyup, when 5min timer expire, warning and red timer is showed. If all players from 1 team are ready, match automatically start even if opponent team is not ready.

+[3.3.42] Players left - when last player in team is killed, text "Allies Eliminated" / "Axis Eliminated" is showed
+[3.3.43] When you hit your teammate, reddish hit mark is showed
+
- + diff --git a/images/assist.png b/images/assist.png new file mode 100644 index 0000000..655f323 Binary files /dev/null and b/images/assist.png differ diff --git a/images/auto_readyup.png b/images/auto_readyup.png index 91c2dbb..840d185 100644 Binary files a/images/auto_readyup.png and b/images/auto_readyup.png differ diff --git a/images/team_hit.png b/images/team_hit.png new file mode 100644 index 0000000..3d684ab Binary files /dev/null and b/images/team_hit.png differ diff --git a/source/maps/mp/gametypes/_callbacksetup.gsc b/source/maps/mp/gametypes/_callbacksetup.gsc index abec163..e23c7ac 100644 --- a/source/maps/mp/gametypes/_callbacksetup.gsc +++ b/source/maps/mp/gametypes/_callbacksetup.gsc @@ -343,7 +343,7 @@ CodeCallback_PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath { //eAttacker iprintln("^6DMG feedback" + i); if(isPlayer(eAttacker) && eAttacker != self && !(iDFlags & level.iDFLAGS_NO_PROTECTION)) - eAttacker thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback(); + eAttacker thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback(self); } //println("##################### " + "notifyDamage"); diff --git a/source/maps/mp/gametypes/_damagefeedback.gsc b/source/maps/mp/gametypes/_damagefeedback.gsc index da51402..0345239 100644 --- a/source/maps/mp/gametypes/_damagefeedback.gsc +++ b/source/maps/mp/gametypes/_damagefeedback.gsc @@ -10,6 +10,8 @@ init() { precacheShader("damage_feedback"); precacheRumble("damage_heavy"); + + precacheString2("STRING_ASSIST", &"assist"); } } @@ -25,7 +27,7 @@ onCvarChanged(cvar, value, isRegisterTime) return false; } -updateDamageFeedback() +updateDamageFeedback(enemy) { if (level.scr_show_hitblip) { @@ -43,6 +45,11 @@ updateDamageFeedback() self.hud_damagefeedback setShader("damage_feedback", 24, 24); } + color = (1,1,1); + if (isPlayer(enemy) && level.gametype == "sd" && !level.in_readyup && enemy.pers["team"] == self.pers["team"]) + color = (1,0.5,0.5); + + self.hud_damagefeedback.color = color; self.hud_damagefeedback.alpha = 1; self.hud_damagefeedback fadeOverTime(1); self.hud_damagefeedback.alpha = 0; @@ -56,11 +63,25 @@ updateAssistsFeedback() { if (level.scr_show_hitblip) { - if(isPlayer(self) && isDefined(self.hud_damagefeedback)) + if(isPlayer(self)) { - self.hud_damagefeedback.alpha = 0.5; - self.hud_damagefeedback fadeOverTime(0.6); - self.hud_damagefeedback.alpha = 0; + if (!isDefined(self.hud_assistfeedback)) + { + self.hud_assistfeedback = newClientHudElem2(self); + self.hud_assistfeedback.horzAlign = "center"; + self.hud_assistfeedback.vertAlign = "middle"; + self.hud_assistfeedback.x = 0; + self.hud_assistfeedback.y = 20; + self.hud_assistfeedback.alpha = 0; + self.hud_assistfeedback.archived = true; + self.hud_assistfeedback.color = (1,1,1); + self.hud_assistfeedback.fontSize = 1.1; + self.hud_assistfeedback setText(game["STRING_ASSIST"]); + } + + self.hud_assistfeedback.alpha = 1; + self.hud_assistfeedback fadeOverTime(1.3); + self.hud_assistfeedback.alpha = 0; } } } diff --git a/source/maps/mp/gametypes/_matchinfo.gsc b/source/maps/mp/gametypes/_matchinfo.gsc index a89d49e..f44797d 100644 --- a/source/maps/mp/gametypes/_matchinfo.gsc +++ b/source/maps/mp/gametypes/_matchinfo.gsc @@ -385,7 +385,9 @@ resetAll() waitForPlayerOrClear(playersLast) { - wait level.fps_multiplier * 25; + wait level.fps_multiplier * 15; + + resetCount = 0; for(;;) { @@ -396,6 +398,12 @@ waitForPlayerOrClear(playersLast) // reset matchinfo if 30% of players disconnect or there are no players or there was no players last map players = getentarray("player", "classname"); if (((players.size * 1.0) < (playersLast * 0.7)) || ((players.size * 1.0) > (playersLast * 1.2)) || players.size <= 1 || playersLast <= 1) + resetCount++; + else + resetCount = 0; + + // We are sure to reset the match info + if (resetCount >= 4) { clear(); iprintln("Info about teams was cleared."); @@ -667,7 +675,7 @@ refresh() if (playersLast != "") { level thread waitForPlayerOrClear(int(playersLast)); - setcvar("sv_map_players", ""); + //setcvar("sv_map_players", ""); } // Save previous time left @@ -765,6 +773,17 @@ refresh() setCvarIfChanged("sv_map_totaltime", game["match_totaltime"]); + // Update number of players in first round (and second update only of its higher due to missing player in first round) + // If number of players change, matchinfo is reseted next map due to different number of players + if (game["match_teams_set"]) + { + savedPlayers = GetCvarInt("sv_map_players"); // GetCvarInt return 0 if cvar is empty string + players = getentarray("player", "classname"); + + if (savedPlayers == 0 || (game["round"] == 2 && players.size > savedPlayers)) + setCvarIfChanged("sv_map_players", players.size); + } + // Total time if (game["match_totaltime"] > 0) @@ -823,13 +842,6 @@ refresh() setCvarIfChanged("sv_map_score", (game["match_team1_score_beforeOvertime"] + team1add) + " : " + (game["match_team2_score_beforeOvertime"] + team2add) + " OT"); } - - // Update number of player in this match - // Update this value only if it increases - avoid decreasing it for case when players disconnect in the middle of the match - // so next time map restart the info about match is properly reseted due to low number of players - players = getentarray("player", "classname"); - if (players.size > GetCvarInt("sv_map_players")) - setCvarIfChanged("sv_map_players", players.size); } // Global server cvars visible via HLSW diff --git a/source/maps/mp/gametypes/_menu_scoreboard.gsc b/source/maps/mp/gametypes/_menu_scoreboard.gsc index dee1573..031bca7 100644 --- a/source/maps/mp/gametypes/_menu_scoreboard.gsc +++ b/source/maps/mp/gametypes/_menu_scoreboard.gsc @@ -196,7 +196,15 @@ addLine(player, name, score, kills, deaths, assists, damages, plants, defuses) self.scoreboard.names += "^4"; // blue } - if (isDefined(name)) self.scoreboard.names += removeColorsFromString(name); + + + if (isDefined(name)) + { + // In final scoreboard show name colors, otherwise dont + if (game["state"] != "intermission") + name = removeColorsFromString(name); + self.scoreboard.names += name; + } if (isDefined(score)) self.scoreboard.scores += score; if (isDefined(kills)) self.scoreboard.kills += kills; if (isDefined(deaths)) self.scoreboard.deaths += deaths; diff --git a/source/maps/mp/gametypes/_pam.gsc b/source/maps/mp/gametypes/_pam.gsc index c463a42..d212af1 100644 --- a/source/maps/mp/gametypes/_pam.gsc +++ b/source/maps/mp/gametypes/_pam.gsc @@ -4,7 +4,7 @@ init() { if(game["firstInit"]) { - precacheString2("STRING_VERSION_INFO", &"zPAM 3.21"); // ZPAM_RENAME + precacheString2("STRING_VERSION_INFO", &"zPAM 3.22"); // ZPAM_RENAME } } diff --git a/source/maps/mp/gametypes/_players_left.gsc b/source/maps/mp/gametypes/_players_left.gsc index fc09acd..ac9fe4b 100644 --- a/source/maps/mp/gametypes/_players_left.gsc +++ b/source/maps/mp/gametypes/_players_left.gsc @@ -56,7 +56,8 @@ onConnected() self thread createHUD(); // Enable player list by default, can be overwritten by player settings - self.pers["playersleft_list"] = true; + if (!isDefined(self.pers["playersleft_list"])) + enable(); } else self hide(); // hide is set from previous map @@ -229,14 +230,6 @@ updateHUD(alliesChanged, axisChanged) self.playersLeft_myTeam_num setValue(level.axis_alive); self.playersLeft_enemy_num setValue(level.allies_alive); - - // Bounce animation - if (alliesChanged && self.pers["team"] == "axis") - { - self thread doBounceAnimation(self.playersLeft_enemy_num); - if (level.allies_alive == 0) - self thread doBounceAnimation(self.playersLeft_enemy); - } } else // allies on left { @@ -268,14 +261,6 @@ updateHUD(alliesChanged, axisChanged) self.playersLeft_myTeam_num setValue(level.allies_alive); self.playersLeft_enemy_num setValue(level.axis_alive); - - // Bounce animation - if (axisChanged && self.pers["team"] == "allies") - { - self thread doBounceAnimation(self.playersLeft_enemy_num); - if (level.axis_alive == 0) - self thread doBounceAnimation(self.playersLeft_enemy); - } } if (self.pers["team"] == "spectator") @@ -287,40 +272,32 @@ updateHUD(alliesChanged, axisChanged) } else { - self.playersLeft_myTeam.color = (.580,.961,.573); - self.playersLeft_myTeam_num.color = (.580,.961,.573); - self.playersLeft_enemy.color = (.055,.855,.996); - self.playersLeft_enemy_num.color = (.055,.855,.996); - } -} - - -doBounceAnimation(element) -{ - self endon("disconnect"); - - if (isDefined(element.inBounce)) - return; - - // Up down animation - element moveovertime(0.1); - element.y = 469; - element.inBounce = true; - - wait level.fps_multiplier * 0.12222; + // Eliminetd text is showed + if (self.playersLeft_myTeam_num.alpha == 0) + { + self.playersLeft_myTeam.color = (1,0.2,0.2); + // 0 Allies left is showed + } else { + self.playersLeft_myTeam.color = (.580,.961,.573); + self.playersLeft_myTeam_num.color = (.580,.961,.573); + } - element moveovertime(0.2); - element.y = 479; - element.inBounce = undefined; + // Eliminetd text is showed + if (self.playersLeft_enemy_num.alpha == 0) + { + self.playersLeft_enemy.color = (1,0.2,0.2); + // 0 Allies left is showed + } else { + self.playersLeft_enemy.color = (.055,.855,.996); + self.playersLeft_enemy_num.color = (.055,.855,.996); + } + } } - - - isEnabled() { return isDefined(self.pers["playersleft_list"]) && self.pers["playersleft_list"]; diff --git a/source/maps/mp/gametypes/_readyup.gsc b/source/maps/mp/gametypes/_readyup.gsc index d6a4f03..f288d30 100644 --- a/source/maps/mp/gametypes/_readyup.gsc +++ b/source/maps/mp/gametypes/_readyup.gsc @@ -43,6 +43,8 @@ init() game["objective_timeout"] = game["readyup_press_activate"]; + precacheString2("STRING_READYUP_SELECT_TEAM", &"Select team!"); + precacheString2("STRING_READYUP_RESUMING_IN", &"Resuming In"); precacheString2("STRING_READYUP_KILLING_DISABLED", &"Disabled"); precacheString2("STRING_READYUP_KILLING_ENABLED", &"Enabled"); @@ -53,6 +55,9 @@ init() precacheString2("STRING_READYUP_MATCH_CONTINUES_IN", &"Match continues in:"); precacheString2("STRING_READYUP_MATCH_RESUMES_IN", &"Match resumes in:"); + // Time to readyup expired + precacheString2("STRING_READYUP_SET_YOUR_TEAM_AS_READY", &"Time is over. Setting one team ready will skip the Ready-up."); + // Readyup warnings precacheString2("STRING_WARNING_PASSWORD_IS_NOT_SET", &"Warning: Server password is not set"); precacheString2("STRING_WARNING_CHEATS_ARE_ENABLED", &"Warning: Cheats are Enabled"); @@ -194,6 +199,9 @@ onSpawned() self PrintTeamAndHowToUse(); + // Warning to select team if player is team none + self HUD_SelectTeam(); + if (level.scr_readyup_nadetraining) { @@ -592,9 +600,6 @@ ReadyUp_AutoResume() // Resume after scr_readyup_autoresume seconds (5 mins defaults) wait level.fps_multiplier * level.scr_readyup_autoresume * 60; - // Set your team as ready to skip readyup - iprintlnbold(game["readyup_timeExpired"]); - iprintlnbold(game["readyup_skip"]); level thread HUD_ReadyUp_ResumingIn_ExtraTime(); @@ -1112,6 +1117,24 @@ HUD_ReadyUp_ResumingIn_ExtraTime() { level endon("readyup_removeAutoResume"); + // Set your team as ready to skip readyup + level.setYourTeamAsReadyBG = addHUD(-160, 347, undefined, (1,1,1), "left", "top", "center", "top"); + level.setYourTeamAsReadyBG setShader("black", 320, 20); + level.setYourTeamAsReadyBG.alpha = 0.75; + + level.setYourTeamAsReady = newHudElem2(); + level.setYourTeamAsReady.x = 320; + level.setYourTeamAsReady.y = 350; + level.setYourTeamAsReady.alignX = "center"; + level.setYourTeamAsReady.alignY = "top"; + level.setYourTeamAsReady.fontScale = 1.1; + level.setYourTeamAsReady.color = (1, 0, 0); + level.setYourTeamAsReady setText(game["STRING_READYUP_SET_YOUR_TEAM_AS_READY"]); + + iprintlnbold(game["readyup_timeExpired"]); + iprintlnbold(game["readyup_skip"]); + + // Red extra time level.ht_resume_clock_extra = newHudElem2(); level.ht_resume_clock_extra.x = level.hud_readyup_offsetX; level.ht_resume_clock_extra.y = level.hud_readyup_offsetY + 248; @@ -1158,6 +1181,14 @@ HUD_ReadyUp_ResumingIn_Delete() level.ht_resume_clock_extra destroy2(); level.ht_resume_clock_extra = undefined; } + + if (isDefined(level.setYourTeamAsReadyBG)) + { + level.setYourTeamAsReadyBG destroy2(); + level.setYourTeamAsReadyBG = undefined; + level.setYourTeamAsReady destroy2(); + level.setYourTeamAsReady = undefined; + } } @@ -1201,6 +1232,34 @@ HUD_Timeout_ResumingIn() } + +// Called each time player is spawned +HUD_SelectTeam() +{ + if (self.pers["team"] == "none") + { + if (!isDefined(self.selectTeamInfoBG)) + { + // Set your team as ready to skip readyup + self.selectTeamInfoBG = addHUDClient(self, -50, -23, undefined, (1,1,1), "left", "top", "center", "middle"); + self.selectTeamInfoBG setShader("black", 100, 20); + self.selectTeamInfoBG.alpha = 0.75; + + self.selectTeamInfo = addHUDClient(self, 0, -20, 1.1, (1,1,1), "center", "top", "center", "middle"); + self.selectTeamInfo setText(game["STRING_READYUP_SELECT_TEAM"]); + } + + } + else if (isDefined(self.selectTeamInfo)) + { + self.selectTeamInfoBG destroy2(); + self.selectTeamInfoBG = undefined; + self.selectTeamInfo destroy2(); + self.selectTeamInfo = undefined; + } +} + + // Black scren + timer countdown HUD_Half_Start(time) { diff --git a/source/maps/mp/gametypes/_record.gsc b/source/maps/mp/gametypes/_record.gsc index b9d7d46..e67ca3f 100644 --- a/source/maps/mp/gametypes/_record.gsc +++ b/source/maps/mp/gametypes/_record.gsc @@ -162,7 +162,7 @@ generateDemoName() // Assing my team name as first myTeamName = game["match_team1_name"]; enemyTeamName = game["match_team2_name"]; - if (self.pers["team"] == "axis" && game["match_team2_side"] == "axis") + if (self.pers["team"] == game["match_team2_side"]) { myTeamName = game["match_team2_name"]; enemyTeamName = game["match_team1_name"]; @@ -306,6 +306,8 @@ stopRecordingForAll() player openMenu(game["menu_exec_cmd"]); // open menu via script player closeMenu(); // will only close menu opened by script + // Serverinfo menu reopen + player thread reopenServerinfoMenu(); player iprintln("Recording stopped."); @@ -316,6 +318,21 @@ stopRecordingForAll() } +reopenServerinfoMenu() +{ + self endon("disconnect"); + + wait level.fps_multiplier * 0.1; + + // Because stop recording may be called when matchinfo is cleared - it will close sevrerinfo menu for connected players + // If they are still in serverinfo menu, open that menu again + if(!isDefined(self.pers["skipserverinfo"])) + { + self openMenu(game["menu_serverinfo"]); + } +} + + execRecording() { // Auto recording is turned off by player, print atleast warning message diff --git a/source/maps/mp/gametypes/_score_set.gsc b/source/maps/mp/gametypes/_score_set.gsc index 89e1f11..689a2a9 100644 --- a/source/maps/mp/gametypes/_score_set.gsc +++ b/source/maps/mp/gametypes/_score_set.gsc @@ -85,7 +85,7 @@ handle(team, roundsplayed, value) - if ((roundsplayed > level.halfround && level.halfround > 0) || (value > level.halfscore && level.halfscore > 0)) + if ((roundsplayed >= level.halfround && level.halfround > 0) || (value >= level.halfscore && level.halfscore > 0)) game["is_halftime"] = true; else game["is_halftime"] = false; diff --git a/source/maps/mp/gametypes/global/developer.gsc b/source/maps/mp/gametypes/global/developer.gsc index 00b4836..21a0dc1 100644 --- a/source/maps/mp/gametypes/global/developer.gsc +++ b/source/maps/mp/gametypes/global/developer.gsc @@ -511,7 +511,7 @@ onConnected() self notify("menuresponse", game["menu_serverinfo"], "close"); wait level.frame; - i = 1; + i = 0; if (i == 0) { diff --git a/source/maps/mp/gametypes/global/pam.gsc b/source/maps/mp/gametypes/global/pam.gsc index ac8bde4..7750b3b 100644 --- a/source/maps/mp/gametypes/global/pam.gsc +++ b/source/maps/mp/gametypes/global/pam.gsc @@ -24,7 +24,7 @@ init() // Errors precacheString2("STRING_PAM_DONT_STEAL", &"This version of pam is only for testing! Dont steal!"); - precacheString2("STRING_PAM_MUST_EXISTS_UNDER_MAIN", &"Iwd file ^9zpam321.iwd^7 must be installed in ^9main^7 folder. (fs_game)"); // ZPAM_RENAME + precacheString2("STRING_PAM_MUST_EXISTS_UNDER_MAIN", &"Iwd file ^9zpam322.iwd^7 must be installed in ^9main^7 folder. (fs_game)"); // ZPAM_RENAME precacheString2("STRING_PAM_GETTING_IWD_FILES_ERROR", &"Error while getting loaded iwd files. Make sure iwd files does not contains spaces."); precacheString2("STRING_PAM_TOUJANE_FIX_MISSING", &"Iwd file ^9mp_toujane_fix_v2.iwd^7 must be installed in ^9main^7 folder"); precacheString2("STRING_PAM_BURGUNDY_FIX_MISSING", &"Iwd file ^9mp_burgundy_fix_v1.iwd^7 must be installed in ^9main^7 folder"); @@ -38,7 +38,7 @@ init() } - level.pam_folder = "main/zpam321"; // ZPAM_RENAME + level.pam_folder = "main/zpam322"; // ZPAM_RENAME level.pam_mode_change = false; @@ -222,8 +222,9 @@ CheckInstallation() blackList[blackList.size] = "zpam310_beta6"; blackList[blackList.size] = "zpam320_test"; blackList[blackList.size] = "zpam320"; + blackList[blackList.size] = "zpam321"; blackList[blackList.size] = "mp_toujane_fix_v1"; - + // ZPAM_RENAME - add old pam for(i = 0; i < blackList.size; i++) { @@ -236,9 +237,6 @@ CheckInstallation() return; } } - - - // TODO check www download url and set github? } diff --git a/source/readme.txt b/source/readme.txt index c2d9cfc..097e72a 100644 --- a/source/readme.txt +++ b/source/readme.txt @@ -1,5 +1,5 @@ -zPAM3.1 BETA 6 -Released 2021/01/05 +zPAM3.22 +Released 2021/07/15 This mod was created by EYZA diff --git a/source/ui_mp/connect.menu b/source/ui_mp/connect.menu index fbe5d68..7fa279c 100644 --- a/source/ui_mp/connect.menu +++ b/source/ui_mp/connect.menu @@ -85,10 +85,10 @@ { visible 1 origin 447 15 - forecolor 1 1 0 1 - text "You are playing on testing version of zPAM" + forecolor 1 1 1 1 + text "You are playing on server with BETA version of zPAM3.22" textfont UI_FONT_NORMAL - textscale 0.25 + textscale 0.2 textstyle ITEM_TEXTSTYLE_SHADOWED textalign ITEM_ALIGN_CENTER decoration @@ -97,21 +97,22 @@ { visible 1 origin 447 30 - forecolor 1 1 0 1 + forecolor 1 1 1 0.8 text "Please report bugs on discord ^2LetsPlay Europe ^7in ^2#cod2-zpam-3 ^7channel." textfont UI_FONT_NORMAL - textscale 0.25 + textscale 0.2 textstyle ITEM_TEXTSTYLE_SHADOWED textalign ITEM_ALIGN_CENTER decoration } */ + itemDef { visible 1 origin 447 15 forecolor 1 1 1 1 - text "You are playing on server with ^2zPAM3.21" // ZPAM_RENAME + text "You are playing on server with ^2zPAM3.22" // ZPAM_RENAME textfont UI_FONT_NORMAL textscale 0.2 textstyle ITEM_TEXTSTYLE_SHADOWED diff --git a/source/ui_mp/scriptmenus/submenus/ingame_aboutpam.menu b/source/ui_mp/scriptmenus/submenus/ingame_aboutpam.menu index 5b19de6..dde7708 100644 --- a/source/ui_mp/scriptmenus/submenus/ingame_aboutpam.menu +++ b/source/ui_mp/scriptmenus/submenus/ingame_aboutpam.menu @@ -69,7 +69,7 @@ itemDef visible 1 origin 60 101 forecolor GLOBAL_UNFOCUSED_COLOR - text "askeslav, tomik, cokY, Sk1lzZ, YctN, kebit, foxbuster" + text "askeslav, tomik, cokY, Sk1lzZ, YctN, kebit, foxbuster, shady" textfont UI_FONT_NORMAL textscale 0.25 textstyle ITEM_TEXTSTYLE_SHADOWED diff --git a/zip/main/public.cfg b/zip/main/public.cfg new file mode 100644 index 0000000..4ebb1f0 --- /dev/null +++ b/zip/main/public.cfg @@ -0,0 +1,223 @@ +//************************************************ +// ____ _ __ __ _____ +// | _ \ / \ | \/ | |___ / +// | |_) | / _ \ | |\/| | |_ \ +// | __/ / ___ \ | | | | ___) | +// |_| /_/ \_\ |_| |_| |____/ +// +// *********************************************/ + +// Put this file inside main folder +// Exec this file via command line '+exec public' +// Cvars below are used only if pam_mode is set to public (pam_mode pub) +// Otherwise these settings are overwritten by pam_mode rules + + +//******************************* +// S&D Public server settings +//******************************* +// Match Style +set scr_sd_timelimit 0 // Time limit for map. 0=disabled (minutes) +set scr_sd_half_round 10 // Number of rounds when half-time starts. 0=ignored +set scr_sd_half_score 0 // Number of score when half-time starts. 0=ignored +set scr_sd_end_round 20 // Number of rounds when map ends. 0=ignored +set scr_sd_end_score 0 // Number of score when map ends. 0=ignored + +// Round options +set scr_sd_strat_time 4 // Time before round starts where players cannot move +set scr_sd_roundlength 2 // Time length of each round (min) +set scr_sd_end_time 8 // Time et the end of the round (after last player is killed) when you can finding weapons for the next round +set scr_sd_count_draws 0 // If players are killed at same time - count this round (1) or play new round (0)? + +// Bomb settings +set scr_sd_bombtimer_show 1 // Show bombtimer stopwatch +set scr_sd_bombtimer 60 // Time untill bomb explodes. (seconds) +set scr_sd_PlantTime 5 +set scr_sd_DefuseTime 10 +set scr_sd_plant_points 0 +set scr_sd_defuse_points 0 + + + + +//******************************* +// TDM Public server settings +//******************************* +// Match Style +set scr_tdm_timelimit 15 // Time limit. When halftime is enabled, its time limit per half. 0=disabled (minutes) +set scr_tdm_half_score 0 // Number of score when half-time starts. Has no effect when halftime is disabled. +set scr_tdm_end_score 0 // Number of score when map ends. 0=ignored +// Halftime +set scr_tdm_halftime 1 // Do halftime. When 1, scr_tdm_timelimit means time per half + + + + +//******************************* +// DM Public server settings +//******************************* +// Match Style +set scr_dm_timelimit 15 // Time limit. When halftime is enabled, its time limit per half. 0=disabled (minutes) +set scr_dm_half_score 0 // Number of score when half-time starts. Has no effect when halftime is disabled. +set scr_dm_end_score 0 // Number of score when map ends. 0=ignored +// Halftime +set scr_dm_halftime 0 // Do halftime. When 1, scr_dm_timelimit means time per half + + + + + + + +//******************************* +// Shared gametype script cvars +//******************************* + +// Readyup +set scr_readyup 0 // Enable readyup [0, 1] 0 = disbled 1 = enabled +set scr_readyup_autoresume 5 // Minutes to auto-resume halftime [0 - 10] 0 = disabled +set scr_readyup_nadetraining 0 // Enable strat grenade fly mode in readyup +set scr_half_start_timer 10 // Count-down timer when First-half starting / Second-half starting / Timeout ending + +// Time-out +set scr_timeouts 0 // Total timeouts for one team +set scr_timeouts_half 1 // How many per side +set scr_timeout_length 5 // Length in minutes + +// Are there OT Rules? +set scr_overtime 0 + +// Hud Options +set scr_show_players_left 1 +set scr_show_objective_icons 0 +set scr_show_hitblip 1 + +set scr_show_scoreboard 1 //Score in the upper left corner [0 - 1] 0=hided 1=visible (if 1, score can be still hided by player settings) +set scr_show_scoreboard_limit 0 + +// Health Regeneration +set scr_allow_health_regen 1 // 0=no regen, 1=refill health after "scr_regen_delay" +set scr_allow_regen_sounds 1 +set scr_regen_delay 5000 //Time before regen starts + +// Ambients +set scr_allow_ambient_fog 0 +set scr_allow_ambient_sounds 0 +set scr_allow_ambient_fire 0 +set scr_allow_ambient_weather 0 + + +set scr_allow_shellshock 0 // Create shell shock effect when player is hitted +set scr_replace_russian 0 // Replace russians with Americans / Brisith +set scr_blackout 0 // If match is in progress, show map background all over the screen and disable sounds for connected player +set scr_recording 0 // Starts automatically recording when match starts +set scr_matchinfo 0 // Show match info in menu (1 = without team names, 2 = with team names) +set scr_map_vote 1 // Open voting system so players can vote about next map +set scr_map_vote_replay 0 // Show option to replay this map in voting system +set scr_auto_deadchat 0 // Automaticly enable / disable deadchat +set scr_remove_killtriggers 1 // Remove some of the kill-triggers created in 1.3 path +set scr_bash 0 // Bash mode can be called via menu in readyup + +set scr_friendlyfire 1 +set scr_drawfriend 1 +set scr_teambalance 0 +set scr_spectatefree 0 +set scr_spectateenemy 0 + +set g_allowVote 0 +set g_antilag 0 +set g_maxDroppedWeapons 32 +set sv_fps 30 +set sv_maxRate 25000 +set sv_timeout 60 // Time after 999 player is kicked + +set scr_fast_reload_fix 1 // Prevent players from shoting faster via double-scroll bug +set scr_shotgun_rebalance 1 // Enable shotgun rebalance to fix long shot kills and short range hits +set scr_prone_peek_fix 1 // Prevent players from doing fast peeks from prone (time, after player can prone again will be increased) +set scr_mg_peek_fix 1 // When mg is dropped, player is spawned right behid mg +set scr_hand_hitbox_fix 1 // Damage to left hand is adjusted for rifles and scopes. +set scr_killcam 0 + + + +//******************************* +// Weapons +//******************************* + +// Nade spawn counts for each class +set scr_boltaction_nades 1 +set scr_semiautomatic_nades 1 +set scr_smg_nades 1 +set scr_sniper_nades 1 +set scr_mg_nades 1 +set scr_shotgun_nades 1 + +// Smoke spawn counts for each class +set scr_boltaction_smokes 0 +set scr_semiautomatic_smokes 0 +set scr_smg_smokes 0 +set scr_sniper_smokes 0 +set scr_mg_smokes 0 +set scr_shotgun_smokes 1 + +// Weapon Limits by class per team +set scr_boltaction_limit 99 +set scr_sniper_limit 1 +set scr_semiautomatic_limit 99 +set scr_smg_limit 99 +set scr_mg_limit 99 +set scr_shotgun_limit 1 + +// Allow weapon drop when player die +set scr_boltaction_allow_drop 1 +set scr_sniper_allow_drop 0 +set scr_semiautomatic_allow_drop 1 +set scr_smg_allow_drop 1 +set scr_mg_allow_drop 1 +set scr_shotgun_allow_drop 0 + +// Allow grenade / smoke drop when player die +set scr_allow_grenade_drop 1 +set scr_allow_smoke_drop 0 + +// Player's weapon drop +set scr_allow_primary_drop 1 +set scr_allow_secondary_drop 1 + +// Allow/Disallow Weapons +set scr_allow_greasegun 1 +set scr_allow_m1carbine 1 +set scr_allow_m1garand 1 +set scr_allow_springfield 1 +set scr_allow_thompson 1 +set scr_allow_bar 1 +set scr_allow_sten 1 +set scr_allow_enfield 1 +set scr_allow_enfieldsniper 1 +set scr_allow_bren 1 +set scr_allow_pps42 1 +set scr_allow_nagant 1 +set scr_allow_svt40 1 +set scr_allow_nagantsniper 1 +set scr_allow_ppsh 1 +set scr_allow_mp40 1 +set scr_allow_kar98k 1 +set scr_allow_g43 1 +set scr_allow_kar98ksniper 1 +set scr_allow_mp44 1 +set scr_allow_shotgun 1 + +set scr_allow_pistols 1 +set scr_allow_turrets 1 + +// Single Shot Kills +set scr_no_oneshot_pistol_kills 0 +set scr_no_oneshot_ppsh_kills 0 + +// PPSH Balance - Limits range of PPSH to same as Tommy +set scr_balance_ppsh_distance 0 + + + + +set sv_maprotation "map mp_toujane map mp_burgundy map mp_dawnville map mp_matmata map mp_carentan map mp_farmhouse map mp_brecourt map mp_trainstation map mp_leningrad map mp_downtown map mp_railyard map mp_breakout" diff --git a/zip/main/server.cfg b/zip/main/server.cfg index 7b36c1d..d4f7e3e 100644 --- a/zip/main/server.cfg +++ b/zip/main/server.cfg @@ -8,19 +8,21 @@ // *********************************************/ // Put this file inside main folder -// Exec this file via command line +exec server - -// PAM mode -set pam_mode "cg_mr12" // pub, pcw, cg, cg_mr12, ... +// Exec this file via command line '+exec server' // Game type -set g_gametype "sd" +set g_gametype "sd" // sd, dm, tdm, strat + +// PAM mode +set pam_mode "cg_mr12" // SD: pub, pcw, cg, cg_mr12, cg_2v2, mr3, mr10, mr12, mr15, fun + // DM: pub, pcw, warmup + // TDM: pub, pcw // Hostname -set sv_hostname "Awesome server name | zPAM3.21" +set sv_hostname "Awesome server name | zPAM3.22" // Message of the Day -set scr_motd "Welcome. This server is running zPAM3.21" +set scr_motd "Welcome. This server is running zPAM3.22" // Server password set g_password "" @@ -29,7 +31,7 @@ set g_password "" set rcon_password "" // Mod download url -seta sv_wwwBaseURL "" // enter a valid URL address, otherwise zPAM will not work +seta sv_wwwBaseURL "http://cod2x.me/zpam322" // enter a valid URL address, otherwise zPAM will not work seta sv_wwwDlDisconnected "0" seta sv_wwwDownload "1" @@ -39,217 +41,5 @@ set logfile "0" set g_log "games_mp.log" set g_logsync "0" - - -// Cvars below are used only if pam_mode is set to pub (public) -// Otherwise these settings are overwritten by pam_mode rules - - -//******************************* -// S&D Public server settings -//******************************* -// Match Style -set scr_sd_timelimit 0 // Time limit for map. 0=disabled (minutes) -set scr_sd_half_round 10 // Number of rounds when half-time starts. 0=ignored -set scr_sd_half_score 0 // Number of score when half-time starts. 0=ignored -set scr_sd_end_round 20 // Number of rounds when map ends. 0=ignored -set scr_sd_end_score 0 // Number of score when map ends. 0=ignored - -// Round options -set scr_sd_strat_time 4 // Time before round starts where players cannot move -set scr_sd_roundlength 2 // Time length of each round (min) -set scr_sd_end_time 8 // Time et the end of the round (after last player is killed) when you can finding weapons for the next round -set scr_sd_count_draws 0 // If players are killed at same time - count this round (1) or play new round (0)? - -// Bomb settings -set scr_sd_bombtimer_show 1 // Show bombtimer stopwatch -set scr_sd_bombtimer 60 // Time untill bomb explodes. (seconds) -set scr_sd_PlantTime 5 -set scr_sd_DefuseTime 10 -set scr_sd_plant_points 0 -set scr_sd_defuse_points 0 - - - - -//******************************* -// TDM Public server settings -//******************************* -// Match Style -set scr_tdm_timelimit 15 // Time limit. When halftime is enabled, its time limit per half. 0=disabled (minutes) -set scr_tdm_half_score 0 // Number of score when half-time starts. Has no effect when halftime is disabled. -set scr_tdm_end_score 0 // Number of score when map ends. 0=ignored -// Halftime -set scr_tdm_halftime 1 // Do halftime. When 1, scr_tdm_timelimit means time per half - - - - -//******************************* -// DM Public server settings -//******************************* -// Match Style -set scr_dm_timelimit 15 // Time limit. When halftime is enabled, its time limit per half. 0=disabled (minutes) -set scr_dm_half_score 0 // Number of score when half-time starts. Has no effect when halftime is disabled. -set scr_dm_end_score 0 // Number of score when map ends. 0=ignored -// Halftime -set scr_dm_halftime 0 // Do halftime. When 1, scr_dm_timelimit means time per half - - - - - - - -//******************************* -// Shared gametype script cvars -//******************************* - -// Readyup -set scr_readyup 0 // Enable readyup [0, 1] 0 = disbled 1 = enabled -set scr_readyup_autoresume 5 // Minutes to auto-resume halftime [0 - 10] 0 = disabled -set scr_readyup_nadetraining 0 // Enable strat grenade fly mode in readyup -set scr_half_start_timer 10 // Count-down timer when First-half starting / Second-half starting / Timeout ending - -// Time-out -set scr_timeouts 0 // Total timeouts for one team -set scr_timeouts_half 1 // How many per side -set scr_timeout_length 5 // Length in minutes - -// Are there OT Rules? -set scr_overtime 0 - -// Hud Options -set scr_show_players_left 1 -set scr_show_objective_icons 0 -set scr_show_hitblip 1 - -set scr_show_scoreboard 1 //Score in the upper left corner [0 - 1] 0=hided 1=visible (if 1, score can be still hided by player settings) -set scr_show_scoreboard_limit 0 - -// Health Regeneration -set scr_allow_health_regen 1 // 0=no regen, 1=refill health after "scr_regen_delay" -set scr_allow_regen_sounds 1 -set scr_regen_delay 5000 //Time before regen starts - -// Ambients -set scr_allow_ambient_fog 0 -set scr_allow_ambient_sounds 0 -set scr_allow_ambient_fire 0 -set scr_allow_ambient_weather 0 - - -set scr_allow_shellshock 0 // Create shell shock effect when player is hitted -set scr_replace_russian 0 // Replace russians with Americans / Brisith -set scr_blackout 0 // If match is in progress, show map background all over the screen and disable sounds for connected player -set scr_recording 0 // Starts automatically recording when match starts -set scr_matchinfo 0 // Show match info in menu (1 = without team names, 2 = with team names) -set scr_map_vote 1 // Open voting system so players can vote about next map -set scr_map_vote_replay 0 // Show option to replay this map in voting system -set scr_auto_deadchat 0 // Automaticly enable / disable deadchat -set scr_remove_killtriggers 1 // Remove some of the kill-triggers created in 1.3 path -set scr_bash 0 // Bash mode can be called via menu in readyup - -set scr_friendlyfire 1 -set scr_drawfriend 1 -set scr_teambalance 0 -set scr_spectatefree 0 -set scr_spectateenemy 0 - -set g_allowVote 0 -set g_antilag 0 -set g_maxDroppedWeapons 32 -set sv_fps 30 -set sv_maxRate 25000 -set sv_timeout 60 // Time after 999 player is kicked - -set scr_fast_reload_fix 1 // Prevent players from shoting faster via double-scroll bug -set scr_shotgun_rebalance 1 // Enable shotgun rebalance to fix long shot kills and short range hits -set scr_prone_peek_fix 1 // Prevent players from doing fast peeks from prone (time, after player can prone again will be increased) -set scr_mg_peek_fix 1 // When mg is dropped, player is spawned right behid mg -set scr_hand_hitbox_fix 1 // Damage to left hand is adjusted for rifles and scopes. -set scr_killcam 0 - - - -//******************************* -// Weapons -//******************************* - -// Nade spawn counts for each class -set scr_boltaction_nades 1 -set scr_semiautomatic_nades 1 -set scr_smg_nades 1 -set scr_sniper_nades 1 -set scr_mg_nades 1 -set scr_shotgun_nades 1 - -// Smoke spawn counts for each class -set scr_boltaction_smokes 0 -set scr_semiautomatic_smokes 0 -set scr_smg_smokes 0 -set scr_sniper_smokes 0 -set scr_mg_smokes 0 -set scr_shotgun_smokes 1 - -// Weapon Limits by class per team -set scr_boltaction_limit 99 -set scr_sniper_limit 1 -set scr_semiautomatic_limit 99 -set scr_smg_limit 99 -set scr_mg_limit 99 -set scr_shotgun_limit 1 - -// Allow weapon drop when player die -set scr_boltaction_allow_drop 1 -set scr_sniper_allow_drop 0 -set scr_semiautomatic_allow_drop 1 -set scr_smg_allow_drop 1 -set scr_mg_allow_drop 1 -set scr_shotgun_allow_drop 0 - -// Allow grenade / smoke drop when player die -set scr_allow_grenade_drop 1 -set scr_allow_smoke_drop 0 - -// Player's weapon drop -set scr_allow_primary_drop 1 -set scr_allow_secondary_drop 1 - -// Allow/Disallow Weapons -set scr_allow_greasegun 1 -set scr_allow_m1carbine 1 -set scr_allow_m1garand 1 -set scr_allow_springfield 1 -set scr_allow_thompson 1 -set scr_allow_bar 1 -set scr_allow_sten 1 -set scr_allow_enfield 1 -set scr_allow_enfieldsniper 1 -set scr_allow_bren 1 -set scr_allow_pps42 1 -set scr_allow_nagant 1 -set scr_allow_svt40 1 -set scr_allow_nagantsniper 1 -set scr_allow_ppsh 1 -set scr_allow_mp40 1 -set scr_allow_kar98k 1 -set scr_allow_g43 1 -set scr_allow_kar98ksniper 1 -set scr_allow_mp44 1 -set scr_allow_shotgun 1 - -set scr_allow_pistols 1 -set scr_allow_turrets 1 - -// Single Shot Kills -set scr_no_oneshot_pistol_kills 0 -set scr_no_oneshot_ppsh_kills 0 - -// PPSH Balance - Limits range of PPSH to same as Tommy -set scr_balance_ppsh_distance 0 - - - - -set sv_maprotation "map mp_toujane map mp_burgundy map mp_dawnville map mp_matmata map mp_carentan map mp_farmhouse map mp_brecourt map mp_trainstation map mp_leningrad map mp_downtown map mp_railyard map mp_breakout" +// Map selection +map mp_toujane diff --git a/zip/main/zpam321.iwd b/zip/main/zpam322.iwd similarity index 88% rename from zip/main/zpam321.iwd rename to zip/main/zpam322.iwd index 6934613..ac2511f 100644 Binary files a/zip/main/zpam321.iwd and b/zip/main/zpam322.iwd differ diff --git a/zip/readme.txt b/zip/readme.txt index af76196..65f745d 100644 --- a/zip/readme.txt +++ b/zip/readme.txt @@ -1,17 +1,18 @@ Installation Extract folders with files into following locations: - ./pb/pbsvuser.cfg - - ./main/zpam321.iwd + - ./main/zpam322.iwd - ./main/mp_toujane_fix_v2.iwd - ./main/mp_burgundy_fix_v1.iwd - ./main/server.cfg + - ./main/public.cfg -Enable downloading via cvar sv_wwwDownload 1 and specify a download url via cvar sv_wwwBaseURL "url" -For fast server config exec server.cfg +Add '+exec server.cfg' into command line arguments and edit the server.cfg file to configure your server +If you are running public server, add '+exec public.cfg' into command line arguments and edit the public.cfg file to configure your public server +If you use these .cfg files, make sure no other .cfg files are executed! More info at: https://github.com/eyza-cod2/zpam3 - Contact Write message on discord LetsPlay Europe in #cod2-zpam-3 channel. Or add me on discord eyza#7930 diff --git a/zpam321.zip b/zpam322.zip similarity index 96% rename from zpam321.zip rename to zpam322.zip index 7a6c367..f9b1c18 100644 Binary files a/zpam321.zip and b/zpam322.zip differ