diff --git a/compile.bat b/compile.bat index f5dbade..61985e4 100644 --- a/compile.bat +++ b/compile.bat @@ -8,7 +8,7 @@ @echo off -SET mod_name=pml217 +SET mod_name=pml218 SET work_directory=%~dp0 cd %work_directory% diff --git a/compile_fastfile.bat b/compile_fastfile.bat index 0e104de..459b67a 100644 --- a/compile_fastfile.bat +++ b/compile_fastfile.bat @@ -19,13 +19,14 @@ xcopy shock ..\..\raw\shock\ /SY xcopy sound ..\..\raw\sound\ /SY xcopy soundaliases ..\..\raw\soundaliases\ /SY xcopy ui_mp ..\..\raw\ui_mp\ /SY +xcopy xmodel ..\..\raw\xmodel\ /SY copy mod.csv ..\..\zone_source /Y cd ..\..\bin linker_pc.exe -language english -compress -cleanup mod -verbose -cd ..\mods\pml217 +cd ..\mods\pml218 copy ..\..\zone\english\mod.ff pause diff --git a/maps/mp/_flashgrenades.gsc b/maps/mp/_flashgrenades.gsc index 9fca296..9ff0507 100644 --- a/maps/mp/_flashgrenades.gsc +++ b/maps/mp/_flashgrenades.gsc @@ -48,10 +48,7 @@ monitorFlash() { self waittill( "flashbang", amount_distance, amount_angle, attacker ); - if ( !isalive( self ) ) - continue; - - if ( ( isDefined( level.rdyup ) && level.rdyup && ( !isDefined( self.ruptally ) || self.ruptally < 0 ) ) || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" && isDefined( self.flying ) && self.flying ) + if ( !isalive( self ) || ( isDefined( level.rdyup ) && level.rdyup && ( !isDefined( self.ruptally ) || self.ruptally < 0 ) ) || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" && isDefined( self.flying ) && self.flying || isDefined( game["PROMOD_KNIFEROUND"] ) && game["PROMOD_KNIFEROUND"] ) continue; hurtattacker = false; diff --git a/maps/mp/gametypes/_class.gsc b/maps/mp/gametypes/_class.gsc index edee164..4473d87 100644 --- a/maps/mp/gametypes/_class.gsc +++ b/maps/mp/gametypes/_class.gsc @@ -8,78 +8,34 @@ Terms of license can be found in LICENSE.md document bundled with the project. */ -init() -{ - level.primary_weapon_array = []; - - weapon_class_register( "m16_mp", "weapon_assault" ); - weapon_class_register( "m16_silencer_mp", "weapon_assault" ); - weapon_class_register( "ak47_mp", "weapon_assault" ); - weapon_class_register( "ak47_silencer_mp", "weapon_assault" ); - weapon_class_register( "m4_mp", "weapon_assault" ); - weapon_class_register( "m4_silencer_mp", "weapon_assault" ); - weapon_class_register( "g3_mp", "weapon_assault" ); - weapon_class_register( "g3_silencer_mp", "weapon_assault" ); - weapon_class_register( "g36c_mp", "weapon_assault" ); - weapon_class_register( "g36c_silencer_mp", "weapon_assault" ); - weapon_class_register( "m14_mp", "weapon_assault" ); - weapon_class_register( "m14_silencer_mp", "weapon_assault" ); - weapon_class_register( "mp44_mp", "weapon_assault" ); - weapon_class_register( "mp5_mp", "weapon_smg" ); - weapon_class_register( "mp5_silencer_mp", "weapon_smg" ); - weapon_class_register( "uzi_mp", "weapon_smg" ); - weapon_class_register( "uzi_silencer_mp", "weapon_smg" ); - weapon_class_register( "ak74u_mp", "weapon_smg" ); - weapon_class_register( "ak74u_silencer_mp", "weapon_smg" ); - weapon_class_register( "winchester1200_mp", "weapon_shotgun" ); - weapon_class_register( "m1014_mp", "weapon_shotgun" ); - weapon_class_register( "m40a3_mp", "weapon_sniper" ); - weapon_class_register( "remington700_mp", "weapon_sniper" ); - - level thread onPlayerConnecting(); -} - -weapon_class_register( weapon, weapon_type ) -{ - level.primary_weapon_array[weapon] = weapon_type; -} - giveLoadout( team, class ) { self takeAllWeapons(); - self setClass( class ); + self setClientDvar( "loadout_curclass", class ); + self.curClass = class; sidearmWeapon(); primaryWeapon(); - if ( getDvarInt( "weap_allow_frag_grenade" ) && ( isDefined( level.strat_over ) && level.strat_over || !isDefined( level.strat_over ) ) ) + if(getDvarInt("weap_allow_frag_grenade") && (!isDefined( level.strat_over ) || level.strat_over)) { + s = ""; if ( level.hardcoreMode ) - { - self giveWeapon( "frag_grenade_short_mp" ); - self setWeaponAmmoClip( "frag_grenade_short_mp", 1 ); - self switchToOffhand( "frag_grenade_short_mp" ); - } - else - { - self giveWeapon( "frag_grenade_mp" ); - self setWeaponAmmoClip( "frag_grenade_mp", 1 ); - self switchToOffhand( "frag_grenade_mp" ); - } + s = "_short"; + self giveWeapon( "frag_grenade"+s+"_mp" ); + self setWeaponAmmoClip( "frag_grenade"+s+"_mp", 1 ); + self switchToOffhand( "frag_grenade"+s+"_mp" ); } - if ( self.pers[class]["loadout_grenade"] != "none" && ( getDvarInt( "weap_allow_flash_grenade" ) || getDvarInt( "weap_allow_smoke_grenade" ) ) ) + gren = self.pers[class]["loadout_grenade"]; + if((gren == "flash_grenade" || gren == "smoke_grenade") && getDvarInt("weap_allow_"+gren)) { - if ( self.pers[class]["loadout_grenade"] == "flash_grenade" && getDvarInt("weap_allow_flash_grenade") ) - self setOffhandSecondaryClass("flash"); - else if ( self.pers[class]["loadout_grenade"] == "smoke_grenade" && getDvarInt("weap_allow_smoke_grenade") ) - self setOffhandSecondaryClass("smoke"); - - if ( isDefined( level.strat_over ) && level.strat_over || !isDefined( level.strat_over ) ) + self setOffhandSecondaryClass(GetSubStr(gren, 0, 5)); + if(!isDefined(level.strat_over) || level.strat_over) { - self giveWeapon( self.pers[class]["loadout_grenade"] + "_mp" ); - self setWeaponAmmoClip( self.pers[class]["loadout_grenade"] + "_mp", 1 ); + self giveWeapon(gren+"_mp"); + self setWeaponAmmoClip(gren+"_mp", 1); } } @@ -96,13 +52,13 @@ sidearmWeapon() if ( sideArmWeapon != "none" ) { + s = ""; if ( self.pers[class]["loadout_secondary_attachment"] == "silencer" ) - sidearmWeapon = sidearmWeapon + "_silencer_mp"; + s = "_silencer"; else - { self.pers[class]["loadout_secondary_attachment"] = "none"; - sidearmWeapon = sidearmWeapon + "_mp"; - } + + sidearmWeapon += s+"_mp"; if ( isDefined( level.strat_over ) && level.strat_over && ( !isDefined( game["PROMOD_KNIFEROUND"] ) || !game["PROMOD_KNIFEROUND"] ) || !isDefined( level.strat_over ) ) { @@ -117,46 +73,61 @@ primaryWeapon() class = self.pers["class"]; primaryWeapon = self.pers[class]["loadout_primary"]; - if ( primaryWeapon != "none" && primaryWeapon != "m16" && primaryWeapon != "ak47" && primaryWeapon != "m4" && primaryWeapon != "g3" && primaryWeapon != "g36c" && primaryWeapon != "m14" && primaryWeapon != "mp44" && primaryWeapon != "mp5" && primaryWeapon != "uzi" && primaryWeapon != "ak74u" && primaryWeapon != "winchester1200" && primaryWeapon != "m1014" && primaryWeapon != "m40a3" && primaryWeapon != "remington700" ) - primaryWeapon = getDvar( "class_" + class + "_primary" ); - - if ( !isDefined( self.pers[class]["loadout_camo"] ) ) - self.pers[class]["camo_num"] = 0; - else if ( self.pers[class]["loadout_camo"] == "camo_brockhaurd" ) - self.pers[class]["camo_num"] = 1; - else if ( self.pers[class]["loadout_camo"] == "camo_bushdweller" ) - self.pers[class]["camo_num"] = 2; - else if ( self.pers[class]["loadout_camo"] == "camo_blackwhitemarpat" ) - self.pers[class]["camo_num"] = 3; - else if ( self.pers[class]["loadout_camo"] == "camo_tigerred" ) - self.pers[class]["camo_num"] = 4; - else if ( self.pers[class]["loadout_camo"] == "camo_stagger" ) - self.pers[class]["camo_num"] = 5; - else if ( self.pers[class]["loadout_camo"] == "camo_gold" && ( primaryWeapon == "ak47" || primaryWeapon == "uzi" || primaryWeapon == "m1014" ) ) - self.pers[class]["camo_num"] = 6; - else if ( self.pers[class]["loadout_camo"] == "camo_none" ) - self.pers[class]["camo_num"] = 0; - else + switch(primaryWeapon) { - self.pers[class]["loadout_camo"] = "camo_none"; - self.pers[class]["camo_num"] = 0; + case "none": + case "m16": + case "ak47": + case "m4": + case "g3": + case "g36c": + case "m14": + case "mp44": + case "mp5": + case "uzi": + case "ak74u": + case "winchester1200": + case "m1014": + case "m40a3": + case "remington700": + break; + default: + primaryWeapon = getDvar("class_"+class+"_primary"); + } + + camos = strtok("camo_brockhaurd|camo_bushdweller|camo_blackwhitemarpat|camo_tigerred|camo_stagger", "|"); + camonum = 0; + + if(isDefined(self.pers[class]["loadout_camo"])) + { + for(i=0;i +2014-02-12 #codpromod @ QuakeNet -Developers: Trivve & Ingram +Maintained by Ingram Sponsored by FragNet http://www.fragnet.net -Zip-package (promodlive217_eu.zip) contains: +Zip-package (promodlive218_eu.zip) contains: LICENSE -pml217\mod.ff -pml217\pml217.iwd -pml217\z_c_r.iwd +pml218\mod.ff +pml218\pml218.iwd +pml218\z_c_r.iwd pb\stock_iwd_md5.cfg pb\promod_iwd_md5.cfg pb\pbsvuser.cfg @@ -21,12 +21,14 @@ readme.txt server_setup.txt server.cfg +LIVE V2.18: +- Fixed the exploit where players could hide behind floodlights (solution found by Gunner) +- Removed the flashbang blinding effect during kniferound + LIVE V2.17: - Shortened file and folder names in order to fix (or avoid) "file sum/name mismatch" error. Please note that fs_game naming scheme is slighly different from now on. - Added timer to pre-match ready up period. -Leagues should allow both 2.16 and 2.17 for now as they are nearly identical. Upgrade from 2.16 is not necessary in case the server owner does not experience any problems listed above. This release does not contain any other changes and is intended as a quick fix for server owners having trouble setting up servers under Windows. - Public server owners should rename their z_custom_ruleset.iwd to the new shorter version of z_c_r.iwd, nothing inside is changed. LIVE V2.16: @@ -141,7 +143,7 @@ Q: What about the hardcore, and support for all gametypes, how do I use them? A: For a complete list of "promod_modes", see below. Q: I want to run my own custom Promod-server with skins etc, how? -A: In order to run your own custom Promod-server you'll need to change the fs_game to anything besides "mods/pml217" as well as not using match-modes. You will now be able to modify the Promod IWDs and add additional iwd-files. +A: In order to run your own custom Promod-server you'll need to change the fs_game to anything besides "mods/pml218" as well as not using match-modes. You will now be able to modify the Promod IWDs and add additional iwd-files. Q: Can I use this mod as a movie mod? A: Yes, you can! Commands (which are important for movie-making) are only forced on the clients once connected. Demos needs to be loaded using devmap before starting a demo ("devmap mp_crash;disconnect"). @@ -335,8 +337,8 @@ For example map "mp_dahman_b3" contains a file called "mp_dahman_b3.iwd" and the NOTES FOR SERVER-ADMINS AND SERVER-HOSTING COMPANIES -The dvar fs_game "mods/pml217" is forced for match-servers and do not rename any files or modify contents of them. -However custom servers with skins etc. must use something else than "mods/pml217" for example "mods/pml217_custom", it's not restricted and you are free to add additional iwd files or modify existing ones. +The dvar fs_game "mods/pml218" is forced for match-servers and do not rename any files or modify contents of them. +However custom servers with skins etc. must use something else than "mods/pml218" for example "mods/pml218_custom", it's not restricted and you are free to add additional iwd files or modify existing ones. Included with Promod are two PunkBuster MD5 configs, "stock_iwd_md5.cfg" and "promod_iwd_md5.cfg" which you can put in the pb-folder on your server, it contains checksums for the stock IWD-files as well as Promod-IWD for use with PunkBuster MD5 facility to prevent custom skins and other forms of cheating and abusing and can be loaded in-game by typing "\rcon pb_sv_load stock_iwd_md5.cfg" and "\rcon pb_sv_load promod_iwd_md5.cfg". diff --git a/server.cfg b/server.cfg index c98f165..6fcbb11 100644 --- a/server.cfg +++ b/server.cfg @@ -7,7 +7,7 @@ sets _Email "" sets _Website "" sets _Location "" sets _Irc "" -sets sv_hostname "Another Promod ^1LIVE ^7V2.17 ^7Server is Born" +sets sv_hostname "Another Promod ^1LIVE ^7V2.18 ^7Server is Born" // welcome message, message of the day (motd) seta scr_motd "Please visit us at www.codpromod.com, also visit our IRC channel #codpromod @ QuakeNet" diff --git a/server_setup.txt b/server_setup.txt index 636f733..aa2f286 100644 --- a/server_setup.txt +++ b/server_setup.txt @@ -4,7 +4,7 @@ This is a sample command-line for starting and using Promod LIVE V2 under Windows: - +set dedicated 2 +set net_ip localhost +set net_port 28960 +set sv_punkbuster 1 +set fs_game mods/pml217 +exec server.cfg +set rcon_password password +map_rotate + +set dedicated 2 +set net_ip localhost +set net_port 28960 +set sv_punkbuster 1 +set fs_game mods/pml218 +exec server.cfg +set rcon_password password +map_rotate dedicated [0-2] (listen, LAN, internet) net_ip [xxx.xxx.xxx.xxx] @@ -13,8 +13,8 @@ net_port [1-65535] (standard is 28960) Make sure you put the server config (server.cfg) in the main-folder or specify correct path to it. Please note that we also define the rcon password to the server here to prevent someone from downloading your config from server and thus view ("hack") your rcon password. -The dvar fs_game "mods/pml217" is forced for match-servers and do not rename any files or modify contents of them. -However custom servers with skins etc. must use something else than "mods/pml217" for example "mods/pml217_custom", it's not restricted and you are free to add additional iwd files or modify existing ones. +The dvar fs_game "mods/pml218" is forced for match-servers and do not rename any files or modify contents of them. +However custom servers with skins etc. must use something else than "mods/pml218" for example "mods/pml218_custom", it's not restricted and you are free to add additional iwd files or modify existing ones. Included with Promod is two PunkBuster MD5 configs, "stock_iwd_md5.cfg" and "promod_iwd_md5.cfg" which you can put in the pb-folder on your server, it contains checksums for the stock IWD-files as well as Promod-IWD for use with PunkBuster MD5 facility to prevent custom skins and other forms of cheating and abusing and can be loaded in-game by typing "\rcon pb_sv_load stock_iwd_md5.cfg" and "\rcon pb_sv_load promod_iwd_md5.cfg". diff --git a/ui_mp/main.menu b/ui_mp/main.menu index 13a58c5..3e04b7c 100644 --- a/ui_mp/main.menu +++ b/ui_mp/main.menu @@ -141,7 +141,7 @@ } itemDef { - text "Current Promod Version: LIVE V2.17 EU" + text "Current Promod Version: LIVE V2.18 EU" style 0 textscale 0.25 textstyle 3 @@ -156,7 +156,7 @@ } itemDef { - text "Developers: Trivve and Ingram" + text "Maintained by Ingram" style 0 textscale 0.25 textstyle 3 @@ -171,11 +171,11 @@ } itemDef { - text "Former developers: raf1, MavLP, bulletworm" + text "Former developers: raf1, MavLP, bulletworm, Trivve" style 0 textscale 0.25 textstyle 3 - rect 239 246 95 20 + rect 230 246 95 20 textalign ITEM_ALIGN_LEFT textalignx 0 textaligny 0 diff --git a/xmodel/com_floodlight_on b/xmodel/com_floodlight_on new file mode 100644 index 0000000..dbe0bfd Binary files /dev/null and b/xmodel/com_floodlight_on differ