From 694386839bf4abe745898e5b8a3415a08500fd12 Mon Sep 17 00:00:00 2001 From: Andreas Date: Fri, 20 Mar 2020 16:30:44 +0100 Subject: [PATCH 1/2] create .editorconfig + .gitattributes --- .editorconfig | 9 +++++++++ .gitattributes | 1 + 2 files changed, 10 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..677e36e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf From d5d7e01ce2b28fdc9162abf08a19c37710a78621 Mon Sep 17 00:00:00 2001 From: Andreas Date: Fri, 20 Mar 2020 18:46:48 +0100 Subject: [PATCH 2/2] tabs to spaces, eol, lf --- localizedstrings/cgame.str | 32 +- maps/createfx/mp_backlot_fx.gsc | 4 +- maps/createfx/mp_bloc_fx.gsc | 4 +- maps/createfx/mp_bog_fx.gsc | 4 +- maps/createfx/mp_broadcast_fx.gsc | 4 +- maps/createfx/mp_carentan_fx.gsc | 4 +- maps/createfx/mp_cargoship_fx.gsc | 4 +- maps/createfx/mp_citystreets_fx.gsc | 4 +- maps/createfx/mp_convoy_fx.gsc | 4 +- maps/createfx/mp_countdown_fx.gsc | 4 +- maps/createfx/mp_crash_fx.gsc | 4 +- maps/createfx/mp_crash_snow_fx.gsc | 4 +- maps/createfx/mp_creek_fx.gsc | 4 +- maps/createfx/mp_crossfire_fx.gsc | 4 +- maps/createfx/mp_farm_fx.gsc | 4 +- maps/createfx/mp_killhouse_fx.gsc | 4 +- maps/createfx/mp_overgrown_fx.gsc | 4 +- maps/createfx/mp_pipeline_fx.gsc | 4 +- maps/createfx/mp_shipment_fx.gsc | 4 +- maps/createfx/mp_showdown_fx.gsc | 4 +- maps/createfx/mp_strike_fx.gsc | 4 +- maps/createfx/mp_vacant_fx.gsc | 4 +- maps/mp/_destructible.gsc | 420 +- maps/mp/_explosive_barrels.gsc | 860 +- maps/mp/_flashgrenades.gsc | 286 +- maps/mp/_load.gsc | 446 +- maps/mp/gametypes/_class.gsc | 402 +- maps/mp/gametypes/_gameobjects.gsc | 2912 +++---- maps/mp/gametypes/_globallogic.gsc | 7356 ++++++++--------- maps/mp/gametypes/_healthoverlay.gsc | 388 +- maps/mp/gametypes/_hud.gsc | 168 +- maps/mp/gametypes/_hud_message.gsc | 1352 +-- maps/mp/gametypes/_killcam.gsc | 422 +- maps/mp/gametypes/_menus.gsc | 478 +- maps/mp/gametypes/_missions.gsc | 22 +- maps/mp/gametypes/_promod.gsc | 1246 +-- maps/mp/gametypes/_quickmessages.gsc | 538 +- maps/mp/gametypes/_rank.gsc | 334 +- maps/mp/gametypes/_scoreboard.gsc | 124 +- maps/mp/gametypes/_spawnlogic.gsc | 1402 ++-- maps/mp/gametypes/_spectating.gsc | 264 +- maps/mp/gametypes/_teams.gsc | 380 +- maps/mp/gametypes/_weapons.gsc | 630 +- maps/mp/gametypes/dm.gsc | 134 +- maps/mp/gametypes/dom.gsc | 1254 +-- maps/mp/gametypes/koth.gsc | 1418 ++-- maps/mp/gametypes/sab.gsc | 1250 +-- maps/mp/gametypes/sd.gsc | 1168 +-- maps/mp/gametypes/war.gsc | 192 +- maps/mp/mp_backlot.gsc | 48 +- maps/mp/mp_bloc.gsc | 48 +- maps/mp/mp_bog.gsc | 48 +- maps/mp/mp_broadcast.gsc | 48 +- maps/mp/mp_carentan.gsc | 48 +- maps/mp/mp_cargoship.gsc | 48 +- maps/mp/mp_citystreets.gsc | 52 +- maps/mp/mp_convoy.gsc | 48 +- maps/mp/mp_countdown.gsc | 48 +- maps/mp/mp_crash.gsc | 48 +- maps/mp/mp_crash_snow.gsc | 48 +- maps/mp/mp_creek.gsc | 48 +- maps/mp/mp_crossfire.gsc | 48 +- maps/mp/mp_farm.gsc | 48 +- maps/mp/mp_killhouse.gsc | 48 +- maps/mp/mp_overgrown.gsc | 48 +- maps/mp/mp_pipeline.gsc | 48 +- maps/mp/mp_shipment.gsc | 48 +- maps/mp/mp_showdown.gsc | 48 +- maps/mp/mp_strike.gsc | 48 +- maps/mp/mp_vacant.gsc | 48 +- mod.csv | 248 +- mp/playeranim.script | 3116 +++---- pb/pbsvuser.cfg | 4 +- pb/promod_iwd_md5.cfg | 2 +- pb/stock_iwd_md5.cfg | 28 +- promod/client.gsc | 184 +- promod/comp.gsc | 378 +- promod/customStatsTable.csv | 162 +- promod/destructible.csv | 62 +- promod/dvarmon.gsc | 116 +- promod/messagecenter.gsc | 398 +- promod/modes.gsc | 684 +- promod/readyup.gsc | 752 +- promod/scorebot.gsc | 146 +- promod/servercheck.gsc | 320 +- promod/setvariables.gsc | 72 +- promod/shoutcast.gsc | 294 +- promod/stratmode.gsc | 990 +-- promod/strattime.gsc | 258 +- promod/timeout.gsc | 288 +- promod_ruleset/custom_public.gsc | 458 +- readme.txt | 732 +- server.cfg | 70 +- server_setup.txt | 56 +- shock/damage_mp.shock | 120 +- soundaliases/promod.csv | 8 +- ui_mp/cac_ingame.inc | 872 +- ui_mp/cac_loadout_ingame.inc | 104 +- ui_mp/connect.menu | 88 +- ui_mp/controls_multi.menu | 146 +- ui_mp/hud.menu | 2432 +++--- ui_mp/main.menu | 486 +- ui_mp/options_multi.menu | 134 +- ui_mp/promod.txt | 36 +- ui_mp/scoreboard.inc | 152 +- ui_mp/scriptmenus/changeclass_marines_mw.menu | 210 +- ui_mp/scriptmenus/changeclass_mw.menu | 84 +- ui_mp/scriptmenus/changeclass_opfor_mw.menu | 210 +- ui_mp/scriptmenus/class.menu | 298 +- ui_mp/scriptmenus/demo.menu | 144 +- ui_mp/scriptmenus/quickpromod.menu | 309 +- ui_mp/scriptmenus/quickpromodgfx.menu | 458 +- ui_mp/scriptmenus/scoreboard.menu | 644 +- ui_mp/scriptmenus/shoutcast.menu | 166 +- ui_mp/scriptmenus/shoutcast_map.menu | 130 +- ui_mp/scriptmenus/shoutcast_setup.inc | 46 +- ui_mp/scriptmenus/shoutcast_setup.menu | 230 +- ui_mp/scriptmenus/shoutcast_setup_binds.menu | 182 +- ui_mp/scriptmenus/team_marinesopfor.menu | 300 +- .../team_marinesopfor_flipped.menu | 300 +- ui_mp/tactical_map.inc | 196 +- ui_mp/tactical_map_s.inc | 158 +- ui_mp/wm_quickmessage.menu | 262 +- weapons/mp/ak47_mp | 14 +- weapons/mp/ak47_silencer_mp | 10 +- weapons/mp/ak74u_mp | 14 +- weapons/mp/ak74u_silencer_mp | 10 +- weapons/mp/beretta_mp | 8 +- weapons/mp/beretta_silencer_mp | 8 +- weapons/mp/colt45_mp | 10 +- weapons/mp/colt45_silencer_mp | 10 +- weapons/mp/deserteagle_mp | 10 +- weapons/mp/deserteaglegold_mp | 10 +- weapons/mp/flash_grenade_mp | 2 +- weapons/mp/frag_grenade_mp | 2 +- weapons/mp/frag_grenade_short_mp | 2 +- weapons/mp/g36c_mp | 14 +- weapons/mp/g36c_silencer_mp | 10 +- weapons/mp/g3_mp | 14 +- weapons/mp/g3_silencer_mp | 10 +- weapons/mp/m1014_mp | 10 +- weapons/mp/m14_mp | 16 +- weapons/mp/m14_silencer_mp | 12 +- weapons/mp/m16_mp | 12 +- weapons/mp/m16_silencer_mp | 10 +- weapons/mp/m40a3_mp | 10 +- weapons/mp/m4_mp | 14 +- weapons/mp/m4_silencer_mp | 10 +- weapons/mp/mp44_mp | 10 +- weapons/mp/mp5_mp | 12 +- weapons/mp/mp5_silencer_mp | 8 +- weapons/mp/radar_mp | 2 +- weapons/mp/remington700_mp | 10 +- weapons/mp/smoke_grenade_mp | 2 +- weapons/mp/usp_mp | 12 +- weapons/mp/usp_silencer_mp | 10 +- weapons/mp/uzi_mp | 14 +- weapons/mp/uzi_silencer_mp | 10 +- weapons/mp/winchester1200_mp | 14 +- 159 files changed, 23025 insertions(+), 23028 deletions(-) diff --git a/localizedstrings/cgame.str b/localizedstrings/cgame.str index e963579..308a11a 100644 --- a/localizedstrings/cgame.str +++ b/localizedstrings/cgame.str @@ -1,16 +1,16 @@ -// Copyright (c) 2009-2017 Andreas Göransson -// Copyright (c) 2009-2017 Indrek Ardel -// -// This file is part of Call of Duty 4 Promod. -// -// Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. -// Terms of license can be found in LICENSE.md document bundled with the project. - -VERSION "1" -CONFIG "C:\trees\cod3\cod3\bin\StringEd.cfg" -FILENOTES "" - -REFERENCE SPECTATORS -LANG_ENGLISH "Shoutcaster" - -ENDMARKER \ No newline at end of file +// Copyright (c) 2009-2017 Andreas Göransson +// Copyright (c) 2009-2017 Indrek Ardel +// +// This file is part of Call of Duty 4 Promod. +// +// Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. +// Terms of license can be found in LICENSE.md document bundled with the project. + +VERSION "1" +CONFIG "C:\trees\cod3\cod3\bin\StringEd.cfg" +FILENOTES "" + +REFERENCE SPECTATORS +LANG_ENGLISH "Shoutcaster" + +ENDMARKER diff --git a/maps/createfx/mp_backlot_fx.gsc b/maps/createfx/mp_backlot_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_backlot_fx.gsc +++ b/maps/createfx/mp_backlot_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_bloc_fx.gsc b/maps/createfx/mp_bloc_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_bloc_fx.gsc +++ b/maps/createfx/mp_bloc_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_bog_fx.gsc b/maps/createfx/mp_bog_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_bog_fx.gsc +++ b/maps/createfx/mp_bog_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_broadcast_fx.gsc b/maps/createfx/mp_broadcast_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_broadcast_fx.gsc +++ b/maps/createfx/mp_broadcast_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_carentan_fx.gsc b/maps/createfx/mp_carentan_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_carentan_fx.gsc +++ b/maps/createfx/mp_carentan_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_cargoship_fx.gsc b/maps/createfx/mp_cargoship_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_cargoship_fx.gsc +++ b/maps/createfx/mp_cargoship_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_citystreets_fx.gsc b/maps/createfx/mp_citystreets_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_citystreets_fx.gsc +++ b/maps/createfx/mp_citystreets_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_convoy_fx.gsc b/maps/createfx/mp_convoy_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_convoy_fx.gsc +++ b/maps/createfx/mp_convoy_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_countdown_fx.gsc b/maps/createfx/mp_countdown_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_countdown_fx.gsc +++ b/maps/createfx/mp_countdown_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_crash_fx.gsc b/maps/createfx/mp_crash_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_crash_fx.gsc +++ b/maps/createfx/mp_crash_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_crash_snow_fx.gsc b/maps/createfx/mp_crash_snow_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_crash_snow_fx.gsc +++ b/maps/createfx/mp_crash_snow_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_creek_fx.gsc b/maps/createfx/mp_creek_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_creek_fx.gsc +++ b/maps/createfx/mp_creek_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_crossfire_fx.gsc b/maps/createfx/mp_crossfire_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_crossfire_fx.gsc +++ b/maps/createfx/mp_crossfire_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_farm_fx.gsc b/maps/createfx/mp_farm_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_farm_fx.gsc +++ b/maps/createfx/mp_farm_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_killhouse_fx.gsc b/maps/createfx/mp_killhouse_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_killhouse_fx.gsc +++ b/maps/createfx/mp_killhouse_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_overgrown_fx.gsc b/maps/createfx/mp_overgrown_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_overgrown_fx.gsc +++ b/maps/createfx/mp_overgrown_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_pipeline_fx.gsc b/maps/createfx/mp_pipeline_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_pipeline_fx.gsc +++ b/maps/createfx/mp_pipeline_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_shipment_fx.gsc b/maps/createfx/mp_shipment_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_shipment_fx.gsc +++ b/maps/createfx/mp_shipment_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_showdown_fx.gsc b/maps/createfx/mp_showdown_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_showdown_fx.gsc +++ b/maps/createfx/mp_showdown_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_strike_fx.gsc b/maps/createfx/mp_strike_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_strike_fx.gsc +++ b/maps/createfx/mp_strike_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/createfx/mp_vacant_fx.gsc b/maps/createfx/mp_vacant_fx.gsc index afca4a5..abd4269 100644 --- a/maps/createfx/mp_vacant_fx.gsc +++ b/maps/createfx/mp_vacant_fx.gsc @@ -1,2 +1,2 @@ -//_createfx generated. Do not touch!! -main(){} \ No newline at end of file +//_createfx generated. Do not touch!! +main(){} diff --git a/maps/mp/_destructible.gsc b/maps/mp/_destructible.gsc index 6352ab5..668a33a 100644 --- a/maps/mp/_destructible.gsc +++ b/maps/mp/_destructible.gsc @@ -1,210 +1,210 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - filename = "promod/destructible.csv"; - level.destructible_effects = []; - for(i=0;i<8;i++) - level.destructible_effects[tablelookup(filename, 0, i, 1)] = LoadFX(tablelookup(filename, 0, i, 2)); - - level.destructible_breakable_objects = []; - for(i=8;i<22;i++) - level.destructible_breakable_objects[tablelookup(filename, 0, i, 1)] = 1; - - entities = getentarray("destructible", "targetname"); - for(i=0;i 0) - { - self.damageOwner = attacker; - self.damageTaken += damage; - } - } - } - - if(self.damageTaken > 250 && smk) - { - smk = false; - self thread smoke(); - } - if(self.damageTaken > 550 && brn) - { - brn = false; - self thread burn(); - } - } -} - -breakpart(partname) -{ - switch(partname) - { - case "tag_glass_left_front": - case "tag_glass_right_front": - case "tag_glass_left_back": - case "tag_glass_right_back": - case "tag_glass_front": - case "tag_glass_back": - case "tag_glass_left_back2": - case "tag_glass_right_back2": - self playsound("veh_glass_break_large"); - fx = "medium"; - if(strtok(partname, "_").size == 3) - fx = "large"; - playfxontag(level.destructible_effects["car_glass_"+fx], self, partname+"_fx"); - self hidepart(partname); - break; - case "tag_light_left_front": - case "tag_light_right_front": - case "tag_light_left_back": - case "tag_light_right_back": - self playsound("veh_glass_break_small"); - playfxontag(level.destructible_effects["light_"+strtok(partname, "_")[3]], self, partname); - self hidepart(partname); - self showpart(partname+"_d"); - break; - case "tag_mirror_left": - case "tag_mirror_right": - self hidepart(partname); - physicsobject = spawn("script_model", self gettagorigin(partname)); - physicsobject.angles = self gettagangles(partname); - s = "R"; - if(getsubstr(partname, 11, 12) == "l") s = "L"; - physicsobject setmodel(self.destructible_type+"_mirror_"+s); - physicsobject physicslaunch(self gettagorigin(partname), vectornormalize(self gettagorigin(partname)) * 200); - physicsobject thread deleteovertime(); - break; - } -} - -deleteovertime() -{ - wait 5; - self delete(); -} - -smoke() -{ - self endon("explosion"); - - for(fx="white_smoke";;) - { - if(self.damageTaken > 550) - fx = "black_smoke_fire"; - else if(self.damageTaken > 450) - fx = "black_smoke"; - - playfxontag(level.destructible_effects[fx], self, "tag_hood_fx"); - wait 0.4; - } -} - -burn() -{ - self endon("explosion"); - - self playsound("fire_vehicle_flareup_med"); - self playloopsound("fire_vehicle_med"); - - for(;self.damageTaken < 1250;wait 0.2) - self.damageTaken += 12; -} - -explosion() -{ - while(self.damageTaken < 1250) - wait 0.05; - - self stoploopsound("fire_vehicle_med"); - - self notify("explosion"); - - self playsound("car_explode"); - playfxontag(level.destructible_effects["small_vehicle_explosion"], self, "tag_death_fx"); - origin = self.origin+(0, 0, 80); - rng = 250; - if(getsubstr(self.destructible_type, 0, 19) == "vehicle_80s_sedan1_") - rng = 375; - if(isdefined(self.damageOwner)) - self radiusdamage(origin, rng, 300, 20, self.damageOwner); - else - self radiusdamage(origin, rng, 300, 20); - - self movez(16, 0.3, 0, 0.2); - self rotatepitch(10, 0.3, 0, 0.2); - self setmodel(self.destructible_type+"_destroyed"); - wait 0.3; - self movez(-16, 0.3, 0.15, 0); - self rotatepitch(-10, 0.3, 0.15, 0); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + filename = "promod/destructible.csv"; + level.destructible_effects = []; + for(i=0;i<8;i++) + level.destructible_effects[tablelookup(filename, 0, i, 1)] = LoadFX(tablelookup(filename, 0, i, 2)); + + level.destructible_breakable_objects = []; + for(i=8;i<22;i++) + level.destructible_breakable_objects[tablelookup(filename, 0, i, 1)] = 1; + + entities = getentarray("destructible", "targetname"); + for(i=0;i 0) + { + self.damageOwner = attacker; + self.damageTaken += damage; + } + } + } + + if(self.damageTaken > 250 && smk) + { + smk = false; + self thread smoke(); + } + if(self.damageTaken > 550 && brn) + { + brn = false; + self thread burn(); + } + } +} + +breakpart(partname) +{ + switch(partname) + { + case "tag_glass_left_front": + case "tag_glass_right_front": + case "tag_glass_left_back": + case "tag_glass_right_back": + case "tag_glass_front": + case "tag_glass_back": + case "tag_glass_left_back2": + case "tag_glass_right_back2": + self playsound("veh_glass_break_large"); + fx = "medium"; + if(strtok(partname, "_").size == 3) + fx = "large"; + playfxontag(level.destructible_effects["car_glass_"+fx], self, partname+"_fx"); + self hidepart(partname); + break; + case "tag_light_left_front": + case "tag_light_right_front": + case "tag_light_left_back": + case "tag_light_right_back": + self playsound("veh_glass_break_small"); + playfxontag(level.destructible_effects["light_"+strtok(partname, "_")[3]], self, partname); + self hidepart(partname); + self showpart(partname+"_d"); + break; + case "tag_mirror_left": + case "tag_mirror_right": + self hidepart(partname); + physicsobject = spawn("script_model", self gettagorigin(partname)); + physicsobject.angles = self gettagangles(partname); + s = "R"; + if(getsubstr(partname, 11, 12) == "l") s = "L"; + physicsobject setmodel(self.destructible_type+"_mirror_"+s); + physicsobject physicslaunch(self gettagorigin(partname), vectornormalize(self gettagorigin(partname)) * 200); + physicsobject thread deleteovertime(); + break; + } +} + +deleteovertime() +{ + wait 5; + self delete(); +} + +smoke() +{ + self endon("explosion"); + + for(fx="white_smoke";;) + { + if(self.damageTaken > 550) + fx = "black_smoke_fire"; + else if(self.damageTaken > 450) + fx = "black_smoke"; + + playfxontag(level.destructible_effects[fx], self, "tag_hood_fx"); + wait 0.4; + } +} + +burn() +{ + self endon("explosion"); + + self playsound("fire_vehicle_flareup_med"); + self playloopsound("fire_vehicle_med"); + + for(;self.damageTaken < 1250;wait 0.2) + self.damageTaken += 12; +} + +explosion() +{ + while(self.damageTaken < 1250) + wait 0.05; + + self stoploopsound("fire_vehicle_med"); + + self notify("explosion"); + + self playsound("car_explode"); + playfxontag(level.destructible_effects["small_vehicle_explosion"], self, "tag_death_fx"); + origin = self.origin+(0, 0, 80); + rng = 250; + if(getsubstr(self.destructible_type, 0, 19) == "vehicle_80s_sedan1_") + rng = 375; + if(isdefined(self.damageOwner)) + self radiusdamage(origin, rng, 300, 20, self.damageOwner); + else + self radiusdamage(origin, rng, 300, 20); + + self movez(16, 0.3, 0, 0.2); + self rotatepitch(10, 0.3, 0, 0.2); + self setmodel(self.destructible_type+"_destroyed"); + wait 0.3; + self movez(-16, 0.3, 0.15, 0); + self rotatepitch(-10, 0.3, 0.15, 0); +} diff --git a/maps/mp/_explosive_barrels.gsc b/maps/mp/_explosive_barrels.gsc index 67f0d1b..43ba442 100644 --- a/maps/mp/_explosive_barrels.gsc +++ b/maps/mp/_explosive_barrels.gsc @@ -1,430 +1,430 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - qBarrels = false; - barrels = getentarray ("explodable_barrel","targetname"); - if ( (isdefined(barrels)) && (barrels.size > 0) ) - qBarrels = true; - barrels = getentarray ("explodable_barrel","script_noteworthy"); - if ( (isdefined(barrels)) && (barrels.size > 0) ) - qBarrels = true; - if (qBarrels) - { - level.breakables_fx["barrel"]["explode"] = loadfx ("props/barrelExp"); - level.breakables_fx["barrel"]["burn_start"] = loadfx ("props/barrel_ignite"); - level.breakables_fx["barrel"]["burn"] = loadfx ("props/barrel_fire_top"); - } - oilspill = getentarray ("oil_spill","targetname"); - if(isdefined(oilspill) && oilspill.size > 0) - { - level.breakables_fx["oilspill"]["burn"] = loadfx ("props/barrel_fire"); - level.breakables_fx["oilspill"]["spark"] = loadfx("impacts/small_metalhit_1"); - } - - level.barrelExpSound = "explo_metal_rand"; - - level.barrelHealth = 150; - maxBrokenPieces = 25; - - level.precachemodeltype = []; - level.barrelExplodingThisFrame = false; - level.breakables_clip = []; - - temp = getentarray ("breakable clip","targetname"); - for (i=0;i= dist) - continue; - dist = newdist; - ent = array[i]; - } - return ent; -} - -oil_spill_burn_after() -{ - for(;;) - { - self.barrel waittill("damage", amount ,attacker, direction_vec, P, type); - if(type == "MOD_MELEE" || type == "MOD_IMPACT") - continue; - break; - } - self.damageOwner = attacker; - - if ( !isdefined( self.damageOwner ) ) - self radiusdamage (self.origin, 4, 10, 10 ); - else - self radiusdamage (self.origin, 4, 10, 10, self.damageOwner); -} - -oil_spill_burn(P, dest) -{ - forward = vectornormalize(dest - P); - dist = distance(p, dest); - range = 8; - interval = vector_multiply(forward, range); - angle = vectortoangles(forward); - right = anglestoright(angle); - - barrels = getentarray ("explodable_barrel","targetname"); - distsqr = 484; - - test = spawn("script_origin", P); - - num = 0; - for(;;) - { - dist -= range; - if(dist < range * 0.1) - break; - - p += (interval + vector_multiply(right, randomfloatrange(-6, 6))); - - thread oil_spill_burn_section(P); - num++; - if(num == 4) - num = 0; - - test.origin = P; - - remove = []; - barrels = array_removeUndefined(barrels); - for(i=0; i 20) - count = 0; - - playfx (level.breakables_fx["barrel"]["burn"], self.origin + offset2); - - if (!count) - self.damageTaken += (10 + randomfloat(10)); - - count++; - wait 0.05; - } - } - self thread explodable_barrel_explode(); -} - -explodable_barrel_explode() -{ - self notify ("exploding"); - self notify ("death"); - - up = anglestoup(self.angles); - worldup = anglestoup((0,90,0)); - dot = vectordot(up, worldup); - - offset = (0,0,0); - if(dot < 0.5) - { - start = (self.origin + vector_multiply(up, 22)); - end = physicstrace(start, (start + (0,0,-64))); - offset = end - self.origin; - } - offset += (0,0,4); - - self playsound (level.barrelExpSound); - playfx (level.breakables_fx["barrel"]["explode"], self.origin + offset); - - level.barrelExplodingThisFrame = true; - - if (isdefined (self.remove)) - self.remove delete(); - - phyExpMagnitude = 2; - minDamage = 1; - maxDamage = 250; - blastRadius = 250; - if (isdefined(self.radius)) - blastRadius = self.radius; - - if ( !isdefined( self.damageOwner ) ) - self radiusDamage(self.origin + (0,0,30), blastRadius, maxDamage, minDamage); - else - self radiusDamage(self.origin + (0,0,30), blastRadius, maxDamage, minDamage, self.damageOwner); - - physicsExplosionSphere( self.origin + (0,0,30), blastRadius, blastRadius/2, phyExpMagnitude ); - - self maps\mp\gametypes\_shellshock::barrel_earthQuake(); - - if (randomint(2) == 0) - self setModel("com_barrel_piece"); - else - self setModel("com_barrel_piece2"); - - if(dot < 0.5) - { - start = (self.origin + vector_multiply(up, 22)); - pos = physicstrace(start, (start + (0,0,-64))); - - self.origin = pos; - self.angles += (0,0,90); - - } - wait 0.05; - level.barrelExplodingThisFrame = false; -} - -getstruct(name, type) -{ - if(!isdefined(level.struct_class_names)) - return undefined; - - array = level.struct_class_names[type][name]; - if(!isdefined(array)) - return undefined; - if(array.size > 1) - return undefined; - - return array[0]; -} - -array_remove (ents, remover) -{ - newents = []; - for(i = 0; i < ents.size; i++) - { - if(ents[i] != remover) - newents[newents.size] = ents[i]; - } - - return newents; -} - -array_removeUndefined (array) -{ - newArray = []; - for(i = 0; i < array.size; i++) - { - if (!isdefined(array[i])) - continue; - newArray[newArray.size] = array[i]; - } - - return newArray; -} - -vector_multiply (vec, dif) -{ - vec = (vec[0] * dif, vec[1] * dif, vec[2] * dif); - return vec; -} - -array_thread( entities, process, var, exclusions ) -{ - if ( !isDefined( exclusions ) ) - exclusions = []; - - for ( i = 0; i < entities.size; i++ ) - { - exclude = false; - for ( j = 0; j < exclusions.size; j++ ) - { - if ( entities[i] != exclusions[j] ) - exclude = true; - } - - if ( exclude ) - continue; - - if ( isDefined( var ) ) - entities[i] thread [[process]]( var ); - else - entities[i] thread [[process]](); - } -} - -breakable_clip() -{ - if (isdefined(self.target)) - { - targ = getent(self.target,"targetname"); - if(targ.classname == "script_brushmodel") - { - self.remove = targ; - return; - } - } - - if ((isdefined (level.breakables_clip)) && (level.breakables_clip.size > 0)) - self.remove = getClosestEnt( self.origin , level.breakables_clip ); - if (isdefined (self.remove)) - level.breakables_clip = array_remove ( level.breakables_clip , self.remove ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + qBarrels = false; + barrels = getentarray ("explodable_barrel","targetname"); + if ( (isdefined(barrels)) && (barrels.size > 0) ) + qBarrels = true; + barrels = getentarray ("explodable_barrel","script_noteworthy"); + if ( (isdefined(barrels)) && (barrels.size > 0) ) + qBarrels = true; + if (qBarrels) + { + level.breakables_fx["barrel"]["explode"] = loadfx ("props/barrelExp"); + level.breakables_fx["barrel"]["burn_start"] = loadfx ("props/barrel_ignite"); + level.breakables_fx["barrel"]["burn"] = loadfx ("props/barrel_fire_top"); + } + oilspill = getentarray ("oil_spill","targetname"); + if(isdefined(oilspill) && oilspill.size > 0) + { + level.breakables_fx["oilspill"]["burn"] = loadfx ("props/barrel_fire"); + level.breakables_fx["oilspill"]["spark"] = loadfx("impacts/small_metalhit_1"); + } + + level.barrelExpSound = "explo_metal_rand"; + + level.barrelHealth = 150; + maxBrokenPieces = 25; + + level.precachemodeltype = []; + level.barrelExplodingThisFrame = false; + level.breakables_clip = []; + + temp = getentarray ("breakable clip","targetname"); + for (i=0;i= dist) + continue; + dist = newdist; + ent = array[i]; + } + return ent; +} + +oil_spill_burn_after() +{ + for(;;) + { + self.barrel waittill("damage", amount ,attacker, direction_vec, P, type); + if(type == "MOD_MELEE" || type == "MOD_IMPACT") + continue; + break; + } + self.damageOwner = attacker; + + if ( !isdefined( self.damageOwner ) ) + self radiusdamage (self.origin, 4, 10, 10 ); + else + self radiusdamage (self.origin, 4, 10, 10, self.damageOwner); +} + +oil_spill_burn(P, dest) +{ + forward = vectornormalize(dest - P); + dist = distance(p, dest); + range = 8; + interval = vector_multiply(forward, range); + angle = vectortoangles(forward); + right = anglestoright(angle); + + barrels = getentarray ("explodable_barrel","targetname"); + distsqr = 484; + + test = spawn("script_origin", P); + + num = 0; + for(;;) + { + dist -= range; + if(dist < range * 0.1) + break; + + p += (interval + vector_multiply(right, randomfloatrange(-6, 6))); + + thread oil_spill_burn_section(P); + num++; + if(num == 4) + num = 0; + + test.origin = P; + + remove = []; + barrels = array_removeUndefined(barrels); + for(i=0; i 20) + count = 0; + + playfx (level.breakables_fx["barrel"]["burn"], self.origin + offset2); + + if (!count) + self.damageTaken += (10 + randomfloat(10)); + + count++; + wait 0.05; + } + } + self thread explodable_barrel_explode(); +} + +explodable_barrel_explode() +{ + self notify ("exploding"); + self notify ("death"); + + up = anglestoup(self.angles); + worldup = anglestoup((0,90,0)); + dot = vectordot(up, worldup); + + offset = (0,0,0); + if(dot < 0.5) + { + start = (self.origin + vector_multiply(up, 22)); + end = physicstrace(start, (start + (0,0,-64))); + offset = end - self.origin; + } + offset += (0,0,4); + + self playsound (level.barrelExpSound); + playfx (level.breakables_fx["barrel"]["explode"], self.origin + offset); + + level.barrelExplodingThisFrame = true; + + if (isdefined (self.remove)) + self.remove delete(); + + phyExpMagnitude = 2; + minDamage = 1; + maxDamage = 250; + blastRadius = 250; + if (isdefined(self.radius)) + blastRadius = self.radius; + + if ( !isdefined( self.damageOwner ) ) + self radiusDamage(self.origin + (0,0,30), blastRadius, maxDamage, minDamage); + else + self radiusDamage(self.origin + (0,0,30), blastRadius, maxDamage, minDamage, self.damageOwner); + + physicsExplosionSphere( self.origin + (0,0,30), blastRadius, blastRadius/2, phyExpMagnitude ); + + self maps\mp\gametypes\_shellshock::barrel_earthQuake(); + + if (randomint(2) == 0) + self setModel("com_barrel_piece"); + else + self setModel("com_barrel_piece2"); + + if(dot < 0.5) + { + start = (self.origin + vector_multiply(up, 22)); + pos = physicstrace(start, (start + (0,0,-64))); + + self.origin = pos; + self.angles += (0,0,90); + + } + wait 0.05; + level.barrelExplodingThisFrame = false; +} + +getstruct(name, type) +{ + if(!isdefined(level.struct_class_names)) + return undefined; + + array = level.struct_class_names[type][name]; + if(!isdefined(array)) + return undefined; + if(array.size > 1) + return undefined; + + return array[0]; +} + +array_remove (ents, remover) +{ + newents = []; + for(i = 0; i < ents.size; i++) + { + if(ents[i] != remover) + newents[newents.size] = ents[i]; + } + + return newents; +} + +array_removeUndefined (array) +{ + newArray = []; + for(i = 0; i < array.size; i++) + { + if (!isdefined(array[i])) + continue; + newArray[newArray.size] = array[i]; + } + + return newArray; +} + +vector_multiply (vec, dif) +{ + vec = (vec[0] * dif, vec[1] * dif, vec[2] * dif); + return vec; +} + +array_thread( entities, process, var, exclusions ) +{ + if ( !isDefined( exclusions ) ) + exclusions = []; + + for ( i = 0; i < entities.size; i++ ) + { + exclude = false; + for ( j = 0; j < exclusions.size; j++ ) + { + if ( entities[i] != exclusions[j] ) + exclude = true; + } + + if ( exclude ) + continue; + + if ( isDefined( var ) ) + entities[i] thread [[process]]( var ); + else + entities[i] thread [[process]](); + } +} + +breakable_clip() +{ + if (isdefined(self.target)) + { + targ = getent(self.target,"targetname"); + if(targ.classname == "script_brushmodel") + { + self.remove = targ; + return; + } + } + + if ((isdefined (level.breakables_clip)) && (level.breakables_clip.size > 0)) + self.remove = getClosestEnt( self.origin , level.breakables_clip ); + if (isdefined (self.remove)) + level.breakables_clip = array_remove ( level.breakables_clip , self.remove ); +} diff --git a/maps/mp/_flashgrenades.gsc b/maps/mp/_flashgrenades.gsc index 9ff0507..7e17b38 100644 --- a/maps/mp/_flashgrenades.gsc +++ b/maps/mp/_flashgrenades.gsc @@ -1,143 +1,143 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - precacheShellshock("flashbang"); -} - -startMonitoringFlash() -{ - self thread monitorFlash(); -} - -stopMonitoringFlash(disconnected) -{ - self notify("stop_monitoring_flash"); -} - -flashRumbleLoop( duration ) -{ - self endon("stop_monitoring_flash"); - - self endon("flash_rumble_loop"); - self notify("flash_rumble_loop"); - - goalTime = getTime() + duration * 1000; - - while ( getTime() < goalTime ) - { - self PlayRumbleOnEntity( "damage_heavy" ); - wait 0.05; - } -} - -monitorFlash() -{ - self endon("disconnect"); - - self.flashEndTime = 0; - for(;;) - { - self waittill( "flashbang", amount_distance, amount_angle, attacker ); - - 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; - hurtvictim = true; - - if ( amount_angle < 0.35 ) - amount_angle = 0.35; - else if ( amount_angle > 0.8 ) - amount_angle = 1; - - duration = amount_distance * amount_angle * 6; - - if ( duration < 0.25 ) - continue; - - rumbleduration = undefined; - if ( duration > 2 ) - rumbleduration = 0.75; - else - rumbleduration = 0.25; - - if (level.teamBased && isdefined(attacker) && isdefined(attacker.pers["team"]) && isdefined(self.pers["team"]) && attacker.pers["team"] == self.pers["team"] && attacker != self) - { - if(!level.friendlyfire) - continue; - else if(level.friendlyfire == 2) - { - duration = duration * 0.5; - rumbleduration = rumbleduration * 0.5; - hurtvictim = false; - hurtattacker = true; - } - else if(level.friendlyfire == 3) - { - duration = duration * 0.5; - rumbleduration = rumbleduration * 0.5; - hurtattacker = true; - } - } - - if (hurtvictim) - self thread applyFlash(duration, rumbleduration); - if (hurtattacker) - attacker thread applyFlash(duration, rumbleduration); - } -} - -applyFlash(duration, rumbleduration) -{ - if ( !isDefined( self.flashDuration ) || duration > self.flashDuration ) - { - self notify ("strongerFlash"); - self.flashDuration = duration; - } - else if( duration < self.flashDuration ) - return; - - if ( !isDefined( self.flashRumbleDuration ) || rumbleduration > self.flashRumbleDuration ) - self.flashRumbleDuration = rumbleduration; - - wait 0.05; - - if ( isDefined( self.flashDuration ) ) - { - self shellshock( "flashbang", self.flashDuration); - self.flashEndTime = getTime() + (self.flashDuration * 1000); - } - - self thread overlapProtect(duration); - - if ( isDefined( self.flashRumbleDuration ) ) - self thread flashRumbleLoop( self.flashRumbleDuration ); - - self.flashRumbleDuration = undefined; -} - -overlapProtect(duration) -{ - self endon( "disconnect" ); - self endon ( "strongerFlash" ); - for(;duration > 0;) - { - duration -= 0.05; - self.flashDuration = duration; - wait 0.05; - } -} - -isFlashbanged() -{ - return isDefined( self.flashEndTime ) && gettime() < self.flashEndTime; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + precacheShellshock("flashbang"); +} + +startMonitoringFlash() +{ + self thread monitorFlash(); +} + +stopMonitoringFlash(disconnected) +{ + self notify("stop_monitoring_flash"); +} + +flashRumbleLoop( duration ) +{ + self endon("stop_monitoring_flash"); + + self endon("flash_rumble_loop"); + self notify("flash_rumble_loop"); + + goalTime = getTime() + duration * 1000; + + while ( getTime() < goalTime ) + { + self PlayRumbleOnEntity( "damage_heavy" ); + wait 0.05; + } +} + +monitorFlash() +{ + self endon("disconnect"); + + self.flashEndTime = 0; + for(;;) + { + self waittill( "flashbang", amount_distance, amount_angle, attacker ); + + 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; + hurtvictim = true; + + if ( amount_angle < 0.35 ) + amount_angle = 0.35; + else if ( amount_angle > 0.8 ) + amount_angle = 1; + + duration = amount_distance * amount_angle * 6; + + if ( duration < 0.25 ) + continue; + + rumbleduration = undefined; + if ( duration > 2 ) + rumbleduration = 0.75; + else + rumbleduration = 0.25; + + if (level.teamBased && isdefined(attacker) && isdefined(attacker.pers["team"]) && isdefined(self.pers["team"]) && attacker.pers["team"] == self.pers["team"] && attacker != self) + { + if(!level.friendlyfire) + continue; + else if(level.friendlyfire == 2) + { + duration = duration * 0.5; + rumbleduration = rumbleduration * 0.5; + hurtvictim = false; + hurtattacker = true; + } + else if(level.friendlyfire == 3) + { + duration = duration * 0.5; + rumbleduration = rumbleduration * 0.5; + hurtattacker = true; + } + } + + if (hurtvictim) + self thread applyFlash(duration, rumbleduration); + if (hurtattacker) + attacker thread applyFlash(duration, rumbleduration); + } +} + +applyFlash(duration, rumbleduration) +{ + if ( !isDefined( self.flashDuration ) || duration > self.flashDuration ) + { + self notify ("strongerFlash"); + self.flashDuration = duration; + } + else if( duration < self.flashDuration ) + return; + + if ( !isDefined( self.flashRumbleDuration ) || rumbleduration > self.flashRumbleDuration ) + self.flashRumbleDuration = rumbleduration; + + wait 0.05; + + if ( isDefined( self.flashDuration ) ) + { + self shellshock( "flashbang", self.flashDuration); + self.flashEndTime = getTime() + (self.flashDuration * 1000); + } + + self thread overlapProtect(duration); + + if ( isDefined( self.flashRumbleDuration ) ) + self thread flashRumbleLoop( self.flashRumbleDuration ); + + self.flashRumbleDuration = undefined; +} + +overlapProtect(duration) +{ + self endon( "disconnect" ); + self endon ( "strongerFlash" ); + for(;duration > 0;) + { + duration -= 0.05; + self.flashDuration = duration; + wait 0.05; + } +} + +isFlashbanged() +{ + return isDefined( self.flashEndTime ) && gettime() < self.flashEndTime; +} diff --git a/maps/mp/_load.gsc b/maps/mp/_load.gsc index e49b361..1913a70 100644 --- a/maps/mp/_load.gsc +++ b/maps/mp/_load.gsc @@ -1,223 +1,223 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include common_scripts\utility; -#include maps\mp\_utility; - -main( bScriptgened, bCSVgened, bsgenabled ) -{ - level._loadStarted = true; - - struct_class_init(); - - if ( !isdefined( level.flag ) ) - { - level.flag = []; - level.flags_lock = []; - } - - setDvar("scr_RequiredMapAspectratio", 1); - - thread maps\mp\gametypes\_tweakables::init(); - thread maps\mp\_minefields::minefields(); - thread maps\mp\_destructables::init(); - thread maps\mp\_destructible::init(); - - thread promod\dvarmon::main(); - thread promod\servercheck::main(); - thread promod\modes::monitorMode(); - - VisionSetNight( "default_night" ); - - level.createFX_enabled = 0; - - setupExploders(); - - for ( p = 0;p < 6;p ++ ) - { - switch( p ) - { - case 0: - triggertype = "trigger_multiple"; - break; - - case 1: - triggertype = "trigger_once"; - break; - - case 2: - triggertype = "trigger_use"; - break; - - case 3: - triggertype = "trigger_radius"; - break; - - case 4: - triggertype = "trigger_lookat"; - break; - - default: - triggertype = "trigger_damage"; - break; - } - - triggers = getentarray( triggertype, "classname" ); - - for ( i = 0;i < triggers.size;i ++ ) - { - if( isdefined( triggers[ i ].script_prefab_exploder) ) - triggers[i].script_exploder = triggers[ i ].script_prefab_exploder; - - if( isdefined( triggers[ i ].script_exploder) ) - level thread maps\mp\_load::exploder_load( triggers[ i ] ); - } - } -} - -exploder_load( trigger ) -{ - level endon( "killexplodertridgers" + trigger.script_exploder ); - trigger waittill( "trigger" ); - if ( isdefined( trigger.script_chance ) && randomfloat( 1 ) > trigger.script_chance ) - { - if ( isdefined( trigger.script_delay ) ) - wait trigger.script_delay; - else - wait 4; - level thread exploder_load( trigger ); - return; - } - exploder( trigger.script_exploder ); - level notify( "killexplodertridgers" + trigger.script_exploder ); -} - -setupExploders() -{ - ents = getentarray( "script_brushmodel", "classname" ); - smodels = getentarray( "script_model", "classname" ); - for ( i = 0;i < smodels.size;i ++ ) - ents[ ents.size ] = smodels[ i ]; - - for ( i = 0;i < ents.size;i ++ ) - { - if ( isdefined( ents[ i ].script_prefab_exploder ) ) - ents[ i ].script_exploder = ents[ i ].script_prefab_exploder; - - if ( isdefined( ents[ i ].script_exploder ) ) - { - if ( ( ents[ i ].model == "fx" ) && ( ( !isdefined( ents[ i ].targetname ) ) || ( ents[ i ].targetname != "exploderchunk" ) ) ) - ents[ i ] hide(); - else if ( ( isdefined( ents[ i ].targetname ) ) && ( ents[ i ].targetname == "exploder" ) ) - { - ents[ i ] hide(); - ents[ i ] notsolid(); - } - else if ( ( isdefined( ents[ i ].targetname ) ) && ( ents[ i ].targetname == "exploderchunk" ) ) - { - ents[ i ] hide(); - ents[ i ] notsolid(); - } - } - } - - script_exploders = []; - - potentialExploders = getentarray( "script_brushmodel", "classname" ); - for ( i = 0;i < potentialExploders.size;i ++ ) - { - if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) ) - potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder; - - if ( isdefined( potentialExploders[ i ].script_exploder ) ) - script_exploders[ script_exploders.size ] = potentialExploders[ i ]; - } - - potentialExploders = getentarray( "script_model", "classname" ); - for ( i = 0;i < potentialExploders.size;i ++ ) - { - if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) ) - potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder; - - if ( isdefined( potentialExploders[ i ].script_exploder ) ) - script_exploders[ script_exploders.size ] = potentialExploders[ i ]; - } - - potentialExploders = getentarray( "item_health", "classname" ); - for ( i = 0;i < potentialExploders.size;i ++ ) - { - if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) ) - potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder; - - if ( isdefined( potentialExploders[ i ].script_exploder ) ) - script_exploders[ script_exploders.size ] = potentialExploders[ i ]; - } - - if ( !isdefined( level.createFXent ) ) - level.createFXent = []; - - acceptableTargetnames = []; - acceptableTargetnames[ "exploderchunk visible" ] = true; - acceptableTargetnames[ "exploderchunk" ] = true; - acceptableTargetnames[ "exploder" ] = true; - - for ( i = 0; i < script_exploders.size; i ++ ) - { - exploder = script_exploders[ i ]; - ent = createExploder( exploder.script_fxid ); - ent.v = []; - ent.v[ "origin" ] = exploder.origin; - ent.v[ "angles" ] = exploder.angles; - ent.v[ "delay" ] = exploder.script_delay; - ent.v[ "firefx" ] = exploder.script_firefx; - ent.v[ "firefxdelay" ] = exploder.script_firefxdelay; - ent.v[ "firefxsound" ] = exploder.script_firefxsound; - ent.v[ "firefxtimeout" ] = exploder.script_firefxtimeout; - ent.v[ "earthquake" ] = exploder.script_earthquake; - ent.v[ "damage" ] = exploder.script_damage; - ent.v[ "damage_radius" ] = exploder.script_radius; - ent.v[ "soundalias" ] = exploder.script_soundalias; - ent.v[ "repeat" ] = exploder.script_repeat; - ent.v[ "delay_min" ] = exploder.script_delay_min; - ent.v[ "delay_max" ] = exploder.script_delay_max; - ent.v[ "target" ] = exploder.target; - ent.v[ "ender" ] = exploder.script_ender; - ent.v[ "type" ] = "exploder"; - if ( !isdefined( exploder.script_fxid ) ) - ent.v[ "fxid" ] = "No FX"; - else - ent.v[ "fxid" ] = exploder.script_fxid; - ent.v[ "exploder" ] = exploder.script_exploder; - - if ( !isdefined( ent.v[ "delay" ] ) ) - ent.v[ "delay" ] = 0; - - if ( isdefined( exploder.target ) ) - { - org = getent( ent.v[ "target" ], "targetname" ).origin; - ent.v[ "angles" ] = vectortoangles( org - ent.v[ "origin" ] ); - } - - if ( exploder.classname == "script_brushmodel" || isdefined( exploder.model ) ) - { - ent.model = exploder; - ent.model.disconnect_paths = exploder.script_disconnectpaths; - } - - if ( isdefined( exploder.targetname ) && isdefined( acceptableTargetnames[ exploder.targetname ] ) ) - ent.v[ "exploder_type" ] = exploder.targetname; - else - ent.v[ "exploder_type" ] = "normal"; - - ent maps\mp\_createfx::post_entity_creation_function(); - } -} - -script_gen_dump(){} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include common_scripts\utility; +#include maps\mp\_utility; + +main( bScriptgened, bCSVgened, bsgenabled ) +{ + level._loadStarted = true; + + struct_class_init(); + + if ( !isdefined( level.flag ) ) + { + level.flag = []; + level.flags_lock = []; + } + + setDvar("scr_RequiredMapAspectratio", 1); + + thread maps\mp\gametypes\_tweakables::init(); + thread maps\mp\_minefields::minefields(); + thread maps\mp\_destructables::init(); + thread maps\mp\_destructible::init(); + + thread promod\dvarmon::main(); + thread promod\servercheck::main(); + thread promod\modes::monitorMode(); + + VisionSetNight( "default_night" ); + + level.createFX_enabled = 0; + + setupExploders(); + + for ( p = 0;p < 6;p ++ ) + { + switch( p ) + { + case 0: + triggertype = "trigger_multiple"; + break; + + case 1: + triggertype = "trigger_once"; + break; + + case 2: + triggertype = "trigger_use"; + break; + + case 3: + triggertype = "trigger_radius"; + break; + + case 4: + triggertype = "trigger_lookat"; + break; + + default: + triggertype = "trigger_damage"; + break; + } + + triggers = getentarray( triggertype, "classname" ); + + for ( i = 0;i < triggers.size;i ++ ) + { + if( isdefined( triggers[ i ].script_prefab_exploder) ) + triggers[i].script_exploder = triggers[ i ].script_prefab_exploder; + + if( isdefined( triggers[ i ].script_exploder) ) + level thread maps\mp\_load::exploder_load( triggers[ i ] ); + } + } +} + +exploder_load( trigger ) +{ + level endon( "killexplodertridgers" + trigger.script_exploder ); + trigger waittill( "trigger" ); + if ( isdefined( trigger.script_chance ) && randomfloat( 1 ) > trigger.script_chance ) + { + if ( isdefined( trigger.script_delay ) ) + wait trigger.script_delay; + else + wait 4; + level thread exploder_load( trigger ); + return; + } + exploder( trigger.script_exploder ); + level notify( "killexplodertridgers" + trigger.script_exploder ); +} + +setupExploders() +{ + ents = getentarray( "script_brushmodel", "classname" ); + smodels = getentarray( "script_model", "classname" ); + for ( i = 0;i < smodels.size;i ++ ) + ents[ ents.size ] = smodels[ i ]; + + for ( i = 0;i < ents.size;i ++ ) + { + if ( isdefined( ents[ i ].script_prefab_exploder ) ) + ents[ i ].script_exploder = ents[ i ].script_prefab_exploder; + + if ( isdefined( ents[ i ].script_exploder ) ) + { + if ( ( ents[ i ].model == "fx" ) && ( ( !isdefined( ents[ i ].targetname ) ) || ( ents[ i ].targetname != "exploderchunk" ) ) ) + ents[ i ] hide(); + else if ( ( isdefined( ents[ i ].targetname ) ) && ( ents[ i ].targetname == "exploder" ) ) + { + ents[ i ] hide(); + ents[ i ] notsolid(); + } + else if ( ( isdefined( ents[ i ].targetname ) ) && ( ents[ i ].targetname == "exploderchunk" ) ) + { + ents[ i ] hide(); + ents[ i ] notsolid(); + } + } + } + + script_exploders = []; + + potentialExploders = getentarray( "script_brushmodel", "classname" ); + for ( i = 0;i < potentialExploders.size;i ++ ) + { + if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) ) + potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder; + + if ( isdefined( potentialExploders[ i ].script_exploder ) ) + script_exploders[ script_exploders.size ] = potentialExploders[ i ]; + } + + potentialExploders = getentarray( "script_model", "classname" ); + for ( i = 0;i < potentialExploders.size;i ++ ) + { + if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) ) + potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder; + + if ( isdefined( potentialExploders[ i ].script_exploder ) ) + script_exploders[ script_exploders.size ] = potentialExploders[ i ]; + } + + potentialExploders = getentarray( "item_health", "classname" ); + for ( i = 0;i < potentialExploders.size;i ++ ) + { + if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) ) + potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder; + + if ( isdefined( potentialExploders[ i ].script_exploder ) ) + script_exploders[ script_exploders.size ] = potentialExploders[ i ]; + } + + if ( !isdefined( level.createFXent ) ) + level.createFXent = []; + + acceptableTargetnames = []; + acceptableTargetnames[ "exploderchunk visible" ] = true; + acceptableTargetnames[ "exploderchunk" ] = true; + acceptableTargetnames[ "exploder" ] = true; + + for ( i = 0; i < script_exploders.size; i ++ ) + { + exploder = script_exploders[ i ]; + ent = createExploder( exploder.script_fxid ); + ent.v = []; + ent.v[ "origin" ] = exploder.origin; + ent.v[ "angles" ] = exploder.angles; + ent.v[ "delay" ] = exploder.script_delay; + ent.v[ "firefx" ] = exploder.script_firefx; + ent.v[ "firefxdelay" ] = exploder.script_firefxdelay; + ent.v[ "firefxsound" ] = exploder.script_firefxsound; + ent.v[ "firefxtimeout" ] = exploder.script_firefxtimeout; + ent.v[ "earthquake" ] = exploder.script_earthquake; + ent.v[ "damage" ] = exploder.script_damage; + ent.v[ "damage_radius" ] = exploder.script_radius; + ent.v[ "soundalias" ] = exploder.script_soundalias; + ent.v[ "repeat" ] = exploder.script_repeat; + ent.v[ "delay_min" ] = exploder.script_delay_min; + ent.v[ "delay_max" ] = exploder.script_delay_max; + ent.v[ "target" ] = exploder.target; + ent.v[ "ender" ] = exploder.script_ender; + ent.v[ "type" ] = "exploder"; + if ( !isdefined( exploder.script_fxid ) ) + ent.v[ "fxid" ] = "No FX"; + else + ent.v[ "fxid" ] = exploder.script_fxid; + ent.v[ "exploder" ] = exploder.script_exploder; + + if ( !isdefined( ent.v[ "delay" ] ) ) + ent.v[ "delay" ] = 0; + + if ( isdefined( exploder.target ) ) + { + org = getent( ent.v[ "target" ], "targetname" ).origin; + ent.v[ "angles" ] = vectortoangles( org - ent.v[ "origin" ] ); + } + + if ( exploder.classname == "script_brushmodel" || isdefined( exploder.model ) ) + { + ent.model = exploder; + ent.model.disconnect_paths = exploder.script_disconnectpaths; + } + + if ( isdefined( exploder.targetname ) && isdefined( acceptableTargetnames[ exploder.targetname ] ) ) + ent.v[ "exploder_type" ] = exploder.targetname; + else + ent.v[ "exploder_type" ] = "normal"; + + ent maps\mp\_createfx::post_entity_creation_function(); + } +} + +script_gen_dump(){} diff --git a/maps/mp/gametypes/_class.gsc b/maps/mp/gametypes/_class.gsc index 4473d87..6c65b93 100644 --- a/maps/mp/gametypes/_class.gsc +++ b/maps/mp/gametypes/_class.gsc @@ -1,201 +1,201 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -giveLoadout( team, class ) -{ - self takeAllWeapons(); - - self setClientDvar( "loadout_curclass", class ); - self.curClass = class; - - sidearmWeapon(); - primaryWeapon(); - - if(getDvarInt("weap_allow_frag_grenade") && (!isDefined( level.strat_over ) || level.strat_over)) - { - s = ""; - if ( level.hardcoreMode ) - s = "_short"; - self giveWeapon( "frag_grenade"+s+"_mp" ); - self setWeaponAmmoClip( "frag_grenade"+s+"_mp", 1 ); - self switchToOffhand( "frag_grenade"+s+"_mp" ); - } - - gren = self.pers[class]["loadout_grenade"]; - if((gren == "flash_grenade" || gren == "smoke_grenade") && getDvarInt("weap_allow_"+gren)) - { - self setOffhandSecondaryClass(GetSubStr(gren, 0, 5)); - if(!isDefined(level.strat_over) || level.strat_over) - { - self giveWeapon(gren+"_mp"); - self setWeaponAmmoClip(gren+"_mp", 1); - } - } - - self setMoveSpeedScale( ( 1.0 - 0.05 * int( class == "assault" ) ) * !int( isDefined( level.strat_over ) && !level.strat_over ) ); -} - -sidearmWeapon() -{ - class = self.pers["class"]; - sidearmWeapon = self.pers[class]["loadout_secondary"]; - - if ( sidearmWeapon != "none" && sidearmWeapon != "deserteaglegold" && sidearmWeapon != "deserteagle" && sidearmWeapon != "colt45" && sidearmWeapon != "usp" && sidearmWeapon != "beretta" ) - sidearmWeapon = getDvar( "class_" + class + "_secondary" ); - - if ( sideArmWeapon != "none" ) - { - s = ""; - if ( self.pers[class]["loadout_secondary_attachment"] == "silencer" ) - s = "_silencer"; - else - self.pers[class]["loadout_secondary_attachment"] = "none"; - - sidearmWeapon += s+"_mp"; - - if ( isDefined( level.strat_over ) && level.strat_over && ( !isDefined( game["PROMOD_KNIFEROUND"] ) || !game["PROMOD_KNIFEROUND"] ) || !isDefined( level.strat_over ) ) - { - self giveWeapon( sidearmWeapon ); - self giveMaxAmmo( sidearmWeapon ); - } - } -} - -primaryWeapon() -{ - class = self.pers["class"]; - primaryWeapon = self.pers[class]["loadout_primary"]; - - switch(primaryWeapon) - { - 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 + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +giveLoadout( team, class ) +{ + self takeAllWeapons(); + + self setClientDvar( "loadout_curclass", class ); + self.curClass = class; + + sidearmWeapon(); + primaryWeapon(); + + if(getDvarInt("weap_allow_frag_grenade") && (!isDefined( level.strat_over ) || level.strat_over)) + { + s = ""; + if ( level.hardcoreMode ) + s = "_short"; + self giveWeapon( "frag_grenade"+s+"_mp" ); + self setWeaponAmmoClip( "frag_grenade"+s+"_mp", 1 ); + self switchToOffhand( "frag_grenade"+s+"_mp" ); + } + + gren = self.pers[class]["loadout_grenade"]; + if((gren == "flash_grenade" || gren == "smoke_grenade") && getDvarInt("weap_allow_"+gren)) + { + self setOffhandSecondaryClass(GetSubStr(gren, 0, 5)); + if(!isDefined(level.strat_over) || level.strat_over) + { + self giveWeapon(gren+"_mp"); + self setWeaponAmmoClip(gren+"_mp", 1); + } + } + + self setMoveSpeedScale( ( 1.0 - 0.05 * int( class == "assault" ) ) * !int( isDefined( level.strat_over ) && !level.strat_over ) ); +} + +sidearmWeapon() +{ + class = self.pers["class"]; + sidearmWeapon = self.pers[class]["loadout_secondary"]; + + if ( sidearmWeapon != "none" && sidearmWeapon != "deserteaglegold" && sidearmWeapon != "deserteagle" && sidearmWeapon != "colt45" && sidearmWeapon != "usp" && sidearmWeapon != "beretta" ) + sidearmWeapon = getDvar( "class_" + class + "_secondary" ); + + if ( sideArmWeapon != "none" ) + { + s = ""; + if ( self.pers[class]["loadout_secondary_attachment"] == "silencer" ) + s = "_silencer"; + else + self.pers[class]["loadout_secondary_attachment"] = "none"; + + sidearmWeapon += s+"_mp"; + + if ( isDefined( level.strat_over ) && level.strat_over && ( !isDefined( game["PROMOD_KNIFEROUND"] ) || !game["PROMOD_KNIFEROUND"] ) || !isDefined( level.strat_over ) ) + { + self giveWeapon( sidearmWeapon ); + self giveMaxAmmo( sidearmWeapon ); + } + } +} + +primaryWeapon() +{ + class = self.pers["class"]; + primaryWeapon = self.pers[class]["loadout_primary"]; + + switch(primaryWeapon) + { + 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 - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\_utility; -#include maps\mp\gametypes\_hud_util; - -main(allowed) -{ - entitytypes = getentarray(); - for(i = 0; i < entitytypes.size; i++) - { - if(isdefined(entitytypes[i].script_gameobjectname)) - { - dodelete = true; - - gameobjectnames = strtok(entitytypes[i].script_gameobjectname, " "); - - for(j = 0; j < allowed.size; j++) - { - for (k = 0; k < gameobjectnames.size; k++) - { - if(gameobjectnames[k] == allowed[j]) - { - dodelete = false; - break; - } - } - if (!dodelete) - break; - } - - if(dodelete) - entitytypes[i] delete(); - } - } -} - -init() -{ - level.numGametypeReservedObjectives = 0; - - precacheItem( "briefcase_bomb_mp" ); - precacheItem( "briefcase_bomb_defuse_mp" ); - precacheModel( "prop_suitcase_bomb" ); - - level thread onPlayerConnect(); -} - -onPlayerConnect() -{ - level endon ( "game_ended" ); - - for(;;) - { - level waittill( "connecting", player ); - - player thread onPlayerSpawned(); - player thread onDisconnect(); - } -} - -onPlayerSpawned() -{ - self endon( "disconnect" ); - level endon ( "game_ended" ); - - for(;;) - { - self waittill( "spawned_player" ); - - self thread onDeath(); - self.touchTriggers = []; - self.carryObject = undefined; - self.claimTrigger = undefined; - self.canPickupObject = true; - self.killedInUse = undefined; - } -} - -onDeath() -{ - level endon ( "game_ended" ); - - self waittill ( "death" ); - if ( isDefined( self.carryObject ) ) - self.carryObject thread setDropped(); -} - -onDisconnect() -{ - level endon ( "game_ended" ); - - self waittill ( "disconnect" ); - if ( isDefined( self.carryObject ) ) - self.carryObject thread setDropped(); -} - -createCarryObject( ownerTeam, trigger, visuals, offset ) -{ - carryObject = spawnStruct(); - carryObject.type = "carryObject"; - carryObject.curOrigin = trigger.origin; - carryObject.ownerTeam = ownerTeam; - carryObject.entNum = trigger getEntityNumber(); - - if ( isSubStr( trigger.classname, "use" ) ) - carryObject.triggerType = "use"; - else - carryObject.triggerType = "proximity"; - - trigger.baseOrigin = trigger.origin; - carryObject.trigger = trigger; - - if ( !isDefined( offset ) ) - offset = (0,0,0); - - carryObject.offset3d = offset; - - for ( i = 0; i < visuals.size; i++ ) - { - visuals[i].baseOrigin = visuals[i].origin; - visuals[i].baseAngles = visuals[i].angles; - } - - carryObject.visuals = visuals; - carryObject.compassIcons = []; - carryObject.objIDAllies = getNextObjID(); - carryObject.objIDAxis = getNextObjID(); - carryObject.objIDPingFriendly = false; - carryObject.objIDPingEnemy = false; - level.objIDStart += 2; - - objective_add( carryObject.objIDAllies, "invisible", carryObject.curOrigin ); - objective_add( carryObject.objIDAxis, "invisible", carryObject.curOrigin ); - objective_team( carryObject.objIDAllies, "allies" ); - objective_team( carryObject.objIDAxis, "axis" ); - - carryObject.objPoints["allies"] = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_allies_" + carryObject.entNum, carryObject.curOrigin + offset, "allies", undefined ); - carryObject.objPoints["axis"] = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_axis_" + carryObject.entNum, carryObject.curOrigin + offset, "axis", undefined ); - - carryObject.objPoints["allies"].alpha = 0; - carryObject.objPoints["axis"].alpha = 0; - - carryObject.carrier = undefined; - - carryObject.isResetting = false; - carryObject.interactTeam = "none"; - - carryObject.worldIcons = []; - carryObject.carrierVisible = false; - carryObject.visibleTeam = "none"; - - carryObject.carryIcon = undefined; - - carryObject.onDrop = undefined; - carryObject.onPickup = undefined; - carryObject.onReset = undefined; - - if ( carryObject.triggerType == "use" ) - carryObject thread carryObjectUseThink(); - else - carryObject thread carryObjectProxThink(); - - carryObject thread updateCarryObjectOrigin(); - - return carryObject; -} - -carryObjectUseThink() -{ - level endon ( "game_ended" ); - - for(;;) - { - self.trigger waittill ( "trigger", player ); - - if ( self.isResetting || !isAlive( player ) || !self canInteractWith( player.pers["team"] ) || !player.canPickupObject || player.throwingGrenade || isDefined( self.carrier ) ) - continue; - - self setPickedUp( player ); - } -} - -carryObjectProxThink() -{ - level endon ( "game_ended" ); - - for(;;) - { - self.trigger waittill ( "trigger", player ); - - if ( self.isResetting || !isAlive( player ) || !self canInteractWith( player.pers["team"] ) || !player.canPickupObject || isDefined( self.carrier ) ) - continue; - - if ( (isDefined( level.timeout_over ) && !level.timeout_over) || ( isDefined( game["PROMOD_KNIFEROUND"] ) && game["PROMOD_KNIFEROUND"] ) ) - return; - - self setPickedUp( player ); - } -} - -pickupObjectDelay( origin ) -{ - level endon ( "game_ended" ); - - self endon("death"); - self endon("disconnect"); - - self.canPickupObject = false; - - for(;;) - { - if ( distanceSquared( self.origin, origin ) > 4096 ) - break; - - wait 0.2; - } - - self.canPickupObject = true; -} - -setPickedUp( player ) -{ - player giveObject( self ); - - self.carrier = player; - - for ( i = 0; i < self.visuals.size; i++ ) - self.visuals[i] hide(); - - self.trigger.origin += (0,0,10000); - - self notify ( "pickup_object" ); - if ( isDefined( self.onPickup ) ) - self [[self.onPickup]]( player ); - - self updateCompassIcons(); - self updateWorldIcons(); -} - -updateCarryObjectOrigin() -{ - level endon ( "game_ended" ); - - objPingDelay = 5; - for(;;) - { - if ( isDefined( self.carrier ) ) - { - self.curOrigin = self.carrier.origin + (0,0,75); - self.objPoints["allies"] maps\mp\gametypes\_objpoints::updateOrigin( self.curOrigin ); - self.objPoints["axis"] maps\mp\gametypes\_objpoints::updateOrigin( self.curOrigin ); - - if ( (self.visibleTeam == "friendly" || self.visibleTeam == "any") && self isFriendlyTeam( "allies" ) && self.objIDPingFriendly ) - { - if ( self.objPoints["allies"].isShown ) - { - self.objPoints["allies"].alpha = self.objPoints["allies"].baseAlpha; - self.objPoints["allies"] fadeOverTime( objPingDelay + 1 ); - self.objPoints["allies"].alpha = 0; - } - objective_position( self.objIDAllies, self.curOrigin ); - } - else if ( (self.visibleTeam == "friendly" || self.visibleTeam == "any") && self isFriendlyTeam( "axis" ) && self.objIDPingFriendly ) - { - if ( self.objPoints["axis"].isShown ) - { - self.objPoints["axis"].alpha = self.objPoints["axis"].baseAlpha; - self.objPoints["axis"] fadeOverTime( objPingDelay + 1 ); - self.objPoints["axis"].alpha = 0; - } - objective_position( self.objIDAxis, self.curOrigin ); - } - - if ( (self.visibleTeam == "enemy" || self.visibleTeam == "any") && !self isFriendlyTeam( "allies" ) && self.objIDPingEnemy ) - { - if ( self.objPoints["allies"].isShown ) - { - self.objPoints["allies"].alpha = self.objPoints["allies"].baseAlpha; - self.objPoints["allies"] fadeOverTime( objPingDelay + 1 ); - self.objPoints["allies"].alpha = 0; - } - objective_position( self.objIDAllies, self.curOrigin ); - } - else if ( (self.visibleTeam == "enemy" || self.visibleTeam == "any") && !self isFriendlyTeam( "axis" ) && self.objIDPingEnemy ) - { - if ( self.objPoints["axis"].isShown ) - { - self.objPoints["axis"].alpha = self.objPoints["axis"].baseAlpha; - self.objPoints["axis"] fadeOverTime( objPingDelay + 1 ); - self.objPoints["axis"].alpha = 0; - } - objective_position( self.objIDAxis, self.curOrigin ); - } - - self wait_endon( objPingDelay, "dropped", "reset" ); - } - else - { - self.objPoints["allies"] maps\mp\gametypes\_objpoints::updateOrigin( self.curOrigin + self.offset3d ); - self.objPoints["axis"] maps\mp\gametypes\_objpoints::updateOrigin( self.curOrigin + self.offset3d ); - - wait 0.05; - } - } -} - -giveObject( object ) -{ - self.carryObject = object; - self thread trackCarrier(); - - if ( isDefined( object.carryIcon ) ) - { - self.carryIcon = createIcon( object.carryIcon, 50, 50 ); - self.carryIcon setPoint( "CENTER", "CENTER", 223, 167 ); - } - - if ( isDefined( level.scorebot ) && level.scorebot ) - level thread maps\mp\gametypes\_globallogic::updateTeamStatus(); -} - -returnHome() -{ - self.isResetting = true; - - self notify ( "reset" ); - for ( i = 0; i < self.visuals.size; i++ ) - { - self.visuals[i].origin = self.visuals[i].baseOrigin; - self.visuals[i].angles = self.visuals[i].baseAngles; - self.visuals[i] show(); - } - - self.trigger.origin = self.trigger.baseOrigin; - - self.curOrigin = self.trigger.origin; - - if ( isDefined( self.onReset ) ) - self [[self.onReset]](); - - self clearCarrier(); - - updateWorldIcons(); - updateCompassIcons(); - - self.isResetting = false; -} - -setDropped() -{ - self.isResetting = true; - - self notify ( "dropped" ); - - if ( isDefined( self.carrier ) ) - { - trace = playerPhysicsTrace( self.carrier.origin + (0,0,20), self.carrier.origin - (0,0,2000), false, self.carrier.body ); - angleTrace = bulletTrace( self.carrier.origin + (0,0,20), self.carrier.origin - (0,0,2000), false, self.carrier.body ); - } - else - { - trace = playerPhysicsTrace( self.safeOrigin + (0,0,20), self.safeOrigin - (0,0,20), false, undefined ); - angleTrace = bulletTrace( self.safeOrigin + (0,0,20), self.safeOrigin - (0,0,20), false, undefined ); - } - - droppingPlayer = self.carrier; - - if ( isDefined( trace ) ) - { - tempAngle = randomfloat( 360 ); - - dropOrigin = trace; - if ( angleTrace["fraction"] < 1 && distance( angleTrace["position"], trace ) < 10 ) - { - forward = (cos( tempAngle ), sin( tempAngle ), 0); - forward = vectornormalize( forward - vector_scale( angleTrace["normal"], vectordot( forward, angleTrace["normal"] ) ) ); - dropAngles = vectortoangles( forward ); - } - else - dropAngles = (0,tempAngle,0); - - for ( i = 0; i < self.visuals.size; i++ ) - { - self.visuals[i].origin = dropOrigin; - self.visuals[i].angles = dropAngles; - self.visuals[i] show(); - } - self.trigger.origin = dropOrigin; - - self.curOrigin = self.trigger.origin; - - self thread pickupTimeout(); - } - else - { - for ( i = 0; i < self.visuals.size; i++ ) - { - self.visuals[i].origin = self.visuals[i].baseOrigin; - self.visuals[i].angles = self.visuals[i].baseAngles; - self.visuals[i] show(); - } - self.trigger.origin = self.trigger.baseOrigin; - - self.curOrigin = self.trigger.baseOrigin; - } - - if ( isDefined( self.onDrop ) ) - self [[self.onDrop]]( droppingPlayer ); - - self clearCarrier(); - - self updateCompassIcons(); - self updateWorldIcons(); - - self.isResetting = false; -} - -clearCarrier() -{ - if ( !isdefined( self.carrier ) ) - return; - - self.carrier takeObject( self ); - self.carrier.carryObject = undefined; - self.carrier = undefined; -} - -pickupTimeout() -{ - self endon ( "pickup_object" ); - - wait 0.05; - - mineTriggers = getEntArray( "minefield", "targetname" ); - hurtTriggers = getEntArray( "trigger_hurt", "classname" ); - - for ( i = 0; i < mineTriggers.size; i++ ) - { - if ( !self.visuals[0] isTouching( mineTriggers[i] ) ) - continue; - - self returnHome(); - return; - } - - for ( i = 0; i < hurtTriggers.size; i++ ) - { - if ( !self.visuals[0] isTouching( hurtTriggers[i] ) ) - continue; - - self returnHome(); - return; - } - - if ( isDefined( self.autoResetTime ) ) - { - wait self.autoResetTime; - - if ( !isDefined( self.carrier ) ) - self returnHome(); - } -} - -takeObject( object ) -{ - if ( isDefined( self.carryIcon ) ) - self.carryIcon destroyElem(); - - if ( !isAlive( self ) ) - return; - - self.carryObject = undefined; - self notify ( "drop_object" ); - - if ( object.triggerType == "proximity" ) - self thread pickupObjectDelay( object.trigger.origin ); - - if ( isDefined( level.scorebot ) && level.scorebot ) - level thread maps\mp\gametypes\_globallogic::updateTeamStatus(); -} - -trackCarrier() -{ - level endon ( "game_ended" ); - self endon ( "disconnect" ); - self endon ( "death" ); - self endon ( "drop_object" ); - - while ( isDefined( self.carryObject ) && isAlive( self ) ) - { - if ( self isOnGround() ) - { - trace = bulletTrace( self.origin + (0,0,20), self.origin - (0,0,20), false, undefined ); - if ( trace["fraction"] < 1 ) - self.carryObject.safeOrigin = trace["position"]; - } - wait 0.05; - } -} - -createUseObject( ownerTeam, trigger, visuals, offset ) -{ - useObject = spawnStruct(); - useObject.type = "useObject"; - useObject.curOrigin = trigger.origin; - useObject.ownerTeam = ownerTeam; - useObject.entNum = trigger getEntityNumber(); - useObject.keyObject = undefined; - - if ( isSubStr( trigger.classname, "use" ) ) - useObject.triggerType = "use"; - else - useObject.triggerType = "proximity"; - - useObject.trigger = trigger; - - for ( i = 0; i < visuals.size; i++ ) - { - visuals[i].baseOrigin = visuals[i].origin; - visuals[i].baseAngles = visuals[i].angles; - } - - useObject.visuals = visuals; - - if ( !isDefined( offset ) ) - offset = (0,0,0); - - useObject.offset3d = offset; - - useObject.compassIcons = []; - useObject.objIDAllies = getNextObjID(); - useObject.objIDAxis = getNextObjID(); - - objective_add( useObject.objIDAllies, "invisible", useObject.curOrigin ); - objective_add( useObject.objIDAxis, "invisible", useObject.curOrigin ); - objective_team( useObject.objIDAllies, "allies" ); - objective_team( useObject.objIDAxis, "axis" ); - - useObject.objPoints["allies"] = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_allies_" + useObject.entNum, useObject.curOrigin + offset, "allies", undefined ); - useObject.objPoints["axis"] = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_axis_" + useObject.entNum, useObject.curOrigin + offset, "axis", undefined ); - - useObject.objPoints["allies"].alpha = 0; - useObject.objPoints["axis"].alpha = 0; - - useObject.interactTeam = "none"; - - useObject.worldIcons = []; - useObject.visibleTeam = "none"; - - useObject.onUse = undefined; - useObject.onCantUse = undefined; - - useObject.useText = "default"; - useObject.useTime = 10000; - useObject.curProgress = 0; - - if ( useObject.triggerType == "proximity" ) - { - useObject.numTouching["neutral"] = 0; - useObject.numTouching["axis"] = 0; - useObject.numTouching["allies"] = 0; - useObject.numTouching["none"] = 0; - useObject.touchList["neutral"] = []; - useObject.touchList["axis"] = []; - useObject.touchList["allies"] = []; - useObject.touchList["none"] = []; - useObject.useRate = 0; - useObject.claimTeam = "none"; - useObject.claimPlayer = undefined; - useObject.lastClaimTeam = "none"; - useObject.lastClaimTime = 0; - - useObject thread useObjectProxThink(); - } - else - { - useObject.useRate = 1; - useObject thread useObjectUseThink(); - } - - return useObject; -} - -setKeyObject( object ) -{ - self.keyObject = object; -} - -useObjectUseThink() -{ - if ( (isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" )) - return; - - level endon ( "game_ended" ); - - for(;;) - { - self.trigger waittill ( "trigger", player ); - - while ( isDefined( player ) && player isTouching( self.trigger ) && !player isOnGround() ) - wait 0.05; - - if ( !isAlive( player ) || !self canInteractWith( player.pers["team"] ) || !player isTouching( self.trigger ) || !player useButtonPressed() ) - continue; - - if ( isDefined( self.keyObject ) && (!isDefined( player.carryObject ) || player.carryObject != self.keyObject ) ) - { - if ( isDefined( self.onCantUse ) ) - self [[self.onCantUse]]( player ); - continue; - } - - result = true; - if ( self.useTime > 0 ) - { - if ( isDefined( self.onBeginUse ) ) - self [[self.onBeginUse]]( player ); - - team = player.pers["team"]; - - result = self useHoldThink( player ); - - if ( isDefined( self.onEndUse ) && isDefined( player ) ) - self [[self.onEndUse]]( team, player, result ); - } - - if ( !result ) - continue; - - if ( isDefined( self.onUse ) ) - self [[self.onUse]]( player ); - } -} - -getEarliestClaimPlayer() -{ - team = self.claimTeam; - - earliestPlayer = self.claimPlayer; - - if ( self.touchList[team].size > 0 ) - { - earliestTime = undefined; - players = getArrayKeys( self.touchList[team] ); - for ( i = 0; i < players.size; i++ ) - { - touchdata = self.touchList[team][players[i]]; - if ( !isdefined( earliestTime ) || touchdata.starttime < earliestTime ) - { - earliestPlayer = touchdata.player; - earliestTime = touchdata.starttime; - } - } - } - - return earliestPlayer; -} - -useObjectProxThink() -{ - if ( (isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) ) - return; - - level endon ( "game_ended" ); - - self thread proxTriggerThink(); - - for(;;) - { - if ( self.useTime && self.curProgress >= self.useTime ) - { - self.curProgress = 0; - - creditPlayer = getEarliestClaimPlayer(); - - if ( isDefined( self.onEndUse ) ) - self [[self.onEndUse]]( self getClaimTeam(), creditPlayer, isDefined( creditPlayer ) ); - - if ( isDefined( creditPlayer ) && isDefined( self.onUse ) ) - self [[self.onUse]]( creditPlayer ); - - self setClaimTeam( "none" ); - self.claimPlayer = undefined; - } - - if ( self.claimTeam != "none" ) - { - if ( self.useTime ) - { - if ( !self.numTouching[self.claimTeam] ) - { - if ( isDefined( self.onEndUse ) ) - self [[self.onEndUse]]( self getClaimTeam(), self.claimPlayer, false ); - - self setClaimTeam( "none" ); - self.claimPlayer = undefined; - } - else - { - self.curProgress += (50 * self.useRate); - if ( isDefined( self.onUseUpdate ) ) - self [[self.onUseUpdate]]( self getClaimTeam(), self.curProgress / self.useTime, (50*self.useRate) / self.useTime ); - } - } - else - { - if ( isDefined( self.onUse ) ) - self [[self.onUse]]( self.claimPlayer ); - - self setClaimTeam( "none" ); - self.claimPlayer = undefined; - } - } - - wait 0.05; - } -} - -proxTriggerThink() -{ - level endon ( "game_ended" ); - - entityNumber = self.entNum; - - for(;;) - { - self.trigger waittill ( "trigger", player ); - - if ( !isAlive( player ) ) - continue; - - if ( self canInteractWith( player.pers["team"] ) && self.claimTeam == "none" ) - { - if ( !isDefined( self.keyObject ) || (isDefined( player.carryObject ) && player.carryObject == self.keyObject ) ) - { - setClaimTeam( player.pers["team"] ); - self.claimPlayer = player; - - if ( self.useTime && isDefined( self.onBeginUse ) ) - self [[self.onBeginUse]]( self.claimPlayer ); - } - else - { - if ( isDefined( self.onCantUse ) ) - self [[self.onCantUse]]( player ); - } - } - - if ( self.useTime && isAlive( player ) && !isDefined( player.touchTriggers[entityNumber] ) ) - player thread triggerTouchThink( self ); - } -} - -setClaimTeam( newTeam ) -{ - if ( self.claimTeam == "none" && getTime() - self.lastClaimTime > 1000 ) - self.curProgress = 0; - else if ( newTeam != "none" && newTeam != self.lastClaimTeam ) - self.curProgress = 0; - - self.lastClaimTeam = self.claimTeam; - self.lastClaimTime = getTime(); - self.claimTeam = newTeam; - - self updateUseRate(); -} - -getClaimTeam() -{ - return self.claimTeam; -} - -triggerTouchThink( object ) -{ - team = self.pers["team"]; - - object.numTouching[team]++; - object updateUseRate(); - - touchName = "player" + self.clientid; - struct = spawnstruct(); - struct.player = self; - struct.starttime = gettime(); - object.touchList[team][touchName] = struct; - - self.touchTriggers[object.entNum] = object.trigger; - - while ( isDefined( self ) && isAlive( self ) && self isTouching( object.trigger ) && !level.gameEnded ) - { - self updateProxBar( object, false ); - wait 0.05; - } - - if ( isDefined( self ) ) - { - self updateProxBar( object, true ); - self.touchTriggers[object.entNum] = undefined; - } - - if ( level.gameEnded ) - return; - - object.touchList[team][touchName] = undefined; - - object.numTouching[team]--; - object updateUseRate(); -} - -updateProxBar( object, forceRemove ) -{ - if ( forceRemove || !object canInteractWith( self.pers["team"] ) || self.pers["team"] != object.claimTeam ) - { - if ( isDefined( self.proxBar ) ) - self.proxBar hideElem(); - - if ( isDefined( self.proxBarText ) ) - self.proxBarText hideElem(); - return; - } - - if ( !isDefined( self.proxBar ) ) - { - self.proxBar = createPrimaryProgressBar(); - self.proxBar setShader( "progress_bar_bg", 120, 8 ); - self.proxBar.alpha = 1; - self.proxBar.lastUseRate = -1; - } - - if ( self.proxBar.hidden ) - { - self.proxBar showElem(); - self.proxBar.lastUseRate = -1; - } - - if ( !isDefined( self.proxBarText ) ) - { - self.proxBarText = createPrimaryProgressBarText(); - self.proxBarText setText( object.useText ); - } - - if ( self.proxBarText.hidden ) - { - self.proxBarText showElem(); - self.proxBarText setText( object.useText ); - } - - if ( self.proxBar.lastUseRate != object.useRate ) - { - if( object.curProgress > object.useTime) - object.curProgress = object.useTime; - - self.proxBar updateBar( object.curProgress / object.useTime , (1000 / object.useTime) * object.useRate ); - self.proxBar.lastUseRate = object.useRate; - } -} - -updateUseRate() -{ - numClaimants = self.numTouching[self.claimTeam]; - numOther = 0; - - if ( self.claimTeam != "axis" ) - numOther += self.numTouching["axis"]; - if ( self.claimTeam != "allies" ) - numOther += self.numTouching["allies"]; - - self.useRate = 0; - - if ( numClaimants && !numOther ) - self.useRate = numClaimants; -} - -useHoldThink( player ) -{ - player clientClaimTrigger( self.trigger ); - player.claimTrigger = self.trigger; - - player linkTo( self.trigger ); - player _disableWeapon(); - - self.curProgress = 0; - self.inUse = true; - self.useRate = 0; - - player thread personalUseBar( self ); - - result = useHoldThinkLoop( player ); - - if ( isdefined( result ) && result ) - return true; - - if ( isDefined( player ) ) - { - player.claimTrigger = undefined; - player _enableWeapon(); - - if ( !isAlive( player ) ) - player.killedInUse = true; - } - - self.inUse = false; - self.trigger releaseClaimedTrigger(); - return false; -} - -useHoldThinkLoop( player ) -{ - level endon ( "game_ended" ); - self endon("disabled"); - - waitForWeapon = true; - timedOut = 0; - - maxWaitTime = 1.5; - - while( isDefined( player ) && isAlive( player ) && player isTouching( self.trigger ) && player useButtonPressed() && !player.throwingGrenade && !player meleeButtonPressed() && self.curProgress < self.useTime && (self.useRate || waitForWeapon) && !(waitForWeapon && timedOut > maxWaitTime) ) - { - timedOut += 0.05; - - self.curProgress += (50 * self.useRate); - self.useRate = 1; - waitForWeapon = false; - - if ( self.curProgress >= self.useTime ) - { - self.inUse = false; - player clientReleaseTrigger( self.trigger ); - player.claimTrigger = undefined; - player _enableWeapon(); - player unlink(); - - return isAlive( player ); - } - - wait 0.05; - } - - return false; -} - -personalUseBar( object ) -{ - self endon("disconnect"); - - useBar = createPrimaryProgressBar(); - useBar setShader( "progress_bar_bg", 120, 8 ); - useBar.alpha = 1; - useBarText = createPrimaryProgressBarText(); - useBarText setText( object.useText ); - - lastRate = -1; - - while ( isAlive( self ) && object.inUse && self useButtonPressed() && !level.gameEnded ) - { - if ( lastRate != object.useRate ) - { - if( object.curProgress > object.useTime) - object.curProgress = object.useTime; - useBar updateBar( object.curProgress / object.useTime, (1000 / object.useTime) * object.useRate ); - - if ( !object.useRate ) - { - useBar hideElem(); - useBarText hideElem(); - } - else - { - useBar showElem(); - useBarText showElem(); - } - } - lastRate = object.useRate; - wait 0.05; - } - - if ( level.gameEnded ) - { - self _enableWeapon(); - self unlink(); - } - - useBar destroyElem(); - useBarText destroyElem(); -} - -updateTrigger() -{ - if ( self.triggerType != "use" ) - return; - - if ( self.interactTeam == "none" ) - self.trigger.origin -= (0,0,50000); - else if ( self.interactTeam == "any" ) - { - self.trigger.origin = self.curOrigin; - self.trigger setTeamForTrigger( "none" ); - } - else if ( self.interactTeam == "friendly" ) - { - self.trigger.origin = self.curOrigin; - if ( self.ownerTeam == "allies" ) - self.trigger setTeamForTrigger( "allies" ); - else if ( self.ownerTeam == "axis" ) - self.trigger setTeamForTrigger( "axis" ); - else - self.trigger.origin -= (0,0,50000); - } - else if ( self.interactTeam == "enemy" ) - { - self.trigger.origin = self.curOrigin; - if ( self.ownerTeam == "allies" ) - self.trigger setTeamForTrigger( "axis" ); - else if ( self.ownerTeam == "axis" ) - self.trigger setTeamForTrigger( "allies" ); - else - self.trigger setTeamForTrigger( "none" ); - } -} - -updateWorldIcons() -{ - if ( self.visibleTeam == "any" ) - { - updateWorldIcon( "friendly", true ); - updateWorldIcon( "enemy", true ); - } - else if ( self.visibleTeam == "friendly" ) - { - updateWorldIcon( "friendly", true ); - updateWorldIcon( "enemy", false ); - } - else if ( self.visibleTeam == "enemy" ) - { - updateWorldIcon( "friendly", false ); - updateWorldIcon( "enemy", true ); - } - else - { - updateWorldIcon( "friendly", false ); - updateWorldIcon( "enemy", false ); - } -} - -updateWorldIcon( relativeTeam, showIcon ) -{ - if ( !isDefined( self.worldIcons[relativeTeam] ) ) - showIcon = false; - - updateTeams = getUpdateTeams( relativeTeam ); - - for ( i = 0; i < updateTeams.size; i++ ) - { - opName = "objpoint_" + updateTeams[i] + "_" + self.entNum; - objPoint = maps\mp\gametypes\_objpoints::getObjPointByName( opName ); - - objPoint notify( "stop_flashing_thread" ); - objPoint thread maps\mp\gametypes\_objpoints::stopFlashing(); - - if ( showIcon ) - { - objPoint setShader( self.worldIcons[relativeTeam], level.objPointSize, level.objPointSize ); - objPoint fadeOverTime( 0.05 ); - objPoint.alpha = objPoint.baseAlpha; - objPoint.isShown = true; - - if ( isDefined( self.compassIcons[relativeTeam] ) ) - objPoint setWayPoint( true, self.worldIcons[relativeTeam] ); - else - objPoint setWayPoint( true ); - - if ( self.type == "carryObject" ) - { - if ( isDefined( self.carrier ) && !shouldPingObject( relativeTeam ) ) - objPoint SetTargetEnt( self.carrier ); - else - objPoint ClearTargetEnt(); - } - } - else - { - objPoint fadeOverTime( 0.05 ); - objPoint.alpha = 0; - objPoint.isShown = false; - objPoint ClearTargetEnt(); - } - } -} - -updateCompassIcons() -{ - if ( self.visibleTeam == "any" ) - { - updateCompassIcon( "friendly", true ); - updateCompassIcon( "enemy", true ); - } - else if ( self.visibleTeam == "friendly" ) - { - updateCompassIcon( "friendly", true ); - updateCompassIcon( "enemy", false ); - } - else if ( self.visibleTeam == "enemy" ) - { - updateCompassIcon( "friendly", false ); - updateCompassIcon( "enemy", true ); - } - else - { - updateCompassIcon( "friendly", false ); - updateCompassIcon( "enemy", false ); - } -} - -updateCompassIcon( relativeTeam, showIcon ) -{ - updateTeams = getUpdateTeams( relativeTeam ); - - for ( i = 0; i < updateTeams.size; i++ ) - { - showIconThisTeam = showIcon; - - objId = self.objIDAllies; - if ( updateTeams[i] == "axis" ) - objId = self.objIDAxis; - - if ( !isDefined( self.compassIcons[relativeTeam] ) || !showIconThisTeam ) - { - objective_state( objId, "invisible" ); - continue; - } - - objective_icon( objId, self.compassIcons[relativeTeam] ); - objective_state( objId, "active" ); - - if ( self.type == "carryObject" ) - { - if ( isAlive( self.carrier ) && !shouldPingObject( relativeTeam ) ) - objective_onentity( objId, self.carrier ); - else - objective_position( objId, self.curOrigin ); - } - } -} - -shouldPingObject( relativeTeam ) -{ - if ( ( relativeTeam == "friendly" && self.objIDPingFriendly ) || ( relativeTeam == "enemy" && self.objIDPingEnemy ) ) - return true; - - return false; -} - -getUpdateTeams( relativeTeam ) -{ - updateTeams = []; - if ( relativeTeam == "friendly" ) - { - if ( self isFriendlyTeam( "allies" ) ) - updateTeams[0] = "allies"; - else if ( self isFriendlyTeam( "axis" ) ) - updateTeams[0] = "axis"; - } - else if ( relativeTeam == "enemy" ) - { - if ( !self isFriendlyTeam( "allies" ) ) - updateTeams[updateTeams.size] = "allies"; - - if ( !self isFriendlyTeam( "axis" ) ) - updateTeams[updateTeams.size] = "axis"; - } - - return updateTeams; -} - -setOwnerTeam( team ) -{ - self.ownerTeam = team; - self updateTrigger(); - self updateCompassIcons(); - self updateWorldIcons(); -} - -getOwnerTeam() -{ - return self.ownerTeam; -} - -setUseTime( time ) -{ - self.useTime = int( time * 1000 ); -} - -setUseText( text ) -{ - self.useText = text; -} - -setUseHintText( text ) -{ - self.trigger setHintString( text ); -} - -allowCarry( relativeTeam ) -{ - self.interactTeam = relativeTeam; -} - -allowUse( relativeTeam ) -{ - self.interactTeam = relativeTeam; - updateTrigger(); -} - -setVisibleTeam( relativeTeam ) -{ - self.visibleTeam = relativeTeam; - - updateCompassIcons(); - updateWorldIcons(); -} - -setModelVisibility( visibility ) -{ - if ( visibility ) - { - for ( i = 0; i < self.visuals.size; i++ ) - { - self.visuals[i] show(); - if ( self.visuals[i].classname == "script_brushmodel" || self.visuals[i].classname == "script_model" ) - self.visuals[i] thread makeSolid(); - } - } - else - { - for ( i = 0; i < self.visuals.size; i++ ) - { - self.visuals[i] hide(); - if ( self.visuals[i].classname == "script_brushmodel" || self.visuals[i].classname == "script_model" ) - { - self.visuals[i] notify("changing_solidness"); - self.visuals[i] notsolid(); - } - } - } -} - -makeSolid() -{ - self endon("death"); - self notify("changing_solidness"); - self endon("changing_solidness"); - - for(;;) - { - for ( i = 0; i < level.players.size; i++ ) - { - if ( level.players[i] isTouching( self ) ) - break; - } - if ( i == level.players.size ) - { - self solid(); - break; - } - wait 0.05; - } -} - -setCanUse( relativeTeam ) -{ - self.useTeam = relativeTeam; -} - -set2DIcon( relativeTeam, shader ) -{ - if ((isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" )) - return; - - self.compassIcons[relativeTeam] = shader; - updateCompassIcons(); -} - -set3DIcon( relativeTeam, shader ) -{ - if ((isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" )) - return; - - self.worldIcons[relativeTeam] = shader; - updateWorldIcons(); -} - -set3DUseIcon( relativeTeam, shader ) -{ - if ((isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" )) - return; - - self.worldUseIcons[relativeTeam] = shader; -} - -setCarryIcon( shader ) -{ - self.carryIcon = shader; -} - -disableObject() -{ - self notify("disabled"); - - if ( self.type == "carryObject" ) - { - if ( isDefined( self.carrier ) ) - self.carrier takeObject( self ); - - for ( i = 0; i < self.visuals.size; i++ ) - self.visuals[i] hide(); - } - - self.trigger triggerOff(); - - if ( level.gametype == "sd" ) - self setVisibleTeam( game["defenders"] ); - else - self setVisibleTeam( "none" ); -} - -enableObject() -{ - if ( self.type == "carryObject" ) - { - for ( i = 0; i < self.visuals.size; i++ ) - self.visuals[i] show(); - } - - self.trigger triggerOn(); - self setVisibleTeam( "any" ); -} - -getRelativeTeam( team ) -{ - if ( team == self.ownerTeam ) - return "friendly"; - else if ( team == self.enemyTeam ) - return "enemy"; - else - return "neutral"; -} - -isFriendlyTeam( team ) -{ - if ( self.ownerTeam == "any" || self.ownerTeam == team ) - return true; - - return false; -} - -canInteractWith( team ) -{ - switch( self.interactTeam ) - { - case "none": - return false; - - case "any": - return true; - - case "friendly": - if ( team == self.ownerTeam ) - return true; - else - return false; - - case "enemy": - if ( team != self.ownerTeam ) - return true; - else - return false; - - default: - return false; - } -} - -_disableWeapon() -{ - self allowsprint(false); - self allowjump(false); - self setMoveSpeedScale( 0 ); - - self disableweapons(); - - self thread xunlink(); -} - -xunlink() -{ - self endon("disconnect"); - - wait 0.05; - self unlink(); -} - -_enableWeapon() -{ - self endon("disconnect"); - - self enableweapons(); - - wait 0.05; - - self allowsprint(true); - self allowjump(true); - self setMoveSpeedScale( 1.0 - 0.05 * int( isDefined( self.curClass ) && self.curClass == "assault" ) ); -} - -getEnemyTeam( team ) -{ - switch(team) - { - case "allies": - return "axis"; - case "axis": - return "allies"; - default: - return "none"; - } -} - -getNextObjID() -{ - nextID = level.numGametypeReservedObjectives; - - level.numGametypeReservedObjectives++; - return nextID; -} - -getLabel() -{ - label = self.trigger.script_label; - if ( !isDefined( label ) ) - { - label = ""; - return label; - } - - if ( label[0] != "_" ) - return ("_" + label); - - return label; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\_utility; +#include maps\mp\gametypes\_hud_util; + +main(allowed) +{ + entitytypes = getentarray(); + for(i = 0; i < entitytypes.size; i++) + { + if(isdefined(entitytypes[i].script_gameobjectname)) + { + dodelete = true; + + gameobjectnames = strtok(entitytypes[i].script_gameobjectname, " "); + + for(j = 0; j < allowed.size; j++) + { + for (k = 0; k < gameobjectnames.size; k++) + { + if(gameobjectnames[k] == allowed[j]) + { + dodelete = false; + break; + } + } + if (!dodelete) + break; + } + + if(dodelete) + entitytypes[i] delete(); + } + } +} + +init() +{ + level.numGametypeReservedObjectives = 0; + + precacheItem( "briefcase_bomb_mp" ); + precacheItem( "briefcase_bomb_defuse_mp" ); + precacheModel( "prop_suitcase_bomb" ); + + level thread onPlayerConnect(); +} + +onPlayerConnect() +{ + level endon ( "game_ended" ); + + for(;;) + { + level waittill( "connecting", player ); + + player thread onPlayerSpawned(); + player thread onDisconnect(); + } +} + +onPlayerSpawned() +{ + self endon( "disconnect" ); + level endon ( "game_ended" ); + + for(;;) + { + self waittill( "spawned_player" ); + + self thread onDeath(); + self.touchTriggers = []; + self.carryObject = undefined; + self.claimTrigger = undefined; + self.canPickupObject = true; + self.killedInUse = undefined; + } +} + +onDeath() +{ + level endon ( "game_ended" ); + + self waittill ( "death" ); + if ( isDefined( self.carryObject ) ) + self.carryObject thread setDropped(); +} + +onDisconnect() +{ + level endon ( "game_ended" ); + + self waittill ( "disconnect" ); + if ( isDefined( self.carryObject ) ) + self.carryObject thread setDropped(); +} + +createCarryObject( ownerTeam, trigger, visuals, offset ) +{ + carryObject = spawnStruct(); + carryObject.type = "carryObject"; + carryObject.curOrigin = trigger.origin; + carryObject.ownerTeam = ownerTeam; + carryObject.entNum = trigger getEntityNumber(); + + if ( isSubStr( trigger.classname, "use" ) ) + carryObject.triggerType = "use"; + else + carryObject.triggerType = "proximity"; + + trigger.baseOrigin = trigger.origin; + carryObject.trigger = trigger; + + if ( !isDefined( offset ) ) + offset = (0,0,0); + + carryObject.offset3d = offset; + + for ( i = 0; i < visuals.size; i++ ) + { + visuals[i].baseOrigin = visuals[i].origin; + visuals[i].baseAngles = visuals[i].angles; + } + + carryObject.visuals = visuals; + carryObject.compassIcons = []; + carryObject.objIDAllies = getNextObjID(); + carryObject.objIDAxis = getNextObjID(); + carryObject.objIDPingFriendly = false; + carryObject.objIDPingEnemy = false; + level.objIDStart += 2; + + objective_add( carryObject.objIDAllies, "invisible", carryObject.curOrigin ); + objective_add( carryObject.objIDAxis, "invisible", carryObject.curOrigin ); + objective_team( carryObject.objIDAllies, "allies" ); + objective_team( carryObject.objIDAxis, "axis" ); + + carryObject.objPoints["allies"] = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_allies_" + carryObject.entNum, carryObject.curOrigin + offset, "allies", undefined ); + carryObject.objPoints["axis"] = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_axis_" + carryObject.entNum, carryObject.curOrigin + offset, "axis", undefined ); + + carryObject.objPoints["allies"].alpha = 0; + carryObject.objPoints["axis"].alpha = 0; + + carryObject.carrier = undefined; + + carryObject.isResetting = false; + carryObject.interactTeam = "none"; + + carryObject.worldIcons = []; + carryObject.carrierVisible = false; + carryObject.visibleTeam = "none"; + + carryObject.carryIcon = undefined; + + carryObject.onDrop = undefined; + carryObject.onPickup = undefined; + carryObject.onReset = undefined; + + if ( carryObject.triggerType == "use" ) + carryObject thread carryObjectUseThink(); + else + carryObject thread carryObjectProxThink(); + + carryObject thread updateCarryObjectOrigin(); + + return carryObject; +} + +carryObjectUseThink() +{ + level endon ( "game_ended" ); + + for(;;) + { + self.trigger waittill ( "trigger", player ); + + if ( self.isResetting || !isAlive( player ) || !self canInteractWith( player.pers["team"] ) || !player.canPickupObject || player.throwingGrenade || isDefined( self.carrier ) ) + continue; + + self setPickedUp( player ); + } +} + +carryObjectProxThink() +{ + level endon ( "game_ended" ); + + for(;;) + { + self.trigger waittill ( "trigger", player ); + + if ( self.isResetting || !isAlive( player ) || !self canInteractWith( player.pers["team"] ) || !player.canPickupObject || isDefined( self.carrier ) ) + continue; + + if ( (isDefined( level.timeout_over ) && !level.timeout_over) || ( isDefined( game["PROMOD_KNIFEROUND"] ) && game["PROMOD_KNIFEROUND"] ) ) + return; + + self setPickedUp( player ); + } +} + +pickupObjectDelay( origin ) +{ + level endon ( "game_ended" ); + + self endon("death"); + self endon("disconnect"); + + self.canPickupObject = false; + + for(;;) + { + if ( distanceSquared( self.origin, origin ) > 4096 ) + break; + + wait 0.2; + } + + self.canPickupObject = true; +} + +setPickedUp( player ) +{ + player giveObject( self ); + + self.carrier = player; + + for ( i = 0; i < self.visuals.size; i++ ) + self.visuals[i] hide(); + + self.trigger.origin += (0,0,10000); + + self notify ( "pickup_object" ); + if ( isDefined( self.onPickup ) ) + self [[self.onPickup]]( player ); + + self updateCompassIcons(); + self updateWorldIcons(); +} + +updateCarryObjectOrigin() +{ + level endon ( "game_ended" ); + + objPingDelay = 5; + for(;;) + { + if ( isDefined( self.carrier ) ) + { + self.curOrigin = self.carrier.origin + (0,0,75); + self.objPoints["allies"] maps\mp\gametypes\_objpoints::updateOrigin( self.curOrigin ); + self.objPoints["axis"] maps\mp\gametypes\_objpoints::updateOrigin( self.curOrigin ); + + if ( (self.visibleTeam == "friendly" || self.visibleTeam == "any") && self isFriendlyTeam( "allies" ) && self.objIDPingFriendly ) + { + if ( self.objPoints["allies"].isShown ) + { + self.objPoints["allies"].alpha = self.objPoints["allies"].baseAlpha; + self.objPoints["allies"] fadeOverTime( objPingDelay + 1 ); + self.objPoints["allies"].alpha = 0; + } + objective_position( self.objIDAllies, self.curOrigin ); + } + else if ( (self.visibleTeam == "friendly" || self.visibleTeam == "any") && self isFriendlyTeam( "axis" ) && self.objIDPingFriendly ) + { + if ( self.objPoints["axis"].isShown ) + { + self.objPoints["axis"].alpha = self.objPoints["axis"].baseAlpha; + self.objPoints["axis"] fadeOverTime( objPingDelay + 1 ); + self.objPoints["axis"].alpha = 0; + } + objective_position( self.objIDAxis, self.curOrigin ); + } + + if ( (self.visibleTeam == "enemy" || self.visibleTeam == "any") && !self isFriendlyTeam( "allies" ) && self.objIDPingEnemy ) + { + if ( self.objPoints["allies"].isShown ) + { + self.objPoints["allies"].alpha = self.objPoints["allies"].baseAlpha; + self.objPoints["allies"] fadeOverTime( objPingDelay + 1 ); + self.objPoints["allies"].alpha = 0; + } + objective_position( self.objIDAllies, self.curOrigin ); + } + else if ( (self.visibleTeam == "enemy" || self.visibleTeam == "any") && !self isFriendlyTeam( "axis" ) && self.objIDPingEnemy ) + { + if ( self.objPoints["axis"].isShown ) + { + self.objPoints["axis"].alpha = self.objPoints["axis"].baseAlpha; + self.objPoints["axis"] fadeOverTime( objPingDelay + 1 ); + self.objPoints["axis"].alpha = 0; + } + objective_position( self.objIDAxis, self.curOrigin ); + } + + self wait_endon( objPingDelay, "dropped", "reset" ); + } + else + { + self.objPoints["allies"] maps\mp\gametypes\_objpoints::updateOrigin( self.curOrigin + self.offset3d ); + self.objPoints["axis"] maps\mp\gametypes\_objpoints::updateOrigin( self.curOrigin + self.offset3d ); + + wait 0.05; + } + } +} + +giveObject( object ) +{ + self.carryObject = object; + self thread trackCarrier(); + + if ( isDefined( object.carryIcon ) ) + { + self.carryIcon = createIcon( object.carryIcon, 50, 50 ); + self.carryIcon setPoint( "CENTER", "CENTER", 223, 167 ); + } + + if ( isDefined( level.scorebot ) && level.scorebot ) + level thread maps\mp\gametypes\_globallogic::updateTeamStatus(); +} + +returnHome() +{ + self.isResetting = true; + + self notify ( "reset" ); + for ( i = 0; i < self.visuals.size; i++ ) + { + self.visuals[i].origin = self.visuals[i].baseOrigin; + self.visuals[i].angles = self.visuals[i].baseAngles; + self.visuals[i] show(); + } + + self.trigger.origin = self.trigger.baseOrigin; + + self.curOrigin = self.trigger.origin; + + if ( isDefined( self.onReset ) ) + self [[self.onReset]](); + + self clearCarrier(); + + updateWorldIcons(); + updateCompassIcons(); + + self.isResetting = false; +} + +setDropped() +{ + self.isResetting = true; + + self notify ( "dropped" ); + + if ( isDefined( self.carrier ) ) + { + trace = playerPhysicsTrace( self.carrier.origin + (0,0,20), self.carrier.origin - (0,0,2000), false, self.carrier.body ); + angleTrace = bulletTrace( self.carrier.origin + (0,0,20), self.carrier.origin - (0,0,2000), false, self.carrier.body ); + } + else + { + trace = playerPhysicsTrace( self.safeOrigin + (0,0,20), self.safeOrigin - (0,0,20), false, undefined ); + angleTrace = bulletTrace( self.safeOrigin + (0,0,20), self.safeOrigin - (0,0,20), false, undefined ); + } + + droppingPlayer = self.carrier; + + if ( isDefined( trace ) ) + { + tempAngle = randomfloat( 360 ); + + dropOrigin = trace; + if ( angleTrace["fraction"] < 1 && distance( angleTrace["position"], trace ) < 10 ) + { + forward = (cos( tempAngle ), sin( tempAngle ), 0); + forward = vectornormalize( forward - vector_scale( angleTrace["normal"], vectordot( forward, angleTrace["normal"] ) ) ); + dropAngles = vectortoangles( forward ); + } + else + dropAngles = (0,tempAngle,0); + + for ( i = 0; i < self.visuals.size; i++ ) + { + self.visuals[i].origin = dropOrigin; + self.visuals[i].angles = dropAngles; + self.visuals[i] show(); + } + self.trigger.origin = dropOrigin; + + self.curOrigin = self.trigger.origin; + + self thread pickupTimeout(); + } + else + { + for ( i = 0; i < self.visuals.size; i++ ) + { + self.visuals[i].origin = self.visuals[i].baseOrigin; + self.visuals[i].angles = self.visuals[i].baseAngles; + self.visuals[i] show(); + } + self.trigger.origin = self.trigger.baseOrigin; + + self.curOrigin = self.trigger.baseOrigin; + } + + if ( isDefined( self.onDrop ) ) + self [[self.onDrop]]( droppingPlayer ); + + self clearCarrier(); + + self updateCompassIcons(); + self updateWorldIcons(); + + self.isResetting = false; +} + +clearCarrier() +{ + if ( !isdefined( self.carrier ) ) + return; + + self.carrier takeObject( self ); + self.carrier.carryObject = undefined; + self.carrier = undefined; +} + +pickupTimeout() +{ + self endon ( "pickup_object" ); + + wait 0.05; + + mineTriggers = getEntArray( "minefield", "targetname" ); + hurtTriggers = getEntArray( "trigger_hurt", "classname" ); + + for ( i = 0; i < mineTriggers.size; i++ ) + { + if ( !self.visuals[0] isTouching( mineTriggers[i] ) ) + continue; + + self returnHome(); + return; + } + + for ( i = 0; i < hurtTriggers.size; i++ ) + { + if ( !self.visuals[0] isTouching( hurtTriggers[i] ) ) + continue; + + self returnHome(); + return; + } + + if ( isDefined( self.autoResetTime ) ) + { + wait self.autoResetTime; + + if ( !isDefined( self.carrier ) ) + self returnHome(); + } +} + +takeObject( object ) +{ + if ( isDefined( self.carryIcon ) ) + self.carryIcon destroyElem(); + + if ( !isAlive( self ) ) + return; + + self.carryObject = undefined; + self notify ( "drop_object" ); + + if ( object.triggerType == "proximity" ) + self thread pickupObjectDelay( object.trigger.origin ); + + if ( isDefined( level.scorebot ) && level.scorebot ) + level thread maps\mp\gametypes\_globallogic::updateTeamStatus(); +} + +trackCarrier() +{ + level endon ( "game_ended" ); + self endon ( "disconnect" ); + self endon ( "death" ); + self endon ( "drop_object" ); + + while ( isDefined( self.carryObject ) && isAlive( self ) ) + { + if ( self isOnGround() ) + { + trace = bulletTrace( self.origin + (0,0,20), self.origin - (0,0,20), false, undefined ); + if ( trace["fraction"] < 1 ) + self.carryObject.safeOrigin = trace["position"]; + } + wait 0.05; + } +} + +createUseObject( ownerTeam, trigger, visuals, offset ) +{ + useObject = spawnStruct(); + useObject.type = "useObject"; + useObject.curOrigin = trigger.origin; + useObject.ownerTeam = ownerTeam; + useObject.entNum = trigger getEntityNumber(); + useObject.keyObject = undefined; + + if ( isSubStr( trigger.classname, "use" ) ) + useObject.triggerType = "use"; + else + useObject.triggerType = "proximity"; + + useObject.trigger = trigger; + + for ( i = 0; i < visuals.size; i++ ) + { + visuals[i].baseOrigin = visuals[i].origin; + visuals[i].baseAngles = visuals[i].angles; + } + + useObject.visuals = visuals; + + if ( !isDefined( offset ) ) + offset = (0,0,0); + + useObject.offset3d = offset; + + useObject.compassIcons = []; + useObject.objIDAllies = getNextObjID(); + useObject.objIDAxis = getNextObjID(); + + objective_add( useObject.objIDAllies, "invisible", useObject.curOrigin ); + objective_add( useObject.objIDAxis, "invisible", useObject.curOrigin ); + objective_team( useObject.objIDAllies, "allies" ); + objective_team( useObject.objIDAxis, "axis" ); + + useObject.objPoints["allies"] = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_allies_" + useObject.entNum, useObject.curOrigin + offset, "allies", undefined ); + useObject.objPoints["axis"] = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_axis_" + useObject.entNum, useObject.curOrigin + offset, "axis", undefined ); + + useObject.objPoints["allies"].alpha = 0; + useObject.objPoints["axis"].alpha = 0; + + useObject.interactTeam = "none"; + + useObject.worldIcons = []; + useObject.visibleTeam = "none"; + + useObject.onUse = undefined; + useObject.onCantUse = undefined; + + useObject.useText = "default"; + useObject.useTime = 10000; + useObject.curProgress = 0; + + if ( useObject.triggerType == "proximity" ) + { + useObject.numTouching["neutral"] = 0; + useObject.numTouching["axis"] = 0; + useObject.numTouching["allies"] = 0; + useObject.numTouching["none"] = 0; + useObject.touchList["neutral"] = []; + useObject.touchList["axis"] = []; + useObject.touchList["allies"] = []; + useObject.touchList["none"] = []; + useObject.useRate = 0; + useObject.claimTeam = "none"; + useObject.claimPlayer = undefined; + useObject.lastClaimTeam = "none"; + useObject.lastClaimTime = 0; + + useObject thread useObjectProxThink(); + } + else + { + useObject.useRate = 1; + useObject thread useObjectUseThink(); + } + + return useObject; +} + +setKeyObject( object ) +{ + self.keyObject = object; +} + +useObjectUseThink() +{ + if ( (isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" )) + return; + + level endon ( "game_ended" ); + + for(;;) + { + self.trigger waittill ( "trigger", player ); + + while ( isDefined( player ) && player isTouching( self.trigger ) && !player isOnGround() ) + wait 0.05; + + if ( !isAlive( player ) || !self canInteractWith( player.pers["team"] ) || !player isTouching( self.trigger ) || !player useButtonPressed() ) + continue; + + if ( isDefined( self.keyObject ) && (!isDefined( player.carryObject ) || player.carryObject != self.keyObject ) ) + { + if ( isDefined( self.onCantUse ) ) + self [[self.onCantUse]]( player ); + continue; + } + + result = true; + if ( self.useTime > 0 ) + { + if ( isDefined( self.onBeginUse ) ) + self [[self.onBeginUse]]( player ); + + team = player.pers["team"]; + + result = self useHoldThink( player ); + + if ( isDefined( self.onEndUse ) && isDefined( player ) ) + self [[self.onEndUse]]( team, player, result ); + } + + if ( !result ) + continue; + + if ( isDefined( self.onUse ) ) + self [[self.onUse]]( player ); + } +} + +getEarliestClaimPlayer() +{ + team = self.claimTeam; + + earliestPlayer = self.claimPlayer; + + if ( self.touchList[team].size > 0 ) + { + earliestTime = undefined; + players = getArrayKeys( self.touchList[team] ); + for ( i = 0; i < players.size; i++ ) + { + touchdata = self.touchList[team][players[i]]; + if ( !isdefined( earliestTime ) || touchdata.starttime < earliestTime ) + { + earliestPlayer = touchdata.player; + earliestTime = touchdata.starttime; + } + } + } + + return earliestPlayer; +} + +useObjectProxThink() +{ + if ( (isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) ) + return; + + level endon ( "game_ended" ); + + self thread proxTriggerThink(); + + for(;;) + { + if ( self.useTime && self.curProgress >= self.useTime ) + { + self.curProgress = 0; + + creditPlayer = getEarliestClaimPlayer(); + + if ( isDefined( self.onEndUse ) ) + self [[self.onEndUse]]( self getClaimTeam(), creditPlayer, isDefined( creditPlayer ) ); + + if ( isDefined( creditPlayer ) && isDefined( self.onUse ) ) + self [[self.onUse]]( creditPlayer ); + + self setClaimTeam( "none" ); + self.claimPlayer = undefined; + } + + if ( self.claimTeam != "none" ) + { + if ( self.useTime ) + { + if ( !self.numTouching[self.claimTeam] ) + { + if ( isDefined( self.onEndUse ) ) + self [[self.onEndUse]]( self getClaimTeam(), self.claimPlayer, false ); + + self setClaimTeam( "none" ); + self.claimPlayer = undefined; + } + else + { + self.curProgress += (50 * self.useRate); + if ( isDefined( self.onUseUpdate ) ) + self [[self.onUseUpdate]]( self getClaimTeam(), self.curProgress / self.useTime, (50*self.useRate) / self.useTime ); + } + } + else + { + if ( isDefined( self.onUse ) ) + self [[self.onUse]]( self.claimPlayer ); + + self setClaimTeam( "none" ); + self.claimPlayer = undefined; + } + } + + wait 0.05; + } +} + +proxTriggerThink() +{ + level endon ( "game_ended" ); + + entityNumber = self.entNum; + + for(;;) + { + self.trigger waittill ( "trigger", player ); + + if ( !isAlive( player ) ) + continue; + + if ( self canInteractWith( player.pers["team"] ) && self.claimTeam == "none" ) + { + if ( !isDefined( self.keyObject ) || (isDefined( player.carryObject ) && player.carryObject == self.keyObject ) ) + { + setClaimTeam( player.pers["team"] ); + self.claimPlayer = player; + + if ( self.useTime && isDefined( self.onBeginUse ) ) + self [[self.onBeginUse]]( self.claimPlayer ); + } + else + { + if ( isDefined( self.onCantUse ) ) + self [[self.onCantUse]]( player ); + } + } + + if ( self.useTime && isAlive( player ) && !isDefined( player.touchTriggers[entityNumber] ) ) + player thread triggerTouchThink( self ); + } +} + +setClaimTeam( newTeam ) +{ + if ( self.claimTeam == "none" && getTime() - self.lastClaimTime > 1000 ) + self.curProgress = 0; + else if ( newTeam != "none" && newTeam != self.lastClaimTeam ) + self.curProgress = 0; + + self.lastClaimTeam = self.claimTeam; + self.lastClaimTime = getTime(); + self.claimTeam = newTeam; + + self updateUseRate(); +} + +getClaimTeam() +{ + return self.claimTeam; +} + +triggerTouchThink( object ) +{ + team = self.pers["team"]; + + object.numTouching[team]++; + object updateUseRate(); + + touchName = "player" + self.clientid; + struct = spawnstruct(); + struct.player = self; + struct.starttime = gettime(); + object.touchList[team][touchName] = struct; + + self.touchTriggers[object.entNum] = object.trigger; + + while ( isDefined( self ) && isAlive( self ) && self isTouching( object.trigger ) && !level.gameEnded ) + { + self updateProxBar( object, false ); + wait 0.05; + } + + if ( isDefined( self ) ) + { + self updateProxBar( object, true ); + self.touchTriggers[object.entNum] = undefined; + } + + if ( level.gameEnded ) + return; + + object.touchList[team][touchName] = undefined; + + object.numTouching[team]--; + object updateUseRate(); +} + +updateProxBar( object, forceRemove ) +{ + if ( forceRemove || !object canInteractWith( self.pers["team"] ) || self.pers["team"] != object.claimTeam ) + { + if ( isDefined( self.proxBar ) ) + self.proxBar hideElem(); + + if ( isDefined( self.proxBarText ) ) + self.proxBarText hideElem(); + return; + } + + if ( !isDefined( self.proxBar ) ) + { + self.proxBar = createPrimaryProgressBar(); + self.proxBar setShader( "progress_bar_bg", 120, 8 ); + self.proxBar.alpha = 1; + self.proxBar.lastUseRate = -1; + } + + if ( self.proxBar.hidden ) + { + self.proxBar showElem(); + self.proxBar.lastUseRate = -1; + } + + if ( !isDefined( self.proxBarText ) ) + { + self.proxBarText = createPrimaryProgressBarText(); + self.proxBarText setText( object.useText ); + } + + if ( self.proxBarText.hidden ) + { + self.proxBarText showElem(); + self.proxBarText setText( object.useText ); + } + + if ( self.proxBar.lastUseRate != object.useRate ) + { + if( object.curProgress > object.useTime) + object.curProgress = object.useTime; + + self.proxBar updateBar( object.curProgress / object.useTime , (1000 / object.useTime) * object.useRate ); + self.proxBar.lastUseRate = object.useRate; + } +} + +updateUseRate() +{ + numClaimants = self.numTouching[self.claimTeam]; + numOther = 0; + + if ( self.claimTeam != "axis" ) + numOther += self.numTouching["axis"]; + if ( self.claimTeam != "allies" ) + numOther += self.numTouching["allies"]; + + self.useRate = 0; + + if ( numClaimants && !numOther ) + self.useRate = numClaimants; +} + +useHoldThink( player ) +{ + player clientClaimTrigger( self.trigger ); + player.claimTrigger = self.trigger; + + player linkTo( self.trigger ); + player _disableWeapon(); + + self.curProgress = 0; + self.inUse = true; + self.useRate = 0; + + player thread personalUseBar( self ); + + result = useHoldThinkLoop( player ); + + if ( isdefined( result ) && result ) + return true; + + if ( isDefined( player ) ) + { + player.claimTrigger = undefined; + player _enableWeapon(); + + if ( !isAlive( player ) ) + player.killedInUse = true; + } + + self.inUse = false; + self.trigger releaseClaimedTrigger(); + return false; +} + +useHoldThinkLoop( player ) +{ + level endon ( "game_ended" ); + self endon("disabled"); + + waitForWeapon = true; + timedOut = 0; + + maxWaitTime = 1.5; + + while( isDefined( player ) && isAlive( player ) && player isTouching( self.trigger ) && player useButtonPressed() && !player.throwingGrenade && !player meleeButtonPressed() && self.curProgress < self.useTime && (self.useRate || waitForWeapon) && !(waitForWeapon && timedOut > maxWaitTime) ) + { + timedOut += 0.05; + + self.curProgress += (50 * self.useRate); + self.useRate = 1; + waitForWeapon = false; + + if ( self.curProgress >= self.useTime ) + { + self.inUse = false; + player clientReleaseTrigger( self.trigger ); + player.claimTrigger = undefined; + player _enableWeapon(); + player unlink(); + + return isAlive( player ); + } + + wait 0.05; + } + + return false; +} + +personalUseBar( object ) +{ + self endon("disconnect"); + + useBar = createPrimaryProgressBar(); + useBar setShader( "progress_bar_bg", 120, 8 ); + useBar.alpha = 1; + useBarText = createPrimaryProgressBarText(); + useBarText setText( object.useText ); + + lastRate = -1; + + while ( isAlive( self ) && object.inUse && self useButtonPressed() && !level.gameEnded ) + { + if ( lastRate != object.useRate ) + { + if( object.curProgress > object.useTime) + object.curProgress = object.useTime; + useBar updateBar( object.curProgress / object.useTime, (1000 / object.useTime) * object.useRate ); + + if ( !object.useRate ) + { + useBar hideElem(); + useBarText hideElem(); + } + else + { + useBar showElem(); + useBarText showElem(); + } + } + lastRate = object.useRate; + wait 0.05; + } + + if ( level.gameEnded ) + { + self _enableWeapon(); + self unlink(); + } + + useBar destroyElem(); + useBarText destroyElem(); +} + +updateTrigger() +{ + if ( self.triggerType != "use" ) + return; + + if ( self.interactTeam == "none" ) + self.trigger.origin -= (0,0,50000); + else if ( self.interactTeam == "any" ) + { + self.trigger.origin = self.curOrigin; + self.trigger setTeamForTrigger( "none" ); + } + else if ( self.interactTeam == "friendly" ) + { + self.trigger.origin = self.curOrigin; + if ( self.ownerTeam == "allies" ) + self.trigger setTeamForTrigger( "allies" ); + else if ( self.ownerTeam == "axis" ) + self.trigger setTeamForTrigger( "axis" ); + else + self.trigger.origin -= (0,0,50000); + } + else if ( self.interactTeam == "enemy" ) + { + self.trigger.origin = self.curOrigin; + if ( self.ownerTeam == "allies" ) + self.trigger setTeamForTrigger( "axis" ); + else if ( self.ownerTeam == "axis" ) + self.trigger setTeamForTrigger( "allies" ); + else + self.trigger setTeamForTrigger( "none" ); + } +} + +updateWorldIcons() +{ + if ( self.visibleTeam == "any" ) + { + updateWorldIcon( "friendly", true ); + updateWorldIcon( "enemy", true ); + } + else if ( self.visibleTeam == "friendly" ) + { + updateWorldIcon( "friendly", true ); + updateWorldIcon( "enemy", false ); + } + else if ( self.visibleTeam == "enemy" ) + { + updateWorldIcon( "friendly", false ); + updateWorldIcon( "enemy", true ); + } + else + { + updateWorldIcon( "friendly", false ); + updateWorldIcon( "enemy", false ); + } +} + +updateWorldIcon( relativeTeam, showIcon ) +{ + if ( !isDefined( self.worldIcons[relativeTeam] ) ) + showIcon = false; + + updateTeams = getUpdateTeams( relativeTeam ); + + for ( i = 0; i < updateTeams.size; i++ ) + { + opName = "objpoint_" + updateTeams[i] + "_" + self.entNum; + objPoint = maps\mp\gametypes\_objpoints::getObjPointByName( opName ); + + objPoint notify( "stop_flashing_thread" ); + objPoint thread maps\mp\gametypes\_objpoints::stopFlashing(); + + if ( showIcon ) + { + objPoint setShader( self.worldIcons[relativeTeam], level.objPointSize, level.objPointSize ); + objPoint fadeOverTime( 0.05 ); + objPoint.alpha = objPoint.baseAlpha; + objPoint.isShown = true; + + if ( isDefined( self.compassIcons[relativeTeam] ) ) + objPoint setWayPoint( true, self.worldIcons[relativeTeam] ); + else + objPoint setWayPoint( true ); + + if ( self.type == "carryObject" ) + { + if ( isDefined( self.carrier ) && !shouldPingObject( relativeTeam ) ) + objPoint SetTargetEnt( self.carrier ); + else + objPoint ClearTargetEnt(); + } + } + else + { + objPoint fadeOverTime( 0.05 ); + objPoint.alpha = 0; + objPoint.isShown = false; + objPoint ClearTargetEnt(); + } + } +} + +updateCompassIcons() +{ + if ( self.visibleTeam == "any" ) + { + updateCompassIcon( "friendly", true ); + updateCompassIcon( "enemy", true ); + } + else if ( self.visibleTeam == "friendly" ) + { + updateCompassIcon( "friendly", true ); + updateCompassIcon( "enemy", false ); + } + else if ( self.visibleTeam == "enemy" ) + { + updateCompassIcon( "friendly", false ); + updateCompassIcon( "enemy", true ); + } + else + { + updateCompassIcon( "friendly", false ); + updateCompassIcon( "enemy", false ); + } +} + +updateCompassIcon( relativeTeam, showIcon ) +{ + updateTeams = getUpdateTeams( relativeTeam ); + + for ( i = 0; i < updateTeams.size; i++ ) + { + showIconThisTeam = showIcon; + + objId = self.objIDAllies; + if ( updateTeams[i] == "axis" ) + objId = self.objIDAxis; + + if ( !isDefined( self.compassIcons[relativeTeam] ) || !showIconThisTeam ) + { + objective_state( objId, "invisible" ); + continue; + } + + objective_icon( objId, self.compassIcons[relativeTeam] ); + objective_state( objId, "active" ); + + if ( self.type == "carryObject" ) + { + if ( isAlive( self.carrier ) && !shouldPingObject( relativeTeam ) ) + objective_onentity( objId, self.carrier ); + else + objective_position( objId, self.curOrigin ); + } + } +} + +shouldPingObject( relativeTeam ) +{ + if ( ( relativeTeam == "friendly" && self.objIDPingFriendly ) || ( relativeTeam == "enemy" && self.objIDPingEnemy ) ) + return true; + + return false; +} + +getUpdateTeams( relativeTeam ) +{ + updateTeams = []; + if ( relativeTeam == "friendly" ) + { + if ( self isFriendlyTeam( "allies" ) ) + updateTeams[0] = "allies"; + else if ( self isFriendlyTeam( "axis" ) ) + updateTeams[0] = "axis"; + } + else if ( relativeTeam == "enemy" ) + { + if ( !self isFriendlyTeam( "allies" ) ) + updateTeams[updateTeams.size] = "allies"; + + if ( !self isFriendlyTeam( "axis" ) ) + updateTeams[updateTeams.size] = "axis"; + } + + return updateTeams; +} + +setOwnerTeam( team ) +{ + self.ownerTeam = team; + self updateTrigger(); + self updateCompassIcons(); + self updateWorldIcons(); +} + +getOwnerTeam() +{ + return self.ownerTeam; +} + +setUseTime( time ) +{ + self.useTime = int( time * 1000 ); +} + +setUseText( text ) +{ + self.useText = text; +} + +setUseHintText( text ) +{ + self.trigger setHintString( text ); +} + +allowCarry( relativeTeam ) +{ + self.interactTeam = relativeTeam; +} + +allowUse( relativeTeam ) +{ + self.interactTeam = relativeTeam; + updateTrigger(); +} + +setVisibleTeam( relativeTeam ) +{ + self.visibleTeam = relativeTeam; + + updateCompassIcons(); + updateWorldIcons(); +} + +setModelVisibility( visibility ) +{ + if ( visibility ) + { + for ( i = 0; i < self.visuals.size; i++ ) + { + self.visuals[i] show(); + if ( self.visuals[i].classname == "script_brushmodel" || self.visuals[i].classname == "script_model" ) + self.visuals[i] thread makeSolid(); + } + } + else + { + for ( i = 0; i < self.visuals.size; i++ ) + { + self.visuals[i] hide(); + if ( self.visuals[i].classname == "script_brushmodel" || self.visuals[i].classname == "script_model" ) + { + self.visuals[i] notify("changing_solidness"); + self.visuals[i] notsolid(); + } + } + } +} + +makeSolid() +{ + self endon("death"); + self notify("changing_solidness"); + self endon("changing_solidness"); + + for(;;) + { + for ( i = 0; i < level.players.size; i++ ) + { + if ( level.players[i] isTouching( self ) ) + break; + } + if ( i == level.players.size ) + { + self solid(); + break; + } + wait 0.05; + } +} + +setCanUse( relativeTeam ) +{ + self.useTeam = relativeTeam; +} + +set2DIcon( relativeTeam, shader ) +{ + if ((isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" )) + return; + + self.compassIcons[relativeTeam] = shader; + updateCompassIcons(); +} + +set3DIcon( relativeTeam, shader ) +{ + if ((isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" )) + return; + + self.worldIcons[relativeTeam] = shader; + updateWorldIcons(); +} + +set3DUseIcon( relativeTeam, shader ) +{ + if ((isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" )) + return; + + self.worldUseIcons[relativeTeam] = shader; +} + +setCarryIcon( shader ) +{ + self.carryIcon = shader; +} + +disableObject() +{ + self notify("disabled"); + + if ( self.type == "carryObject" ) + { + if ( isDefined( self.carrier ) ) + self.carrier takeObject( self ); + + for ( i = 0; i < self.visuals.size; i++ ) + self.visuals[i] hide(); + } + + self.trigger triggerOff(); + + if ( level.gametype == "sd" ) + self setVisibleTeam( game["defenders"] ); + else + self setVisibleTeam( "none" ); +} + +enableObject() +{ + if ( self.type == "carryObject" ) + { + for ( i = 0; i < self.visuals.size; i++ ) + self.visuals[i] show(); + } + + self.trigger triggerOn(); + self setVisibleTeam( "any" ); +} + +getRelativeTeam( team ) +{ + if ( team == self.ownerTeam ) + return "friendly"; + else if ( team == self.enemyTeam ) + return "enemy"; + else + return "neutral"; +} + +isFriendlyTeam( team ) +{ + if ( self.ownerTeam == "any" || self.ownerTeam == team ) + return true; + + return false; +} + +canInteractWith( team ) +{ + switch( self.interactTeam ) + { + case "none": + return false; + + case "any": + return true; + + case "friendly": + if ( team == self.ownerTeam ) + return true; + else + return false; + + case "enemy": + if ( team != self.ownerTeam ) + return true; + else + return false; + + default: + return false; + } +} + +_disableWeapon() +{ + self allowsprint(false); + self allowjump(false); + self setMoveSpeedScale( 0 ); + + self disableweapons(); + + self thread xunlink(); +} + +xunlink() +{ + self endon("disconnect"); + + wait 0.05; + self unlink(); +} + +_enableWeapon() +{ + self endon("disconnect"); + + self enableweapons(); + + wait 0.05; + + self allowsprint(true); + self allowjump(true); + self setMoveSpeedScale( 1.0 - 0.05 * int( isDefined( self.curClass ) && self.curClass == "assault" ) ); +} + +getEnemyTeam( team ) +{ + switch(team) + { + case "allies": + return "axis"; + case "axis": + return "allies"; + default: + return "none"; + } +} + +getNextObjID() +{ + nextID = level.numGametypeReservedObjectives; + + level.numGametypeReservedObjectives++; + return nextID; +} + +getLabel() +{ + label = self.trigger.script_label; + if ( !isDefined( label ) ) + { + label = ""; + return label; + } + + if ( label[0] != "_" ) + return ("_" + label); + + return label; +} diff --git a/maps/mp/gametypes/_globallogic.gsc b/maps/mp/gametypes/_globallogic.gsc index 607a94d..d7158c8 100644 --- a/maps/mp/gametypes/_globallogic.gsc +++ b/maps/mp/gametypes/_globallogic.gsc @@ -1,3678 +1,3678 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\_utility; -#include maps\mp\gametypes\_hud_util; - -init() -{ - if ( !isDefined( level.tweakablesInitialized ) ) - maps\mp\gametypes\_tweakables::init(); - - level.splitscreen = 0; - level.xenon = 0; - level.ps3 = 0; - level.console = 0; - level.oldschool = 0; - - level.onlineGame = false; - level.rankedMatch = false; - - level.script = toLower( getDvar( "mapname" ) ); - level.gametype = toLower( getDvar( "g_gametype" ) ); - - checkRestartMap(); - - level.otherTeam["allies"] = "axis"; - level.otherTeam["axis"] = "allies"; - - level.teamBased = false; - - level.overrideTeamScore = false; - level.overridePlayerScore = false; - level.displayHalftimeText = false; - level.displayRoundEndText = true; - - level.endGameOnScoreLimit = true; - level.endGameOnTimeLimit = true; - - precacheString( &"MP_HALFTIME" ); - precacheString( &"MP_OVERTIME" ); - precacheString( &"MP_ROUNDEND" ); - precacheString( &"MP_INTERMISSION" ); - precacheString( &"MP_SWITCHING_SIDES" ); - precacheString( &"MP_CONNECTED" ); - - level.halftimeType = "halftime"; - level.halftimeSubCaption = &"MP_SWITCHING_SIDES"; - - level.lastStatusTime = 0; - level.wasWinning = "none"; - - level.lastSlowProcessFrame = 0; - - level.placement["allies"] = []; - level.placement["axis"] = []; - level.placement["all"] = []; - - level.postRoundTime = 5; - - level.inOvertime = false; - - level.players = []; - - level.shoutbars = []; - - registerDvars(); - - precacheModel( "tag_origin" ); - - precacheShader( "faction_128_usmc" ); - precacheShader( "faction_128_arab" ); - precacheShader( "faction_128_ussr" ); - precacheShader( "faction_128_sas" ); - - if ( !isDefined( game["tiebreaker"] ) ) - game["tiebreaker"] = false; - - if ( !isDefined( game["gamestarted"] ) ) - promod\modes::main(); - - level.hardcoreMode = getDvarInt( "scr_hardcore" ); - level.roundswitch = getDvarInt( "scr_" + level.gametype + "_roundswitch" ); - level.roundLimit = getDvarInt( "scr_" + level.gametype + "_roundlimit" ); - level.timelimit = getDvarFloat( "scr_" + level.gametype + "_timelimit" ); - level.scoreLimit = getDvarInt( "scr_" + level.gametype + "_scorelimit" ); - level.numLives = getDvarInt( "scr_" + level.gametype + "_numlives" ); - - setDvar( "ui_scorelimit", level.scoreLimit ); - setDvar( "ui_timelimit", level.timelimit ); - - if ( level.hardcoreMode ) - setDvar( "scr_player_maxhealth", 30 ); - else - setDvar( "scr_player_maxhealth", 100 ); -} - -registerDvars() -{ - setDvar( "ui_bomb_timer", 0 ); - makeDvarServerInfo( "ui_bomb_timer" ); -} - -SetupCallbacks() -{ - level.spawnPlayer = ::spawnPlayer; - level.spawnClient = ::spawnClient; - level.spawnSpectator = ::spawnSpectator; - level.spawnIntermission = ::spawnIntermission; - level.onPlayerScore = ::default_onPlayerScore; - level.onTeamScore = ::default_onTeamScore; - - level.onXPEvent = ::onXPEvent; - level.waveSpawnTimer = ::waveSpawnTimer; - - level.onSpawnPlayer = ::blank; - level.onSpawnSpectator = ::default_onSpawnSpectator; - level.onSpawnIntermission = ::default_onSpawnIntermission; - level.onRespawnDelay = ::blank; - - level.onTimeLimit = ::default_onTimeLimit; - level.onScoreLimit = ::default_onScoreLimit; - level.onDeadEvent = ::default_onDeadEvent; - level.onOneLeftEvent = ::default_onOneLeftEvent; - level.giveTeamScore = ::giveTeamScore; - level.givePlayerScore = ::givePlayerScore; - - level._setTeamScore = ::_setTeamScore; - level._setPlayerScore = ::_setPlayerScore; - - level._getTeamScore = ::_getTeamScore; - level._getPlayerScore = ::_getPlayerScore; - - level.onPrecacheGametype = ::blank; - level.onStartGameType = ::blank; - level.onPlayerConnect = ::blank; - level.onPlayerDisconnect = ::blank; - level.onPlayerDamage = ::blank; - level.onPlayerKilled = ::blank; - - level.onEndGame = ::blank; - - level.autoassign = ::menuAutoAssign; - level.spectator = ::menuSpectator; - level.killspec = ::menuKillspec; - level.allies = ::menuAllies; - level.axis = ::menuAxis; -} - -WaitTillSlowProcessAllowed() -{ - while ( level.lastSlowProcessFrame == gettime() ) - wait 0.05; - - level.lastSlowProcessFrame = gettime(); -} - -blank( arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 ) -{ -} - -default_onDeadEvent( team ) -{ - if ( team == "allies" ) - { - iPrintLn( game["strings"]["allies_eliminated"] ); - makeDvarServerInfo( "ui_text_endreason", game["strings"]["allies_eliminated"] ); - setDvar( "ui_text_endreason", game["strings"]["allies_eliminated"] ); - - thread endGame( "axis", game["strings"]["allies_eliminated"] ); - } - else if ( team == "axis" ) - { - iPrintLn( game["strings"]["axis_eliminated"] ); - makeDvarServerInfo( "ui_text_endreason", game["strings"]["axis_eliminated"] ); - setDvar( "ui_text_endreason", game["strings"]["axis_eliminated"] ); - - thread endGame( "allies", game["strings"]["axis_eliminated"] ); - } - else - { - makeDvarServerInfo( "ui_text_endreason", game["strings"]["tie"] ); - setDvar( "ui_text_endreason", game["strings"]["tie"] ); - - if ( level.teamBased ) - thread endGame( "tie", game["strings"]["tie"] ); - else - thread endGame( undefined, game["strings"]["tie"] ); - } -} - -default_onOneLeftEvent( team ) -{ - if ( !level.teamBased ) - { - winner = getHighestScoringPlayer(); - thread endGame( winner, &"MP_ENEMIES_ELIMINATED" ); - } -} - -default_onTimeLimit() -{ - winner = undefined; - - if ( level.teamBased ) - { - if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] ) - winner = "tie"; - else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] ) - winner = "axis"; - else - winner = "allies"; - } - else - winner = getHighestScoringPlayer(); - - makeDvarServerInfo( "ui_text_endreason", game["strings"]["time_limit_reached"] ); - setDvar( "ui_text_endreason", game["strings"]["time_limit_reached"] ); - - thread endGame( winner, game["strings"]["time_limit_reached"] ); -} - -default_onScoreLimit() -{ - if ( !level.endGameOnScoreLimit ) - return; - - winner = undefined; - - if ( level.teamBased ) - { - if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] ) - winner = "tie"; - else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] ) - winner = "axis"; - else - winner = "allies"; - } - else - winner = getHighestScoringPlayer(); - - makeDvarServerInfo( "ui_text_endreason", game["strings"]["score_limit_reached"] ); - setDvar( "ui_text_endreason", game["strings"]["score_limit_reached"] ); - - level.forcedEnd = true; - thread endGame( winner, game["strings"]["score_limit_reached"] ); -} - -updateGameEvents() -{ - if ( ( !level.numLives && !level.inOverTime ) || level.inGracePeriod ) - return; - - if ( level.teamBased ) - { - if ( level.everExisted["allies"] && !level.aliveCount["allies"] && level.everExisted["axis"] && !level.aliveCount["axis"] && !level.playerLives["allies"] && !level.playerLives["axis"] ) - { - [[level.onDeadEvent]]( "all" ); - return; - } - - if ( level.everExisted["allies"] && !level.aliveCount["allies"] && !level.playerLives["allies"] ) - { - [[level.onDeadEvent]]( "allies" ); - return; - } - - if ( level.everExisted["axis"] && !level.aliveCount["axis"] && !level.playerLives["axis"] ) - { - [[level.onDeadEvent]]( "axis" ); - return; - } - - if ( level.lastAliveCount["allies"] > 1 && level.aliveCount["allies"] == 1 && level.playerLives["allies"] == 1 ) - { - [[level.onOneLeftEvent]]( "allies" ); - return; - } - - if ( level.lastAliveCount["axis"] > 1 && level.aliveCount["axis"] == 1 && level.playerLives["axis"] == 1 ) - { - [[level.onOneLeftEvent]]( "axis" ); - return; - } - } - else - { - if ( (!level.aliveCount["allies"] && !level.aliveCount["axis"]) && (!level.playerLives["allies"] && !level.playerLives["axis"]) && level.maxPlayerCount > 1 ) - { - [[level.onDeadEvent]]( "all" ); - return; - } - - if ( (level.aliveCount["allies"] + level.aliveCount["axis"] == 1) && (level.playerLives["allies"] + level.playerLives["axis"] == 1) && level.maxPlayerCount > 1 ) - { - [[level.onOneLeftEvent]]( "all" ); - return; - } - } -} - -matchStartTimer() -{ - visionSetNaked( "mpIntro", 0 ); - - matchStartText = createServerFontString( "objective", 1.5 ); - matchStartText setPoint( "CENTER", "CENTER", 0, -60 ); - matchStartText.sort = 1001; - matchStartText setText( game["strings"]["match_starting_in"] ); - matchStartText.foreground = false; - matchStartText.hidewheninmenu = true; - - matchStartTimer = createServerTimer( "objective", 1.4 ); - matchStartTimer setPoint( "CENTER", "CENTER", 0, -45 ); - matchStartTimer setTimer( level.prematchPeriod ); - matchStartTimer.sort = 1001; - matchStartTimer.foreground = false; - matchStartTimer.hideWhenInMenu = true; - - wait level.prematchPeriod; - - visionSetNaked( getDvar( "mapname" ), 1 ); - - matchStartText destroyElem(); - matchStartTimer destroyElem(); -} - -matchStartTimerSkip() -{ - visionSetNaked( getDvar( "mapname" ), 0 ); -} - -spawnPlayer() -{ - prof_begin( "spawnPlayer_preUTS" ); - - self endon("disconnect"); - self endon("joined_spectators"); - self endon("joined_team"); - self notify("spawned"); - self notify("end_respawn"); - - self setSpawnVariables(); - - if ( isDefined( self.proxBar ) ) - self.proxBar destroyElem(); - if ( isDefined( self.proxBarText ) ) - self.proxBarText destroyElem(); - if ( isDefined( self.xpBar ) ) - self.xpBar destroyElem(); - - if ( level.teamBased ) - self.sessionteam = self.team; - else - self.sessionteam = "none"; - - hadSpawned = self.hasSpawned; - - self.sessionstate = "playing"; - self.spectatorclient = -1; - self.killcamentity = -1; - self.archivetime = 0; - self.psoffsettime = 0; - - self.maxhealth = maps\mp\gametypes\_tweakables::getTweakableValue( "player", "maxhealth" ); - self.health = self.maxhealth; - self.hasSpawned = true; - self.spawnTime = getTime(); - - if ( self.pers["lives"] ) - self.pers["lives"]--; - - if ( !self.wasAliveAtMatchStart ) - { - acceptablePassedTime = 20; - if ( level.timeLimit > 0 && acceptablePassedTime < level.timeLimit * 15 ) - acceptablePassedTime = level.timeLimit * 15; - - if ( level.inGracePeriod || getTimePassed() < acceptablePassedTime * 1000 ) - self.wasAliveAtMatchStart = true; - } - - [[level.onSpawnPlayer]](); - - prof_end( "spawnPlayer_preUTS" ); - - level thread updateTeamStatus(); - - prof_begin( "spawnPlayer_postUTS" ); - - if ( isDefined( game["PROMOD_KNIFEROUND"] ) && game["PROMOD_KNIFEROUND"] && isDefined( level.strat_over ) && level.strat_over ) - self thread removeWeapons(); - else - self maps\mp\gametypes\_class::giveLoadout( self.team, self.class ); - - if ( level.inPrematchPeriod && game["promod_do_readyup"] ) - self freezeControls( true ); - else if ( level.inPrematchPeriod ) - { - self freezeControls( true ); - - team = self.pers["team"]; - thread maps\mp\gametypes\_hud_message::oldNotifyMessage( game["strings"][team + "_name"], undefined, game["icons"][team], game["colors"][team] ); - } - else - { - self freezeControls( false ); - self enableWeapons(); - if ( !hadSpawned && isDefined( game["state"] ) && game["state"] == "playing" ) - { - team = self.team; - thread maps\mp\gametypes\_hud_message::oldNotifyMessage( game["strings"][team + "_name"], undefined, game["icons"][team], game["colors"][team] ); - } - } - - if ( isDefined( level.strat_over ) && !level.strat_over ) - { - self allowsprint(false); - self allowjump(false); - self setMoveSpeedScale( 0 ); - } - - prof_end( "spawnPlayer_postUTS" ); - - wait 0.1; - - self notify( "spawned_player" ); - - if ( isDefined( game["state"] ) && game["state"] == "postgame" ) - self freezePlayerForRoundEnd(); - - waittillframeend; - - if ( !isDefined( level.rdyup ) || !level.rdyup ) - self.statusicon = ""; - - self promod\shoutcast::updatePlayer(); -} - -removeWeapons() -{ - self endon("disconnect"); - - self maps\mp\gametypes\_class::giveLoadout( self.team, self.class ); - - wait 0.05; - - attachment = ""; - if(self.pers[self.pers["class"]]["loadout_secondary_attachment"] == "silencer") - attachment = "_silencer"; - - sidearmWeapon = self.pers[self.pers["class"]]["loadout_secondary"]+attachment+"_mp"; - - self takeAllWeapons(); - self giveWeapon(sidearmWeapon, 0); - self setweaponammoclip(sidearmWeapon, 0); - self setweaponammostock(sidearmWeapon, 0); - self switchtoWeapon(sidearmWeapon); - self setclientdvar("g_compassShowEnemies", 1); -} - -spawnSpectator( origin, angles ) -{ - self notify("spawned"); - self notify("end_respawn"); - in_spawnSpectator( origin, angles ); -} - -respawn_asSpectator( origin, angles ) -{ - in_spawnSpectator( origin, angles ); -} - -in_spawnSpectator( origin, angles ) -{ - self setSpawnVariables(); - - if ( self.pers["team"] == "spectator" ) - self clearLowerMessage(); - - self.sessionstate = "spectator"; - self.spectatorclient = -1; - self.killcamentity = -1; - self.archivetime = 0; - self.psoffsettime = 0; - - if(self.pers["team"] == "spectator") - { - if ( !isDefined( level.rdyup ) || !level.rdyup ) - self.statusicon = ""; - - if ( !isDefined( self.freelook ) ) - self thread monitorFreeLook(); - } - - maps\mp\gametypes\_spectating::setSpectatePermissions(); - - [[level.onSpawnSpectator]]( origin, angles ); - - level thread updateTeamStatus(); -} - -getPlayerFromClientNum( clientNum ) -{ - if ( clientNum < 0 ) - return undefined; - - for ( i = 0; i < level.players.size; i++ ) - { - if ( level.players[i] getEntityNumber() == clientNum ) - return level.players[i]; - } - return undefined; -} - -waveSpawnTimer() -{ - level endon( "game_ended" ); - - while ( isDefined( game["state"] ) && game["state"] == "playing" ) - { - time = getTime(); - - if ( time - level.lastWave["allies"] > (level.waveDelay["allies"] * 1000) ) - { - level notify ( "wave_respawn_allies" ); - level.lastWave["allies"] = time; - level.wavePlayerSpawnIndex["allies"] = 0; - } - - if ( time - level.lastWave["axis"] > (level.waveDelay["axis"] * 1000) ) - { - level notify ( "wave_respawn_axis" ); - level.lastWave["axis"] = time; - level.wavePlayerSpawnIndex["axis"] = 0; - } - - wait 0.05; - } -} - -freeLook( condition ) -{ - if ( getDvarInt( "scr_game_spectatetype" ) == 1 ) - { - if ( condition ) - wait 0.1; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - if ( player.pers["team"] == "spectator" ) - { - if ( !isDefined( player.freelook ) || !player.freelook ) - player allowSpectateTeam( "freelook", condition ); - } - } - } -} - -monitorFreeLook() -{ - self.freelook = true; - - self thread checkADS(); - self thread checkAttack(); - self thread checkMelee(); -} - -checkMelee() -{ - self endon("disconnect"); - self endon("joined_team"); - - waittillframeend; - - for(;;) - { - if ( self meleeButtonPressed() ) - { - self notify ( "stop_follow" ); - self.freelook = true; - self.spectatorlast = undefined; - } - - while ( self meleeButtonPressed() ) - { - wait 0.05; - continue; - } - - wait 0.05; - } -} - -checkAttack() -{ - self endon("disconnect"); - self endon("joined_team"); - - waittillframeend; - - for(;;) - { - if ( self attackButtonPressed() ) - { - for ( i = 0; i < level.players.size; i++ ) - { - players = level.players[i]; - - if ( isAlive( players ) && ( ( players.pers["team"] == "allies" || players.pers["team"] == "axis" ) ) ) - { - self notify ( "stop_follow" ); - self.freelook = false; - break; - } - } - } - - while ( self attackButtonPressed() ) - { - wait 0.05; - continue; - } - - wait 0.05; - } -} - -checkADS() -{ - self endon("disconnect"); - self endon("joined_team"); - - waittillframeend; - - for(;;) - { - while( !self adsButtonPressed() ) - wait 0.05; - - for ( i = 0; i < level.players.size; i++ ) - { - players = level.players[i]; - - if ( isAlive( players ) && ( ( players.pers["team"] == "allies" || players.pers["team"] == "axis" ) ) ) - { - self notify ( "stop_follow" ); - self.freelook = false; - break; - } - } - - while( self adsButtonPressed() ) - wait 0.05; - } -} - -default_onSpawnSpectator( origin, angles) -{ - thread freeLook( false ); - - if( isDefined( origin ) && isDefined( angles ) ) - { - self spawn(origin, angles); - thread freeLook( true ); - return; - } - - spawnpointname = "mp_global_intermission"; - spawnpoints = getentarray(spawnpointname, "classname"); - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(spawnpoints); - - self spawn(spawnpoint.origin, spawnpoint.angles); - - thread freeLook( true ); -} - -spawnIntermission() -{ - self notify("spawned"); - self notify("end_respawn"); - - self setSpawnVariables(); - - self clearLowerMessage(); - - self freezeControls( false ); - - self.sessionstate = "intermission"; - self.spectatorclient = -1; - self.killcamentity = -1; - self.archivetime = 0; - self.psoffsettime = 0; - - [[level.onSpawnIntermission]](); - self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 ); -} - -default_onSpawnIntermission() -{ - spawnpointname = "mp_global_intermission"; - spawnpoints = getentarray(spawnpointname, "classname"); - spawnpoint = spawnPoints[0]; - - if( isDefined( spawnpoint ) ) - self spawn( spawnpoint.origin, spawnpoint.angles ); -} - -timeUntilRoundEnd() -{ - if ( level.gameEnded ) - { - timePassed = (getTime() - level.gameEndTime) / 1000; - timeRemaining = level.postRoundTime - timePassed; - - if ( timeRemaining < 0 ) - return 0; - - return timeRemaining; - } - - if ( level.inOvertime || level.timeLimit <= 0 || !isDefined( level.startTime ) ) - return undefined; - - timePassed = (getTime() - level.startTime)/1000; - timeRemaining = (level.timeLimit * 60) - timePassed; - - return timeRemaining + level.postRoundTime; -} - -freezePlayerForRoundEnd() -{ - self clearLowerMessage(); -} - -freeGameplayHudElems() -{ - if ( isDefined( self.lowerMessage ) ) - self.lowerMessage destroyElem(); - if ( isDefined( self.lowerTimer ) ) - self.lowerTimer destroyElem(); - - if ( isDefined( self.proxBar ) ) - self.proxBar destroyElem(); - if ( isDefined( self.proxBarText ) ) - self.proxBarText destroyElem(); -} - -endGame( winner, endReasonText ) -{ - if ( isDefined( game["state"] ) && game["state"] == "postgame" ) - return; - - if ( isDefined( level.onEndGame ) ) - [[level.onEndGame]]( winner ); - - if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" ) - setDvar( "g_deadChat", 1 ); - - game["state"] = "postgame"; - level.gameEndTime = getTime(); - level.gameEnded = true; - level.inGracePeriod = false; - - level notify ( "game_ended" ); - - setGameEndTime( 0 ); - - updatePlacement(); - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - player freezePlayerForRoundEnd(); - player thread roundEndDoF( 4 ); - player freeGameplayHudElems(); - } - - if ( isDefined( level.scorebot ) && level.scorebot ) - { - winners = ""; - if ( winner == "allies" ) - { - if ( game["attackers"] == "allies" && game["defenders"] == "axis" ) - winners = "attack"; - else - winners = "defence"; - } - else if ( winner == "axis" ) - { - if ( game["attackers"] == "allies" && game["defenders"] == "axis" ) - winners = "defence"; - else - winners = "attack"; - } - else - winners = "tie"; - - attack_score = game["teamScores"]["allies"]; - defence_score = game["teamScores"]["axis"]; - - game["promod_scorebot_ticker_buffer"] += "round_winner" + winners + "" + attack_score + "" + defence_score; - } - - if ( (level.roundLimit > 1 || (!level.roundLimit && level.scoreLimit != 1)) && !level.forcedEnd ) - { - if ( level.displayRoundEndText ) - { - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - if ( level.teamBased ) - player thread maps\mp\gametypes\_hud_message::teamOutcomeNotify( winner, true, endReasonText, 0.75 ); - else - player thread maps\mp\gametypes\_hud_message::outcomeNotify( winner, endReasonText, 0.75 ); - - if ( isDefined( player.pers["team"] ) && player.pers["team"] == "spectator" ) - continue; - - player setClientDvars( - "ui_hud_hardcore", 1, - "cg_drawSpectatorMessages", 0, - "g_compassShowEnemies", 0 ); - } - - level thread header(); - - if ( hitRoundLimit() || hitScoreLimit() ) - roundEndWait( level.roundEndDelay / 2 ); - else - roundEndWait( level.roundEndDelay ); - } - - game["roundsplayed"]++; - roundSwitching = false; - if ( !hitRoundLimit() && !hitScoreLimit() ) - roundSwitching = checkRoundSwitch(); - - if ( roundSwitching && level.teamBased ) - { - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - if( player.pers["team"] == "spectator" ) - player setClientDvars( - "shout_scores_attack", game["teamScores"][game["defenders"]], - "shout_scores_defence", game["teamScores"][game["attackers"]] ); - - if ( !isDefined( player.pers["team"] ) || player.pers["team"] == "spectator" ) - { - player [[level.spawnIntermission]](); - player closeMenu(); - player closeInGameMenu(); - continue; - } - - switchType = level.halftimeType; - if ( switchType == "halftime" ) - { - if ( level.roundLimit ) - { - if ( (game["roundsplayed"] * 2) == level.roundLimit ) - switchType = "halftime"; - else - switchType = "intermission"; - } - else if ( level.scoreLimit ) - { - if ( game["roundsplayed"] == (level.scoreLimit - 1) ) - switchType = "halftime"; - else - switchType = "intermission"; - } - else - switchType = "intermission"; - } - - player thread maps\mp\gametypes\_hud_message::teamOutcomeNotify( switchType, true, level.halftimeSubCaption ); - player setClientDvar( "ui_hud_hardcore", 1 ); - - if ( player.pers["team"] == "axis" ) - { - player.switching = true; - player menuAllies(); - } - else if( player.pers["team"] == "allies" ) - { - player.switching = true; - player menuAxis(); - } - } - - old_score = game["teamScores"]["allies"]; - game["teamScores"]["allies"] = game["teamScores"]["axis"]; - game["teamScores"]["axis"] = old_score; - - game["allies_timeout_called"] = 0; - game["axis_timeout_called"] = 0; - - thread maps\mp\gametypes\_promod::updateClassAvailability( "allies" ); - thread maps\mp\gametypes\_promod::updateClassAvailability( "axis" ); - - roundEndWait( level.halftimeRoundEndDelay ); - } - else if ( !hitRoundLimit() && !hitScoreLimit() && !level.displayRoundEndText && level.teamBased ) - { - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - if ( !isDefined( player.pers["team"] ) || player.pers["team"] == "spectator" ) - { - player [[level.spawnIntermission]](); - player closeMenu(); - player closeInGameMenu(); - continue; - } - - switchType = level.halftimeType; - if ( switchType == "halftime" ) - { - if ( level.roundLimit ) - { - if ( (game["roundsplayed"] * 2) == level.roundLimit ) - switchType = "halftime"; - else - switchType = "roundend"; - } - else if ( level.scoreLimit ) - { - if ( game["roundsplayed"] == (level.scoreLimit - 1) ) - switchType = "halftime"; - else - switchTime = "roundend"; - } - } - - player thread maps\mp\gametypes\_hud_message::teamOutcomeNotify( switchType, true, endReasonText ); - player setClientDvar( "ui_hud_hardcore", 1 ); - } - - roundEndWait( level.halftimeRoundEndDelay ); - } - - if ( isDefined(game["PROMOD_KNIFEROUND"]) && game["PROMOD_KNIFEROUND"] ) - { - if(isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match") - { - game["promod_do_readyup"] = 1; - game["promod_first_readyup_done"] = 0; - for(i=0;i getGameScore( "axis" ) ) - winner = "allies"; - else - winner = "axis"; - - return winner; -} - -roundEndWait( defaultDelay ) -{ - notifiesDone = false; - while ( !notifiesDone ) - { - notifiesDone = true; - for ( i = 0; i < level.players.size; i++ ) - { - players = level.players[i]; - if ( !isDefined( players.doingNotify ) || !players.doingNotify ) - continue; - - notifiesDone = false; - } - wait 0.5; - } - - wait defaultDelay; -} - -roundEndDOF( time ) -{ - self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 ); -} - -getHighestScoringPlayer() -{ - winner = undefined; - tie = false; - - for( i = 0; i < level.players.size; i++ ) - { - players = level.players[i]; - if ( !isDefined( players.score ) || players.score < 1 ) - continue; - - if ( !isDefined( winner ) || players.score > winner.score ) - { - winner = players; - tie = false; - } - else if ( players.score == winner.score ) - tie = true; - } - - if ( tie || !isDefined( winner ) ) - return undefined; - else - return winner; -} - -checkTimeLimit() -{ - if ( isDefined( level.timeLimitOverride ) && level.timeLimitOverride ) - return; - - if ( !isDefined( game["state"] ) || game["state"] != "playing" ) - { - setGameEndTime( 0 ); - return; - } - - if ( level.timeLimit <= 0 ) - { - setGameEndTime( 0 ); - return; - } - - if ( level.inPrematchPeriod ) - { - setGameEndTime( 0 ); - return; - } - - if ( !isdefined( level.startTime ) ) - return; - - timeLeft = getTimeRemaining(); - - setGameEndTime( getTime() + int(timeLeft) ); - - if ( timeLeft > 0 ) - return; - - [[level.onTimeLimit]](); -} - -getTimeRemaining() -{ - return level.timeLimit * 60000 - getTimePassed(); -} - -checkScoreLimit() -{ - if ( ( !isDefined( game["state"] ) || game["state"] != "playing" ) || level.scoreLimit <= 0 || ( level.teamBased && game["teamScores"]["allies"] < level.scoreLimit && game["teamScores"]["axis"] < level.scoreLimit) || ( !level.teamBased && ( !isPlayer( self ) || self.score < level.scoreLimit ) ) ) - return; - - [[level.onScoreLimit]](); -} - -hitRoundLimit() -{ - if( level.roundLimit <= 0 ) - return false; - - return ( game["roundsplayed"] >= level.roundLimit ); -} - -hitScoreLimit() -{ - if( level.scoreLimit <= 0 ) - return false; - - if ( level.teamBased ) - { - if( game["teamScores"]["allies"] >= level.scoreLimit || game["teamScores"]["axis"] >= level.scoreLimit ) - return true; - } - else - { - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - if ( isDefined( player.score ) && player.score >= level.scorelimit ) - return true; - } - } - return false; -} - -updateGameTypeDvars() -{ - level endon ( "game_ended" ); - - while ( isDefined( game["state"] ) && game["state"] == "playing" ) - { - thread checkTimeLimit(); - thread checkScoreLimit(); - - if ( isdefined( level.startTime ) && getTimeRemaining() < 3000 ) - { - wait 0.1; - continue; - } - wait 1; - } -} - -menuAutoAssign() -{ - teams[0] = "allies"; - teams[1] = "axis"; - assignment = teams[randomInt(2)]; - - self closeMenus(); - - if ( level.teamBased ) - { - playerCounts = self maps\mp\gametypes\_teams::CountPlayers(); - - if ( playerCounts["allies"] == playerCounts["axis"] ) - { - if( getTeamScore( "allies" ) == getTeamScore( "axis" ) ) - assignment = teams[randomInt(2)]; - else if ( getTeamScore( "allies" ) < getTeamScore( "axis" ) ) - assignment = "allies"; - else - assignment = "axis"; - } - else if( playerCounts["allies"] < playerCounts["axis"] ) - assignment = "allies"; - else - assignment = "axis"; - - if ( assignment == self.pers["team"] && (self.sessionstate == "playing" || self.sessionstate == "dead") ) - { - self beginClassChoice(); - return; - } - } - - if ( assignment != self.pers["team"] && self.sessionstate == "playing" ) - { - self.switching_teams = true; - self.joining_team = assignment; - self.leaving_team = self.pers["team"]; - self suicide(); - } - - oldTeam = self.pers["team"]; - - self.pers["class"] = undefined; - self.class = undefined; - self.pers["team"] = assignment; - self.team = assignment; - self setClientDvar( "loadout_curclass", "" ); - - if(isDefined(self.pers["shoutnum"])) - self promod\shoutcast::removePlayer(); - - self updateObjectiveText(); - - if ( level.teamBased ) - self.sessionteam = assignment; - else - self.sessionteam = "none"; - - if ( !isDefined( level.rdyup ) || !level.rdyup ) - { - if ( !isAlive( self ) ) - self.statusicon = "hud_status_dead"; - else - self.statusicon = ""; - } - - self notify("joined_team"); - self notify("end_respawn"); - - self.freelook = undefined; - - if( self.pers["team"] == "allies" && oldTeam != self.pers["team"] ) - { - if( game["attackers"] == "allies" && game["defenders"] == "axis" ) - iPrintLN(self.name + " Joined Attack"); - else - iPrintLN(self.name + " Joined Defence"); - } - else if( self.pers["team"] == "axis" && oldTeam != self.pers["team"] ) - { - if( game["attackers"] == "allies" && game["defenders"] == "axis" ) - iPrintLN(self.name + " Joined Defence"); - else - iPrintLN(self.name + " Joined Attack"); - } - - if ( oldTeam != self.pers["team"] && ( oldTeam == "allies" || oldTeam == "axis" ) ) - thread maps\mp\gametypes\_promod::updateClassAvailability( oldTeam ); - - self setClientDvars("g_compassShowEnemies", 0, "cg_scoreboardheight", 435 ); - - self beginClassChoice(); - - self setclientdvar( "g_scriptMainMenu", game[ "menu_class_" + self.pers["team"] ] ); -} - -updateObjectiveText() -{ - if ( self.pers["team"] == "spectator" ) - { - self setClientDvar( "cg_objectiveText", "" ); - return; - } - - if( level.scorelimit > 0 ) - self setclientdvar( "cg_objectiveText", getObjectiveScoreText( self.pers["team"] ), level.scorelimit ); - else - self setclientdvar( "cg_objectiveText", getObjectiveText( self.pers["team"] ) ); -} - -closeMenus() -{ - self closeMenu(); - self closeInGameMenu(); -} - -beginClassChoice() -{ - if ( self.pers["team"] == "axis" || self.pers["team"] == "allies" ) - self openMenu( game[ "menu_changeclass_" + self.pers["team"] ] ); -} - -menuAllies() -{ - if ( self.pers["team"] == "allies" ) - return; - - self closeMenus(); - - if ( !isDefined( self.switching ) ) - self.switching = false; - - if ( self.pers["team"] != "allies" ) - { - if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "match" && level.teamBased && !self.switching && !maps\mp\gametypes\_teams::getJoinTeamPermissions( "allies" ) ) - { - self openMenu(game["menu_team"]); - return; - } - - if ( level.inGracePeriod && (!isdefined(self.hasDoneCombat) || !self.hasDoneCombat) ) - self.hasSpawned = false; - - if( self.sessionstate == "playing" && !self.switching ) - { - self.switching_teams = true; - self.joining_team = "allies"; - self.leaving_team = self.pers["team"]; - self suicide(); - } - - oldTeam = self.pers["team"]; - - if ( self.switching ) - { - self.pers["team"] = "allies"; - self.team = "allies"; - } - else - { - self.pers["class"] = undefined; - self.class = undefined; - self.pers["team"] = "allies"; - self.team = "allies"; - self setClientDvar( "loadout_curclass", "" ); - } - - if(isDefined(self.pers["shoutnum"])) - self promod\shoutcast::removePlayer(); - - self updateObjectiveText(); - - if ( level.teamBased ) - self.sessionteam = "allies"; - else - self.sessionteam = "none"; - - if ( !isDefined( level.rdyup ) || !level.rdyup ) - { - if ( !isAlive( self ) ) - self.statusicon = "hud_status_dead"; - else - self.statusicon = ""; - } - - self setclientdvar("g_scriptMainMenu", game["menu_class_allies"]); - - self notify("joined_team"); - self notify("end_respawn"); - - self.freelook = undefined; - - if( game["attackers"] == "allies" && game["defenders"] == "axis" && !self.switching ) - iprintln(self.name + " Joined Attack"); - else if ( !self.switching ) - iprintln(self.name + " Joined Defence"); - - if ( oldTeam == "axis" ) - thread maps\mp\gametypes\_promod::updateClassAvailability( oldTeam ); - - self setClientDvars("g_compassShowEnemies", 0, "cg_scoreboardheight", 435 ); - } - - if ( !self.switching ) - self beginClassChoice(); - - self.switching = false; -} - -menuAxis() -{ - if ( self.pers["team"] == "axis" ) - return; - - self closeMenus(); - - if ( !isDefined( self.switching ) ) - self.switching = false; - - if ( self.pers["team"] != "axis" ) - { - if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "match" && level.teamBased && !self.switching && !maps\mp\gametypes\_teams::getJoinTeamPermissions( "allies" ) ) - { - self openMenu(game["menu_team"]); - return; - } - - if ( level.inGracePeriod && (!isdefined(self.hasDoneCombat) || !self.hasDoneCombat) ) - self.hasSpawned = false; - - if( self.sessionstate == "playing" && !self.switching ) - { - self.switching_teams = true; - self.joining_team = "axis"; - self.leaving_team = self.pers["team"]; - self suicide(); - } - - oldTeam = self.pers["team"]; - - if ( self.switching ) - { - self.pers["team"] = "axis"; - self.team = "axis"; - } - else - { - self.pers["class"] = undefined; - self.class = undefined; - self.pers["team"] = "axis"; - self.team = "axis"; - self setClientDvar( "loadout_curclass", "" ); - } - - if(isDefined(self.pers["shoutnum"])) - self promod\shoutcast::removePlayer(); - - self updateObjectiveText(); - - if ( level.teamBased ) - self.sessionteam = "axis"; - else - self.sessionteam = "none"; - - if ( !isDefined( level.rdyup ) || !level.rdyup ) - { - if ( !isAlive( self ) ) - self.statusicon = "hud_status_dead"; - else - self.statusicon = ""; - } - - self setclientdvar("g_scriptMainMenu", game["menu_class_axis"]); - - self notify("joined_team"); - self notify("end_respawn"); - - self.freelook = undefined; - - if( game["attackers"] == "allies" && game["defenders"] == "axis" && !self.switching ) - iprintln(self.name + " Joined Defence"); - else if ( !self.switching ) - iprintln(self.name + " Joined Attack"); - - if ( oldTeam == "allies" ) - thread maps\mp\gametypes\_promod::updateClassAvailability( oldTeam ); - - self setClientDvars("g_compassShowEnemies", 0, "cg_scoreboardheight", 435 ); - } - - if ( !self.switching ) - self beginClassChoice(); - - self.switching = false; -} - -menuKillspec() -{ - if ( self.pers["team"] != "axis" && self.pers["team"] != "allies" ) - return; - - self closeMenus(); - - if( self.sessionstate == "playing" ) - self suicide(); - - self.pers["class"] = undefined; - self.class = undefined; - self iprintln("Choose a class to respawn"); - self setClientDvar("loadout_curclass", ""); - self thread [[level.spawnSpectator]]( self.origin, self.angles ); - - thread maps\mp\gametypes\_promod::updateClassAvailability( self.pers["team"] ); - - if(isDefined(self.pers["shoutnum"])) - self promod\shoutcast::removePlayer(); -} - -menuSpectator() -{ - if ( self.pers["team"] == "spectator" ) - return; - - self closeMenus(); - self openMenu(game["menu_shoutcast"]); - - if(self.pers["team"] != "spectator") - { - if(self.sessionstate == "playing") - { - self.switching_teams = true; - self.joining_team = "spectator"; - self.leaving_team = self.pers["team"]; - self suicide(); - } - - oldTeam = self.pers["team"]; - - self.pers["class"] = undefined; - self.class = undefined; - self.pers["team"] = "spectator"; - self.team = "spectator"; - self setClientDvar( "loadout_curclass", "" ); - - if(isDefined(self.pers["shoutnum"])) - self promod\shoutcast::removePlayer(); - - self updateObjectiveText(); - - self.sessionteam = "spectator"; - self thread [[level.spawnSpectator]]( self.origin, self.angles ); - - if( game["attackers"] == "allies" && game["defenders"] == "axis" ) - self setClientDvars( - "shout_attack_name", "Attack", - "shout_defence_name", "Defence" ); - else - self setClientDvars( - "shout_attack_name", "Defence", - "shout_defence_name", "Attack" ); - - self setClientDvars( - "shout_scores_attack", game["teamScores"][game["attackers"]], - "shout_scores_defence", game["teamScores"][game["defenders"]] ); - - self setclientdvar( "g_scriptMainMenu", game["menu_shoutcast"] ); - - self notify("joined_spectators"); - iprintln(self.name + " Joined Shoutcaster"); - - self promod\shoutcast::loadOne(); - - if ( oldTeam == "allies" || oldTeam == "axis" ) - thread maps\mp\gametypes\_promod::updateClassAvailability( oldTeam ); - - self setClientDvars("g_compassShowEnemies", 1, "cg_scoreboardheight", 500 ); - } -} - -removeDisconnectedPlayerFromPlacement() -{ - offset = 0; - numPlayers = level.placement["all"].size; - found = false; - for ( i = 0; i < numPlayers; i++ ) - { - if ( level.placement["all"][i] == self ) - found = true; - - if ( found ) - level.placement["all"][i] = level.placement["all"][ i + 1 ]; - } - if ( !found ) - return; - - level.placement["all"][ numPlayers - 1 ] = undefined; - - updateTeamPlacement(); - - if ( level.teamBased ) - return; - - numPlayers = level.placement["all"].size; - for ( i = 0; i < numPlayers; i++ ) - { - player = level.placement["all"][i]; - player notify( "update_outcome" ); - } -} - -updatePlacement() -{ - prof_begin("updatePlacement"); - - if ( !level.players.size ) - return; - - level.placement["all"] = []; - for ( i = 0; i < level.players.size; i++ ) - { - if ( level.players[i].team == "allies" || level.players[i].team == "axis" ) - level.placement["all"][level.placement["all"].size] = level.players[i]; - } - - placementAll = level.placement["all"]; - - for ( i = 1; i < placementAll.size; i++ ) - { - player = placementAll[i]; - playerScore = player.score; - for ( j = i - 1; j >= 0 && (playerScore > placementAll[j].score || (playerScore == placementAll[j].score && player.deaths < placementAll[j].deaths)); j-- ) - placementAll[j + 1] = placementAll[j]; - placementAll[j + 1] = player; - } - - level.placement["all"] = placementAll; - - updateTeamPlacement(); - - prof_end("updatePlacement"); -} - -updateTeamPlacement() -{ - placement["allies"] = []; - placement["axis"] = []; - placement["spectator"] = []; - - if ( !level.teamBased ) - return; - - placementAll = level.placement["all"]; - placementAllSize = placementAll.size; - - for ( i = 0; i < placementAllSize; i++ ) - { - player = placementAll[i]; - team = player.pers["team"]; - - placement[team][ placement[team].size ] = player; - } - - level.placement["allies"] = placement["allies"]; - level.placement["axis"] = placement["axis"]; -} - -onXPEvent( event ) -{ - self maps\mp\gametypes\_rank::giveRankXP( event ); -} - -givePlayerScore( event, player, victim ) -{ - if ( level.overridePlayerScore ) - return; - - score = player.pers["score"]; - [[level.onPlayerScore]]( event, player, victim ); - - if ( score == player.pers["score"] ) - return; - - player.score = player.pers["score"]; - - if ( !level.teambased ) - thread sendUpdatedDMScores(); - - player notify ( "update_playerscore_hud" ); - player thread checkScoreLimit(); -} - -default_onPlayerScore( event, player, victim ) -{ - score = maps\mp\gametypes\_rank::getScoreInfoValue( event ); - player.pers["score"] += score; -} - -_setPlayerScore( player, score ) -{ - if ( score == player.pers["score"] ) - return; - - player.pers["score"] = score; - player.score = player.pers["score"]; - - player notify ( "update_playerscore_hud" ); - player thread checkScoreLimit(); -} - -_getPlayerScore( player ) -{ - return player.pers["score"]; -} - -giveTeamScore( event, team, player, victim ) -{ - if ( level.overrideTeamScore ) - return; - - teamScore = game["teamScores"][team]; - [[level.onTeamScore]]( event, team, player, victim ); - - if ( teamScore == game["teamScores"][team] ) - return; - - updateTeamScores( team ); - - thread checkScoreLimit(); -} - -_setTeamScore( team, teamScore ) -{ - if ( teamScore == game["teamScores"][team] ) - return; - - game["teamScores"][team] = teamScore; - - updateTeamScores( team ); - - thread checkScoreLimit(); -} - -updateTeamScores( team1, team2 ) -{ - setTeamScore( team1, getGameScore( team1 ) ); - if ( isdefined( team2 ) ) - setTeamScore( team2, getGameScore( team2 ) ); - - if ( level.teambased ) - thread sendUpdatedTeamScores(); -} - -_getTeamScore( team ) -{ - return game["teamScores"][team]; -} - -default_onTeamScore( event, team, player, victim ) -{ - score = maps\mp\gametypes\_rank::getScoreInfoValue( event ); - - otherTeam = level.otherTeam[team]; - - if ( game["teamScores"][team] > game["teamScores"][otherTeam] ) - level.wasWinning = team; - else if ( game["teamScores"][otherTeam] > game["teamScores"][team] ) - level.wasWinning = otherTeam; - - game["teamScores"][team] += score; - - isWinning = "none"; - if ( game["teamScores"][team] > game["teamScores"][otherTeam] ) - isWinning = team; - else if ( game["teamScores"][otherTeam] > game["teamScores"][team] ) - isWinning = otherTeam; - - if ( isWinning != "none" && isWinning != level.wasWinning && getTime() - level.lastStatusTime > 5000 ) - level.lastStatusTime = getTime(); - - if ( isWinning != "none" ) - level.wasWinning = isWinning; -} - -sendUpdatedTeamScores() -{ - level notify("updating_scores"); - level endon("updating_scores"); - wait 0.05; - - WaitTillSlowProcessAllowed(); - - for ( i = 0; i < level.players.size; i++ ) - level.players[i] updateScores(); - - for( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - if( player.pers["team"] == "spectator" ) - { - if( game["attackers"] == "allies" && game["defenders"] == "axis" ) - player setClientDvars( - "shout_scores_attack", game["teamScores"]["allies"], - "shout_scores_defence", game["teamScores"]["axis"] ); - else - player setClientDvars( - "shout_scores_attack", game["teamScores"]["axis"], - "shout_scores_defence", game["teamScores"]["allies"] ); - } - } - - if ( isDefined( level.scorebot ) && level.scorebot ) - { - if ( !isDefined( level.allies_team ) ) - level.allies_team = "none"; - if ( !isDefined( level.axis_team ) ) - level.axis_team = "none"; - - if( game["attackers"] == "allies" && game["defenders"] == "axis" ) - { - game["promod_scorebot_attack_ticker_buffer"] = game["teamScores"]["allies"] + level.allies_team; - game["promod_scorebot_defence_ticker_buffer"] = game["teamScores"]["axis"] + level.axis_team; - } - else - { - game["promod_scorebot_attack_ticker_buffer"] = game["teamScores"]["axis"] + level.axis_team; - game["promod_scorebot_defence_ticker_buffer"] = game["teamScores"]["allies"] + level.allies_team; - } - } -} - -sendUpdatedDMScores() -{ - level notify("updating_dm_scores"); - level endon("updating_dm_scores"); - wait 0.05; - - WaitTillSlowProcessAllowed(); - - for ( i = 0; i < level.players.size; i++ ) - { - level.players[i] updateDMScores(); - level.players[i].updatedDMScores = true; - } -} - -initPersStat( dataName ) -{ - if( !isDefined( self.pers[dataName] ) ) - self.pers[dataName] = 0; -} - -getPersStat( dataName ) -{ - return self.pers[dataName]; -} - -incPersStat( dataName, increment ) -{ - self.pers[dataName] += increment; -} - -updateTeamStatus() -{ - level notify("updating_team_status"); - level endon("updating_team_status"); - level endon ( "game_ended" ); - - if ( isDefined( game["state"] ) && game["state"] == "postgame" ) - return; - - resetTimeout(); - - prof_begin( "updateTeamStatus" ); - - level.playerCount["allies"] = 0; - level.playerCount["axis"] = 0; - - level.lastAliveCount["allies"] = level.aliveCount["allies"]; - level.lastAliveCount["axis"] = level.aliveCount["axis"]; - level.aliveCount["allies"] = 0; - level.aliveCount["axis"] = 0; - level.playerLives["allies"] = 0; - level.playerLives["axis"] = 0; - level.alivePlayers["allies"] = []; - level.alivePlayers["axis"] = []; - level.activePlayers = []; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - team = player.team; - class = player.class; - - if ( team != "spectator" && (isDefined( class ) && class != "") ) - { - level.playerCount[team]++; - - if ( player.sessionstate == "playing" ) - { - level.aliveCount[team]++; - level.playerLives[team]++; - - if ( isAlive( player ) ) - { - level.alivePlayers[team][level.alivePlayers.size] = player; - level.activeplayers[ level.activeplayers.size ] = player; - } - } - else if ( player maySpawn() ) - level.playerLives[team]++; - } - } - - if ( level.aliveCount["allies"] + level.aliveCount["axis"] > level.maxPlayerCount ) - level.maxPlayerCount = level.aliveCount["allies"] + level.aliveCount["axis"]; - - if ( level.aliveCount["allies"] ) - level.everExisted["allies"] = true; - if ( level.aliveCount["axis"] ) - level.everExisted["axis"] = true; - - for( i = 0; i < level.players.size; i++ ) - if( level.players[i].pers["team"] == "allies" || level.players[i].pers["team"] == "axis" ) - level.players[i] setClientDvars("self_alive", level.aliveCount[level.players[i].pers["team"]], - "opposing_alive", level.aliveCount[maps\mp\gametypes\_gameobjects::getEnemyTeam(level.players[i].pers["team"])] ); - - if ( isDefined( level.scorebot ) && level.scorebot ) - { - level.allies_team = ""; - level.axis_team = ""; - - players = getentarray("player","classname"); - for( i = 0; i < players.size; i++ ) - { - player = players[i]; - playerstring = "" + player.name + "" + int( isAlive( player ) ) + "" + player.kills + "" + player.assists + "" + player.deaths + "0"; - - if ( player.pers["team"] == "allies" ) - level.allies_team += playerstring; - else if ( player.pers["team"] == "axis" ) - level.axis_team += playerstring; - } - - if ( level.allies_team == "" ) - level.allies_team = "none"; - if ( level.axis_team == "" ) - level.axis_team = "none"; - - level.allies_string = game["teamScores"]["allies"] + level.allies_team; - level.axis_string = game["teamScores"]["axis"] + level.axis_team; - - if( game["attackers"] == "allies" && game["defenders"] == "axis" ) - { - game["promod_scorebot_attack_ticker_buffer"] = level.allies_string; - game["promod_scorebot_defence_ticker_buffer"] = level.axis_string; - } - else - { - game["promod_scorebot_attack_ticker_buffer"] = level.axis_string; - game["promod_scorebot_defence_ticker_buffer"] = level.allies_string; - } - } - - prof_end( "updateTeamStatus" ); - - level updateGameEvents(); -} - -isValidClass( class ) -{ - return isdefined( class ) && class != ""; -} - -playTickingSound() -{ - self endon("death"); - self endon("stop_ticking"); - - level endon("game_ended"); - - for(;;) - { - self playSound( "ui_mp_suitcasebomb_timer" ); - wait 1; - } -} - -stopTickingSound() -{ - self notify("stop_ticking"); -} - -timeLimitClock() -{ - level endon ( "game_ended" ); - - wait 0.05; - - clockObject = spawn( "script_origin", (0,0,0) ); - - while ( isDefined( game["state"] ) && game["state"] == "playing" ) - { - if ( !level.timerStopped && level.timeLimit ) - { - timeLeft = getTimeRemaining() / 1000; - timeLeftInt = int(timeLeft + 0.5); - - if ( timeLeftInt <= 10 || (timeLeftInt <= 30 && timeLeftInt % 2 == 0) ) - { - if ( !timeLeftInt ) - break; - - clockObject playSound( "ui_mp_timer_countdown" ); - } - - if ( timeLeft - floor(timeLeft) >= 0.05 ) - wait timeLeft - floor(timeLeft); - } - - wait 1; - } -} - -gameTimer() -{ - level endon ( "game_ended" ); - - level waittill("prematch_over"); - - level.startTime = getTime(); - level.discardTime = 0; - - if ( isDefined( game["roundMillisecondsAlreadyPassed"] ) ) - { - level.startTime -= game["roundMillisecondsAlreadyPassed"]; - game["roundMillisecondsAlreadyPassed"] = undefined; - } - - prevtime = gettime(); - - while ( isDefined( game["state"] ) && game["state"] == "playing" ) - { - if ( !level.timerStopped ) - game["timepassed"] += gettime() - prevtime; - - prevtime = gettime(); - wait 1; - } -} - -getTimePassed() -{ - if ( !isDefined( level.startTime ) ) - return 0; - - if ( level.timerStopped ) - return (level.timerPauseTime - level.startTime) - level.discardTime; - else - return (gettime() - level.startTime) - level.discardTime; -} - -pauseTimer() -{ - if ( level.timerStopped ) - return; - - level.timerStopped = true; - level.timerPauseTime = gettime(); -} - -resumeTimer() -{ - if ( !level.timerStopped ) - return; - - level.timerStopped = false; - level.discardTime += gettime() - level.timerPauseTime; -} - -openMainMenu() -{ - maxwait = 0; - while ( !level.players.size && maxwait <= 1 ) - { - wait 0.05; - maxwait += 0.05; - } - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - if ( !isDefined( player.pers["team"] ) || player.pers["team"] == "none" ) - { - player setclientdvar( "g_scriptMainMenu", game["menu_team"] ); - player openMenu( game["menu_team"] ); - } - } -} - -checkRestartMap() -{ - if ( getDvar( "o_gametype" ) == "" ) - setDvar( "o_gametype", level.gametype ); - else if ( getDvar( "o_gametype" ) != level.gametype ) - { - level.restarting = true; - - setDvar( "o_gametype", level.gametype ); - - maprot = getDvar( "sv_maprotationcurrent" ); - new_maprot = "map " + level.script + " " + maprot; - setDvar( "sv_maprotationcurrent", new_maprot ); - exitLevel( false ); - } -} - -startGame() -{ - level thread header(); - - thread gameTimer(); - level.timerStopped = true; - thread maps\mp\gametypes\_spawnlogic::spawnPerFrameUpdate(); - - prematchPeriod(); - - thread openMainMenu(); - - if ( isDefined( game["promod_timeout_called"] ) && game["promod_timeout_called"] ) - { - thread promod\timeout::main(); - return; - } - - if ( isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"] ) - { - thread disableBombsites(); - thread promod\readyup::main(); - return; - } - - if ( ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" || getDvarInt( "promod_allow_strattime" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] ) && level.gametype == "sd" ) - promod\strattime::main(); - - if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) - { - thread disableBombsites(); - thread promod\stratmode::main(); - setDvar( "g_deadChat", 1 ); - SetClientNameMode( "auto_change" ); - setGameEndTime( 0 ); - return; - } - else if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" ) - setDvar( "g_deadChat", 0 ); - - if ( isDefined( level.timeout_over ) && !level.timeout_over ) - return; - - if ( isDefined(game["PROMOD_KNIFEROUND"]) && game["PROMOD_KNIFEROUND"] ) - { - thread disableBombsites(); - - if(game["PROMOD_MATCH_MODE"] != "pub") - { - level.timeLimitOverride = true; - setGameEndTime( 0 ); - } - } - - level notify("prematch_over"); - level notify("header_destroy"); - level.timerStopped = false; - - if ( isDefined( level.scorebot ) && level.scorebot ) - { - if ( isDefined(game["PROMOD_KNIFEROUND"]) && game["PROMOD_KNIFEROUND"] ) - game["promod_scorebot_ticker_buffer"] += "knife_round"; - else - { - sb_text = ""; - - if ( !game["roundsplayed"] && !game["promod_in_timeout"] ) - sb_text = "1st_half_started"; - else if ( isDefined( level.roundswitch ) && level.roundswitch > 0 && game["roundsplayed"] % level.roundswitch == 0 && !game["promod_in_timeout"] ) - sb_text = "2nd_half_started"; - else if ( game["promod_in_timeout"] ) - sb_text = "match_resumed"; - else - sb_text = "round_start"; - - game["promod_scorebot_ticker_buffer"] += "" + sb_text + "" + ( game["roundsplayed"] + 1 ); - } - } - - game["promod_in_timeout"] = 0; - - if ( !isDefined( game["PROMOD_KNIFEROUND"] ) || !game["PROMOD_KNIFEROUND"] || game["PROMOD_MATCH_MODE"] == "pub" ) - thread timeLimitClock(); - - thread gracePeriod(); -} - -header() -{ - if ( isDefined( game["state"] ) && game["state"] == "postgame" ) - wait 0.75; - - promod_ver = newHudElem(); - promod_ver.x = -7; - promod_ver.y = 35; - promod_ver.horzAlign = "right"; - promod_ver.vertAlign = "top"; - promod_ver.alignX = "right"; - promod_ver.alignY = "middle"; - promod_ver.fontScale = 1.4; - promod_ver.hidewheninmenu = true; - promod_ver.color = (0.8, 1, 1); - promod_ver setText( game["PROMOD_VERSION"] ); - - promod_mode = newHudElem(); - promod_mode.x = -7; - promod_mode.y = 50; - promod_mode.horzAlign = "right"; - promod_mode.vertAlign = "top"; - promod_mode.alignX = "right"; - promod_mode.alignY = "middle"; - promod_mode.fontScale = 1.4; - promod_mode.hidewheninmenu = true; - promod_mode.color = (1,1,0); - promod_mode setText( game["PROMOD_MODE_HUD"] ); - - level waittill( "header_destroy" ); - - if ( isDefined( promod_ver ) ) - promod_ver destroy(); - - if ( isDefined( promod_mode ) ) - promod_mode destroy(); -} - -disableBombsites() -{ - if ( level.gametype == "sd" && isDefined( level.bombZones ) ) - for ( j = 0; j < level.bombZones.size; j++ ) - level.bombZones[j] maps\mp\gametypes\_gameobjects::disableObject(); -} - -prematchPeriod() -{ - level endon( "game_ended" ); - - if ( level.prematchPeriod > 0 && isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "match" && game["PROMOD_MATCH_MODE"] != "strat" ) - { - if ( getDvarInt( "promod_allow_strattime" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] && level.gametype == "sd" ) - matchStartTimerSkip(); - else - matchStartTimer(); - } - else - matchStartTimerSkip(); - - level.inPrematchPeriod = false; - - for ( i = 0; i < level.players.size; i++ ) - { - level.players[i] freezeControls( false ); - level.players[i] enableWeapons(); - } -} - -gracePeriod() -{ - level endon("game_ended"); - - wait level.gracePeriod; - - level notify ( "grace_period_ending" ); - wait 0.05; - - level.inGracePeriod = false; - - if ( !isDefined( game["state"] ) || game["state"] != "playing" ) - return; - - if ( level.numLives ) - { - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - if ( !player.hasSpawned && player.sessionteam != "spectator" && !isAlive( player ) ) - player.statusicon = "hud_status_dead"; - } - } - - level thread updateTeamStatus(); -} - -TimeUntilWaveSpawn( minimumWait ) -{ - earliestSpawnTime = gettime() + minimumWait * 1000; - - lastWaveTime = level.lastWave[self.pers["team"]]; - waveDelay = level.waveDelay[self.pers["team"]] * 1000; - - numWavesPassedEarliestSpawnTime = (earliestSpawnTime - lastWaveTime) / waveDelay; - - numWaves = ceil( numWavesPassedEarliestSpawnTime ); - - timeOfSpawn = lastWaveTime + numWaves * waveDelay; - - if ( isdefined( self.waveSpawnIndex ) ) - timeOfSpawn += 50 * self.waveSpawnIndex; - - return (timeOfSpawn - gettime()) / 1000; -} - -TimeUntilSpawn() -{ - if ( ( level.inGracePeriod && !self.hasSpawned ) || ( isDefined( level.rdyup ) && level.rdyup ) || ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) ) - return 0; - - respawnDelay = 0; - if ( self.hasSpawned ) - { - result = self [[level.onRespawnDelay]](); - if ( isDefined( result ) ) - respawnDelay = result; - else - respawnDelay = getDvarInt( "scr_" + level.gameType + "_playerrespawndelay" ); - } - - waveBased = (getDvarInt( "scr_" + level.gameType + "_waverespawndelay" ) > 0); - - if ( waveBased ) - return self TimeUntilWaveSpawn( respawnDelay ); - - return respawnDelay; -} - -maySpawn() -{ - if ( ( isDefined( level.rdyup ) && level.rdyup ) || ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) ) - return true; - - if ( level.inOvertime ) - return false; - - if ( level.numLives ) - { - if ( level.teamBased ) - gameHasStarted = ( level.everExisted[ "axis" ] && level.everExisted[ "allies" ] ); - else - gameHasStarted = (level.maxPlayerCount > 1); - - if ( gameHasStarted && ( !self.pers["lives"] || ( !level.inGracePeriod && !self.hasSpawned ) ) ) - return false; - } - return true; -} - -spawnClient( timeAlreadyPassed ) -{ - if ( !self maySpawn() ) - { - shouldShowRespawnMessage = true; - if ( ( level.roundLimit > 1 && game["roundsplayed"] >= (level.roundLimit - 1) ) || ( level.scoreLimit > 1 && level.teambased && game["teamScores"]["allies"] >= level.scoreLimit - 1 && game["teamScores"]["axis"] >= level.scoreLimit - 1 ) ) - shouldShowRespawnMessage = false; - - if ( shouldShowRespawnMessage ) - { - setLowerMessage( game["strings"]["spawn_next_round"] ); - self thread removeSpawnMessageShortly(); - } - self thread [[level.spawnSpectator]]( self.origin, self.angles ); - return; - } - - if ( self.waitingToSpawn ) - return; - - self.waitingToSpawn = true; - - self waitAndSpawnClient( timeAlreadyPassed ); - - if ( isdefined( self ) ) - self.waitingToSpawn = false; -} - -waitAndSpawnClient( timeAlreadyPassed ) -{ - self endon ( "disconnect" ); - self endon ( "end_respawn" ); - self endon ( "game_ended" ); - - if ( !isdefined( timeAlreadyPassed ) ) - timeAlreadyPassed = 0; - - spawnedAsSpectator = false; - - if ( !isdefined( self.waveSpawnIndex ) && isdefined( level.wavePlayerSpawnIndex[self.team] ) ) - { - self.waveSpawnIndex = level.wavePlayerSpawnIndex[self.team]; - level.wavePlayerSpawnIndex[self.team]++; - } - - timeUntilSpawn = TimeUntilSpawn(); - if ( timeUntilSpawn > timeAlreadyPassed ) - { - timeUntilSpawn -= timeAlreadyPassed; - timeAlreadyPassed = 0; - } - else - { - timeAlreadyPassed -= timeUntilSpawn; - timeUntilSpawn = 0; - } - - if ( timeUntilSpawn > 0 ) - { - setLowerMessage( game["strings"]["waiting_to_spawn"], timeUntilSpawn ); - - if ( !spawnedAsSpectator ) - self thread respawn_asSpectator( self.origin + (0, 0, 60), self.angles ); - spawnedAsSpectator = true; - - self waitForTimeOrNotify( timeUntilSpawn, "force_spawn" ); - } - - waveBased = (getDvarInt( "scr_" + level.gameType + "_waverespawndelay" ) > 0); - if ( !maps\mp\gametypes\_tweakables::getTweakableValue( "player", "forcerespawn" ) && self.hasSpawned && !waveBased ) - { - setLowerMessage( game["strings"]["press_to_spawn"] ); - - if ( !spawnedAsSpectator ) - self thread respawn_asSpectator( self.origin + (0, 0, 60), self.angles ); - spawnedAsSpectator = true; - - self waitRespawnButton(); - } - - self.waitingToSpawn = false; - - self clearLowerMessage(); - - self.waveSpawnIndex = undefined; - - self thread [[level.spawnPlayer]](); -} - -waitForTimeOrNotify( time, notifyname ) -{ - self endon("disconnect"); - self endon( notifyname ); - wait time; -} - -removeSpawnMessageShortly() -{ - self endon("disconnect"); - - waittillframeend; - - self endon("end_respawn"); - - wait 2; - - self clearLowerMessage( 2 ); -} - -Callback_StartGameType() -{ - level.prematchPeriod = 0; - - level.intermission = false; - game["state"] = "playing"; - - if ( !isDefined( game["gamestarted"] ) ) - { - if ( !isDefined( game["allies"] ) ) - game["allies"] = "marines"; - if ( !isDefined( game["axis"] ) ) - game["axis"] = "opfor"; - if ( !isDefined( game["attackers"] ) ) - game["attackers"] = "allies"; - if ( !isDefined( game["defenders"] ) ) - game["defenders"] = "axis"; - - if ( !isDefined( game["state"] ) ) - game["state"] = "playing"; - - precacheStatusIcon("hud_status_dead"); - precacheStatusIcon("hud_status_connecting"); - precacheStatusIcon("compassping_friendlyfiring_mp"); - precacheStatusIcon("compassping_enemy"); - - precacheRumble( "damage_heavy" ); - - precacheShader( "white" ); - precacheShader( "black" ); - - makeDvarServerInfo( "scr_allies", "usmc" ); - makeDvarServerInfo( "scr_axis", "arab" ); - - game["strings"]["press_to_spawn"] = &"PLATFORM_PRESS_TO_SPAWN"; - if ( level.teamBased ) - { - game["strings"]["waiting_for_teams"] = &"MP_WAITING_FOR_TEAMS"; - game["strings"]["opponent_forfeiting_in"] = &"MP_OPPONENT_FORFEITING_IN"; - } - else - { - game["strings"]["waiting_for_teams"] = &"MP_WAITING_FOR_PLAYERS"; - game["strings"]["opponent_forfeiting_in"] = &"MP_OPPONENT_FORFEITING_IN"; - } - - game["strings"]["match_starting_in"] = &"MP_MATCH_STARTING_IN"; - game["strings"]["spawn_next_round"] = &"MP_SPAWN_NEXT_ROUND"; - game["strings"]["waiting_to_spawn"] = &"MP_WAITING_TO_SPAWN"; - game["strings"]["match_starting"] = &"MP_MATCH_STARTING"; - game["strings"]["change_class"] = &"MP_CHANGE_CLASS_NEXT_SPAWN"; - - game["strings"]["tie"] = &"MP_MATCH_TIE"; - game["strings"]["round_draw"] = &"MP_ROUND_DRAW"; - - game["strings"]["enemies_eliminated"] = &"MP_ENEMIES_ELIMINATED"; - game["strings"]["score_limit_reached"] = &"MP_SCORE_LIMIT_REACHED"; - game["strings"]["round_limit_reached"] = &"MP_ROUND_LIMIT_REACHED"; - game["strings"]["time_limit_reached"] = &"MP_TIME_LIMIT_REACHED"; - game["strings"]["players_forfeited"] = &"MP_PLAYERS_FORFEITED"; - - if( game["attackers"] == "allies" && game["defenders"] == "axis" ) - { - game["strings"]["allies_name"] = "Attack"; - game["strings"]["axis_name"] = "Defence"; - game["strings"]["allies_eliminated"] = "Attack eliminated"; - game["strings"]["axis_eliminated"] = "Defence eliminated"; - game["strings"]["allies_forfeited"] = "Attack forfeited"; - game["strings"]["axis_forfeited"] = "Defence forfeited"; - } - else - { - game["strings"]["allies_name"] = "Defence"; - game["strings"]["axis_name"] = "Attack"; - game["strings"]["allies_eliminated"] = "Defence eliminated"; - game["strings"]["axis_eliminated"] = "Attack eliminated"; - game["strings"]["allies_forfeited"] = "Defence forfeited"; - game["strings"]["axis_forfeited"] = "Attack forfeited"; - } - - switch ( game["allies"] ) - { - case "sas": - game["strings"]["allies_win"] = &"MP_SAS_WIN_MATCH"; - game["strings"]["allies_win_round"] = &"MP_SAS_WIN_ROUND"; - game["strings"]["allies_mission_accomplished"] = &"MP_SAS_MISSION_ACCOMPLISHED"; - - game["icons"]["allies"] = "faction_128_sas"; - game["colors"]["allies"] = (0.6,0.64,0.69); - game["voice"]["allies"] = "UK_1mc_"; - setDvar( "scr_allies", "sas" ); - break; - - default: - game["strings"]["allies_win"] = &"MP_MARINES_WIN_MATCH"; - game["strings"]["allies_win_round"] = &"MP_MARINES_WIN_ROUND"; - game["strings"]["allies_mission_accomplished"] = &"MP_MARINES_MISSION_ACCOMPLISHED"; - - game["icons"]["allies"] = "faction_128_usmc"; - game["colors"]["allies"] = (0.6,0.64,0.69); - game["voice"]["allies"] = "US_1mc_"; - setDvar( "scr_allies", "usmc" ); - break; - } - switch ( game["axis"] ) - { - case "russian": - game["strings"]["axis_win"] = &"MP_SPETSNAZ_WIN_MATCH"; - game["strings"]["axis_win_round"] = &"MP_SPETSNAZ_WIN_ROUND"; - game["strings"]["axis_mission_accomplished"] = &"MP_SPETSNAZ_MISSION_ACCOMPLISHED"; - - game["icons"]["axis"] = "faction_128_ussr"; - game["colors"]["axis"] = (0.52,0.28,0.28); - game["voice"]["axis"] = "RU_1mc_"; - setDvar( "scr_axis", "ussr" ); - break; - - default: - game["strings"]["axis_win"] = &"MP_OPFOR_WIN_MATCH"; - game["strings"]["axis_win_round"] = &"MP_OPFOR_WIN_ROUND"; - game["strings"]["axis_mission_accomplished"] = &"MP_OPFOR_MISSION_ACCOMPLISHED"; - - game["icons"]["axis"] = "faction_128_arab"; - game["colors"]["axis"] = (0.65,0.57,0.41); - game["voice"]["axis"] = "AB_1mc_"; - setDvar( "scr_axis", "arab" ); - break; - } - - [[level.onPrecacheGameType]](); - - game["gamestarted"] = true; - - game["teamScores"]["allies"] = game["SCORES_ATTACK"]; - game["teamScores"]["axis"] = game["SCORES_DEFENCE"]; - - level.prematchPeriod = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "matchstarttime" ); - - thread promod\setvariables::main(); - - if ( !isDefined( game["promod_scorebot_ticker_buffer"] ) ) - { - setDvar( "promod_scorebot_ticker_num", 0 ); - game["promod_scorebot_ticker_buffer"] = 0; - } - - game["promod_scorebot_ticker_buffer"] += "map" + getDvar("mapname") + "" + level.gametype; - } - - if ( !isdefined( game["timepassed"] ) ) - game["timepassed"] = 0; - - if ( !isdefined( game["roundsplayed"] ) ) - game["roundsplayed"] = game["SCORES_ATTACK"] + game["SCORES_DEFENCE"]; - - if ( !isDefined( game["promod_do_readyup"] ) ) - game["promod_do_readyup"] = false; - - if ( (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" || getDvarInt( "promod_allow_readyup" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"]) && ( !game["roundsplayed"] && !game["promod_first_readyup_done"] || ( game["SCORES_ATTACK"] > 0 || game["SCORES_DEFENCE"] > 0 ) ) ) - game["promod_do_readyup"] = true; - - game["SCORES_ATTACK"] = 0; - game["SCORES_DEFENCE"] = 0; - - level.gameEnded = false; - level.teamSpawnPoints["axis"] = []; - level.teamSpawnPoints["allies"] = []; - - level.objIDStart = 0; - level.forcedEnd = false; - - level.useStartSpawns = true; - - thread maps\mp\gametypes\_promod::init(); - thread maps\mp\gametypes\_rank::init(); - thread maps\mp\gametypes\_menus::init(); - thread maps\mp\gametypes\_hud::init(); - thread maps\mp\gametypes\_serversettings::init(); - thread maps\mp\gametypes\_clientids::init(); - thread maps\mp\gametypes\_teams::init(); - thread maps\mp\gametypes\_weapons::init(); - thread maps\mp\gametypes\_scoreboard::init(); - thread maps\mp\gametypes\_killcam::init(); - thread maps\mp\gametypes\_shellshock::init(); - thread maps\mp\gametypes\_damagefeedback::init(); - thread maps\mp\gametypes\_healthoverlay::init(); - thread maps\mp\gametypes\_spectating::init(); - thread maps\mp\gametypes\_objpoints::init(); - thread maps\mp\gametypes\_gameobjects::init(); - thread maps\mp\gametypes\_spawnlogic::init(); - thread maps\mp\gametypes\_hud_message::init(); - thread maps\mp\gametypes\_quickmessages::init(); - - thread promod\scorebot::main(); - - stringNames = getArrayKeys( game["strings"] ); - for ( i = 0; i < stringNames.size; i++ ) - if(!isstring(game["strings"][stringNames[i]])) - precacheString( game["strings"][stringNames[i]] ); - - level.maxPlayerCount = 0; - level.playerCount["allies"] = 0; - level.playerCount["axis"] = 0; - level.aliveCount["allies"] = 0; - level.aliveCount["axis"] = 0; - level.playerLives["allies"] = 0; - level.playerLives["axis"] = 0; - level.lastAliveCount["allies"] = 0; - level.lastAliveCount["axis"] = 0; - level.everExisted["allies"] = false; - level.everExisted["axis"] = false; - level.waveDelay["allies"] = 0; - level.waveDelay["axis"] = 0; - level.lastWave["allies"] = 0; - level.lastWave["axis"] = 0; - level.wavePlayerSpawnIndex["allies"] = 0; - level.wavePlayerSpawnIndex["axis"] = 0; - level.alivePlayers["allies"] = []; - level.alivePlayers["axis"] = []; - level.activePlayers = []; - - makeDvarServerInfo( "ui_scorelimit" ); - makeDvarServerInfo( "ui_timelimit" ); - - waveDelay = getDvarInt( "scr_" + level.gameType + "_waverespawndelay" ); - if ( waveDelay ) - { - level.waveDelay["allies"] = waveDelay; - level.waveDelay["axis"] = waveDelay; - level.lastWave["allies"] = 0; - level.lastWave["axis"] = 0; - - level thread [[level.waveSpawnTimer]](); - } - - level.inPrematchPeriod = true; - - level.gracePeriod = 4; - - level.inGracePeriod = true; - - level.roundEndDelay = 4; - level.halftimeRoundEndDelay = 3; - - updateTeamScores( "axis", "allies" ); - - if ( !level.teamBased ) - thread initialDMScoreUpdate(); - - [[level.onStartGameType]](); - - thread promod\messagecenter::main(); - - deletePlacedEntity("misc_turret"); - - thread deletePickups(); - - thread startGame(); - - level thread updateGameTypeDvars(); -} - -deletePickups() -{ - pickups = getentarray( "oldschool_pickup", "targetname" ); - - for ( i = 0; i < pickups.size; i++ ) - { - if ( isdefined( pickups[i].target ) ) - getent( pickups[i].target, "targetname" ) delete(); - pickups[i] delete(); - } -} - -initialDMScoreUpdate() -{ - wait 0.2; - numSent = 0; - for(;;) - { - didAny = false; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - if ( !isdefined( player ) ) - continue; - - if ( isdefined( player.updatedDMScores ) ) - continue; - - player.updatedDMScores = true; - player updateDMScores(); - - didAny = true; - wait 0.5; - } - - if ( !didAny ) - wait 3; - } -} - -checkRoundSwitch() -{ - if ( !level.roundSwitch || level.gametype == "dm" ) - return false; - - if ( game["roundsplayed"] % level.roundswitch == 0 ) - { - if ( ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" || getDvarInt( "promod_allow_readyup" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] ) && game["promod_first_readyup_done"] ) - game["promod_do_readyup"] = true; - - game["promod_timeout_called"] = false; - - [[level.onRoundSwitch]](); - return true; - } - - return false; -} - -getGameScore( team ) -{ - return game["teamScores"][team]; -} - -Callback_PlayerConnect() -{ - thread notifyConnecting(); - - self.statusicon = "hud_status_connecting"; - self waittill( "begin" ); - waittillframeend; - - if ( !isDefined( self ) ) - return; - - level notify( "connected", self ); - - if ( !isDefined( level.rdyup ) || !level.rdyup ) - self.statusicon = ""; - - if( !isdefined( self.pers["score"] ) ) - iPrintLn( &"MP_CONNECTED", self.name ); - - logPrint("J;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.name + "\n"); - - if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" ) - self setClientDvar( "promod_hud_website", "" ); - else - self setClientDvar( "promod_hud_website", getDvar( "promod_hud_website" ) ); - - self setClientDvars("cg_hudGrenadeIconMaxRangeFrag", int(!level.hardcoreMode)*250, - "cg_drawcrosshair", int(!level.hardcoreMode), - "cg_drawSpectatorMessages", 1, - "ui_hud_hardcore", level.hardcoreMode, - "fx_drawClouds", 0, - "ui_showmenuonly", "", - "self_ready", "" ); - - self initPersStat( "score" ); - self.score = self.pers["score"]; - - self initPersStat( "deaths" ); - self.deaths = self getPersStat( "deaths" ); - - self initPersStat( "suicides" ); - self.suicides = self getPersStat( "suicides" ); - - self initPersStat( "kills" ); - self.kills = self getPersStat( "kills" ); - - self initPersStat( "headshots" ); - self.headshots = self getPersStat( "headshots" ); - - self initPersStat( "assists" ); - self.assists = self getPersStat( "assists" ); - - self initPersStat( "teamkills" ); - - self.lastGrenadeSuicideTime = -1; - - self.teamkillsThisRound = 0; - - self.pers["lives"] = level.numLives; - - self.hasSpawned = false; - self.waitingToSpawn = false; - self.deathCount = 0; - - self.wasAliveAtMatchStart = false; - - self thread maps\mp\_flashgrenades::monitorFlash(); - - level.players[level.players.size] = self; - - if(isDefined(self.pers["shoutnum"])) - level.shoutbars[self.pers["shoutnum"]] = self; - - if ( level.teambased ) - self updateScores(); - - level endon( "game_ended" ); - - if ( isDefined( self.pers["team"] ) ) - self.team = self.pers["team"]; - - if ( isDefined( self.pers["class"] ) ) - self.class = self.pers["class"]; - - if ( !isDefined( self.pers["team"] ) ) - { - self.pers["team"] = "none"; - self.team = "none"; - self.sessionstate = "dead"; - - self setClientDvar("loadout_curclass", ""); - - self updateObjectiveText(); - - [[level.spawnSpectator]](); - - self thread promod\client::use_config(); - self thread maps\mp\gametypes\_promod::initClassLoadouts(); - - thread maps\mp\gametypes\_promod::updateClassAvailability( "allies" ); - thread maps\mp\gametypes\_promod::updateClassAvailability( "axis" ); - - self setclientdvar( "g_scriptMainMenu", game["menu_team"] ); - self openMenu( game["menu_team"] ); - - if ( level.teamBased ) - { - self.sessionteam = self.pers["team"]; - - if ( ( !isDefined( level.rdyup ) || !level.rdyup ) && !isAlive( self ) ) - self.statusicon = "hud_status_dead"; - - self thread maps\mp\gametypes\_spectating::setSpectatePermissions(); - } - } - else if ( self.pers["team"] == "spectator" ) - { - self setclientdvar( "g_scriptMainMenu", game["menu_shoutcast"] ); - self.sessionteam = "spectator"; - self.sessionstate = "spectator"; - [[level.spawnSpectator]](); - } - else - { - self.sessionteam = self.pers["team"]; - self.sessionstate = "dead"; - - self updateObjectiveText(); - - [[level.spawnSpectator]](); - - if ( isValidClass( self.pers["class"] ) ) - self thread [[level.spawnClient]](); - - self thread maps\mp\gametypes\_spectating::setSpectatePermissions(); - } -} - -Callback_PlayerDisconnect() -{ - self removePlayerOnDisconnect(); - - [[level.onPlayerDisconnect]](); - - logPrint("Q;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.name + "\n"); - - for ( i = 0; i < level.players.size; i++ ) - { - if ( level.players[i] == self ) - { - while ( i < level.players.size-1 ) - { - level.players[i] = level.players[i+1]; - i++; - } - level.players[i] = undefined; - break; - } - } - - if ( level.gameEnded ) - self removeDisconnectedPlayerFromPlacement(); - - self promod\shoutcast::removePlayer(); - self maps\mp\gametypes\_weapons::printStats(); - - if ( isDefined( self.pers["team"] ) && ( self.pers["team"] == "allies" || self.pers["team"] == "axis" ) ) - thread maps\mp\gametypes\_promod::updateClassAvailability( self.pers["team"] ); - - level thread updateTeamStatus(); -} - -removePlayerOnDisconnect() -{ - for ( i = 0; i < level.players.size; i++ ) - { - if ( level.players[i] == self ) - { - while ( i < level.players.size-1 ) - { - level.players[i] = level.players[i+1]; - i++; - } - level.players[i] = undefined; - break; - } - } -} - -isHeadShot( sWeapon, sHitLoc, sMeansOfDeath ) -{ - return (sHitLoc == "head" || sHitLoc == "helmet") && sMeansOfDeath != "MOD_MELEE" && sMeansOfDeath != "MOD_IMPACT"; -} - -Callback_PlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ) -{ - if ( !isDefined( level.rdyup ) ) - level.rdyup = false; - - if ( getDvarInt("g_knockback") != 1000 || isDefined( game["state"] ) && game["state"] == "postgame" || self.sessionteam == "spectator" || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" && isDefined( self.flying ) && self.flying || isDefined( level.bombDefused ) && level.bombDefused || isDefined( level.bombExploded ) && level.bombExploded && self.pers["team"] == game["attackers"] || isDefined( game["PROMOD_KNIFEROUND"] ) && game["PROMOD_KNIFEROUND"] && sMeansOfDeath != "MOD_MELEE" && sMeansOfDeath != "MOD_FALLING" && !level.rdyup ) - return; - - if( isDefined(eAttacker) && isPlayer(eAttacker) && isPlayer(self) && eAttacker.sessionstate == "playing" && isDefined(iDamage) && isDefined( sMeansOfDeath ) && sMeansOfDeath != "" && (sMeansOfDeath == "MOD_RIFLE_BULLET" || sMeansOfDeath == "MOD_PISTOL_BULLET")) - iDamage = int(iDamage*1.4); - - self.iDFlags = iDFlags; - self.iDFlagsTime = getTime(); - - if ( level.rdyup && isDefined( eAttacker ) && isPlayer( eAttacker ) && eAttacker != self ) - { - if ( !isDefined( eAttacker.ruptally ) || eAttacker.ruptally < 0 ) - { - eAttacker.ruptally = 0; - eAttacker setclientdvar("self_kills", 0); - } - - if ( !isDefined( self.ruptally ) ) - self.ruptally = -1; - - if ( self.ruptally < 0 ) - return; - } - - // bit arrays are interesting, huh? - if( !isDefined( vDir ) ) - iDFlags |= level.iDFLAGS_NO_KNOCKBACK; - - // Not sure exactly what happens here, but ok... - if ( level.teamBased && self.health == self.maxhealth || !isDefined( self.attackers ) ) - { - self.attackers = []; - self.attackerData = []; - } - - if ( isHeadShot( sWeapon, sHitLoc, sMeansOfDeath ) ) - sMeansOfDeath = "MOD_HEAD_SHOT"; - - if ( sWeapon == "none" && isDefined( eInflictor ) ) - { - if ( isDefined( eInflictor.targetname ) && eInflictor.targetname == "explodable_barrel" ) - sWeapon = "explodable_barrel"; - else if ( isDefined( eInflictor.destructible_type ) && isSubStr( eInflictor.destructible_type, "vehicle_" ) ) - sWeapon = "destructible_car"; - } - - friendly = false; - - // if level.iDFLAGS_NO_PROTECTION element in iDflags is not 0, this will happen. NO_PROTECTION == 0 could be god-mode - if( !(iDFlags & level.iDFLAGS_NO_PROTECTION) ) - { - if ( (isSubStr( sMeansOfDeath, "MOD_GRENADE" ) || isSubStr( sMeansOfDeath, "MOD_EXPLOSIVE" ) || isSubStr( sMeansOfDeath, "MOD_PROJECTILE" )) && isDefined( eInflictor ) && game["PROMOD_MATCH_MODE"] != "match" && eInflictor.classname == "grenade" && ( (self.lastSpawnTime + 3500) > getTime() && distance( eInflictor.origin, self.lastSpawnPoint.origin ) < 250 || !isDefined ( eAttacker.pers["class"] ) ) ) - return; - - if ( level.teamBased && isPlayer( eAttacker ) && self != eAttacker && self.pers["team"] == eAttacker.pers["team"] ) - { - if ( !level.friendlyfire ) - return; - if ( level.friendlyfire == 1 || (level.friendlyfire == 2 || level.friendlyfire == 3) && isAlive( eAttacker ) ) - { - if( (level.friendlyfire & 2) > 0 ) // 2 or 3 - iDamage = int(iDamage * 0.5); - - if ( iDamage < 1 ) - iDamage = 1; - - if( (level.friendlyfire & 1) > 0 ) // 1 or 3 - { - if(!level.rdyup) - { - if(!isDefined(self.pers["friendly_damage_taken"])) - self.pers["friendly_damage_taken"] = 0; - if(!isDefined(eAttacker.pers["friendly_damage_done"])) - eAttacker.pers["friendly_damage_done"] = 0; - - self.pers["friendly_damage_taken"] += min(iDamage, self.health); - eAttacker.pers["friendly_damage_done"] += min(iDamage, self.health); - } - - self finishPlayerDamageWrapper(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime); - } - if( (level.friendlyfire & 2) > 0 ) // 2 or 3 - eAttacker finishPlayerDamageWrapper(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime); - } - friendly = true; - } - else - { - if(iDamage < 1) - iDamage = 1; - - if ( level.teamBased && isDefined( eAttacker ) && isPlayer( eAttacker ) ) - { - if ( !isdefined( self.attackerData[eAttacker.clientid] ) ) - { - self.attackers[ self.attackers.size ] = eAttacker; - self.attackerData[eAttacker.clientid] = false; - } - if ( isDefined(sWeapon) && isSubStr("m1014_mp winchester1200_mp mp5_mp uzi_mp ak74u_mp ak47_mp m14_mp mp44_mp g3_mp g36c_mp m16_mp m4_mp m40a3_mp remington700_mp", sWeapon) ) - self.attackerData[eAttacker.clientid] = true; - } - - if( !level.rdyup && isDefined(eAttacker) && isPlayer(eAttacker) && eAttacker != self ) - { - if(!isDefined(eAttacker.pers["hits"])) - eAttacker.pers["hits"] = 0; - - eAttacker.pers["hits"]++; - - if(!isDefined(self.pers["damage_taken"])) - self.pers["damage_taken"] = 0; - if(!isDefined(eAttacker.pers["damage_done"])) - eAttacker.pers["damage_done"] = 0; - - self.pers["damage_taken"] += min(iDamage, self.health); - eAttacker.pers["damage_done"] += min(iDamage, self.health); - } - - self finishPlayerDamageWrapper(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime); - } - - if ( isDefined(eAttacker) && eAttacker != self ) - { - if ( sMeansOfDeath == "MOD_HEAD_SHOT" ) - thread dinkNoise(eAttacker, self); - - if ( iDamage > 0 && ( getDvarInt( "scr_enable_hiticon" ) == 1 || getDvarInt( "scr_enable_hiticon" ) == 2 && !(iDFlags & level.iDFLAGS_PENETRATION) ) ) - eAttacker thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback( false ); - } - - self.hasDoneCombat = true; - } - - if ( isdefined( eAttacker ) && eAttacker != self && !friendly ) - level.useStartSpawns = false; - - if( level.rdyup || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) - { - if ( isDefined( eAttacker ) && isPlayer( eAttacker ) && isDefined( sHitLoc ) ) - { - if ( eAttacker != self ) - { - if ( sHitLoc == "none" ) - { - eAttacker iprintln("You inflicted ^2" + iDamage + "^7 damage to " + self.name); - self iprintln(eAttacker.name + " inflicted ^1" + iDamage + "^7 damage to you"); - } - else - { - damagestring = ""; - if( isSubStr( sHitLoc, "torso_upper" ) ) - damagestring = "upper torso"; - else if( isSubStr( sHitLoc, "torso_lower" ) ) - damagestring = "lower torso"; - else if( isSubStr( sHitLoc, "leg_upper" ) ) - damagestring = "upper leg"; - else if( isSubStr( sHitLoc, "leg_lower" ) ) - damagestring = "lower leg"; - else if( isSubStr( sHitLoc, "arm_upper" ) ) - damagestring = "upper arm"; - else if( isSubStr( sHitLoc, "arm_lower" ) ) - damagestring = "lower arm"; - else if( isSubStr( sHitLoc, "head" ) || isSubStr( sHitLoc, "helmet" ) ) - damagestring = "head"; - else if( isSubStr( sHitLoc, "neck" ) ) - damagestring = "neck"; - else if( isSubStr( sHitLoc, "foot" ) ) - damagestring = "foot"; - else if( isSubStr( sHitLoc, "hand" ) ) - damagestring = "hand"; - - metrestring = int(distance(self.origin, eAttacker.origin) * 2.54) / 100; - - eAttacker iprintln("You inflicted ^2" + iDamage + "^7 damage at a distance of ^2" + metrestring + "^7 metres in the ^2" + damagestring + "^7 to " + self.name); - self iprintln(eAttacker.name + " inflicted ^1" + iDamage + "^7 damage at a distance of ^1" + metrestring + "^7 metres in the ^1" + damagestring + "^7 to you"); - } - } - else if ( sHitLoc == "none" ) - self iprintln("You inflicted ^1" + iDamage + "^7 damage to yourself"); - } - else if ( sMeansOfDeath == "MOD_FALLING" ) - self iprintln("You inflicted ^1" + iDamage + "^7 damage to yourself"); - } - - // Logging into file - if( self.sessionstate != "dead" ) - { - lpattackerteam = ""; - - if( isPlayer( eAttacker ) ) - { - lpattacknum = eAttacker getEntityNumber(); - lpattackGuid = eAttacker getGuid(); - lpattackname = eAttacker.name; - lpattackerteam = eAttacker.pers["team"]; - } - else - { - lpattacknum = -1; - lpattackGuid = ""; - lpattackname = ""; - lpattackerteam = "world"; - } - - logPrint("D;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.pers["team"] + ";" + self.name + ";" + lpattackGuid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n"); - } - - // Shoutcaster healthbar update - self promod\shoutcast::updatePlayer(); -} - -dinkNoise( player1, player2 ) -{ - player1 playLocalSound("bullet_impact_headshot_2"); - player2 playLocalSound("bullet_impact_headshot_2"); -} - -finishPlayerDamageWrapper( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ) -{ - self finishPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ); - self damageShellshockAndRumble( eInflictor, sWeapon, sMeansOfDeath, iDamage ); -} - -damageShellshockAndRumble( eInflictor, sWeapon, sMeansOfDeath, iDamage ) -{ - self thread maps\mp\gametypes\_weapons::onWeaponDamage( eInflictor, sWeapon, sMeansOfDeath, iDamage ); - self PlayRumbleOnEntity( "damage_heavy" ); -} - -Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration) -{ - if ( !isDefined( level.rdyup ) ) - level.rdyup = false; - - self endon( "spawned" ); - self notify( "killed_player" ); - - if ( self.sessionteam == "spectator" || ( isDefined( game["state"] ) && game["state"] == "postgame" ) ) - return; - - prof_begin( "PlayerKilled pre constants" ); - - if( isHeadShot( sWeapon, sHitLoc, sMeansOfDeath ) ) - sMeansOfDeath = "MOD_HEAD_SHOT"; - - if( attacker.classname == "script_vehicle" && isDefined( attacker.owner ) ) - attacker = attacker.owner; - - if( level.teamBased && isDefined( attacker.pers ) && self.team == attacker.team && sMeansOfDeath == "MOD_GRENADE" && !level.friendlyfire ) - obituary(self, self, sWeapon, sMeansOfDeath); - else - obituary(self, attacker, sWeapon, sMeansOfDeath); - - if ( !isDefined( game["promod_do_readyup"] ) || !game["promod_do_readyup"] ) - self maps\mp\gametypes\_weapons::dropWeaponForDeath( attacker ); - - self.sessionstate = "dead"; - - if ( !isDefined( level.rdyup ) || !level.rdyup ) - self.statusicon = "hud_status_dead"; - - if (level.rdyup && isDefined( attacker.pers ) && ( attacker != self ) ) - { - attacker.ruptally++; - attacker setclientdvar("self_kills", attacker.ruptally); - } - - if (!level.rdyup) - { - self.deathCount++; - - if( isDefined( attacker.pers ) && !isDefined( self.switching_teams ) ) - { - self incPersStat( "deaths", 1 ); - self.deaths = self getPersStat( "deaths" ); - } - } - - lpattackGuid = ""; - lpattackname = ""; - lpattackerteam = ""; - lpattacknum = -1; - - prof_end( "PlayerKilled pre constants" ); - - if( isPlayer( attacker ) ) - { - lpattackGuid = attacker getGuid(); - lpattackname = attacker.name; - - if ( attacker == self ) - { - doKillcam = false; - - if ( isDefined( self.switching_teams ) ) - { - if ( !level.teamBased && ((self.leaving_team == "allies" && self.joining_team == "axis") || (self.leaving_team == "axis" && self.joining_team == "allies")) ) - { - playerCounts = self maps\mp\gametypes\_teams::CountPlayers(); - playerCounts[self.leaving_team]--; - playerCounts[self.joining_team]++; - - if( !level.rdyup && (playerCounts[self.joining_team] - playerCounts[self.leaving_team]) > 1 ) - { - self thread [[level.onXPEvent]]( "suicide" ); - self incPersStat( "suicides", 1 ); - self.suicides = self getPersStat( "suicides" ); - } - } - } - else - { - if (!level.rdyup) - { - self thread [[level.onXPEvent]]( "suicide" ); - self incPersStat( "suicides", 1 ); - self.suicides = self getPersStat( "suicides" ); - - scoreSub = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "suicidepointloss" ); - _setPlayerScore( self, _getPlayerScore( self ) - scoreSub ); - } - if ( sMeansOfDeath == "MOD_SUICIDE" && sHitLoc == "none" && self.throwingGrenade ) - self.lastGrenadeSuicideTime = gettime(); - } - } - else - { - prof_begin( "PlayerKilled attacker" ); - - lpattacknum = attacker getEntityNumber(); - - doKillcam = true; - - if ( level.teamBased && self.pers["team"] == attacker.pers["team"] ) - { - if ( sMeansOfDeath != "MOD_GRENADE" && level.friendlyfire && !level.rdyup ) - { - attacker thread [[level.onXPEvent]]( "teamkill" ); - - attacker.pers["teamkills"] += 1; - - if ( maps\mp\gametypes\_tweakables::getTweakableValue( "team", "teamkillpointloss" ) ) - { - scoreSub = maps\mp\gametypes\_rank::getScoreInfoValue( "kill" ); - _setPlayerScore( attacker, _getPlayerScore( attacker ) - scoreSub ); - } - } - } - else - { - prof_begin( "pks1" ); - - if ( sMeansOfDeath == "MOD_HEAD_SHOT" ) - { - attacker incPersStat( "headshots", 1 ); - attacker.headshots = attacker getPersStat( "headshots" ); - value = maps\mp\gametypes\_rank::getScoreInfoValue( "headshot" ); - attacker thread maps\mp\gametypes\_rank::giveRankXP( "headshot", value ); - attacker playLocalSound( "bullet_impact_headshot_2" ); - } - else - { - value = maps\mp\gametypes\_rank::getScoreInfoValue( "kill" ); - attacker thread maps\mp\gametypes\_rank::giveRankXP( "kill", value ); - } - - if (!level.rdyup) - { - attacker incPersStat( "kills", 1 ); - attacker.kills = attacker getPersStat( "kills" ); - - givePlayerScore( "kill", attacker, self ); - - giveTeamScore( "kill", attacker.pers["team"], attacker, self ); - - scoreSub = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "deathpointloss" ); - _setPlayerScore( self, _getPlayerScore( self ) - scoreSub ); - } - - prof_end( "pks1" ); - - if ( !level.rdyup && level.teamBased ) - { - prof_begin( "PlayerKilled assists" ); - - if ( isdefined( self.attackers ) ) - { - for ( j = 0; j < self.attackers.size; j++ ) - { - player = self.attackers[j]; - - if ( !isDefined( player ) || player == attacker ) - continue; - - player thread processAssist( self ); - } - self.attackers = []; - } - - prof_end( "PlayerKilled assists" ); - } - } - - prof_end( "PlayerKilled attacker" ); - } - } - else - { - doKillcam = false; - killedByEnemy = false; - - lpattacknum = -1; - lpattackguid = ""; - lpattackname = ""; - lpattackerteam = "world"; - - if ( isDefined( attacker ) && isDefined( attacker.team ) && (attacker.team == "axis" || attacker.team == "allies") && attacker.team != self.pers["team"] ) - { - killedByEnemy = true; - if ( level.teamBased ) - giveTeamScore( "kill", attacker.team, attacker, self ); - } - } - - self promod\shoutcast::updatePlayer(); - - self.switching_teams = undefined; - self.joining_team = undefined; - self.leaving_team = undefined; - - prof_begin( "PlayerKilled post constants" ); - - if ( sMeansOfDeath == "MOD_MELEE" ) - scWeapon = "knife_mp"; - else - scWeapon = sWeapon; - - sHeadshot = int(sMeansOfDeath == "MOD_HEAD_SHOT"); - - if ( isDefined( level.scorebot ) && level.scorebot && !level.rdyup ) - game["promod_scorebot_ticker_buffer"] += "kill" + lpattackname + "" + scWeapon + "" + self.name + "" + sHeadshot; - - logPrint( "K;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.pers["team"] + ";" + self.name + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n" ); - - level thread updateTeamStatus(); - - self clonePlayer( deathAnimDuration ); - - self thread [[level.onPlayerKilled]](eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration); - - if ( sWeapon == "none" ) - doKillcam = false; - - killcamentity = -1; - - self.deathTime = getTime(); - - wait 0.25; - - self.cancelKillcam = false; - self thread cancelKillCamOnUse(); - - if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" && level.gametype == "sd" ) - postDeathDelay = waitForTimeOrNotifies( 0.75 ); - else - postDeathDelay = waitForTimeOrNotifies( 1.75 ); - - self notify ( "death_delay_finished" ); - - if ( !isDefined( game["state"] ) || game["state"] != "playing" ) - return; - - respawnTimerStartTime = gettime(); - - if ( !self.cancelKillcam && doKillcam && level.killcam ) - { - livesLeft = !(level.numLives && !self.pers["lives"]); - timeUntilSpawn = TimeUntilSpawn(); - willRespawnImmediately = livesLeft && (timeUntilSpawn <= 0); - - self maps\mp\gametypes\_killcam::killcam( lpattacknum, killcamentity, sWeapon, postDeathDelay, psOffsetTime, willRespawnImmediately, timeUntilRoundEnd(), [], attacker ); - } - - prof_end( "PlayerKilled post constants" ); - - if ( !isDefined( game["state"] ) || game["state"] != "playing" ) - { - self.sessionstate = "dead"; - self.spectatorclient = -1; - self.killcamentity = -1; - self.archivetime = 0; - self.psoffsettime = 0; - return; - } - - if ( isValidClass( self.class ) ) - { - timePassed = (gettime() - respawnTimerStartTime) / 1000; - self thread [[level.spawnClient]]( timePassed ); - } -} - -cancelKillCamOnUse() -{ - self endon ( "death_delay_finished" ); - self endon ( "disconnect" ); - level endon ( "game_ended" ); - - for(;;) - { - if ( !self UseButtonPressed() ) - { - wait 0.05; - continue; - } - - buttonTime = 0; - while( self UseButtonPressed() ) - { - buttonTime += 0.05 ; - wait 0.05; - } - - if ( buttonTime >= 0.5 ) - continue; - - buttonTime = 0; - - while ( !self UseButtonPressed() && buttonTime < 0.5 ) - { - buttonTime += 0.05 ; - wait 0.05; - } - - if ( buttonTime >= 0.5 ) - continue; - - self.cancelKillcam = true; - return; - } -} - -waitForTimeOrNotifies( desiredDelay ) -{ - startedWaiting = getTime(); - - waitedTime = (getTime() - startedWaiting)/1000; - - if ( waitedTime < desiredDelay ) - { - wait desiredDelay - waitedTime; - return desiredDelay; - } - else - return waitedTime; -} - -processAssist( killedplayer ) -{ - self endon("disconnect"); - killedplayer endon("disconnect"); - - wait 0.05; - WaitTillSlowProcessAllowed(); - - if ( ( self.pers["team"] != "axis" && self.pers["team"] != "allies" ) || ( self.pers["team"] == killedplayer.pers["team"] ) ) - return; - - self thread [[level.onXPEvent]]( "assist" ); - self incPersStat( "assists", 1 ); - self.assists = self getPersStat( "assists" ); - - givePlayerScore( "assist", self, killedplayer ); - - if ( !isDefined( level.rdyup ) ) - level.rdyup = false; - - if ( isDefined( level.scorebot ) && level.scorebot && !level.rdyup ) - game["promod_scorebot_ticker_buffer"] += "assist_by" + self.name; -} - -Callback_PlayerLastStand() -{ -} - -setSpawnVariables() -{ - resetTimeout(); - - self StopShellshock(); - self StopRumble( "damage_heavy" ); -} - -notifyConnecting() -{ - self setRank( 0, 1 ); - - waittillframeend; - - if( isDefined( self ) ) - level notify( "connecting", self ); -} - -setObjectiveText( team, text ) -{ - game["strings"]["objective_"+team] = text; - precacheString( text ); -} - -setObjectiveScoreText( team, text ) -{ - game["strings"]["objective_score_"+team] = text; - precacheString( text ); -} - -setObjectiveHintText( team, text ) -{ - game["strings"]["objective_hint_"+team] = text; - precacheString( text ); -} - -getObjectiveText( team ) -{ - if ( !isDefined( game["strings"]["objective_"+team] ) ) - return ""; - - return game["strings"]["objective_"+team]; -} - -getObjectiveScoreText( team ) -{ - if ( !isDefined( game["strings"]["objective_score_"+team] ) ) - return ""; - - return game["strings"]["objective_score_"+team]; -} - -getObjectiveHintText( team ) -{ - if ( !isDefined( game["strings"]["objective_hint_"+team] ) ) - return ""; - - return game["strings"]["objective_hint_"+team]; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\_utility; +#include maps\mp\gametypes\_hud_util; + +init() +{ + if ( !isDefined( level.tweakablesInitialized ) ) + maps\mp\gametypes\_tweakables::init(); + + level.splitscreen = 0; + level.xenon = 0; + level.ps3 = 0; + level.console = 0; + level.oldschool = 0; + + level.onlineGame = false; + level.rankedMatch = false; + + level.script = toLower( getDvar( "mapname" ) ); + level.gametype = toLower( getDvar( "g_gametype" ) ); + + checkRestartMap(); + + level.otherTeam["allies"] = "axis"; + level.otherTeam["axis"] = "allies"; + + level.teamBased = false; + + level.overrideTeamScore = false; + level.overridePlayerScore = false; + level.displayHalftimeText = false; + level.displayRoundEndText = true; + + level.endGameOnScoreLimit = true; + level.endGameOnTimeLimit = true; + + precacheString( &"MP_HALFTIME" ); + precacheString( &"MP_OVERTIME" ); + precacheString( &"MP_ROUNDEND" ); + precacheString( &"MP_INTERMISSION" ); + precacheString( &"MP_SWITCHING_SIDES" ); + precacheString( &"MP_CONNECTED" ); + + level.halftimeType = "halftime"; + level.halftimeSubCaption = &"MP_SWITCHING_SIDES"; + + level.lastStatusTime = 0; + level.wasWinning = "none"; + + level.lastSlowProcessFrame = 0; + + level.placement["allies"] = []; + level.placement["axis"] = []; + level.placement["all"] = []; + + level.postRoundTime = 5; + + level.inOvertime = false; + + level.players = []; + + level.shoutbars = []; + + registerDvars(); + + precacheModel( "tag_origin" ); + + precacheShader( "faction_128_usmc" ); + precacheShader( "faction_128_arab" ); + precacheShader( "faction_128_ussr" ); + precacheShader( "faction_128_sas" ); + + if ( !isDefined( game["tiebreaker"] ) ) + game["tiebreaker"] = false; + + if ( !isDefined( game["gamestarted"] ) ) + promod\modes::main(); + + level.hardcoreMode = getDvarInt( "scr_hardcore" ); + level.roundswitch = getDvarInt( "scr_" + level.gametype + "_roundswitch" ); + level.roundLimit = getDvarInt( "scr_" + level.gametype + "_roundlimit" ); + level.timelimit = getDvarFloat( "scr_" + level.gametype + "_timelimit" ); + level.scoreLimit = getDvarInt( "scr_" + level.gametype + "_scorelimit" ); + level.numLives = getDvarInt( "scr_" + level.gametype + "_numlives" ); + + setDvar( "ui_scorelimit", level.scoreLimit ); + setDvar( "ui_timelimit", level.timelimit ); + + if ( level.hardcoreMode ) + setDvar( "scr_player_maxhealth", 30 ); + else + setDvar( "scr_player_maxhealth", 100 ); +} + +registerDvars() +{ + setDvar( "ui_bomb_timer", 0 ); + makeDvarServerInfo( "ui_bomb_timer" ); +} + +SetupCallbacks() +{ + level.spawnPlayer = ::spawnPlayer; + level.spawnClient = ::spawnClient; + level.spawnSpectator = ::spawnSpectator; + level.spawnIntermission = ::spawnIntermission; + level.onPlayerScore = ::default_onPlayerScore; + level.onTeamScore = ::default_onTeamScore; + + level.onXPEvent = ::onXPEvent; + level.waveSpawnTimer = ::waveSpawnTimer; + + level.onSpawnPlayer = ::blank; + level.onSpawnSpectator = ::default_onSpawnSpectator; + level.onSpawnIntermission = ::default_onSpawnIntermission; + level.onRespawnDelay = ::blank; + + level.onTimeLimit = ::default_onTimeLimit; + level.onScoreLimit = ::default_onScoreLimit; + level.onDeadEvent = ::default_onDeadEvent; + level.onOneLeftEvent = ::default_onOneLeftEvent; + level.giveTeamScore = ::giveTeamScore; + level.givePlayerScore = ::givePlayerScore; + + level._setTeamScore = ::_setTeamScore; + level._setPlayerScore = ::_setPlayerScore; + + level._getTeamScore = ::_getTeamScore; + level._getPlayerScore = ::_getPlayerScore; + + level.onPrecacheGametype = ::blank; + level.onStartGameType = ::blank; + level.onPlayerConnect = ::blank; + level.onPlayerDisconnect = ::blank; + level.onPlayerDamage = ::blank; + level.onPlayerKilled = ::blank; + + level.onEndGame = ::blank; + + level.autoassign = ::menuAutoAssign; + level.spectator = ::menuSpectator; + level.killspec = ::menuKillspec; + level.allies = ::menuAllies; + level.axis = ::menuAxis; +} + +WaitTillSlowProcessAllowed() +{ + while ( level.lastSlowProcessFrame == gettime() ) + wait 0.05; + + level.lastSlowProcessFrame = gettime(); +} + +blank( arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 ) +{ +} + +default_onDeadEvent( team ) +{ + if ( team == "allies" ) + { + iPrintLn( game["strings"]["allies_eliminated"] ); + makeDvarServerInfo( "ui_text_endreason", game["strings"]["allies_eliminated"] ); + setDvar( "ui_text_endreason", game["strings"]["allies_eliminated"] ); + + thread endGame( "axis", game["strings"]["allies_eliminated"] ); + } + else if ( team == "axis" ) + { + iPrintLn( game["strings"]["axis_eliminated"] ); + makeDvarServerInfo( "ui_text_endreason", game["strings"]["axis_eliminated"] ); + setDvar( "ui_text_endreason", game["strings"]["axis_eliminated"] ); + + thread endGame( "allies", game["strings"]["axis_eliminated"] ); + } + else + { + makeDvarServerInfo( "ui_text_endreason", game["strings"]["tie"] ); + setDvar( "ui_text_endreason", game["strings"]["tie"] ); + + if ( level.teamBased ) + thread endGame( "tie", game["strings"]["tie"] ); + else + thread endGame( undefined, game["strings"]["tie"] ); + } +} + +default_onOneLeftEvent( team ) +{ + if ( !level.teamBased ) + { + winner = getHighestScoringPlayer(); + thread endGame( winner, &"MP_ENEMIES_ELIMINATED" ); + } +} + +default_onTimeLimit() +{ + winner = undefined; + + if ( level.teamBased ) + { + if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] ) + winner = "tie"; + else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] ) + winner = "axis"; + else + winner = "allies"; + } + else + winner = getHighestScoringPlayer(); + + makeDvarServerInfo( "ui_text_endreason", game["strings"]["time_limit_reached"] ); + setDvar( "ui_text_endreason", game["strings"]["time_limit_reached"] ); + + thread endGame( winner, game["strings"]["time_limit_reached"] ); +} + +default_onScoreLimit() +{ + if ( !level.endGameOnScoreLimit ) + return; + + winner = undefined; + + if ( level.teamBased ) + { + if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] ) + winner = "tie"; + else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] ) + winner = "axis"; + else + winner = "allies"; + } + else + winner = getHighestScoringPlayer(); + + makeDvarServerInfo( "ui_text_endreason", game["strings"]["score_limit_reached"] ); + setDvar( "ui_text_endreason", game["strings"]["score_limit_reached"] ); + + level.forcedEnd = true; + thread endGame( winner, game["strings"]["score_limit_reached"] ); +} + +updateGameEvents() +{ + if ( ( !level.numLives && !level.inOverTime ) || level.inGracePeriod ) + return; + + if ( level.teamBased ) + { + if ( level.everExisted["allies"] && !level.aliveCount["allies"] && level.everExisted["axis"] && !level.aliveCount["axis"] && !level.playerLives["allies"] && !level.playerLives["axis"] ) + { + [[level.onDeadEvent]]( "all" ); + return; + } + + if ( level.everExisted["allies"] && !level.aliveCount["allies"] && !level.playerLives["allies"] ) + { + [[level.onDeadEvent]]( "allies" ); + return; + } + + if ( level.everExisted["axis"] && !level.aliveCount["axis"] && !level.playerLives["axis"] ) + { + [[level.onDeadEvent]]( "axis" ); + return; + } + + if ( level.lastAliveCount["allies"] > 1 && level.aliveCount["allies"] == 1 && level.playerLives["allies"] == 1 ) + { + [[level.onOneLeftEvent]]( "allies" ); + return; + } + + if ( level.lastAliveCount["axis"] > 1 && level.aliveCount["axis"] == 1 && level.playerLives["axis"] == 1 ) + { + [[level.onOneLeftEvent]]( "axis" ); + return; + } + } + else + { + if ( (!level.aliveCount["allies"] && !level.aliveCount["axis"]) && (!level.playerLives["allies"] && !level.playerLives["axis"]) && level.maxPlayerCount > 1 ) + { + [[level.onDeadEvent]]( "all" ); + return; + } + + if ( (level.aliveCount["allies"] + level.aliveCount["axis"] == 1) && (level.playerLives["allies"] + level.playerLives["axis"] == 1) && level.maxPlayerCount > 1 ) + { + [[level.onOneLeftEvent]]( "all" ); + return; + } + } +} + +matchStartTimer() +{ + visionSetNaked( "mpIntro", 0 ); + + matchStartText = createServerFontString( "objective", 1.5 ); + matchStartText setPoint( "CENTER", "CENTER", 0, -60 ); + matchStartText.sort = 1001; + matchStartText setText( game["strings"]["match_starting_in"] ); + matchStartText.foreground = false; + matchStartText.hidewheninmenu = true; + + matchStartTimer = createServerTimer( "objective", 1.4 ); + matchStartTimer setPoint( "CENTER", "CENTER", 0, -45 ); + matchStartTimer setTimer( level.prematchPeriod ); + matchStartTimer.sort = 1001; + matchStartTimer.foreground = false; + matchStartTimer.hideWhenInMenu = true; + + wait level.prematchPeriod; + + visionSetNaked( getDvar( "mapname" ), 1 ); + + matchStartText destroyElem(); + matchStartTimer destroyElem(); +} + +matchStartTimerSkip() +{ + visionSetNaked( getDvar( "mapname" ), 0 ); +} + +spawnPlayer() +{ + prof_begin( "spawnPlayer_preUTS" ); + + self endon("disconnect"); + self endon("joined_spectators"); + self endon("joined_team"); + self notify("spawned"); + self notify("end_respawn"); + + self setSpawnVariables(); + + if ( isDefined( self.proxBar ) ) + self.proxBar destroyElem(); + if ( isDefined( self.proxBarText ) ) + self.proxBarText destroyElem(); + if ( isDefined( self.xpBar ) ) + self.xpBar destroyElem(); + + if ( level.teamBased ) + self.sessionteam = self.team; + else + self.sessionteam = "none"; + + hadSpawned = self.hasSpawned; + + self.sessionstate = "playing"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + + self.maxhealth = maps\mp\gametypes\_tweakables::getTweakableValue( "player", "maxhealth" ); + self.health = self.maxhealth; + self.hasSpawned = true; + self.spawnTime = getTime(); + + if ( self.pers["lives"] ) + self.pers["lives"]--; + + if ( !self.wasAliveAtMatchStart ) + { + acceptablePassedTime = 20; + if ( level.timeLimit > 0 && acceptablePassedTime < level.timeLimit * 15 ) + acceptablePassedTime = level.timeLimit * 15; + + if ( level.inGracePeriod || getTimePassed() < acceptablePassedTime * 1000 ) + self.wasAliveAtMatchStart = true; + } + + [[level.onSpawnPlayer]](); + + prof_end( "spawnPlayer_preUTS" ); + + level thread updateTeamStatus(); + + prof_begin( "spawnPlayer_postUTS" ); + + if ( isDefined( game["PROMOD_KNIFEROUND"] ) && game["PROMOD_KNIFEROUND"] && isDefined( level.strat_over ) && level.strat_over ) + self thread removeWeapons(); + else + self maps\mp\gametypes\_class::giveLoadout( self.team, self.class ); + + if ( level.inPrematchPeriod && game["promod_do_readyup"] ) + self freezeControls( true ); + else if ( level.inPrematchPeriod ) + { + self freezeControls( true ); + + team = self.pers["team"]; + thread maps\mp\gametypes\_hud_message::oldNotifyMessage( game["strings"][team + "_name"], undefined, game["icons"][team], game["colors"][team] ); + } + else + { + self freezeControls( false ); + self enableWeapons(); + if ( !hadSpawned && isDefined( game["state"] ) && game["state"] == "playing" ) + { + team = self.team; + thread maps\mp\gametypes\_hud_message::oldNotifyMessage( game["strings"][team + "_name"], undefined, game["icons"][team], game["colors"][team] ); + } + } + + if ( isDefined( level.strat_over ) && !level.strat_over ) + { + self allowsprint(false); + self allowjump(false); + self setMoveSpeedScale( 0 ); + } + + prof_end( "spawnPlayer_postUTS" ); + + wait 0.1; + + self notify( "spawned_player" ); + + if ( isDefined( game["state"] ) && game["state"] == "postgame" ) + self freezePlayerForRoundEnd(); + + waittillframeend; + + if ( !isDefined( level.rdyup ) || !level.rdyup ) + self.statusicon = ""; + + self promod\shoutcast::updatePlayer(); +} + +removeWeapons() +{ + self endon("disconnect"); + + self maps\mp\gametypes\_class::giveLoadout( self.team, self.class ); + + wait 0.05; + + attachment = ""; + if(self.pers[self.pers["class"]]["loadout_secondary_attachment"] == "silencer") + attachment = "_silencer"; + + sidearmWeapon = self.pers[self.pers["class"]]["loadout_secondary"]+attachment+"_mp"; + + self takeAllWeapons(); + self giveWeapon(sidearmWeapon, 0); + self setweaponammoclip(sidearmWeapon, 0); + self setweaponammostock(sidearmWeapon, 0); + self switchtoWeapon(sidearmWeapon); + self setclientdvar("g_compassShowEnemies", 1); +} + +spawnSpectator( origin, angles ) +{ + self notify("spawned"); + self notify("end_respawn"); + in_spawnSpectator( origin, angles ); +} + +respawn_asSpectator( origin, angles ) +{ + in_spawnSpectator( origin, angles ); +} + +in_spawnSpectator( origin, angles ) +{ + self setSpawnVariables(); + + if ( self.pers["team"] == "spectator" ) + self clearLowerMessage(); + + self.sessionstate = "spectator"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + + if(self.pers["team"] == "spectator") + { + if ( !isDefined( level.rdyup ) || !level.rdyup ) + self.statusicon = ""; + + if ( !isDefined( self.freelook ) ) + self thread monitorFreeLook(); + } + + maps\mp\gametypes\_spectating::setSpectatePermissions(); + + [[level.onSpawnSpectator]]( origin, angles ); + + level thread updateTeamStatus(); +} + +getPlayerFromClientNum( clientNum ) +{ + if ( clientNum < 0 ) + return undefined; + + for ( i = 0; i < level.players.size; i++ ) + { + if ( level.players[i] getEntityNumber() == clientNum ) + return level.players[i]; + } + return undefined; +} + +waveSpawnTimer() +{ + level endon( "game_ended" ); + + while ( isDefined( game["state"] ) && game["state"] == "playing" ) + { + time = getTime(); + + if ( time - level.lastWave["allies"] > (level.waveDelay["allies"] * 1000) ) + { + level notify ( "wave_respawn_allies" ); + level.lastWave["allies"] = time; + level.wavePlayerSpawnIndex["allies"] = 0; + } + + if ( time - level.lastWave["axis"] > (level.waveDelay["axis"] * 1000) ) + { + level notify ( "wave_respawn_axis" ); + level.lastWave["axis"] = time; + level.wavePlayerSpawnIndex["axis"] = 0; + } + + wait 0.05; + } +} + +freeLook( condition ) +{ + if ( getDvarInt( "scr_game_spectatetype" ) == 1 ) + { + if ( condition ) + wait 0.1; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + if ( player.pers["team"] == "spectator" ) + { + if ( !isDefined( player.freelook ) || !player.freelook ) + player allowSpectateTeam( "freelook", condition ); + } + } + } +} + +monitorFreeLook() +{ + self.freelook = true; + + self thread checkADS(); + self thread checkAttack(); + self thread checkMelee(); +} + +checkMelee() +{ + self endon("disconnect"); + self endon("joined_team"); + + waittillframeend; + + for(;;) + { + if ( self meleeButtonPressed() ) + { + self notify ( "stop_follow" ); + self.freelook = true; + self.spectatorlast = undefined; + } + + while ( self meleeButtonPressed() ) + { + wait 0.05; + continue; + } + + wait 0.05; + } +} + +checkAttack() +{ + self endon("disconnect"); + self endon("joined_team"); + + waittillframeend; + + for(;;) + { + if ( self attackButtonPressed() ) + { + for ( i = 0; i < level.players.size; i++ ) + { + players = level.players[i]; + + if ( isAlive( players ) && ( ( players.pers["team"] == "allies" || players.pers["team"] == "axis" ) ) ) + { + self notify ( "stop_follow" ); + self.freelook = false; + break; + } + } + } + + while ( self attackButtonPressed() ) + { + wait 0.05; + continue; + } + + wait 0.05; + } +} + +checkADS() +{ + self endon("disconnect"); + self endon("joined_team"); + + waittillframeend; + + for(;;) + { + while( !self adsButtonPressed() ) + wait 0.05; + + for ( i = 0; i < level.players.size; i++ ) + { + players = level.players[i]; + + if ( isAlive( players ) && ( ( players.pers["team"] == "allies" || players.pers["team"] == "axis" ) ) ) + { + self notify ( "stop_follow" ); + self.freelook = false; + break; + } + } + + while( self adsButtonPressed() ) + wait 0.05; + } +} + +default_onSpawnSpectator( origin, angles) +{ + thread freeLook( false ); + + if( isDefined( origin ) && isDefined( angles ) ) + { + self spawn(origin, angles); + thread freeLook( true ); + return; + } + + spawnpointname = "mp_global_intermission"; + spawnpoints = getentarray(spawnpointname, "classname"); + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(spawnpoints); + + self spawn(spawnpoint.origin, spawnpoint.angles); + + thread freeLook( true ); +} + +spawnIntermission() +{ + self notify("spawned"); + self notify("end_respawn"); + + self setSpawnVariables(); + + self clearLowerMessage(); + + self freezeControls( false ); + + self.sessionstate = "intermission"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + + [[level.onSpawnIntermission]](); + self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 ); +} + +default_onSpawnIntermission() +{ + spawnpointname = "mp_global_intermission"; + spawnpoints = getentarray(spawnpointname, "classname"); + spawnpoint = spawnPoints[0]; + + if( isDefined( spawnpoint ) ) + self spawn( spawnpoint.origin, spawnpoint.angles ); +} + +timeUntilRoundEnd() +{ + if ( level.gameEnded ) + { + timePassed = (getTime() - level.gameEndTime) / 1000; + timeRemaining = level.postRoundTime - timePassed; + + if ( timeRemaining < 0 ) + return 0; + + return timeRemaining; + } + + if ( level.inOvertime || level.timeLimit <= 0 || !isDefined( level.startTime ) ) + return undefined; + + timePassed = (getTime() - level.startTime)/1000; + timeRemaining = (level.timeLimit * 60) - timePassed; + + return timeRemaining + level.postRoundTime; +} + +freezePlayerForRoundEnd() +{ + self clearLowerMessage(); +} + +freeGameplayHudElems() +{ + if ( isDefined( self.lowerMessage ) ) + self.lowerMessage destroyElem(); + if ( isDefined( self.lowerTimer ) ) + self.lowerTimer destroyElem(); + + if ( isDefined( self.proxBar ) ) + self.proxBar destroyElem(); + if ( isDefined( self.proxBarText ) ) + self.proxBarText destroyElem(); +} + +endGame( winner, endReasonText ) +{ + if ( isDefined( game["state"] ) && game["state"] == "postgame" ) + return; + + if ( isDefined( level.onEndGame ) ) + [[level.onEndGame]]( winner ); + + if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" ) + setDvar( "g_deadChat", 1 ); + + game["state"] = "postgame"; + level.gameEndTime = getTime(); + level.gameEnded = true; + level.inGracePeriod = false; + + level notify ( "game_ended" ); + + setGameEndTime( 0 ); + + updatePlacement(); + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + player freezePlayerForRoundEnd(); + player thread roundEndDoF( 4 ); + player freeGameplayHudElems(); + } + + if ( isDefined( level.scorebot ) && level.scorebot ) + { + winners = ""; + if ( winner == "allies" ) + { + if ( game["attackers"] == "allies" && game["defenders"] == "axis" ) + winners = "attack"; + else + winners = "defence"; + } + else if ( winner == "axis" ) + { + if ( game["attackers"] == "allies" && game["defenders"] == "axis" ) + winners = "defence"; + else + winners = "attack"; + } + else + winners = "tie"; + + attack_score = game["teamScores"]["allies"]; + defence_score = game["teamScores"]["axis"]; + + game["promod_scorebot_ticker_buffer"] += "round_winner" + winners + "" + attack_score + "" + defence_score; + } + + if ( (level.roundLimit > 1 || (!level.roundLimit && level.scoreLimit != 1)) && !level.forcedEnd ) + { + if ( level.displayRoundEndText ) + { + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + if ( level.teamBased ) + player thread maps\mp\gametypes\_hud_message::teamOutcomeNotify( winner, true, endReasonText, 0.75 ); + else + player thread maps\mp\gametypes\_hud_message::outcomeNotify( winner, endReasonText, 0.75 ); + + if ( isDefined( player.pers["team"] ) && player.pers["team"] == "spectator" ) + continue; + + player setClientDvars( + "ui_hud_hardcore", 1, + "cg_drawSpectatorMessages", 0, + "g_compassShowEnemies", 0 ); + } + + level thread header(); + + if ( hitRoundLimit() || hitScoreLimit() ) + roundEndWait( level.roundEndDelay / 2 ); + else + roundEndWait( level.roundEndDelay ); + } + + game["roundsplayed"]++; + roundSwitching = false; + if ( !hitRoundLimit() && !hitScoreLimit() ) + roundSwitching = checkRoundSwitch(); + + if ( roundSwitching && level.teamBased ) + { + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + if( player.pers["team"] == "spectator" ) + player setClientDvars( + "shout_scores_attack", game["teamScores"][game["defenders"]], + "shout_scores_defence", game["teamScores"][game["attackers"]] ); + + if ( !isDefined( player.pers["team"] ) || player.pers["team"] == "spectator" ) + { + player [[level.spawnIntermission]](); + player closeMenu(); + player closeInGameMenu(); + continue; + } + + switchType = level.halftimeType; + if ( switchType == "halftime" ) + { + if ( level.roundLimit ) + { + if ( (game["roundsplayed"] * 2) == level.roundLimit ) + switchType = "halftime"; + else + switchType = "intermission"; + } + else if ( level.scoreLimit ) + { + if ( game["roundsplayed"] == (level.scoreLimit - 1) ) + switchType = "halftime"; + else + switchType = "intermission"; + } + else + switchType = "intermission"; + } + + player thread maps\mp\gametypes\_hud_message::teamOutcomeNotify( switchType, true, level.halftimeSubCaption ); + player setClientDvar( "ui_hud_hardcore", 1 ); + + if ( player.pers["team"] == "axis" ) + { + player.switching = true; + player menuAllies(); + } + else if( player.pers["team"] == "allies" ) + { + player.switching = true; + player menuAxis(); + } + } + + old_score = game["teamScores"]["allies"]; + game["teamScores"]["allies"] = game["teamScores"]["axis"]; + game["teamScores"]["axis"] = old_score; + + game["allies_timeout_called"] = 0; + game["axis_timeout_called"] = 0; + + thread maps\mp\gametypes\_promod::updateClassAvailability( "allies" ); + thread maps\mp\gametypes\_promod::updateClassAvailability( "axis" ); + + roundEndWait( level.halftimeRoundEndDelay ); + } + else if ( !hitRoundLimit() && !hitScoreLimit() && !level.displayRoundEndText && level.teamBased ) + { + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + if ( !isDefined( player.pers["team"] ) || player.pers["team"] == "spectator" ) + { + player [[level.spawnIntermission]](); + player closeMenu(); + player closeInGameMenu(); + continue; + } + + switchType = level.halftimeType; + if ( switchType == "halftime" ) + { + if ( level.roundLimit ) + { + if ( (game["roundsplayed"] * 2) == level.roundLimit ) + switchType = "halftime"; + else + switchType = "roundend"; + } + else if ( level.scoreLimit ) + { + if ( game["roundsplayed"] == (level.scoreLimit - 1) ) + switchType = "halftime"; + else + switchTime = "roundend"; + } + } + + player thread maps\mp\gametypes\_hud_message::teamOutcomeNotify( switchType, true, endReasonText ); + player setClientDvar( "ui_hud_hardcore", 1 ); + } + + roundEndWait( level.halftimeRoundEndDelay ); + } + + if ( isDefined(game["PROMOD_KNIFEROUND"]) && game["PROMOD_KNIFEROUND"] ) + { + if(isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match") + { + game["promod_do_readyup"] = 1; + game["promod_first_readyup_done"] = 0; + for(i=0;i getGameScore( "axis" ) ) + winner = "allies"; + else + winner = "axis"; + + return winner; +} + +roundEndWait( defaultDelay ) +{ + notifiesDone = false; + while ( !notifiesDone ) + { + notifiesDone = true; + for ( i = 0; i < level.players.size; i++ ) + { + players = level.players[i]; + if ( !isDefined( players.doingNotify ) || !players.doingNotify ) + continue; + + notifiesDone = false; + } + wait 0.5; + } + + wait defaultDelay; +} + +roundEndDOF( time ) +{ + self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 ); +} + +getHighestScoringPlayer() +{ + winner = undefined; + tie = false; + + for( i = 0; i < level.players.size; i++ ) + { + players = level.players[i]; + if ( !isDefined( players.score ) || players.score < 1 ) + continue; + + if ( !isDefined( winner ) || players.score > winner.score ) + { + winner = players; + tie = false; + } + else if ( players.score == winner.score ) + tie = true; + } + + if ( tie || !isDefined( winner ) ) + return undefined; + else + return winner; +} + +checkTimeLimit() +{ + if ( isDefined( level.timeLimitOverride ) && level.timeLimitOverride ) + return; + + if ( !isDefined( game["state"] ) || game["state"] != "playing" ) + { + setGameEndTime( 0 ); + return; + } + + if ( level.timeLimit <= 0 ) + { + setGameEndTime( 0 ); + return; + } + + if ( level.inPrematchPeriod ) + { + setGameEndTime( 0 ); + return; + } + + if ( !isdefined( level.startTime ) ) + return; + + timeLeft = getTimeRemaining(); + + setGameEndTime( getTime() + int(timeLeft) ); + + if ( timeLeft > 0 ) + return; + + [[level.onTimeLimit]](); +} + +getTimeRemaining() +{ + return level.timeLimit * 60000 - getTimePassed(); +} + +checkScoreLimit() +{ + if ( ( !isDefined( game["state"] ) || game["state"] != "playing" ) || level.scoreLimit <= 0 || ( level.teamBased && game["teamScores"]["allies"] < level.scoreLimit && game["teamScores"]["axis"] < level.scoreLimit) || ( !level.teamBased && ( !isPlayer( self ) || self.score < level.scoreLimit ) ) ) + return; + + [[level.onScoreLimit]](); +} + +hitRoundLimit() +{ + if( level.roundLimit <= 0 ) + return false; + + return ( game["roundsplayed"] >= level.roundLimit ); +} + +hitScoreLimit() +{ + if( level.scoreLimit <= 0 ) + return false; + + if ( level.teamBased ) + { + if( game["teamScores"]["allies"] >= level.scoreLimit || game["teamScores"]["axis"] >= level.scoreLimit ) + return true; + } + else + { + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + if ( isDefined( player.score ) && player.score >= level.scorelimit ) + return true; + } + } + return false; +} + +updateGameTypeDvars() +{ + level endon ( "game_ended" ); + + while ( isDefined( game["state"] ) && game["state"] == "playing" ) + { + thread checkTimeLimit(); + thread checkScoreLimit(); + + if ( isdefined( level.startTime ) && getTimeRemaining() < 3000 ) + { + wait 0.1; + continue; + } + wait 1; + } +} + +menuAutoAssign() +{ + teams[0] = "allies"; + teams[1] = "axis"; + assignment = teams[randomInt(2)]; + + self closeMenus(); + + if ( level.teamBased ) + { + playerCounts = self maps\mp\gametypes\_teams::CountPlayers(); + + if ( playerCounts["allies"] == playerCounts["axis"] ) + { + if( getTeamScore( "allies" ) == getTeamScore( "axis" ) ) + assignment = teams[randomInt(2)]; + else if ( getTeamScore( "allies" ) < getTeamScore( "axis" ) ) + assignment = "allies"; + else + assignment = "axis"; + } + else if( playerCounts["allies"] < playerCounts["axis"] ) + assignment = "allies"; + else + assignment = "axis"; + + if ( assignment == self.pers["team"] && (self.sessionstate == "playing" || self.sessionstate == "dead") ) + { + self beginClassChoice(); + return; + } + } + + if ( assignment != self.pers["team"] && self.sessionstate == "playing" ) + { + self.switching_teams = true; + self.joining_team = assignment; + self.leaving_team = self.pers["team"]; + self suicide(); + } + + oldTeam = self.pers["team"]; + + self.pers["class"] = undefined; + self.class = undefined; + self.pers["team"] = assignment; + self.team = assignment; + self setClientDvar( "loadout_curclass", "" ); + + if(isDefined(self.pers["shoutnum"])) + self promod\shoutcast::removePlayer(); + + self updateObjectiveText(); + + if ( level.teamBased ) + self.sessionteam = assignment; + else + self.sessionteam = "none"; + + if ( !isDefined( level.rdyup ) || !level.rdyup ) + { + if ( !isAlive( self ) ) + self.statusicon = "hud_status_dead"; + else + self.statusicon = ""; + } + + self notify("joined_team"); + self notify("end_respawn"); + + self.freelook = undefined; + + if( self.pers["team"] == "allies" && oldTeam != self.pers["team"] ) + { + if( game["attackers"] == "allies" && game["defenders"] == "axis" ) + iPrintLN(self.name + " Joined Attack"); + else + iPrintLN(self.name + " Joined Defence"); + } + else if( self.pers["team"] == "axis" && oldTeam != self.pers["team"] ) + { + if( game["attackers"] == "allies" && game["defenders"] == "axis" ) + iPrintLN(self.name + " Joined Defence"); + else + iPrintLN(self.name + " Joined Attack"); + } + + if ( oldTeam != self.pers["team"] && ( oldTeam == "allies" || oldTeam == "axis" ) ) + thread maps\mp\gametypes\_promod::updateClassAvailability( oldTeam ); + + self setClientDvars("g_compassShowEnemies", 0, "cg_scoreboardheight", 435 ); + + self beginClassChoice(); + + self setclientdvar( "g_scriptMainMenu", game[ "menu_class_" + self.pers["team"] ] ); +} + +updateObjectiveText() +{ + if ( self.pers["team"] == "spectator" ) + { + self setClientDvar( "cg_objectiveText", "" ); + return; + } + + if( level.scorelimit > 0 ) + self setclientdvar( "cg_objectiveText", getObjectiveScoreText( self.pers["team"] ), level.scorelimit ); + else + self setclientdvar( "cg_objectiveText", getObjectiveText( self.pers["team"] ) ); +} + +closeMenus() +{ + self closeMenu(); + self closeInGameMenu(); +} + +beginClassChoice() +{ + if ( self.pers["team"] == "axis" || self.pers["team"] == "allies" ) + self openMenu( game[ "menu_changeclass_" + self.pers["team"] ] ); +} + +menuAllies() +{ + if ( self.pers["team"] == "allies" ) + return; + + self closeMenus(); + + if ( !isDefined( self.switching ) ) + self.switching = false; + + if ( self.pers["team"] != "allies" ) + { + if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "match" && level.teamBased && !self.switching && !maps\mp\gametypes\_teams::getJoinTeamPermissions( "allies" ) ) + { + self openMenu(game["menu_team"]); + return; + } + + if ( level.inGracePeriod && (!isdefined(self.hasDoneCombat) || !self.hasDoneCombat) ) + self.hasSpawned = false; + + if( self.sessionstate == "playing" && !self.switching ) + { + self.switching_teams = true; + self.joining_team = "allies"; + self.leaving_team = self.pers["team"]; + self suicide(); + } + + oldTeam = self.pers["team"]; + + if ( self.switching ) + { + self.pers["team"] = "allies"; + self.team = "allies"; + } + else + { + self.pers["class"] = undefined; + self.class = undefined; + self.pers["team"] = "allies"; + self.team = "allies"; + self setClientDvar( "loadout_curclass", "" ); + } + + if(isDefined(self.pers["shoutnum"])) + self promod\shoutcast::removePlayer(); + + self updateObjectiveText(); + + if ( level.teamBased ) + self.sessionteam = "allies"; + else + self.sessionteam = "none"; + + if ( !isDefined( level.rdyup ) || !level.rdyup ) + { + if ( !isAlive( self ) ) + self.statusicon = "hud_status_dead"; + else + self.statusicon = ""; + } + + self setclientdvar("g_scriptMainMenu", game["menu_class_allies"]); + + self notify("joined_team"); + self notify("end_respawn"); + + self.freelook = undefined; + + if( game["attackers"] == "allies" && game["defenders"] == "axis" && !self.switching ) + iprintln(self.name + " Joined Attack"); + else if ( !self.switching ) + iprintln(self.name + " Joined Defence"); + + if ( oldTeam == "axis" ) + thread maps\mp\gametypes\_promod::updateClassAvailability( oldTeam ); + + self setClientDvars("g_compassShowEnemies", 0, "cg_scoreboardheight", 435 ); + } + + if ( !self.switching ) + self beginClassChoice(); + + self.switching = false; +} + +menuAxis() +{ + if ( self.pers["team"] == "axis" ) + return; + + self closeMenus(); + + if ( !isDefined( self.switching ) ) + self.switching = false; + + if ( self.pers["team"] != "axis" ) + { + if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "match" && level.teamBased && !self.switching && !maps\mp\gametypes\_teams::getJoinTeamPermissions( "allies" ) ) + { + self openMenu(game["menu_team"]); + return; + } + + if ( level.inGracePeriod && (!isdefined(self.hasDoneCombat) || !self.hasDoneCombat) ) + self.hasSpawned = false; + + if( self.sessionstate == "playing" && !self.switching ) + { + self.switching_teams = true; + self.joining_team = "axis"; + self.leaving_team = self.pers["team"]; + self suicide(); + } + + oldTeam = self.pers["team"]; + + if ( self.switching ) + { + self.pers["team"] = "axis"; + self.team = "axis"; + } + else + { + self.pers["class"] = undefined; + self.class = undefined; + self.pers["team"] = "axis"; + self.team = "axis"; + self setClientDvar( "loadout_curclass", "" ); + } + + if(isDefined(self.pers["shoutnum"])) + self promod\shoutcast::removePlayer(); + + self updateObjectiveText(); + + if ( level.teamBased ) + self.sessionteam = "axis"; + else + self.sessionteam = "none"; + + if ( !isDefined( level.rdyup ) || !level.rdyup ) + { + if ( !isAlive( self ) ) + self.statusicon = "hud_status_dead"; + else + self.statusicon = ""; + } + + self setclientdvar("g_scriptMainMenu", game["menu_class_axis"]); + + self notify("joined_team"); + self notify("end_respawn"); + + self.freelook = undefined; + + if( game["attackers"] == "allies" && game["defenders"] == "axis" && !self.switching ) + iprintln(self.name + " Joined Defence"); + else if ( !self.switching ) + iprintln(self.name + " Joined Attack"); + + if ( oldTeam == "allies" ) + thread maps\mp\gametypes\_promod::updateClassAvailability( oldTeam ); + + self setClientDvars("g_compassShowEnemies", 0, "cg_scoreboardheight", 435 ); + } + + if ( !self.switching ) + self beginClassChoice(); + + self.switching = false; +} + +menuKillspec() +{ + if ( self.pers["team"] != "axis" && self.pers["team"] != "allies" ) + return; + + self closeMenus(); + + if( self.sessionstate == "playing" ) + self suicide(); + + self.pers["class"] = undefined; + self.class = undefined; + self iprintln("Choose a class to respawn"); + self setClientDvar("loadout_curclass", ""); + self thread [[level.spawnSpectator]]( self.origin, self.angles ); + + thread maps\mp\gametypes\_promod::updateClassAvailability( self.pers["team"] ); + + if(isDefined(self.pers["shoutnum"])) + self promod\shoutcast::removePlayer(); +} + +menuSpectator() +{ + if ( self.pers["team"] == "spectator" ) + return; + + self closeMenus(); + self openMenu(game["menu_shoutcast"]); + + if(self.pers["team"] != "spectator") + { + if(self.sessionstate == "playing") + { + self.switching_teams = true; + self.joining_team = "spectator"; + self.leaving_team = self.pers["team"]; + self suicide(); + } + + oldTeam = self.pers["team"]; + + self.pers["class"] = undefined; + self.class = undefined; + self.pers["team"] = "spectator"; + self.team = "spectator"; + self setClientDvar( "loadout_curclass", "" ); + + if(isDefined(self.pers["shoutnum"])) + self promod\shoutcast::removePlayer(); + + self updateObjectiveText(); + + self.sessionteam = "spectator"; + self thread [[level.spawnSpectator]]( self.origin, self.angles ); + + if( game["attackers"] == "allies" && game["defenders"] == "axis" ) + self setClientDvars( + "shout_attack_name", "Attack", + "shout_defence_name", "Defence" ); + else + self setClientDvars( + "shout_attack_name", "Defence", + "shout_defence_name", "Attack" ); + + self setClientDvars( + "shout_scores_attack", game["teamScores"][game["attackers"]], + "shout_scores_defence", game["teamScores"][game["defenders"]] ); + + self setclientdvar( "g_scriptMainMenu", game["menu_shoutcast"] ); + + self notify("joined_spectators"); + iprintln(self.name + " Joined Shoutcaster"); + + self promod\shoutcast::loadOne(); + + if ( oldTeam == "allies" || oldTeam == "axis" ) + thread maps\mp\gametypes\_promod::updateClassAvailability( oldTeam ); + + self setClientDvars("g_compassShowEnemies", 1, "cg_scoreboardheight", 500 ); + } +} + +removeDisconnectedPlayerFromPlacement() +{ + offset = 0; + numPlayers = level.placement["all"].size; + found = false; + for ( i = 0; i < numPlayers; i++ ) + { + if ( level.placement["all"][i] == self ) + found = true; + + if ( found ) + level.placement["all"][i] = level.placement["all"][ i + 1 ]; + } + if ( !found ) + return; + + level.placement["all"][ numPlayers - 1 ] = undefined; + + updateTeamPlacement(); + + if ( level.teamBased ) + return; + + numPlayers = level.placement["all"].size; + for ( i = 0; i < numPlayers; i++ ) + { + player = level.placement["all"][i]; + player notify( "update_outcome" ); + } +} + +updatePlacement() +{ + prof_begin("updatePlacement"); + + if ( !level.players.size ) + return; + + level.placement["all"] = []; + for ( i = 0; i < level.players.size; i++ ) + { + if ( level.players[i].team == "allies" || level.players[i].team == "axis" ) + level.placement["all"][level.placement["all"].size] = level.players[i]; + } + + placementAll = level.placement["all"]; + + for ( i = 1; i < placementAll.size; i++ ) + { + player = placementAll[i]; + playerScore = player.score; + for ( j = i - 1; j >= 0 && (playerScore > placementAll[j].score || (playerScore == placementAll[j].score && player.deaths < placementAll[j].deaths)); j-- ) + placementAll[j + 1] = placementAll[j]; + placementAll[j + 1] = player; + } + + level.placement["all"] = placementAll; + + updateTeamPlacement(); + + prof_end("updatePlacement"); +} + +updateTeamPlacement() +{ + placement["allies"] = []; + placement["axis"] = []; + placement["spectator"] = []; + + if ( !level.teamBased ) + return; + + placementAll = level.placement["all"]; + placementAllSize = placementAll.size; + + for ( i = 0; i < placementAllSize; i++ ) + { + player = placementAll[i]; + team = player.pers["team"]; + + placement[team][ placement[team].size ] = player; + } + + level.placement["allies"] = placement["allies"]; + level.placement["axis"] = placement["axis"]; +} + +onXPEvent( event ) +{ + self maps\mp\gametypes\_rank::giveRankXP( event ); +} + +givePlayerScore( event, player, victim ) +{ + if ( level.overridePlayerScore ) + return; + + score = player.pers["score"]; + [[level.onPlayerScore]]( event, player, victim ); + + if ( score == player.pers["score"] ) + return; + + player.score = player.pers["score"]; + + if ( !level.teambased ) + thread sendUpdatedDMScores(); + + player notify ( "update_playerscore_hud" ); + player thread checkScoreLimit(); +} + +default_onPlayerScore( event, player, victim ) +{ + score = maps\mp\gametypes\_rank::getScoreInfoValue( event ); + player.pers["score"] += score; +} + +_setPlayerScore( player, score ) +{ + if ( score == player.pers["score"] ) + return; + + player.pers["score"] = score; + player.score = player.pers["score"]; + + player notify ( "update_playerscore_hud" ); + player thread checkScoreLimit(); +} + +_getPlayerScore( player ) +{ + return player.pers["score"]; +} + +giveTeamScore( event, team, player, victim ) +{ + if ( level.overrideTeamScore ) + return; + + teamScore = game["teamScores"][team]; + [[level.onTeamScore]]( event, team, player, victim ); + + if ( teamScore == game["teamScores"][team] ) + return; + + updateTeamScores( team ); + + thread checkScoreLimit(); +} + +_setTeamScore( team, teamScore ) +{ + if ( teamScore == game["teamScores"][team] ) + return; + + game["teamScores"][team] = teamScore; + + updateTeamScores( team ); + + thread checkScoreLimit(); +} + +updateTeamScores( team1, team2 ) +{ + setTeamScore( team1, getGameScore( team1 ) ); + if ( isdefined( team2 ) ) + setTeamScore( team2, getGameScore( team2 ) ); + + if ( level.teambased ) + thread sendUpdatedTeamScores(); +} + +_getTeamScore( team ) +{ + return game["teamScores"][team]; +} + +default_onTeamScore( event, team, player, victim ) +{ + score = maps\mp\gametypes\_rank::getScoreInfoValue( event ); + + otherTeam = level.otherTeam[team]; + + if ( game["teamScores"][team] > game["teamScores"][otherTeam] ) + level.wasWinning = team; + else if ( game["teamScores"][otherTeam] > game["teamScores"][team] ) + level.wasWinning = otherTeam; + + game["teamScores"][team] += score; + + isWinning = "none"; + if ( game["teamScores"][team] > game["teamScores"][otherTeam] ) + isWinning = team; + else if ( game["teamScores"][otherTeam] > game["teamScores"][team] ) + isWinning = otherTeam; + + if ( isWinning != "none" && isWinning != level.wasWinning && getTime() - level.lastStatusTime > 5000 ) + level.lastStatusTime = getTime(); + + if ( isWinning != "none" ) + level.wasWinning = isWinning; +} + +sendUpdatedTeamScores() +{ + level notify("updating_scores"); + level endon("updating_scores"); + wait 0.05; + + WaitTillSlowProcessAllowed(); + + for ( i = 0; i < level.players.size; i++ ) + level.players[i] updateScores(); + + for( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + if( player.pers["team"] == "spectator" ) + { + if( game["attackers"] == "allies" && game["defenders"] == "axis" ) + player setClientDvars( + "shout_scores_attack", game["teamScores"]["allies"], + "shout_scores_defence", game["teamScores"]["axis"] ); + else + player setClientDvars( + "shout_scores_attack", game["teamScores"]["axis"], + "shout_scores_defence", game["teamScores"]["allies"] ); + } + } + + if ( isDefined( level.scorebot ) && level.scorebot ) + { + if ( !isDefined( level.allies_team ) ) + level.allies_team = "none"; + if ( !isDefined( level.axis_team ) ) + level.axis_team = "none"; + + if( game["attackers"] == "allies" && game["defenders"] == "axis" ) + { + game["promod_scorebot_attack_ticker_buffer"] = game["teamScores"]["allies"] + level.allies_team; + game["promod_scorebot_defence_ticker_buffer"] = game["teamScores"]["axis"] + level.axis_team; + } + else + { + game["promod_scorebot_attack_ticker_buffer"] = game["teamScores"]["axis"] + level.axis_team; + game["promod_scorebot_defence_ticker_buffer"] = game["teamScores"]["allies"] + level.allies_team; + } + } +} + +sendUpdatedDMScores() +{ + level notify("updating_dm_scores"); + level endon("updating_dm_scores"); + wait 0.05; + + WaitTillSlowProcessAllowed(); + + for ( i = 0; i < level.players.size; i++ ) + { + level.players[i] updateDMScores(); + level.players[i].updatedDMScores = true; + } +} + +initPersStat( dataName ) +{ + if( !isDefined( self.pers[dataName] ) ) + self.pers[dataName] = 0; +} + +getPersStat( dataName ) +{ + return self.pers[dataName]; +} + +incPersStat( dataName, increment ) +{ + self.pers[dataName] += increment; +} + +updateTeamStatus() +{ + level notify("updating_team_status"); + level endon("updating_team_status"); + level endon ( "game_ended" ); + + if ( isDefined( game["state"] ) && game["state"] == "postgame" ) + return; + + resetTimeout(); + + prof_begin( "updateTeamStatus" ); + + level.playerCount["allies"] = 0; + level.playerCount["axis"] = 0; + + level.lastAliveCount["allies"] = level.aliveCount["allies"]; + level.lastAliveCount["axis"] = level.aliveCount["axis"]; + level.aliveCount["allies"] = 0; + level.aliveCount["axis"] = 0; + level.playerLives["allies"] = 0; + level.playerLives["axis"] = 0; + level.alivePlayers["allies"] = []; + level.alivePlayers["axis"] = []; + level.activePlayers = []; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + team = player.team; + class = player.class; + + if ( team != "spectator" && (isDefined( class ) && class != "") ) + { + level.playerCount[team]++; + + if ( player.sessionstate == "playing" ) + { + level.aliveCount[team]++; + level.playerLives[team]++; + + if ( isAlive( player ) ) + { + level.alivePlayers[team][level.alivePlayers.size] = player; + level.activeplayers[ level.activeplayers.size ] = player; + } + } + else if ( player maySpawn() ) + level.playerLives[team]++; + } + } + + if ( level.aliveCount["allies"] + level.aliveCount["axis"] > level.maxPlayerCount ) + level.maxPlayerCount = level.aliveCount["allies"] + level.aliveCount["axis"]; + + if ( level.aliveCount["allies"] ) + level.everExisted["allies"] = true; + if ( level.aliveCount["axis"] ) + level.everExisted["axis"] = true; + + for( i = 0; i < level.players.size; i++ ) + if( level.players[i].pers["team"] == "allies" || level.players[i].pers["team"] == "axis" ) + level.players[i] setClientDvars("self_alive", level.aliveCount[level.players[i].pers["team"]], + "opposing_alive", level.aliveCount[maps\mp\gametypes\_gameobjects::getEnemyTeam(level.players[i].pers["team"])] ); + + if ( isDefined( level.scorebot ) && level.scorebot ) + { + level.allies_team = ""; + level.axis_team = ""; + + players = getentarray("player","classname"); + for( i = 0; i < players.size; i++ ) + { + player = players[i]; + playerstring = "" + player.name + "" + int( isAlive( player ) ) + "" + player.kills + "" + player.assists + "" + player.deaths + "0"; + + if ( player.pers["team"] == "allies" ) + level.allies_team += playerstring; + else if ( player.pers["team"] == "axis" ) + level.axis_team += playerstring; + } + + if ( level.allies_team == "" ) + level.allies_team = "none"; + if ( level.axis_team == "" ) + level.axis_team = "none"; + + level.allies_string = game["teamScores"]["allies"] + level.allies_team; + level.axis_string = game["teamScores"]["axis"] + level.axis_team; + + if( game["attackers"] == "allies" && game["defenders"] == "axis" ) + { + game["promod_scorebot_attack_ticker_buffer"] = level.allies_string; + game["promod_scorebot_defence_ticker_buffer"] = level.axis_string; + } + else + { + game["promod_scorebot_attack_ticker_buffer"] = level.axis_string; + game["promod_scorebot_defence_ticker_buffer"] = level.allies_string; + } + } + + prof_end( "updateTeamStatus" ); + + level updateGameEvents(); +} + +isValidClass( class ) +{ + return isdefined( class ) && class != ""; +} + +playTickingSound() +{ + self endon("death"); + self endon("stop_ticking"); + + level endon("game_ended"); + + for(;;) + { + self playSound( "ui_mp_suitcasebomb_timer" ); + wait 1; + } +} + +stopTickingSound() +{ + self notify("stop_ticking"); +} + +timeLimitClock() +{ + level endon ( "game_ended" ); + + wait 0.05; + + clockObject = spawn( "script_origin", (0,0,0) ); + + while ( isDefined( game["state"] ) && game["state"] == "playing" ) + { + if ( !level.timerStopped && level.timeLimit ) + { + timeLeft = getTimeRemaining() / 1000; + timeLeftInt = int(timeLeft + 0.5); + + if ( timeLeftInt <= 10 || (timeLeftInt <= 30 && timeLeftInt % 2 == 0) ) + { + if ( !timeLeftInt ) + break; + + clockObject playSound( "ui_mp_timer_countdown" ); + } + + if ( timeLeft - floor(timeLeft) >= 0.05 ) + wait timeLeft - floor(timeLeft); + } + + wait 1; + } +} + +gameTimer() +{ + level endon ( "game_ended" ); + + level waittill("prematch_over"); + + level.startTime = getTime(); + level.discardTime = 0; + + if ( isDefined( game["roundMillisecondsAlreadyPassed"] ) ) + { + level.startTime -= game["roundMillisecondsAlreadyPassed"]; + game["roundMillisecondsAlreadyPassed"] = undefined; + } + + prevtime = gettime(); + + while ( isDefined( game["state"] ) && game["state"] == "playing" ) + { + if ( !level.timerStopped ) + game["timepassed"] += gettime() - prevtime; + + prevtime = gettime(); + wait 1; + } +} + +getTimePassed() +{ + if ( !isDefined( level.startTime ) ) + return 0; + + if ( level.timerStopped ) + return (level.timerPauseTime - level.startTime) - level.discardTime; + else + return (gettime() - level.startTime) - level.discardTime; +} + +pauseTimer() +{ + if ( level.timerStopped ) + return; + + level.timerStopped = true; + level.timerPauseTime = gettime(); +} + +resumeTimer() +{ + if ( !level.timerStopped ) + return; + + level.timerStopped = false; + level.discardTime += gettime() - level.timerPauseTime; +} + +openMainMenu() +{ + maxwait = 0; + while ( !level.players.size && maxwait <= 1 ) + { + wait 0.05; + maxwait += 0.05; + } + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + if ( !isDefined( player.pers["team"] ) || player.pers["team"] == "none" ) + { + player setclientdvar( "g_scriptMainMenu", game["menu_team"] ); + player openMenu( game["menu_team"] ); + } + } +} + +checkRestartMap() +{ + if ( getDvar( "o_gametype" ) == "" ) + setDvar( "o_gametype", level.gametype ); + else if ( getDvar( "o_gametype" ) != level.gametype ) + { + level.restarting = true; + + setDvar( "o_gametype", level.gametype ); + + maprot = getDvar( "sv_maprotationcurrent" ); + new_maprot = "map " + level.script + " " + maprot; + setDvar( "sv_maprotationcurrent", new_maprot ); + exitLevel( false ); + } +} + +startGame() +{ + level thread header(); + + thread gameTimer(); + level.timerStopped = true; + thread maps\mp\gametypes\_spawnlogic::spawnPerFrameUpdate(); + + prematchPeriod(); + + thread openMainMenu(); + + if ( isDefined( game["promod_timeout_called"] ) && game["promod_timeout_called"] ) + { + thread promod\timeout::main(); + return; + } + + if ( isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"] ) + { + thread disableBombsites(); + thread promod\readyup::main(); + return; + } + + if ( ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" || getDvarInt( "promod_allow_strattime" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] ) && level.gametype == "sd" ) + promod\strattime::main(); + + if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) + { + thread disableBombsites(); + thread promod\stratmode::main(); + setDvar( "g_deadChat", 1 ); + SetClientNameMode( "auto_change" ); + setGameEndTime( 0 ); + return; + } + else if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" ) + setDvar( "g_deadChat", 0 ); + + if ( isDefined( level.timeout_over ) && !level.timeout_over ) + return; + + if ( isDefined(game["PROMOD_KNIFEROUND"]) && game["PROMOD_KNIFEROUND"] ) + { + thread disableBombsites(); + + if(game["PROMOD_MATCH_MODE"] != "pub") + { + level.timeLimitOverride = true; + setGameEndTime( 0 ); + } + } + + level notify("prematch_over"); + level notify("header_destroy"); + level.timerStopped = false; + + if ( isDefined( level.scorebot ) && level.scorebot ) + { + if ( isDefined(game["PROMOD_KNIFEROUND"]) && game["PROMOD_KNIFEROUND"] ) + game["promod_scorebot_ticker_buffer"] += "knife_round"; + else + { + sb_text = ""; + + if ( !game["roundsplayed"] && !game["promod_in_timeout"] ) + sb_text = "1st_half_started"; + else if ( isDefined( level.roundswitch ) && level.roundswitch > 0 && game["roundsplayed"] % level.roundswitch == 0 && !game["promod_in_timeout"] ) + sb_text = "2nd_half_started"; + else if ( game["promod_in_timeout"] ) + sb_text = "match_resumed"; + else + sb_text = "round_start"; + + game["promod_scorebot_ticker_buffer"] += "" + sb_text + "" + ( game["roundsplayed"] + 1 ); + } + } + + game["promod_in_timeout"] = 0; + + if ( !isDefined( game["PROMOD_KNIFEROUND"] ) || !game["PROMOD_KNIFEROUND"] || game["PROMOD_MATCH_MODE"] == "pub" ) + thread timeLimitClock(); + + thread gracePeriod(); +} + +header() +{ + if ( isDefined( game["state"] ) && game["state"] == "postgame" ) + wait 0.75; + + promod_ver = newHudElem(); + promod_ver.x = -7; + promod_ver.y = 35; + promod_ver.horzAlign = "right"; + promod_ver.vertAlign = "top"; + promod_ver.alignX = "right"; + promod_ver.alignY = "middle"; + promod_ver.fontScale = 1.4; + promod_ver.hidewheninmenu = true; + promod_ver.color = (0.8, 1, 1); + promod_ver setText( game["PROMOD_VERSION"] ); + + promod_mode = newHudElem(); + promod_mode.x = -7; + promod_mode.y = 50; + promod_mode.horzAlign = "right"; + promod_mode.vertAlign = "top"; + promod_mode.alignX = "right"; + promod_mode.alignY = "middle"; + promod_mode.fontScale = 1.4; + promod_mode.hidewheninmenu = true; + promod_mode.color = (1,1,0); + promod_mode setText( game["PROMOD_MODE_HUD"] ); + + level waittill( "header_destroy" ); + + if ( isDefined( promod_ver ) ) + promod_ver destroy(); + + if ( isDefined( promod_mode ) ) + promod_mode destroy(); +} + +disableBombsites() +{ + if ( level.gametype == "sd" && isDefined( level.bombZones ) ) + for ( j = 0; j < level.bombZones.size; j++ ) + level.bombZones[j] maps\mp\gametypes\_gameobjects::disableObject(); +} + +prematchPeriod() +{ + level endon( "game_ended" ); + + if ( level.prematchPeriod > 0 && isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "match" && game["PROMOD_MATCH_MODE"] != "strat" ) + { + if ( getDvarInt( "promod_allow_strattime" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] && level.gametype == "sd" ) + matchStartTimerSkip(); + else + matchStartTimer(); + } + else + matchStartTimerSkip(); + + level.inPrematchPeriod = false; + + for ( i = 0; i < level.players.size; i++ ) + { + level.players[i] freezeControls( false ); + level.players[i] enableWeapons(); + } +} + +gracePeriod() +{ + level endon("game_ended"); + + wait level.gracePeriod; + + level notify ( "grace_period_ending" ); + wait 0.05; + + level.inGracePeriod = false; + + if ( !isDefined( game["state"] ) || game["state"] != "playing" ) + return; + + if ( level.numLives ) + { + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + if ( !player.hasSpawned && player.sessionteam != "spectator" && !isAlive( player ) ) + player.statusicon = "hud_status_dead"; + } + } + + level thread updateTeamStatus(); +} + +TimeUntilWaveSpawn( minimumWait ) +{ + earliestSpawnTime = gettime() + minimumWait * 1000; + + lastWaveTime = level.lastWave[self.pers["team"]]; + waveDelay = level.waveDelay[self.pers["team"]] * 1000; + + numWavesPassedEarliestSpawnTime = (earliestSpawnTime - lastWaveTime) / waveDelay; + + numWaves = ceil( numWavesPassedEarliestSpawnTime ); + + timeOfSpawn = lastWaveTime + numWaves * waveDelay; + + if ( isdefined( self.waveSpawnIndex ) ) + timeOfSpawn += 50 * self.waveSpawnIndex; + + return (timeOfSpawn - gettime()) / 1000; +} + +TimeUntilSpawn() +{ + if ( ( level.inGracePeriod && !self.hasSpawned ) || ( isDefined( level.rdyup ) && level.rdyup ) || ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) ) + return 0; + + respawnDelay = 0; + if ( self.hasSpawned ) + { + result = self [[level.onRespawnDelay]](); + if ( isDefined( result ) ) + respawnDelay = result; + else + respawnDelay = getDvarInt( "scr_" + level.gameType + "_playerrespawndelay" ); + } + + waveBased = (getDvarInt( "scr_" + level.gameType + "_waverespawndelay" ) > 0); + + if ( waveBased ) + return self TimeUntilWaveSpawn( respawnDelay ); + + return respawnDelay; +} + +maySpawn() +{ + if ( ( isDefined( level.rdyup ) && level.rdyup ) || ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) ) + return true; + + if ( level.inOvertime ) + return false; + + if ( level.numLives ) + { + if ( level.teamBased ) + gameHasStarted = ( level.everExisted[ "axis" ] && level.everExisted[ "allies" ] ); + else + gameHasStarted = (level.maxPlayerCount > 1); + + if ( gameHasStarted && ( !self.pers["lives"] || ( !level.inGracePeriod && !self.hasSpawned ) ) ) + return false; + } + return true; +} + +spawnClient( timeAlreadyPassed ) +{ + if ( !self maySpawn() ) + { + shouldShowRespawnMessage = true; + if ( ( level.roundLimit > 1 && game["roundsplayed"] >= (level.roundLimit - 1) ) || ( level.scoreLimit > 1 && level.teambased && game["teamScores"]["allies"] >= level.scoreLimit - 1 && game["teamScores"]["axis"] >= level.scoreLimit - 1 ) ) + shouldShowRespawnMessage = false; + + if ( shouldShowRespawnMessage ) + { + setLowerMessage( game["strings"]["spawn_next_round"] ); + self thread removeSpawnMessageShortly(); + } + self thread [[level.spawnSpectator]]( self.origin, self.angles ); + return; + } + + if ( self.waitingToSpawn ) + return; + + self.waitingToSpawn = true; + + self waitAndSpawnClient( timeAlreadyPassed ); + + if ( isdefined( self ) ) + self.waitingToSpawn = false; +} + +waitAndSpawnClient( timeAlreadyPassed ) +{ + self endon ( "disconnect" ); + self endon ( "end_respawn" ); + self endon ( "game_ended" ); + + if ( !isdefined( timeAlreadyPassed ) ) + timeAlreadyPassed = 0; + + spawnedAsSpectator = false; + + if ( !isdefined( self.waveSpawnIndex ) && isdefined( level.wavePlayerSpawnIndex[self.team] ) ) + { + self.waveSpawnIndex = level.wavePlayerSpawnIndex[self.team]; + level.wavePlayerSpawnIndex[self.team]++; + } + + timeUntilSpawn = TimeUntilSpawn(); + if ( timeUntilSpawn > timeAlreadyPassed ) + { + timeUntilSpawn -= timeAlreadyPassed; + timeAlreadyPassed = 0; + } + else + { + timeAlreadyPassed -= timeUntilSpawn; + timeUntilSpawn = 0; + } + + if ( timeUntilSpawn > 0 ) + { + setLowerMessage( game["strings"]["waiting_to_spawn"], timeUntilSpawn ); + + if ( !spawnedAsSpectator ) + self thread respawn_asSpectator( self.origin + (0, 0, 60), self.angles ); + spawnedAsSpectator = true; + + self waitForTimeOrNotify( timeUntilSpawn, "force_spawn" ); + } + + waveBased = (getDvarInt( "scr_" + level.gameType + "_waverespawndelay" ) > 0); + if ( !maps\mp\gametypes\_tweakables::getTweakableValue( "player", "forcerespawn" ) && self.hasSpawned && !waveBased ) + { + setLowerMessage( game["strings"]["press_to_spawn"] ); + + if ( !spawnedAsSpectator ) + self thread respawn_asSpectator( self.origin + (0, 0, 60), self.angles ); + spawnedAsSpectator = true; + + self waitRespawnButton(); + } + + self.waitingToSpawn = false; + + self clearLowerMessage(); + + self.waveSpawnIndex = undefined; + + self thread [[level.spawnPlayer]](); +} + +waitForTimeOrNotify( time, notifyname ) +{ + self endon("disconnect"); + self endon( notifyname ); + wait time; +} + +removeSpawnMessageShortly() +{ + self endon("disconnect"); + + waittillframeend; + + self endon("end_respawn"); + + wait 2; + + self clearLowerMessage( 2 ); +} + +Callback_StartGameType() +{ + level.prematchPeriod = 0; + + level.intermission = false; + game["state"] = "playing"; + + if ( !isDefined( game["gamestarted"] ) ) + { + if ( !isDefined( game["allies"] ) ) + game["allies"] = "marines"; + if ( !isDefined( game["axis"] ) ) + game["axis"] = "opfor"; + if ( !isDefined( game["attackers"] ) ) + game["attackers"] = "allies"; + if ( !isDefined( game["defenders"] ) ) + game["defenders"] = "axis"; + + if ( !isDefined( game["state"] ) ) + game["state"] = "playing"; + + precacheStatusIcon("hud_status_dead"); + precacheStatusIcon("hud_status_connecting"); + precacheStatusIcon("compassping_friendlyfiring_mp"); + precacheStatusIcon("compassping_enemy"); + + precacheRumble( "damage_heavy" ); + + precacheShader( "white" ); + precacheShader( "black" ); + + makeDvarServerInfo( "scr_allies", "usmc" ); + makeDvarServerInfo( "scr_axis", "arab" ); + + game["strings"]["press_to_spawn"] = &"PLATFORM_PRESS_TO_SPAWN"; + if ( level.teamBased ) + { + game["strings"]["waiting_for_teams"] = &"MP_WAITING_FOR_TEAMS"; + game["strings"]["opponent_forfeiting_in"] = &"MP_OPPONENT_FORFEITING_IN"; + } + else + { + game["strings"]["waiting_for_teams"] = &"MP_WAITING_FOR_PLAYERS"; + game["strings"]["opponent_forfeiting_in"] = &"MP_OPPONENT_FORFEITING_IN"; + } + + game["strings"]["match_starting_in"] = &"MP_MATCH_STARTING_IN"; + game["strings"]["spawn_next_round"] = &"MP_SPAWN_NEXT_ROUND"; + game["strings"]["waiting_to_spawn"] = &"MP_WAITING_TO_SPAWN"; + game["strings"]["match_starting"] = &"MP_MATCH_STARTING"; + game["strings"]["change_class"] = &"MP_CHANGE_CLASS_NEXT_SPAWN"; + + game["strings"]["tie"] = &"MP_MATCH_TIE"; + game["strings"]["round_draw"] = &"MP_ROUND_DRAW"; + + game["strings"]["enemies_eliminated"] = &"MP_ENEMIES_ELIMINATED"; + game["strings"]["score_limit_reached"] = &"MP_SCORE_LIMIT_REACHED"; + game["strings"]["round_limit_reached"] = &"MP_ROUND_LIMIT_REACHED"; + game["strings"]["time_limit_reached"] = &"MP_TIME_LIMIT_REACHED"; + game["strings"]["players_forfeited"] = &"MP_PLAYERS_FORFEITED"; + + if( game["attackers"] == "allies" && game["defenders"] == "axis" ) + { + game["strings"]["allies_name"] = "Attack"; + game["strings"]["axis_name"] = "Defence"; + game["strings"]["allies_eliminated"] = "Attack eliminated"; + game["strings"]["axis_eliminated"] = "Defence eliminated"; + game["strings"]["allies_forfeited"] = "Attack forfeited"; + game["strings"]["axis_forfeited"] = "Defence forfeited"; + } + else + { + game["strings"]["allies_name"] = "Defence"; + game["strings"]["axis_name"] = "Attack"; + game["strings"]["allies_eliminated"] = "Defence eliminated"; + game["strings"]["axis_eliminated"] = "Attack eliminated"; + game["strings"]["allies_forfeited"] = "Defence forfeited"; + game["strings"]["axis_forfeited"] = "Attack forfeited"; + } + + switch ( game["allies"] ) + { + case "sas": + game["strings"]["allies_win"] = &"MP_SAS_WIN_MATCH"; + game["strings"]["allies_win_round"] = &"MP_SAS_WIN_ROUND"; + game["strings"]["allies_mission_accomplished"] = &"MP_SAS_MISSION_ACCOMPLISHED"; + + game["icons"]["allies"] = "faction_128_sas"; + game["colors"]["allies"] = (0.6,0.64,0.69); + game["voice"]["allies"] = "UK_1mc_"; + setDvar( "scr_allies", "sas" ); + break; + + default: + game["strings"]["allies_win"] = &"MP_MARINES_WIN_MATCH"; + game["strings"]["allies_win_round"] = &"MP_MARINES_WIN_ROUND"; + game["strings"]["allies_mission_accomplished"] = &"MP_MARINES_MISSION_ACCOMPLISHED"; + + game["icons"]["allies"] = "faction_128_usmc"; + game["colors"]["allies"] = (0.6,0.64,0.69); + game["voice"]["allies"] = "US_1mc_"; + setDvar( "scr_allies", "usmc" ); + break; + } + switch ( game["axis"] ) + { + case "russian": + game["strings"]["axis_win"] = &"MP_SPETSNAZ_WIN_MATCH"; + game["strings"]["axis_win_round"] = &"MP_SPETSNAZ_WIN_ROUND"; + game["strings"]["axis_mission_accomplished"] = &"MP_SPETSNAZ_MISSION_ACCOMPLISHED"; + + game["icons"]["axis"] = "faction_128_ussr"; + game["colors"]["axis"] = (0.52,0.28,0.28); + game["voice"]["axis"] = "RU_1mc_"; + setDvar( "scr_axis", "ussr" ); + break; + + default: + game["strings"]["axis_win"] = &"MP_OPFOR_WIN_MATCH"; + game["strings"]["axis_win_round"] = &"MP_OPFOR_WIN_ROUND"; + game["strings"]["axis_mission_accomplished"] = &"MP_OPFOR_MISSION_ACCOMPLISHED"; + + game["icons"]["axis"] = "faction_128_arab"; + game["colors"]["axis"] = (0.65,0.57,0.41); + game["voice"]["axis"] = "AB_1mc_"; + setDvar( "scr_axis", "arab" ); + break; + } + + [[level.onPrecacheGameType]](); + + game["gamestarted"] = true; + + game["teamScores"]["allies"] = game["SCORES_ATTACK"]; + game["teamScores"]["axis"] = game["SCORES_DEFENCE"]; + + level.prematchPeriod = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "matchstarttime" ); + + thread promod\setvariables::main(); + + if ( !isDefined( game["promod_scorebot_ticker_buffer"] ) ) + { + setDvar( "promod_scorebot_ticker_num", 0 ); + game["promod_scorebot_ticker_buffer"] = 0; + } + + game["promod_scorebot_ticker_buffer"] += "map" + getDvar("mapname") + "" + level.gametype; + } + + if ( !isdefined( game["timepassed"] ) ) + game["timepassed"] = 0; + + if ( !isdefined( game["roundsplayed"] ) ) + game["roundsplayed"] = game["SCORES_ATTACK"] + game["SCORES_DEFENCE"]; + + if ( !isDefined( game["promod_do_readyup"] ) ) + game["promod_do_readyup"] = false; + + if ( (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" || getDvarInt( "promod_allow_readyup" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"]) && ( !game["roundsplayed"] && !game["promod_first_readyup_done"] || ( game["SCORES_ATTACK"] > 0 || game["SCORES_DEFENCE"] > 0 ) ) ) + game["promod_do_readyup"] = true; + + game["SCORES_ATTACK"] = 0; + game["SCORES_DEFENCE"] = 0; + + level.gameEnded = false; + level.teamSpawnPoints["axis"] = []; + level.teamSpawnPoints["allies"] = []; + + level.objIDStart = 0; + level.forcedEnd = false; + + level.useStartSpawns = true; + + thread maps\mp\gametypes\_promod::init(); + thread maps\mp\gametypes\_rank::init(); + thread maps\mp\gametypes\_menus::init(); + thread maps\mp\gametypes\_hud::init(); + thread maps\mp\gametypes\_serversettings::init(); + thread maps\mp\gametypes\_clientids::init(); + thread maps\mp\gametypes\_teams::init(); + thread maps\mp\gametypes\_weapons::init(); + thread maps\mp\gametypes\_scoreboard::init(); + thread maps\mp\gametypes\_killcam::init(); + thread maps\mp\gametypes\_shellshock::init(); + thread maps\mp\gametypes\_damagefeedback::init(); + thread maps\mp\gametypes\_healthoverlay::init(); + thread maps\mp\gametypes\_spectating::init(); + thread maps\mp\gametypes\_objpoints::init(); + thread maps\mp\gametypes\_gameobjects::init(); + thread maps\mp\gametypes\_spawnlogic::init(); + thread maps\mp\gametypes\_hud_message::init(); + thread maps\mp\gametypes\_quickmessages::init(); + + thread promod\scorebot::main(); + + stringNames = getArrayKeys( game["strings"] ); + for ( i = 0; i < stringNames.size; i++ ) + if(!isstring(game["strings"][stringNames[i]])) + precacheString( game["strings"][stringNames[i]] ); + + level.maxPlayerCount = 0; + level.playerCount["allies"] = 0; + level.playerCount["axis"] = 0; + level.aliveCount["allies"] = 0; + level.aliveCount["axis"] = 0; + level.playerLives["allies"] = 0; + level.playerLives["axis"] = 0; + level.lastAliveCount["allies"] = 0; + level.lastAliveCount["axis"] = 0; + level.everExisted["allies"] = false; + level.everExisted["axis"] = false; + level.waveDelay["allies"] = 0; + level.waveDelay["axis"] = 0; + level.lastWave["allies"] = 0; + level.lastWave["axis"] = 0; + level.wavePlayerSpawnIndex["allies"] = 0; + level.wavePlayerSpawnIndex["axis"] = 0; + level.alivePlayers["allies"] = []; + level.alivePlayers["axis"] = []; + level.activePlayers = []; + + makeDvarServerInfo( "ui_scorelimit" ); + makeDvarServerInfo( "ui_timelimit" ); + + waveDelay = getDvarInt( "scr_" + level.gameType + "_waverespawndelay" ); + if ( waveDelay ) + { + level.waveDelay["allies"] = waveDelay; + level.waveDelay["axis"] = waveDelay; + level.lastWave["allies"] = 0; + level.lastWave["axis"] = 0; + + level thread [[level.waveSpawnTimer]](); + } + + level.inPrematchPeriod = true; + + level.gracePeriod = 4; + + level.inGracePeriod = true; + + level.roundEndDelay = 4; + level.halftimeRoundEndDelay = 3; + + updateTeamScores( "axis", "allies" ); + + if ( !level.teamBased ) + thread initialDMScoreUpdate(); + + [[level.onStartGameType]](); + + thread promod\messagecenter::main(); + + deletePlacedEntity("misc_turret"); + + thread deletePickups(); + + thread startGame(); + + level thread updateGameTypeDvars(); +} + +deletePickups() +{ + pickups = getentarray( "oldschool_pickup", "targetname" ); + + for ( i = 0; i < pickups.size; i++ ) + { + if ( isdefined( pickups[i].target ) ) + getent( pickups[i].target, "targetname" ) delete(); + pickups[i] delete(); + } +} + +initialDMScoreUpdate() +{ + wait 0.2; + numSent = 0; + for(;;) + { + didAny = false; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + if ( !isdefined( player ) ) + continue; + + if ( isdefined( player.updatedDMScores ) ) + continue; + + player.updatedDMScores = true; + player updateDMScores(); + + didAny = true; + wait 0.5; + } + + if ( !didAny ) + wait 3; + } +} + +checkRoundSwitch() +{ + if ( !level.roundSwitch || level.gametype == "dm" ) + return false; + + if ( game["roundsplayed"] % level.roundswitch == 0 ) + { + if ( ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" || getDvarInt( "promod_allow_readyup" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] ) && game["promod_first_readyup_done"] ) + game["promod_do_readyup"] = true; + + game["promod_timeout_called"] = false; + + [[level.onRoundSwitch]](); + return true; + } + + return false; +} + +getGameScore( team ) +{ + return game["teamScores"][team]; +} + +Callback_PlayerConnect() +{ + thread notifyConnecting(); + + self.statusicon = "hud_status_connecting"; + self waittill( "begin" ); + waittillframeend; + + if ( !isDefined( self ) ) + return; + + level notify( "connected", self ); + + if ( !isDefined( level.rdyup ) || !level.rdyup ) + self.statusicon = ""; + + if( !isdefined( self.pers["score"] ) ) + iPrintLn( &"MP_CONNECTED", self.name ); + + logPrint("J;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.name + "\n"); + + if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" ) + self setClientDvar( "promod_hud_website", "" ); + else + self setClientDvar( "promod_hud_website", getDvar( "promod_hud_website" ) ); + + self setClientDvars("cg_hudGrenadeIconMaxRangeFrag", int(!level.hardcoreMode)*250, + "cg_drawcrosshair", int(!level.hardcoreMode), + "cg_drawSpectatorMessages", 1, + "ui_hud_hardcore", level.hardcoreMode, + "fx_drawClouds", 0, + "ui_showmenuonly", "", + "self_ready", "" ); + + self initPersStat( "score" ); + self.score = self.pers["score"]; + + self initPersStat( "deaths" ); + self.deaths = self getPersStat( "deaths" ); + + self initPersStat( "suicides" ); + self.suicides = self getPersStat( "suicides" ); + + self initPersStat( "kills" ); + self.kills = self getPersStat( "kills" ); + + self initPersStat( "headshots" ); + self.headshots = self getPersStat( "headshots" ); + + self initPersStat( "assists" ); + self.assists = self getPersStat( "assists" ); + + self initPersStat( "teamkills" ); + + self.lastGrenadeSuicideTime = -1; + + self.teamkillsThisRound = 0; + + self.pers["lives"] = level.numLives; + + self.hasSpawned = false; + self.waitingToSpawn = false; + self.deathCount = 0; + + self.wasAliveAtMatchStart = false; + + self thread maps\mp\_flashgrenades::monitorFlash(); + + level.players[level.players.size] = self; + + if(isDefined(self.pers["shoutnum"])) + level.shoutbars[self.pers["shoutnum"]] = self; + + if ( level.teambased ) + self updateScores(); + + level endon( "game_ended" ); + + if ( isDefined( self.pers["team"] ) ) + self.team = self.pers["team"]; + + if ( isDefined( self.pers["class"] ) ) + self.class = self.pers["class"]; + + if ( !isDefined( self.pers["team"] ) ) + { + self.pers["team"] = "none"; + self.team = "none"; + self.sessionstate = "dead"; + + self setClientDvar("loadout_curclass", ""); + + self updateObjectiveText(); + + [[level.spawnSpectator]](); + + self thread promod\client::use_config(); + self thread maps\mp\gametypes\_promod::initClassLoadouts(); + + thread maps\mp\gametypes\_promod::updateClassAvailability( "allies" ); + thread maps\mp\gametypes\_promod::updateClassAvailability( "axis" ); + + self setclientdvar( "g_scriptMainMenu", game["menu_team"] ); + self openMenu( game["menu_team"] ); + + if ( level.teamBased ) + { + self.sessionteam = self.pers["team"]; + + if ( ( !isDefined( level.rdyup ) || !level.rdyup ) && !isAlive( self ) ) + self.statusicon = "hud_status_dead"; + + self thread maps\mp\gametypes\_spectating::setSpectatePermissions(); + } + } + else if ( self.pers["team"] == "spectator" ) + { + self setclientdvar( "g_scriptMainMenu", game["menu_shoutcast"] ); + self.sessionteam = "spectator"; + self.sessionstate = "spectator"; + [[level.spawnSpectator]](); + } + else + { + self.sessionteam = self.pers["team"]; + self.sessionstate = "dead"; + + self updateObjectiveText(); + + [[level.spawnSpectator]](); + + if ( isValidClass( self.pers["class"] ) ) + self thread [[level.spawnClient]](); + + self thread maps\mp\gametypes\_spectating::setSpectatePermissions(); + } +} + +Callback_PlayerDisconnect() +{ + self removePlayerOnDisconnect(); + + [[level.onPlayerDisconnect]](); + + logPrint("Q;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.name + "\n"); + + for ( i = 0; i < level.players.size; i++ ) + { + if ( level.players[i] == self ) + { + while ( i < level.players.size-1 ) + { + level.players[i] = level.players[i+1]; + i++; + } + level.players[i] = undefined; + break; + } + } + + if ( level.gameEnded ) + self removeDisconnectedPlayerFromPlacement(); + + self promod\shoutcast::removePlayer(); + self maps\mp\gametypes\_weapons::printStats(); + + if ( isDefined( self.pers["team"] ) && ( self.pers["team"] == "allies" || self.pers["team"] == "axis" ) ) + thread maps\mp\gametypes\_promod::updateClassAvailability( self.pers["team"] ); + + level thread updateTeamStatus(); +} + +removePlayerOnDisconnect() +{ + for ( i = 0; i < level.players.size; i++ ) + { + if ( level.players[i] == self ) + { + while ( i < level.players.size-1 ) + { + level.players[i] = level.players[i+1]; + i++; + } + level.players[i] = undefined; + break; + } + } +} + +isHeadShot( sWeapon, sHitLoc, sMeansOfDeath ) +{ + return (sHitLoc == "head" || sHitLoc == "helmet") && sMeansOfDeath != "MOD_MELEE" && sMeansOfDeath != "MOD_IMPACT"; +} + +Callback_PlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ) +{ + if ( !isDefined( level.rdyup ) ) + level.rdyup = false; + + if ( getDvarInt("g_knockback") != 1000 || isDefined( game["state"] ) && game["state"] == "postgame" || self.sessionteam == "spectator" || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" && isDefined( self.flying ) && self.flying || isDefined( level.bombDefused ) && level.bombDefused || isDefined( level.bombExploded ) && level.bombExploded && self.pers["team"] == game["attackers"] || isDefined( game["PROMOD_KNIFEROUND"] ) && game["PROMOD_KNIFEROUND"] && sMeansOfDeath != "MOD_MELEE" && sMeansOfDeath != "MOD_FALLING" && !level.rdyup ) + return; + + if( isDefined(eAttacker) && isPlayer(eAttacker) && isPlayer(self) && eAttacker.sessionstate == "playing" && isDefined(iDamage) && isDefined( sMeansOfDeath ) && sMeansOfDeath != "" && (sMeansOfDeath == "MOD_RIFLE_BULLET" || sMeansOfDeath == "MOD_PISTOL_BULLET")) + iDamage = int(iDamage*1.4); + + self.iDFlags = iDFlags; + self.iDFlagsTime = getTime(); + + if ( level.rdyup && isDefined( eAttacker ) && isPlayer( eAttacker ) && eAttacker != self ) + { + if ( !isDefined( eAttacker.ruptally ) || eAttacker.ruptally < 0 ) + { + eAttacker.ruptally = 0; + eAttacker setclientdvar("self_kills", 0); + } + + if ( !isDefined( self.ruptally ) ) + self.ruptally = -1; + + if ( self.ruptally < 0 ) + return; + } + + // bit arrays are interesting, huh? + if( !isDefined( vDir ) ) + iDFlags |= level.iDFLAGS_NO_KNOCKBACK; + + // Not sure exactly what happens here, but ok... + if ( level.teamBased && self.health == self.maxhealth || !isDefined( self.attackers ) ) + { + self.attackers = []; + self.attackerData = []; + } + + if ( isHeadShot( sWeapon, sHitLoc, sMeansOfDeath ) ) + sMeansOfDeath = "MOD_HEAD_SHOT"; + + if ( sWeapon == "none" && isDefined( eInflictor ) ) + { + if ( isDefined( eInflictor.targetname ) && eInflictor.targetname == "explodable_barrel" ) + sWeapon = "explodable_barrel"; + else if ( isDefined( eInflictor.destructible_type ) && isSubStr( eInflictor.destructible_type, "vehicle_" ) ) + sWeapon = "destructible_car"; + } + + friendly = false; + + // if level.iDFLAGS_NO_PROTECTION element in iDflags is not 0, this will happen. NO_PROTECTION == 0 could be god-mode + if( !(iDFlags & level.iDFLAGS_NO_PROTECTION) ) + { + if ( (isSubStr( sMeansOfDeath, "MOD_GRENADE" ) || isSubStr( sMeansOfDeath, "MOD_EXPLOSIVE" ) || isSubStr( sMeansOfDeath, "MOD_PROJECTILE" )) && isDefined( eInflictor ) && game["PROMOD_MATCH_MODE"] != "match" && eInflictor.classname == "grenade" && ( (self.lastSpawnTime + 3500) > getTime() && distance( eInflictor.origin, self.lastSpawnPoint.origin ) < 250 || !isDefined ( eAttacker.pers["class"] ) ) ) + return; + + if ( level.teamBased && isPlayer( eAttacker ) && self != eAttacker && self.pers["team"] == eAttacker.pers["team"] ) + { + if ( !level.friendlyfire ) + return; + if ( level.friendlyfire == 1 || (level.friendlyfire == 2 || level.friendlyfire == 3) && isAlive( eAttacker ) ) + { + if( (level.friendlyfire & 2) > 0 ) // 2 or 3 + iDamage = int(iDamage * 0.5); + + if ( iDamage < 1 ) + iDamage = 1; + + if( (level.friendlyfire & 1) > 0 ) // 1 or 3 + { + if(!level.rdyup) + { + if(!isDefined(self.pers["friendly_damage_taken"])) + self.pers["friendly_damage_taken"] = 0; + if(!isDefined(eAttacker.pers["friendly_damage_done"])) + eAttacker.pers["friendly_damage_done"] = 0; + + self.pers["friendly_damage_taken"] += min(iDamage, self.health); + eAttacker.pers["friendly_damage_done"] += min(iDamage, self.health); + } + + self finishPlayerDamageWrapper(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime); + } + if( (level.friendlyfire & 2) > 0 ) // 2 or 3 + eAttacker finishPlayerDamageWrapper(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime); + } + friendly = true; + } + else + { + if(iDamage < 1) + iDamage = 1; + + if ( level.teamBased && isDefined( eAttacker ) && isPlayer( eAttacker ) ) + { + if ( !isdefined( self.attackerData[eAttacker.clientid] ) ) + { + self.attackers[ self.attackers.size ] = eAttacker; + self.attackerData[eAttacker.clientid] = false; + } + if ( isDefined(sWeapon) && isSubStr("m1014_mp winchester1200_mp mp5_mp uzi_mp ak74u_mp ak47_mp m14_mp mp44_mp g3_mp g36c_mp m16_mp m4_mp m40a3_mp remington700_mp", sWeapon) ) + self.attackerData[eAttacker.clientid] = true; + } + + if( !level.rdyup && isDefined(eAttacker) && isPlayer(eAttacker) && eAttacker != self ) + { + if(!isDefined(eAttacker.pers["hits"])) + eAttacker.pers["hits"] = 0; + + eAttacker.pers["hits"]++; + + if(!isDefined(self.pers["damage_taken"])) + self.pers["damage_taken"] = 0; + if(!isDefined(eAttacker.pers["damage_done"])) + eAttacker.pers["damage_done"] = 0; + + self.pers["damage_taken"] += min(iDamage, self.health); + eAttacker.pers["damage_done"] += min(iDamage, self.health); + } + + self finishPlayerDamageWrapper(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime); + } + + if ( isDefined(eAttacker) && eAttacker != self ) + { + if ( sMeansOfDeath == "MOD_HEAD_SHOT" ) + thread dinkNoise(eAttacker, self); + + if ( iDamage > 0 && ( getDvarInt( "scr_enable_hiticon" ) == 1 || getDvarInt( "scr_enable_hiticon" ) == 2 && !(iDFlags & level.iDFLAGS_PENETRATION) ) ) + eAttacker thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback( false ); + } + + self.hasDoneCombat = true; + } + + if ( isdefined( eAttacker ) && eAttacker != self && !friendly ) + level.useStartSpawns = false; + + if( level.rdyup || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) + { + if ( isDefined( eAttacker ) && isPlayer( eAttacker ) && isDefined( sHitLoc ) ) + { + if ( eAttacker != self ) + { + if ( sHitLoc == "none" ) + { + eAttacker iprintln("You inflicted ^2" + iDamage + "^7 damage to " + self.name); + self iprintln(eAttacker.name + " inflicted ^1" + iDamage + "^7 damage to you"); + } + else + { + damagestring = ""; + if( isSubStr( sHitLoc, "torso_upper" ) ) + damagestring = "upper torso"; + else if( isSubStr( sHitLoc, "torso_lower" ) ) + damagestring = "lower torso"; + else if( isSubStr( sHitLoc, "leg_upper" ) ) + damagestring = "upper leg"; + else if( isSubStr( sHitLoc, "leg_lower" ) ) + damagestring = "lower leg"; + else if( isSubStr( sHitLoc, "arm_upper" ) ) + damagestring = "upper arm"; + else if( isSubStr( sHitLoc, "arm_lower" ) ) + damagestring = "lower arm"; + else if( isSubStr( sHitLoc, "head" ) || isSubStr( sHitLoc, "helmet" ) ) + damagestring = "head"; + else if( isSubStr( sHitLoc, "neck" ) ) + damagestring = "neck"; + else if( isSubStr( sHitLoc, "foot" ) ) + damagestring = "foot"; + else if( isSubStr( sHitLoc, "hand" ) ) + damagestring = "hand"; + + metrestring = int(distance(self.origin, eAttacker.origin) * 2.54) / 100; + + eAttacker iprintln("You inflicted ^2" + iDamage + "^7 damage at a distance of ^2" + metrestring + "^7 metres in the ^2" + damagestring + "^7 to " + self.name); + self iprintln(eAttacker.name + " inflicted ^1" + iDamage + "^7 damage at a distance of ^1" + metrestring + "^7 metres in the ^1" + damagestring + "^7 to you"); + } + } + else if ( sHitLoc == "none" ) + self iprintln("You inflicted ^1" + iDamage + "^7 damage to yourself"); + } + else if ( sMeansOfDeath == "MOD_FALLING" ) + self iprintln("You inflicted ^1" + iDamage + "^7 damage to yourself"); + } + + // Logging into file + if( self.sessionstate != "dead" ) + { + lpattackerteam = ""; + + if( isPlayer( eAttacker ) ) + { + lpattacknum = eAttacker getEntityNumber(); + lpattackGuid = eAttacker getGuid(); + lpattackname = eAttacker.name; + lpattackerteam = eAttacker.pers["team"]; + } + else + { + lpattacknum = -1; + lpattackGuid = ""; + lpattackname = ""; + lpattackerteam = "world"; + } + + logPrint("D;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.pers["team"] + ";" + self.name + ";" + lpattackGuid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n"); + } + + // Shoutcaster healthbar update + self promod\shoutcast::updatePlayer(); +} + +dinkNoise( player1, player2 ) +{ + player1 playLocalSound("bullet_impact_headshot_2"); + player2 playLocalSound("bullet_impact_headshot_2"); +} + +finishPlayerDamageWrapper( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ) +{ + self finishPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ); + self damageShellshockAndRumble( eInflictor, sWeapon, sMeansOfDeath, iDamage ); +} + +damageShellshockAndRumble( eInflictor, sWeapon, sMeansOfDeath, iDamage ) +{ + self thread maps\mp\gametypes\_weapons::onWeaponDamage( eInflictor, sWeapon, sMeansOfDeath, iDamage ); + self PlayRumbleOnEntity( "damage_heavy" ); +} + +Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration) +{ + if ( !isDefined( level.rdyup ) ) + level.rdyup = false; + + self endon( "spawned" ); + self notify( "killed_player" ); + + if ( self.sessionteam == "spectator" || ( isDefined( game["state"] ) && game["state"] == "postgame" ) ) + return; + + prof_begin( "PlayerKilled pre constants" ); + + if( isHeadShot( sWeapon, sHitLoc, sMeansOfDeath ) ) + sMeansOfDeath = "MOD_HEAD_SHOT"; + + if( attacker.classname == "script_vehicle" && isDefined( attacker.owner ) ) + attacker = attacker.owner; + + if( level.teamBased && isDefined( attacker.pers ) && self.team == attacker.team && sMeansOfDeath == "MOD_GRENADE" && !level.friendlyfire ) + obituary(self, self, sWeapon, sMeansOfDeath); + else + obituary(self, attacker, sWeapon, sMeansOfDeath); + + if ( !isDefined( game["promod_do_readyup"] ) || !game["promod_do_readyup"] ) + self maps\mp\gametypes\_weapons::dropWeaponForDeath( attacker ); + + self.sessionstate = "dead"; + + if ( !isDefined( level.rdyup ) || !level.rdyup ) + self.statusicon = "hud_status_dead"; + + if (level.rdyup && isDefined( attacker.pers ) && ( attacker != self ) ) + { + attacker.ruptally++; + attacker setclientdvar("self_kills", attacker.ruptally); + } + + if (!level.rdyup) + { + self.deathCount++; + + if( isDefined( attacker.pers ) && !isDefined( self.switching_teams ) ) + { + self incPersStat( "deaths", 1 ); + self.deaths = self getPersStat( "deaths" ); + } + } + + lpattackGuid = ""; + lpattackname = ""; + lpattackerteam = ""; + lpattacknum = -1; + + prof_end( "PlayerKilled pre constants" ); + + if( isPlayer( attacker ) ) + { + lpattackGuid = attacker getGuid(); + lpattackname = attacker.name; + + if ( attacker == self ) + { + doKillcam = false; + + if ( isDefined( self.switching_teams ) ) + { + if ( !level.teamBased && ((self.leaving_team == "allies" && self.joining_team == "axis") || (self.leaving_team == "axis" && self.joining_team == "allies")) ) + { + playerCounts = self maps\mp\gametypes\_teams::CountPlayers(); + playerCounts[self.leaving_team]--; + playerCounts[self.joining_team]++; + + if( !level.rdyup && (playerCounts[self.joining_team] - playerCounts[self.leaving_team]) > 1 ) + { + self thread [[level.onXPEvent]]( "suicide" ); + self incPersStat( "suicides", 1 ); + self.suicides = self getPersStat( "suicides" ); + } + } + } + else + { + if (!level.rdyup) + { + self thread [[level.onXPEvent]]( "suicide" ); + self incPersStat( "suicides", 1 ); + self.suicides = self getPersStat( "suicides" ); + + scoreSub = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "suicidepointloss" ); + _setPlayerScore( self, _getPlayerScore( self ) - scoreSub ); + } + if ( sMeansOfDeath == "MOD_SUICIDE" && sHitLoc == "none" && self.throwingGrenade ) + self.lastGrenadeSuicideTime = gettime(); + } + } + else + { + prof_begin( "PlayerKilled attacker" ); + + lpattacknum = attacker getEntityNumber(); + + doKillcam = true; + + if ( level.teamBased && self.pers["team"] == attacker.pers["team"] ) + { + if ( sMeansOfDeath != "MOD_GRENADE" && level.friendlyfire && !level.rdyup ) + { + attacker thread [[level.onXPEvent]]( "teamkill" ); + + attacker.pers["teamkills"] += 1; + + if ( maps\mp\gametypes\_tweakables::getTweakableValue( "team", "teamkillpointloss" ) ) + { + scoreSub = maps\mp\gametypes\_rank::getScoreInfoValue( "kill" ); + _setPlayerScore( attacker, _getPlayerScore( attacker ) - scoreSub ); + } + } + } + else + { + prof_begin( "pks1" ); + + if ( sMeansOfDeath == "MOD_HEAD_SHOT" ) + { + attacker incPersStat( "headshots", 1 ); + attacker.headshots = attacker getPersStat( "headshots" ); + value = maps\mp\gametypes\_rank::getScoreInfoValue( "headshot" ); + attacker thread maps\mp\gametypes\_rank::giveRankXP( "headshot", value ); + attacker playLocalSound( "bullet_impact_headshot_2" ); + } + else + { + value = maps\mp\gametypes\_rank::getScoreInfoValue( "kill" ); + attacker thread maps\mp\gametypes\_rank::giveRankXP( "kill", value ); + } + + if (!level.rdyup) + { + attacker incPersStat( "kills", 1 ); + attacker.kills = attacker getPersStat( "kills" ); + + givePlayerScore( "kill", attacker, self ); + + giveTeamScore( "kill", attacker.pers["team"], attacker, self ); + + scoreSub = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "deathpointloss" ); + _setPlayerScore( self, _getPlayerScore( self ) - scoreSub ); + } + + prof_end( "pks1" ); + + if ( !level.rdyup && level.teamBased ) + { + prof_begin( "PlayerKilled assists" ); + + if ( isdefined( self.attackers ) ) + { + for ( j = 0; j < self.attackers.size; j++ ) + { + player = self.attackers[j]; + + if ( !isDefined( player ) || player == attacker ) + continue; + + player thread processAssist( self ); + } + self.attackers = []; + } + + prof_end( "PlayerKilled assists" ); + } + } + + prof_end( "PlayerKilled attacker" ); + } + } + else + { + doKillcam = false; + killedByEnemy = false; + + lpattacknum = -1; + lpattackguid = ""; + lpattackname = ""; + lpattackerteam = "world"; + + if ( isDefined( attacker ) && isDefined( attacker.team ) && (attacker.team == "axis" || attacker.team == "allies") && attacker.team != self.pers["team"] ) + { + killedByEnemy = true; + if ( level.teamBased ) + giveTeamScore( "kill", attacker.team, attacker, self ); + } + } + + self promod\shoutcast::updatePlayer(); + + self.switching_teams = undefined; + self.joining_team = undefined; + self.leaving_team = undefined; + + prof_begin( "PlayerKilled post constants" ); + + if ( sMeansOfDeath == "MOD_MELEE" ) + scWeapon = "knife_mp"; + else + scWeapon = sWeapon; + + sHeadshot = int(sMeansOfDeath == "MOD_HEAD_SHOT"); + + if ( isDefined( level.scorebot ) && level.scorebot && !level.rdyup ) + game["promod_scorebot_ticker_buffer"] += "kill" + lpattackname + "" + scWeapon + "" + self.name + "" + sHeadshot; + + logPrint( "K;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.pers["team"] + ";" + self.name + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n" ); + + level thread updateTeamStatus(); + + self clonePlayer( deathAnimDuration ); + + self thread [[level.onPlayerKilled]](eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration); + + if ( sWeapon == "none" ) + doKillcam = false; + + killcamentity = -1; + + self.deathTime = getTime(); + + wait 0.25; + + self.cancelKillcam = false; + self thread cancelKillCamOnUse(); + + if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" && level.gametype == "sd" ) + postDeathDelay = waitForTimeOrNotifies( 0.75 ); + else + postDeathDelay = waitForTimeOrNotifies( 1.75 ); + + self notify ( "death_delay_finished" ); + + if ( !isDefined( game["state"] ) || game["state"] != "playing" ) + return; + + respawnTimerStartTime = gettime(); + + if ( !self.cancelKillcam && doKillcam && level.killcam ) + { + livesLeft = !(level.numLives && !self.pers["lives"]); + timeUntilSpawn = TimeUntilSpawn(); + willRespawnImmediately = livesLeft && (timeUntilSpawn <= 0); + + self maps\mp\gametypes\_killcam::killcam( lpattacknum, killcamentity, sWeapon, postDeathDelay, psOffsetTime, willRespawnImmediately, timeUntilRoundEnd(), [], attacker ); + } + + prof_end( "PlayerKilled post constants" ); + + if ( !isDefined( game["state"] ) || game["state"] != "playing" ) + { + self.sessionstate = "dead"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + return; + } + + if ( isValidClass( self.class ) ) + { + timePassed = (gettime() - respawnTimerStartTime) / 1000; + self thread [[level.spawnClient]]( timePassed ); + } +} + +cancelKillCamOnUse() +{ + self endon ( "death_delay_finished" ); + self endon ( "disconnect" ); + level endon ( "game_ended" ); + + for(;;) + { + if ( !self UseButtonPressed() ) + { + wait 0.05; + continue; + } + + buttonTime = 0; + while( self UseButtonPressed() ) + { + buttonTime += 0.05 ; + wait 0.05; + } + + if ( buttonTime >= 0.5 ) + continue; + + buttonTime = 0; + + while ( !self UseButtonPressed() && buttonTime < 0.5 ) + { + buttonTime += 0.05 ; + wait 0.05; + } + + if ( buttonTime >= 0.5 ) + continue; + + self.cancelKillcam = true; + return; + } +} + +waitForTimeOrNotifies( desiredDelay ) +{ + startedWaiting = getTime(); + + waitedTime = (getTime() - startedWaiting)/1000; + + if ( waitedTime < desiredDelay ) + { + wait desiredDelay - waitedTime; + return desiredDelay; + } + else + return waitedTime; +} + +processAssist( killedplayer ) +{ + self endon("disconnect"); + killedplayer endon("disconnect"); + + wait 0.05; + WaitTillSlowProcessAllowed(); + + if ( ( self.pers["team"] != "axis" && self.pers["team"] != "allies" ) || ( self.pers["team"] == killedplayer.pers["team"] ) ) + return; + + self thread [[level.onXPEvent]]( "assist" ); + self incPersStat( "assists", 1 ); + self.assists = self getPersStat( "assists" ); + + givePlayerScore( "assist", self, killedplayer ); + + if ( !isDefined( level.rdyup ) ) + level.rdyup = false; + + if ( isDefined( level.scorebot ) && level.scorebot && !level.rdyup ) + game["promod_scorebot_ticker_buffer"] += "assist_by" + self.name; +} + +Callback_PlayerLastStand() +{ +} + +setSpawnVariables() +{ + resetTimeout(); + + self StopShellshock(); + self StopRumble( "damage_heavy" ); +} + +notifyConnecting() +{ + self setRank( 0, 1 ); + + waittillframeend; + + if( isDefined( self ) ) + level notify( "connecting", self ); +} + +setObjectiveText( team, text ) +{ + game["strings"]["objective_"+team] = text; + precacheString( text ); +} + +setObjectiveScoreText( team, text ) +{ + game["strings"]["objective_score_"+team] = text; + precacheString( text ); +} + +setObjectiveHintText( team, text ) +{ + game["strings"]["objective_hint_"+team] = text; + precacheString( text ); +} + +getObjectiveText( team ) +{ + if ( !isDefined( game["strings"]["objective_"+team] ) ) + return ""; + + return game["strings"]["objective_"+team]; +} + +getObjectiveScoreText( team ) +{ + if ( !isDefined( game["strings"]["objective_score_"+team] ) ) + return ""; + + return game["strings"]["objective_score_"+team]; +} + +getObjectiveHintText( team ) +{ + if ( !isDefined( game["strings"]["objective_hint_"+team] ) ) + return ""; + + return game["strings"]["objective_hint_"+team]; +} diff --git a/maps/mp/gametypes/_healthoverlay.gsc b/maps/mp/gametypes/_healthoverlay.gsc index bed68e9..e0d9473 100644 --- a/maps/mp/gametypes/_healthoverlay.gsc +++ b/maps/mp/gametypes/_healthoverlay.gsc @@ -1,194 +1,194 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - precacheShader("overlay_low_health"); - - level.healthOverlayCutoff = 0.55; - - regenTime = 5; - - level.playerHealth_RegularRegenDelay = regenTime * 1000; - - level.healthRegenDisabled = (level.playerHealth_RegularRegenDelay <= 0); - - level thread onPlayerConnect(); -} - -onPlayerConnect() -{ - for(;;) - { - level waittill("connecting", player); - player thread onPlayerSpawned(); - player thread onPlayerKilled(); - player thread onJoinedTeam(); - player thread onJoinedSpectators(); - player thread onPlayerDisconnect(); - } -} - -onJoinedTeam() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("joined_team"); - self notify("end_healthregen"); - } -} - -onJoinedSpectators() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("joined_spectators"); - self notify("end_healthregen"); - } -} - -onPlayerSpawned() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("spawned_player"); - self thread playerHealthRegen(); - } -} - -onPlayerKilled() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("killed_player"); - self notify("end_healthregen"); - } -} - -onPlayerDisconnect() -{ - self waittill("disconnect"); - self notify("end_healthregen"); -} - -playerHealthRegen() -{ - self endon("end_healthregen"); - - if ( self.health <= 0 ) - return; - - maxhealth = self.health; - oldhealth = maxhealth; - player = self; - health_add = 0; - - regenRate = 0.1; - veryHurt = false; - - player.breathingStopTime = -10000; - - thread playerBreathingSound(maxhealth * 0.35); - - lastSoundTime_Recover = 0; - hurtTime = 0; - newHealth = 0; - - for(;;) - { - wait 0.05; - if (player.health == maxhealth) - { - veryHurt = false; - self.atBrinkOfDeath = false; - continue; - } - - if (player.health <= 0) - return; - - wasVeryHurt = veryHurt; - ratio = player.health / maxHealth; - if (ratio <= level.healthOverlayCutoff) - { - veryHurt = true; - self.atBrinkOfDeath = true; - if (!wasVeryHurt) - hurtTime = gettime(); - } - - if (player.health >= oldhealth) - { - if (gettime() - hurttime < level.playerHealth_RegularRegenDelay || level.healthRegenDisabled) - continue; - - if (gettime() - lastSoundTime_Recover > level.playerHealth_RegularRegenDelay) - { - lastSoundTime_Recover = gettime(); - self playLocalSound("breathing_better"); - } - - if (veryHurt) - { - newHealth = ratio; - if (gettime() > hurtTime + 3000) - newHealth += regenRate; - } - else - newHealth = 1; - - if ( newHealth >= 1.0 ) - newHealth = 1.0; - - if (newHealth <= 0) - return; - - player setnormalhealth (newHealth); - oldhealth = player.health; - player promod\shoutcast::updatePlayer(); - continue; - } - - oldhealth = player.health; - - health_add = 0; - hurtTime = gettime(); - player.breathingStopTime = hurtTime + 6000; - } -} - -playerBreathingSound(healthcap) -{ - self endon("end_healthregen"); - - wait 2; - player = self; - for(;;) - { - wait 0.2; - if ( player.health <= 0 ) - return; - - if ( player.health >= healthcap || level.healthRegenDisabled && gettime() > player.breathingStopTime ) - continue; - - player playLocalSound("breathing_hurt"); - wait 0.784; - wait (0.1 + randomfloat (0.8)); - } -} +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + precacheShader("overlay_low_health"); + + level.healthOverlayCutoff = 0.55; + + regenTime = 5; + + level.playerHealth_RegularRegenDelay = regenTime * 1000; + + level.healthRegenDisabled = (level.playerHealth_RegularRegenDelay <= 0); + + level thread onPlayerConnect(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill("connecting", player); + player thread onPlayerSpawned(); + player thread onPlayerKilled(); + player thread onJoinedTeam(); + player thread onJoinedSpectators(); + player thread onPlayerDisconnect(); + } +} + +onJoinedTeam() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("joined_team"); + self notify("end_healthregen"); + } +} + +onJoinedSpectators() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("joined_spectators"); + self notify("end_healthregen"); + } +} + +onPlayerSpawned() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("spawned_player"); + self thread playerHealthRegen(); + } +} + +onPlayerKilled() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("killed_player"); + self notify("end_healthregen"); + } +} + +onPlayerDisconnect() +{ + self waittill("disconnect"); + self notify("end_healthregen"); +} + +playerHealthRegen() +{ + self endon("end_healthregen"); + + if ( self.health <= 0 ) + return; + + maxhealth = self.health; + oldhealth = maxhealth; + player = self; + health_add = 0; + + regenRate = 0.1; + veryHurt = false; + + player.breathingStopTime = -10000; + + thread playerBreathingSound(maxhealth * 0.35); + + lastSoundTime_Recover = 0; + hurtTime = 0; + newHealth = 0; + + for(;;) + { + wait 0.05; + if (player.health == maxhealth) + { + veryHurt = false; + self.atBrinkOfDeath = false; + continue; + } + + if (player.health <= 0) + return; + + wasVeryHurt = veryHurt; + ratio = player.health / maxHealth; + if (ratio <= level.healthOverlayCutoff) + { + veryHurt = true; + self.atBrinkOfDeath = true; + if (!wasVeryHurt) + hurtTime = gettime(); + } + + if (player.health >= oldhealth) + { + if (gettime() - hurttime < level.playerHealth_RegularRegenDelay || level.healthRegenDisabled) + continue; + + if (gettime() - lastSoundTime_Recover > level.playerHealth_RegularRegenDelay) + { + lastSoundTime_Recover = gettime(); + self playLocalSound("breathing_better"); + } + + if (veryHurt) + { + newHealth = ratio; + if (gettime() > hurtTime + 3000) + newHealth += regenRate; + } + else + newHealth = 1; + + if ( newHealth >= 1.0 ) + newHealth = 1.0; + + if (newHealth <= 0) + return; + + player setnormalhealth (newHealth); + oldhealth = player.health; + player promod\shoutcast::updatePlayer(); + continue; + } + + oldhealth = player.health; + + health_add = 0; + hurtTime = gettime(); + player.breathingStopTime = hurtTime + 6000; + } +} + +playerBreathingSound(healthcap) +{ + self endon("end_healthregen"); + + wait 2; + player = self; + for(;;) + { + wait 0.2; + if ( player.health <= 0 ) + return; + + if ( player.health >= healthcap || level.healthRegenDisabled && gettime() > player.breathingStopTime ) + continue; + + player playLocalSound("breathing_hurt"); + wait 0.784; + wait (0.1 + randomfloat (0.8)); + } +} diff --git a/maps/mp/gametypes/_hud.gsc b/maps/mp/gametypes/_hud.gsc index f5428b8..f8d98b7 100644 --- a/maps/mp/gametypes/_hud.gsc +++ b/maps/mp/gametypes/_hud.gsc @@ -1,84 +1,84 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - precacheShader( "progress_bar_bg" ); - precacheShader( "progress_bar_fg" ); - precacheShader( "progress_bar_fill" ); - precacheShader( "score_bar_bg" ); - precacheShader( "score_bar_allies" ); - precacheShader( "score_bar_opfor" ); - - level.uiParent = spawnstruct(); - level.uiParent.horzAlign = "left"; - level.uiParent.vertAlign = "top"; - level.uiParent.alignX = "left"; - level.uiParent.alignY = "top"; - level.uiParent.x = 0; - level.uiParent.y = 0; - level.uiParent.width = 0; - level.uiParent.height = 0; - level.uiParent.children = []; - - level.fontHeight = 12; - - level.hud["allies"] = spawnstruct(); - level.hud["axis"] = spawnstruct(); - - level.primaryProgressBarY = -61; - level.primaryProgressBarX = 0; - level.primaryProgressBarHeight = 8; - level.primaryProgressBarWidth = 120; - level.primaryProgressBarTextY = -75; - level.primaryProgressBarTextX = 0; - level.primaryProgressBarFontSize = 1.4; - - level.teamProgressBarY = 32; - level.teamProgressBarHeight = 14; - level.teamProgressBarWidth = 192; - level.teamProgressBarTextY = 8; - level.teamProgressBarFontSize = 1.65; - - level.lowerTextYAlign = "CENTER"; - level.lowerTextY = 70; - level.lowerTextFontSize = 2; -} - -fontPulseInit() -{ - self.baseFontScale = self.fontScale; - self.maxFontScale = self.fontScale * 2; - self.inFrames = 3; - self.outFrames = 5; -} - -fontPulse(player) -{ - self notify ( "fontPulse" ); - self endon ( "fontPulse" ); - player endon("disconnect"); - player endon("joined_team"); - player endon("joined_spectators"); - - scaleRange = self.maxFontScale - self.baseFontScale; - - while ( self.fontScale < self.maxFontScale ) - { - self.fontScale = min( self.maxFontScale, self.fontScale + (scaleRange / self.inFrames) ); - wait 0.05; - } - - while ( self.fontScale > self.baseFontScale ) - { - self.fontScale = max( self.baseFontScale, self.fontScale - (scaleRange / self.outFrames) ); - wait 0.05; - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + precacheShader( "progress_bar_bg" ); + precacheShader( "progress_bar_fg" ); + precacheShader( "progress_bar_fill" ); + precacheShader( "score_bar_bg" ); + precacheShader( "score_bar_allies" ); + precacheShader( "score_bar_opfor" ); + + level.uiParent = spawnstruct(); + level.uiParent.horzAlign = "left"; + level.uiParent.vertAlign = "top"; + level.uiParent.alignX = "left"; + level.uiParent.alignY = "top"; + level.uiParent.x = 0; + level.uiParent.y = 0; + level.uiParent.width = 0; + level.uiParent.height = 0; + level.uiParent.children = []; + + level.fontHeight = 12; + + level.hud["allies"] = spawnstruct(); + level.hud["axis"] = spawnstruct(); + + level.primaryProgressBarY = -61; + level.primaryProgressBarX = 0; + level.primaryProgressBarHeight = 8; + level.primaryProgressBarWidth = 120; + level.primaryProgressBarTextY = -75; + level.primaryProgressBarTextX = 0; + level.primaryProgressBarFontSize = 1.4; + + level.teamProgressBarY = 32; + level.teamProgressBarHeight = 14; + level.teamProgressBarWidth = 192; + level.teamProgressBarTextY = 8; + level.teamProgressBarFontSize = 1.65; + + level.lowerTextYAlign = "CENTER"; + level.lowerTextY = 70; + level.lowerTextFontSize = 2; +} + +fontPulseInit() +{ + self.baseFontScale = self.fontScale; + self.maxFontScale = self.fontScale * 2; + self.inFrames = 3; + self.outFrames = 5; +} + +fontPulse(player) +{ + self notify ( "fontPulse" ); + self endon ( "fontPulse" ); + player endon("disconnect"); + player endon("joined_team"); + player endon("joined_spectators"); + + scaleRange = self.maxFontScale - self.baseFontScale; + + while ( self.fontScale < self.maxFontScale ) + { + self.fontScale = min( self.maxFontScale, self.fontScale + (scaleRange / self.inFrames) ); + wait 0.05; + } + + while ( self.fontScale > self.baseFontScale ) + { + self.fontScale = max( self.baseFontScale, self.fontScale - (scaleRange / self.outFrames) ); + wait 0.05; + } +} diff --git a/maps/mp/gametypes/_hud_message.gsc b/maps/mp/gametypes/_hud_message.gsc index 63f825d..792c096 100644 --- a/maps/mp/gametypes/_hud_message.gsc +++ b/maps/mp/gametypes/_hud_message.gsc @@ -1,676 +1,676 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\gametypes\_hud_util; - -init() -{ - precacheString( &"MP_FIRSTPLACE_NAME" ); - precacheString( &"MP_SECONDPLACE_NAME" ); - precacheString( &"MP_THIRDPLACE_NAME" ); - precacheString( &"MP_MATCH_BONUS_IS" ); - - game["strings"]["draw"] = &"MP_DRAW"; - game["strings"]["round_draw"] = &"MP_ROUND_DRAW"; - game["strings"]["round_win"] = &"MP_ROUND_WIN"; - game["strings"]["round_loss"] = &"MP_ROUND_LOSS"; - game["strings"]["victory"] = &"MP_VICTORY"; - game["strings"]["defeat"] = &"MP_DEFEAT"; - game["strings"]["halftime"] = &"MP_HALFTIME"; - game["strings"]["overtime"] = &"MP_OVERTIME"; - game["strings"]["roundend"] = &"MP_ROUNDEND"; - game["strings"]["intermission"] = &"MP_INTERMISSION"; - game["strings"]["side_switch"] = &"MP_SWITCHING_SIDES"; - game["strings"]["match_bonus"] = &"MP_MATCH_BONUS_IS"; - - level thread onPlayerConnect(); -} - -onPlayerConnect() -{ - for(;;) - { - level waittill( "connecting", player ); - - player thread hintMessageDeathThink(); - player thread lowerMessageThink(); - - player thread initNotifyMessage(); - } -} - -hintMessage( hintText ) -{ - notifyData = spawnstruct(); - - notifyData.notifyText = hintText; - notifyData.glowColor = (0.3, 0.6, 0.3); - - notifyMessage( notifyData ); -} - -initNotifyMessage() -{ - titleSize = 2.5; - textSize = 1.75; - iconSize = 30; - font = "objective"; - point = "TOP"; - relativePoint = "BOTTOM"; - yOffset = 30; - xOffset = 0; - - self.notifyTitle = createFontString( font, titleSize ); - self.notifyTitle setPoint( point, undefined, xOffset, yOffset ); - self.notifyTitle.glowColor = (0.2, 0.3, 0.7); - self.notifyTitle.glowAlpha = 1; - self.notifyTitle.hideWhenInMenu = true; - self.notifyTitle.archived = false; - self.notifyTitle.alpha = 0; - - self.notifyText = createFontString( font, textSize ); - self.notifyText setParent( self.notifyTitle ); - self.notifyText setPoint( point, relativePoint, 0, 0 ); - self.notifyText.glowColor = (0.2, 0.3, 0.7); - self.notifyText.glowAlpha = 1; - self.notifyText.hideWhenInMenu = true; - self.notifyText.archived = false; - self.notifyText.alpha = 0; - - self.notifyText2 = createFontString( font, textSize ); - self.notifyText2 setParent( self.notifyTitle ); - self.notifyText2 setPoint( point, relativePoint, 0, 0 ); - self.notifyText2.glowColor = (0.2, 0.3, 0.7); - self.notifyText2.glowAlpha = 1; - self.notifyText2.hideWhenInMenu = true; - self.notifyText2.archived = false; - self.notifyText2.alpha = 0; - - self.notifyIcon = createIcon( "white", iconSize, iconSize ); - self.notifyIcon setParent( self.notifyText2 ); - self.notifyIcon setPoint( point, relativePoint, 0, 0 ); - self.notifyIcon.hideWhenInMenu = true; - self.notifyIcon.archived = false; - self.notifyIcon.alpha = 0; - - self.doingNotify = false; - self.notifyQueue = []; -} - -oldNotifyMessage( titleText, notifyText, iconName, glowColor, sound, duration ) -{ - notifyData = spawnstruct(); - - notifyData.titleText = titleText; - notifyData.notifyText = notifyText; - notifyData.iconName = iconName; - notifyData.glowColor = glowColor; - notifyData.sound = sound; - notifyData.duration = duration; - - notifyMessage( notifyData ); -} - -notifyMessage( notifyData ) -{ - self endon ( "death" ); - self endon ( "disconnect" ); - - if ( !self.doingNotify ) - { - self thread showNotifyMessage( notifyData ); - return; - } - - self.notifyQueue[ self.notifyQueue.size ] = notifyData; -} - -showNotifyMessage( notifyData ) -{ - self endon("disconnect"); - - self.doingNotify = true; - - waitRequireVisibility( 0 ); - - if ( isDefined( notifyData.duration ) ) - duration = notifyData.duration; - else if ( level.gameEnded ) - duration = 2; - else - duration = 4; - - self thread resetOnCancel(); - - if ( isDefined( notifyData.sound ) ) - self playLocalSound( notifyData.sound ); - - if ( isDefined( notifyData.glowColor ) ) - glowColor = notifyData.glowColor; - else - glowColor = (0.3, 0.6, 0.3); - - anchorElem = self.notifyTitle; - - if ( isDefined( notifyData.titleText ) ) - { - if ( isDefined( notifyData.titleLabel ) ) - self.notifyTitle.label = notifyData.titleLabel; - else - self.notifyTitle.label = &""; - - if ( isDefined( notifyData.titleLabel ) && !isDefined( notifyData.titleIsString ) ) - self.notifyTitle setValue( notifyData.titleText ); - else - self.notifyTitle setText( notifyData.titleText ); - self.notifyTitle setPulseFX( 100, int(duration*1000), 1000 ); - self.notifyTitle.glowColor = glowColor; - self.notifyTitle.alpha = 1; - } - - if ( isDefined( notifyData.notifyText ) ) - { - if ( isDefined( notifyData.textLabel ) ) - self.notifyText.label = notifyData.textLabel; - else - self.notifyText.label = &""; - - if ( isDefined( notifyData.textLabel ) && !isDefined( notifyData.textIsString ) ) - self.notifyText setValue( notifyData.notifyText ); - else - self.notifyText setText( notifyData.notifyText ); - self.notifyText setPulseFX( 100, int(duration*1000), 1000 ); - self.notifyText.glowColor = glowColor; - self.notifyText.alpha = 1; - anchorElem = self.notifyText; - } - - if ( isDefined( notifyData.notifyText2 ) ) - { - self.notifyText2 setParent( anchorElem ); - - if ( isDefined( notifyData.text2Label ) ) - self.notifyText2.label = notifyData.text2Label; - else - self.notifyText2.label = &""; - - self.notifyText2 setText( notifyData.notifyText2 ); - self.notifyText2 setPulseFX( 100, int(duration*1000), 1000 ); - self.notifyText2.glowColor = glowColor; - self.notifyText2.alpha = 1; - anchorElem = self.notifyText2; - } - - if ( isDefined( notifyData.iconName ) ) - { - self.notifyIcon setParent( anchorElem ); - self.notifyIcon setShader( notifyData.iconName, 60, 60 ); - self.notifyIcon.alpha = 0; - self.notifyIcon fadeOverTime( 1 ); - self.notifyIcon.alpha = 1; - - waitRequireVisibility( duration ); - - self.notifyIcon fadeOverTime( 0.75 ); - self.notifyIcon.alpha = 0; - } - else - waitRequireVisibility( duration ); - - self notify ( "notifyMessageDone" ); - self.doingNotify = false; - - if ( self.notifyQueue.size > 0 ) - { - nextNotifyData = self.notifyQueue[0]; - - newQueue = []; - for ( i = 1; i < self.notifyQueue.size; i++ ) - self.notifyQueue[i-1] = self.notifyQueue[i]; - self.notifyQueue[i-1] = undefined; - - self thread showNotifyMessage( nextNotifyData ); - } -} - -waitRequireVisibility( waitTime ) -{ - self endon("disconnect"); - - interval = 0.05; - - while ( !self canReadText() ) - wait interval; - - while ( waitTime > 0 ) - { - wait interval; - if ( self canReadText() ) - waitTime -= interval; - } -} - -canReadText() -{ - if ( self maps\mp\_flashgrenades::isFlashbanged() ) - return false; - - return true; -} - -resetOnDeath() -{ - self endon ( "notifyMessageDone" ); - self endon ( "disconnect" ); - level endon ( "game_ended" ); - self waittill ( "death" ); - - resetNotify(); -} - -resetOnCancel() -{ - self notify ( "resetOnCancel" ); - self endon ( "resetOnCancel" ); - self endon ( "notifyMessageDone" ); - self endon ( "disconnect" ); - - level waittill ( "cancel_notify" ); - - resetNotify(); -} - -resetNotify() -{ - self.notifyTitle.alpha = 0; - self.notifyText.alpha = 0; - self.notifyIcon.alpha = 0; - self.doingNotify = false; -} - -hintMessageDeathThink() -{ - self endon ( "disconnect" ); - - for(;;) - { - self waittill ( "death" ); - - if ( isDefined( self.hintMessage ) ) - self.hintMessage destroyElem(); - } -} - -lowerMessageThink() -{ - self endon ( "disconnect" ); - - self.lowerMessage = createFontString( "default", level.lowerTextFontSize ); - self.lowerMessage setPoint( "CENTER", level.lowerTextYAlign, 0, level.lowerTextY ); - self.lowerMessage setText( "" ); - self.lowerMessage.archived = false; - - timerFontSize = 1.5; - - self.lowerTimer = createFontString( "default", timerFontSize ); - self.lowerTimer setParent( self.lowerMessage ); - self.lowerTimer setPoint( "TOP", "BOTTOM", 0, 0 ); - self.lowerTimer setText( "" ); - self.lowerTimer.archived = false; -} - -teamOutcomeNotify( winner, isRound, endReasonText, delay ) -{ - self endon ( "disconnect" ); - self notify ( "reset_outcome" ); - - team = self.pers["team"]; - if ( !isDefined( team ) || (team != "allies" && team != "axis") ) - team = "allies"; - - while ( self.doingNotify ) - wait 0.05; - - if ( isDefined ( delay ) ) - wait delay; - - self endon ( "reset_outcome" ); - - titleSize = 3; - textSize = 2; - iconSize = 70; - spacing = 30; - font = "objective"; - - duration = 60000; - - outcomeTitle = createFontString( font, titleSize ); - outcomeTitle setPoint( "TOP", undefined, 0, 30 ); - outcomeTitle.glowAlpha = 1; - outcomeTitle.hideWhenInMenu = false; - outcomeTitle.archived = false; - - outcomeText = createFontString( font, 2 ); - outcomeText setParent( outcomeTitle ); - outcomeText setPoint( "TOP", "BOTTOM", 0, 0 ); - outcomeText.glowAlpha = 1; - outcomeText.hideWhenInMenu = false; - outcomeText.archived = false; - - if ( winner == "halftime" ) - { - outcomeTitle.glowColor = (0.2, 0.3, 0.7); - outcomeTitle setText( game["strings"]["halftime"] ); - outcomeTitle.color = (1, 1, 1); - } - else if ( winner == "intermission" ) - { - outcomeTitle.glowColor = (0.2, 0.3, 0.7); - outcomeTitle setText( game["strings"]["intermission"] ); - outcomeTitle.color = (1, 1, 1); - } - else if ( winner == "roundend" ) - { - outcomeTitle.glowColor = (0.2, 0.3, 0.7); - outcomeTitle setText( game["strings"]["roundend"] ); - outcomeTitle.color = (1, 1, 1); - } - else if ( winner == "overtime" ) - { - outcomeTitle.glowColor = (0.2, 0.3, 0.7); - outcomeTitle setText( game["strings"]["overtime"] ); - outcomeTitle.color = (1, 1, 1); - } - else if ( winner == "tie" ) - { - outcomeTitle.glowColor = (0.2, 0.3, 0.7); - if ( isRound ) - outcomeTitle setText( game["strings"]["round_draw"] ); - else - outcomeTitle setText( game["strings"]["draw"] ); - outcomeTitle.color = (1, 1, 1); - } - else if ( isDefined( self.pers["team"] ) && winner == team ) - { - outcomeTitle.glowColor = (0, 0, 0); - if ( isRound ) - outcomeTitle setText( game["strings"]["round_win"] ); - else - outcomeTitle setText( game["strings"]["victory"] ); - outcomeTitle.color = (0.6, 0.9, 0.6); - } - else - { - outcomeTitle.glowColor = (0, 0, 0); - if ( isRound ) - outcomeTitle setText( game["strings"]["round_loss"] ); - else - outcomeTitle setText( game["strings"]["defeat"] ); - outcomeTitle.color = (0.7, 0.3, 0.2); - } - - outcomeText.glowColor = (0.2, 0.3, 0.7); - outcomeText setText( endReasonText ); - - outcomeTitle setPulseFX( 100, duration, 1000 ); - outcomeText setPulseFX( 100, duration, 1000 ); - - leftIcon = createIcon( game["icons"][team], iconSize, iconSize ); - leftIcon setParent( outcomeText ); - leftIcon setPoint( "TOP", "BOTTOM", -60, spacing ); - leftIcon.hideWhenInMenu = false; - leftIcon.archived = false; - leftIcon.alpha = 0; - leftIcon fadeOverTime( 0.5 ); - leftIcon.alpha = 1; - - rightIcon = createIcon( game["icons"][level.otherTeam[team]], iconSize, iconSize ); - rightIcon setParent( outcomeText ); - rightIcon setPoint( "TOP", "BOTTOM", 60, spacing ); - rightIcon.hideWhenInMenu = false; - rightIcon.archived = false; - rightIcon.alpha = 0; - rightIcon fadeOverTime( 0.5 ); - rightIcon.alpha = 1; - - leftScore = createFontString( font, titleSize ); - leftScore setParent( leftIcon ); - leftScore setPoint( "TOP", "BOTTOM", 0, spacing ); - leftScore.glowColor = game["colors"][team]; - leftScore.glowAlpha = 1; - leftScore setValue( getTeamScore( team ) ); - leftScore.hideWhenInMenu = false; - leftScore.archived = false; - leftScore setPulseFX( 100, duration, 1000 ); - - rightScore = createFontString( font, titleSize ); - rightScore setParent( rightIcon ); - rightScore setPoint( "TOP", "BOTTOM", 0, spacing ); - rightScore.glowColor = game["colors"][level.otherTeam[team]]; - rightScore.glowAlpha = 1; - rightScore setValue( getTeamScore( level.otherTeam[team] ) ); - rightScore.hideWhenInMenu = false; - rightScore.archived = false; - rightScore setPulseFX( 100, duration, 1000 ); - - if ( winner == "halftime" ) - { - leftIcon MoveOverTime( 2.5 ); - leftIcon setPoint( "TOP", "BOTTOM", 60, spacing ); - rightIcon MoveOverTime( 2.5 ); - rightIcon setPoint( "TOP", "BOTTOM", -60, spacing ); - leftScore MoveOverTime( 2.5 ); - leftScore setPoint( "TOP", "BOTTOM", -120, spacing ); - rightScore MoveOverTime( 2.5 ); - rightScore setPoint( "TOP", "BOTTOM", 120, spacing ); - } - - matchBonus = undefined; - if ( isDefined( self.matchBonus ) ) - { - matchBonus = createFontString( font, 2 ); - matchBonus setParent( outcomeText ); - matchBonus setPoint( "TOP", "BOTTOM", 0, iconSize + (spacing * 3) + leftScore.height ); - matchBonus.glowAlpha = 1; - matchBonus.hideWhenInMenu = false; - matchBonus.archived = false; - matchBonus.label = game["strings"]["match_bonus"]; - matchBonus setValue( self.matchBonus ); - } - - self thread resetTeamOutcomeNotify( outcomeTitle, outcomeText, leftIcon, rightIcon, leftScore, rightScore, matchBonus ); -} - -outcomeNotify( winner, endReasonText, delay ) -{ - self endon ( "disconnect" ); - self notify ( "reset_outcome" ); - - while ( self.doingNotify ) - wait 0.05; - - if ( isDefined ( delay ) ) - wait delay; - - self endon ( "reset_outcome" ); - - titleSize = 3; - winnerSize = 2; - otherSize = 1.5; - iconSize = 30; - spacing = 20; - font = "objective"; - - duration = 60000; - - players = level.placement["all"]; - - outcomeTitle = createFontString( font, titleSize ); - outcomeTitle setPoint( "TOP", undefined, 0, spacing ); - if ( isDefined( players[1] ) && players[0].score == players[1].score && players[0].deaths == players[1].deaths && (self == players[0] || self == players[1]) ) - { - outcomeTitle setText( game["strings"]["tie"] ); - outcomeTitle.glowColor = (0.2, 0.3, 0.7); - } - else if ( isDefined( players[2] ) && players[0].score == players[2].score && players[0].deaths == players[2].deaths && self == players[2] ) - { - outcomeTitle setText( game["strings"]["tie"] ); - outcomeTitle.glowColor = (0.2, 0.3, 0.7); - } - else if ( isDefined( players[0] ) && self == players[0] ) - { - outcomeTitle setText( game["strings"]["victory"] ); - outcomeTitle.glowColor = (0.2, 0.3, 0.7); - } - else - { - outcomeTitle setText( game["strings"]["defeat"] ); - outcomeTitle.glowColor = (0.7, 0.3, 0.2); - } - outcomeTitle.glowAlpha = 1; - outcomeTitle.hideWhenInMenu = false; - outcomeTitle.archived = false; - outcomeTitle setPulseFX( 100, duration, 1000 ); - - outcomeText = createFontString( font, 2 ); - outcomeText setParent( outcomeTitle ); - outcomeText setPoint( "TOP", "BOTTOM", 0, 0 ); - outcomeText.glowAlpha = 1; - outcomeText.hideWhenInMenu = false; - outcomeText.archived = false; - outcomeText.glowColor = (0.2, 0.3, 0.7); - outcomeText setText( endReasonText ); - - firstTitle = createFontString( font, winnerSize ); - firstTitle setParent( outcomeText ); - firstTitle setPoint( "TOP", "BOTTOM", 0, spacing ); - firstTitle.glowColor = (0.3, 0.7, 0.2); - firstTitle.glowAlpha = 1; - firstTitle.hideWhenInMenu = false; - firstTitle.archived = false; - if ( isDefined( players[0] ) ) - { - firstTitle.label = &"MP_FIRSTPLACE_NAME"; - firstTitle setPlayerNameString( players[0] ); - firstTitle setPulseFX( 100, duration, 1000 ); - } - - secondTitle = createFontString( font, otherSize ); - secondTitle setParent( firstTitle ); - secondTitle setPoint( "TOP", "BOTTOM", 0, spacing ); - secondTitle.glowColor = (0.2, 0.3, 0.7); - secondTitle.glowAlpha = 1; - secondTitle.hideWhenInMenu = false; - secondTitle.archived = false; - if ( isDefined( players[1] ) ) - { - secondTitle.label = &"MP_SECONDPLACE_NAME"; - secondTitle setPlayerNameString( players[1] ); - secondTitle setPulseFX( 100, duration, 1000 ); - } - - thirdTitle = createFontString( font, otherSize ); - thirdTitle setParent( secondTitle ); - thirdTitle setPoint( "TOP", "BOTTOM", 0, spacing ); - thirdTitle setParent( secondTitle ); - thirdTitle.glowColor = (0.2, 0.3, 0.7); - thirdTitle.glowAlpha = 1; - thirdTitle.hideWhenInMenu = false; - thirdTitle.archived = false; - if ( isDefined( players[2] ) ) - { - thirdTitle.label = &"MP_THIRDPLACE_NAME"; - thirdTitle setPlayerNameString( players[2] ); - thirdTitle setPulseFX( 100, duration, 1000 ); - } - - matchBonus = createFontString( font, 2 ); - matchBonus setParent( thirdTitle ); - matchBonus setPoint( "TOP", "BOTTOM", 0, spacing ); - matchBonus.glowAlpha = 1; - matchBonus.hideWhenInMenu = false; - matchBonus.archived = false; - if ( isDefined( self.matchBonus ) ) - { - matchBonus.label = game["strings"]["match_bonus"]; - matchBonus setValue( self.matchBonus ); - } - - self thread updateOutcome( firstTitle, secondTitle, thirdTitle ); - self thread resetOutcomeNotify( outcomeTitle, outcomeText, firstTitle, secondTitle, thirdTitle, matchBonus ); -} - -resetOutcomeNotify( outcomeTitle, outcomeText, firstTitle, secondTitle, thirdTitle, matchBonus ) -{ - self endon ( "disconnect" ); - self waittill ( "reset_outcome" ); - - if ( isDefined( outcomeTitle ) ) - outcomeTitle destroyElem(); - if ( isDefined( outcomeText ) ) - outcomeText destroyElem(); - if ( isDefined( firstTitle ) ) - firstTitle destroyElem(); - if ( isDefined( secondTitle ) ) - secondTitle destroyElem(); - if ( isDefined( thirdTitle ) ) - thirdTitle destroyElem(); - if ( isDefined( matchBonus ) ) - matchBonus destroyElem(); -} - -resetTeamOutcomeNotify( outcomeTitle, outcomeText, leftIcon, rightIcon, LeftScore, rightScore, matchBonus ) -{ - self endon ( "disconnect" ); - self waittill ( "reset_outcome" ); - - if ( isDefined( outcomeTitle ) ) - outcomeTitle destroyElem(); - if ( isDefined( outcomeText ) ) - outcomeText destroyElem(); - if ( isDefined( leftIcon ) ) - leftIcon destroyElem(); - if ( isDefined( rightIcon ) ) - rightIcon destroyElem(); - if ( isDefined( leftScore ) ) - leftScore destroyElem(); - if ( isDefined( rightScore ) ) - rightScore destroyElem(); - if ( isDefined( matchBonus ) ) - matchBonus destroyElem(); -} - -updateOutcome( firstTitle, secondTitle, thirdTitle ) -{ - self endon( "disconnect" ); - self endon( "reset_outcome" ); - - for(;;) - { - self waittill( "update_outcome" ); - - players = level.placement["all"]; - - if ( isDefined( firstTitle ) && isDefined( players[0] ) ) - firstTitle setPlayerNameString( players[0] ); - else if ( isDefined( firstTitle ) ) - firstTitle.alpha = 0; - - if ( isDefined( secondTitle ) && isDefined( players[1] ) ) - secondTitle setPlayerNameString( players[1] ); - else if ( isDefined( secondTitle ) ) - secondTitle.alpha = 0; - - if ( isDefined( thirdTitle ) && isDefined( players[2] ) ) - thirdTitle setPlayerNameString( players[2] ); - else if ( isDefined( thirdTitle ) ) - thirdTitle.alpha = 0; - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\gametypes\_hud_util; + +init() +{ + precacheString( &"MP_FIRSTPLACE_NAME" ); + precacheString( &"MP_SECONDPLACE_NAME" ); + precacheString( &"MP_THIRDPLACE_NAME" ); + precacheString( &"MP_MATCH_BONUS_IS" ); + + game["strings"]["draw"] = &"MP_DRAW"; + game["strings"]["round_draw"] = &"MP_ROUND_DRAW"; + game["strings"]["round_win"] = &"MP_ROUND_WIN"; + game["strings"]["round_loss"] = &"MP_ROUND_LOSS"; + game["strings"]["victory"] = &"MP_VICTORY"; + game["strings"]["defeat"] = &"MP_DEFEAT"; + game["strings"]["halftime"] = &"MP_HALFTIME"; + game["strings"]["overtime"] = &"MP_OVERTIME"; + game["strings"]["roundend"] = &"MP_ROUNDEND"; + game["strings"]["intermission"] = &"MP_INTERMISSION"; + game["strings"]["side_switch"] = &"MP_SWITCHING_SIDES"; + game["strings"]["match_bonus"] = &"MP_MATCH_BONUS_IS"; + + level thread onPlayerConnect(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill( "connecting", player ); + + player thread hintMessageDeathThink(); + player thread lowerMessageThink(); + + player thread initNotifyMessage(); + } +} + +hintMessage( hintText ) +{ + notifyData = spawnstruct(); + + notifyData.notifyText = hintText; + notifyData.glowColor = (0.3, 0.6, 0.3); + + notifyMessage( notifyData ); +} + +initNotifyMessage() +{ + titleSize = 2.5; + textSize = 1.75; + iconSize = 30; + font = "objective"; + point = "TOP"; + relativePoint = "BOTTOM"; + yOffset = 30; + xOffset = 0; + + self.notifyTitle = createFontString( font, titleSize ); + self.notifyTitle setPoint( point, undefined, xOffset, yOffset ); + self.notifyTitle.glowColor = (0.2, 0.3, 0.7); + self.notifyTitle.glowAlpha = 1; + self.notifyTitle.hideWhenInMenu = true; + self.notifyTitle.archived = false; + self.notifyTitle.alpha = 0; + + self.notifyText = createFontString( font, textSize ); + self.notifyText setParent( self.notifyTitle ); + self.notifyText setPoint( point, relativePoint, 0, 0 ); + self.notifyText.glowColor = (0.2, 0.3, 0.7); + self.notifyText.glowAlpha = 1; + self.notifyText.hideWhenInMenu = true; + self.notifyText.archived = false; + self.notifyText.alpha = 0; + + self.notifyText2 = createFontString( font, textSize ); + self.notifyText2 setParent( self.notifyTitle ); + self.notifyText2 setPoint( point, relativePoint, 0, 0 ); + self.notifyText2.glowColor = (0.2, 0.3, 0.7); + self.notifyText2.glowAlpha = 1; + self.notifyText2.hideWhenInMenu = true; + self.notifyText2.archived = false; + self.notifyText2.alpha = 0; + + self.notifyIcon = createIcon( "white", iconSize, iconSize ); + self.notifyIcon setParent( self.notifyText2 ); + self.notifyIcon setPoint( point, relativePoint, 0, 0 ); + self.notifyIcon.hideWhenInMenu = true; + self.notifyIcon.archived = false; + self.notifyIcon.alpha = 0; + + self.doingNotify = false; + self.notifyQueue = []; +} + +oldNotifyMessage( titleText, notifyText, iconName, glowColor, sound, duration ) +{ + notifyData = spawnstruct(); + + notifyData.titleText = titleText; + notifyData.notifyText = notifyText; + notifyData.iconName = iconName; + notifyData.glowColor = glowColor; + notifyData.sound = sound; + notifyData.duration = duration; + + notifyMessage( notifyData ); +} + +notifyMessage( notifyData ) +{ + self endon ( "death" ); + self endon ( "disconnect" ); + + if ( !self.doingNotify ) + { + self thread showNotifyMessage( notifyData ); + return; + } + + self.notifyQueue[ self.notifyQueue.size ] = notifyData; +} + +showNotifyMessage( notifyData ) +{ + self endon("disconnect"); + + self.doingNotify = true; + + waitRequireVisibility( 0 ); + + if ( isDefined( notifyData.duration ) ) + duration = notifyData.duration; + else if ( level.gameEnded ) + duration = 2; + else + duration = 4; + + self thread resetOnCancel(); + + if ( isDefined( notifyData.sound ) ) + self playLocalSound( notifyData.sound ); + + if ( isDefined( notifyData.glowColor ) ) + glowColor = notifyData.glowColor; + else + glowColor = (0.3, 0.6, 0.3); + + anchorElem = self.notifyTitle; + + if ( isDefined( notifyData.titleText ) ) + { + if ( isDefined( notifyData.titleLabel ) ) + self.notifyTitle.label = notifyData.titleLabel; + else + self.notifyTitle.label = &""; + + if ( isDefined( notifyData.titleLabel ) && !isDefined( notifyData.titleIsString ) ) + self.notifyTitle setValue( notifyData.titleText ); + else + self.notifyTitle setText( notifyData.titleText ); + self.notifyTitle setPulseFX( 100, int(duration*1000), 1000 ); + self.notifyTitle.glowColor = glowColor; + self.notifyTitle.alpha = 1; + } + + if ( isDefined( notifyData.notifyText ) ) + { + if ( isDefined( notifyData.textLabel ) ) + self.notifyText.label = notifyData.textLabel; + else + self.notifyText.label = &""; + + if ( isDefined( notifyData.textLabel ) && !isDefined( notifyData.textIsString ) ) + self.notifyText setValue( notifyData.notifyText ); + else + self.notifyText setText( notifyData.notifyText ); + self.notifyText setPulseFX( 100, int(duration*1000), 1000 ); + self.notifyText.glowColor = glowColor; + self.notifyText.alpha = 1; + anchorElem = self.notifyText; + } + + if ( isDefined( notifyData.notifyText2 ) ) + { + self.notifyText2 setParent( anchorElem ); + + if ( isDefined( notifyData.text2Label ) ) + self.notifyText2.label = notifyData.text2Label; + else + self.notifyText2.label = &""; + + self.notifyText2 setText( notifyData.notifyText2 ); + self.notifyText2 setPulseFX( 100, int(duration*1000), 1000 ); + self.notifyText2.glowColor = glowColor; + self.notifyText2.alpha = 1; + anchorElem = self.notifyText2; + } + + if ( isDefined( notifyData.iconName ) ) + { + self.notifyIcon setParent( anchorElem ); + self.notifyIcon setShader( notifyData.iconName, 60, 60 ); + self.notifyIcon.alpha = 0; + self.notifyIcon fadeOverTime( 1 ); + self.notifyIcon.alpha = 1; + + waitRequireVisibility( duration ); + + self.notifyIcon fadeOverTime( 0.75 ); + self.notifyIcon.alpha = 0; + } + else + waitRequireVisibility( duration ); + + self notify ( "notifyMessageDone" ); + self.doingNotify = false; + + if ( self.notifyQueue.size > 0 ) + { + nextNotifyData = self.notifyQueue[0]; + + newQueue = []; + for ( i = 1; i < self.notifyQueue.size; i++ ) + self.notifyQueue[i-1] = self.notifyQueue[i]; + self.notifyQueue[i-1] = undefined; + + self thread showNotifyMessage( nextNotifyData ); + } +} + +waitRequireVisibility( waitTime ) +{ + self endon("disconnect"); + + interval = 0.05; + + while ( !self canReadText() ) + wait interval; + + while ( waitTime > 0 ) + { + wait interval; + if ( self canReadText() ) + waitTime -= interval; + } +} + +canReadText() +{ + if ( self maps\mp\_flashgrenades::isFlashbanged() ) + return false; + + return true; +} + +resetOnDeath() +{ + self endon ( "notifyMessageDone" ); + self endon ( "disconnect" ); + level endon ( "game_ended" ); + self waittill ( "death" ); + + resetNotify(); +} + +resetOnCancel() +{ + self notify ( "resetOnCancel" ); + self endon ( "resetOnCancel" ); + self endon ( "notifyMessageDone" ); + self endon ( "disconnect" ); + + level waittill ( "cancel_notify" ); + + resetNotify(); +} + +resetNotify() +{ + self.notifyTitle.alpha = 0; + self.notifyText.alpha = 0; + self.notifyIcon.alpha = 0; + self.doingNotify = false; +} + +hintMessageDeathThink() +{ + self endon ( "disconnect" ); + + for(;;) + { + self waittill ( "death" ); + + if ( isDefined( self.hintMessage ) ) + self.hintMessage destroyElem(); + } +} + +lowerMessageThink() +{ + self endon ( "disconnect" ); + + self.lowerMessage = createFontString( "default", level.lowerTextFontSize ); + self.lowerMessage setPoint( "CENTER", level.lowerTextYAlign, 0, level.lowerTextY ); + self.lowerMessage setText( "" ); + self.lowerMessage.archived = false; + + timerFontSize = 1.5; + + self.lowerTimer = createFontString( "default", timerFontSize ); + self.lowerTimer setParent( self.lowerMessage ); + self.lowerTimer setPoint( "TOP", "BOTTOM", 0, 0 ); + self.lowerTimer setText( "" ); + self.lowerTimer.archived = false; +} + +teamOutcomeNotify( winner, isRound, endReasonText, delay ) +{ + self endon ( "disconnect" ); + self notify ( "reset_outcome" ); + + team = self.pers["team"]; + if ( !isDefined( team ) || (team != "allies" && team != "axis") ) + team = "allies"; + + while ( self.doingNotify ) + wait 0.05; + + if ( isDefined ( delay ) ) + wait delay; + + self endon ( "reset_outcome" ); + + titleSize = 3; + textSize = 2; + iconSize = 70; + spacing = 30; + font = "objective"; + + duration = 60000; + + outcomeTitle = createFontString( font, titleSize ); + outcomeTitle setPoint( "TOP", undefined, 0, 30 ); + outcomeTitle.glowAlpha = 1; + outcomeTitle.hideWhenInMenu = false; + outcomeTitle.archived = false; + + outcomeText = createFontString( font, 2 ); + outcomeText setParent( outcomeTitle ); + outcomeText setPoint( "TOP", "BOTTOM", 0, 0 ); + outcomeText.glowAlpha = 1; + outcomeText.hideWhenInMenu = false; + outcomeText.archived = false; + + if ( winner == "halftime" ) + { + outcomeTitle.glowColor = (0.2, 0.3, 0.7); + outcomeTitle setText( game["strings"]["halftime"] ); + outcomeTitle.color = (1, 1, 1); + } + else if ( winner == "intermission" ) + { + outcomeTitle.glowColor = (0.2, 0.3, 0.7); + outcomeTitle setText( game["strings"]["intermission"] ); + outcomeTitle.color = (1, 1, 1); + } + else if ( winner == "roundend" ) + { + outcomeTitle.glowColor = (0.2, 0.3, 0.7); + outcomeTitle setText( game["strings"]["roundend"] ); + outcomeTitle.color = (1, 1, 1); + } + else if ( winner == "overtime" ) + { + outcomeTitle.glowColor = (0.2, 0.3, 0.7); + outcomeTitle setText( game["strings"]["overtime"] ); + outcomeTitle.color = (1, 1, 1); + } + else if ( winner == "tie" ) + { + outcomeTitle.glowColor = (0.2, 0.3, 0.7); + if ( isRound ) + outcomeTitle setText( game["strings"]["round_draw"] ); + else + outcomeTitle setText( game["strings"]["draw"] ); + outcomeTitle.color = (1, 1, 1); + } + else if ( isDefined( self.pers["team"] ) && winner == team ) + { + outcomeTitle.glowColor = (0, 0, 0); + if ( isRound ) + outcomeTitle setText( game["strings"]["round_win"] ); + else + outcomeTitle setText( game["strings"]["victory"] ); + outcomeTitle.color = (0.6, 0.9, 0.6); + } + else + { + outcomeTitle.glowColor = (0, 0, 0); + if ( isRound ) + outcomeTitle setText( game["strings"]["round_loss"] ); + else + outcomeTitle setText( game["strings"]["defeat"] ); + outcomeTitle.color = (0.7, 0.3, 0.2); + } + + outcomeText.glowColor = (0.2, 0.3, 0.7); + outcomeText setText( endReasonText ); + + outcomeTitle setPulseFX( 100, duration, 1000 ); + outcomeText setPulseFX( 100, duration, 1000 ); + + leftIcon = createIcon( game["icons"][team], iconSize, iconSize ); + leftIcon setParent( outcomeText ); + leftIcon setPoint( "TOP", "BOTTOM", -60, spacing ); + leftIcon.hideWhenInMenu = false; + leftIcon.archived = false; + leftIcon.alpha = 0; + leftIcon fadeOverTime( 0.5 ); + leftIcon.alpha = 1; + + rightIcon = createIcon( game["icons"][level.otherTeam[team]], iconSize, iconSize ); + rightIcon setParent( outcomeText ); + rightIcon setPoint( "TOP", "BOTTOM", 60, spacing ); + rightIcon.hideWhenInMenu = false; + rightIcon.archived = false; + rightIcon.alpha = 0; + rightIcon fadeOverTime( 0.5 ); + rightIcon.alpha = 1; + + leftScore = createFontString( font, titleSize ); + leftScore setParent( leftIcon ); + leftScore setPoint( "TOP", "BOTTOM", 0, spacing ); + leftScore.glowColor = game["colors"][team]; + leftScore.glowAlpha = 1; + leftScore setValue( getTeamScore( team ) ); + leftScore.hideWhenInMenu = false; + leftScore.archived = false; + leftScore setPulseFX( 100, duration, 1000 ); + + rightScore = createFontString( font, titleSize ); + rightScore setParent( rightIcon ); + rightScore setPoint( "TOP", "BOTTOM", 0, spacing ); + rightScore.glowColor = game["colors"][level.otherTeam[team]]; + rightScore.glowAlpha = 1; + rightScore setValue( getTeamScore( level.otherTeam[team] ) ); + rightScore.hideWhenInMenu = false; + rightScore.archived = false; + rightScore setPulseFX( 100, duration, 1000 ); + + if ( winner == "halftime" ) + { + leftIcon MoveOverTime( 2.5 ); + leftIcon setPoint( "TOP", "BOTTOM", 60, spacing ); + rightIcon MoveOverTime( 2.5 ); + rightIcon setPoint( "TOP", "BOTTOM", -60, spacing ); + leftScore MoveOverTime( 2.5 ); + leftScore setPoint( "TOP", "BOTTOM", -120, spacing ); + rightScore MoveOverTime( 2.5 ); + rightScore setPoint( "TOP", "BOTTOM", 120, spacing ); + } + + matchBonus = undefined; + if ( isDefined( self.matchBonus ) ) + { + matchBonus = createFontString( font, 2 ); + matchBonus setParent( outcomeText ); + matchBonus setPoint( "TOP", "BOTTOM", 0, iconSize + (spacing * 3) + leftScore.height ); + matchBonus.glowAlpha = 1; + matchBonus.hideWhenInMenu = false; + matchBonus.archived = false; + matchBonus.label = game["strings"]["match_bonus"]; + matchBonus setValue( self.matchBonus ); + } + + self thread resetTeamOutcomeNotify( outcomeTitle, outcomeText, leftIcon, rightIcon, leftScore, rightScore, matchBonus ); +} + +outcomeNotify( winner, endReasonText, delay ) +{ + self endon ( "disconnect" ); + self notify ( "reset_outcome" ); + + while ( self.doingNotify ) + wait 0.05; + + if ( isDefined ( delay ) ) + wait delay; + + self endon ( "reset_outcome" ); + + titleSize = 3; + winnerSize = 2; + otherSize = 1.5; + iconSize = 30; + spacing = 20; + font = "objective"; + + duration = 60000; + + players = level.placement["all"]; + + outcomeTitle = createFontString( font, titleSize ); + outcomeTitle setPoint( "TOP", undefined, 0, spacing ); + if ( isDefined( players[1] ) && players[0].score == players[1].score && players[0].deaths == players[1].deaths && (self == players[0] || self == players[1]) ) + { + outcomeTitle setText( game["strings"]["tie"] ); + outcomeTitle.glowColor = (0.2, 0.3, 0.7); + } + else if ( isDefined( players[2] ) && players[0].score == players[2].score && players[0].deaths == players[2].deaths && self == players[2] ) + { + outcomeTitle setText( game["strings"]["tie"] ); + outcomeTitle.glowColor = (0.2, 0.3, 0.7); + } + else if ( isDefined( players[0] ) && self == players[0] ) + { + outcomeTitle setText( game["strings"]["victory"] ); + outcomeTitle.glowColor = (0.2, 0.3, 0.7); + } + else + { + outcomeTitle setText( game["strings"]["defeat"] ); + outcomeTitle.glowColor = (0.7, 0.3, 0.2); + } + outcomeTitle.glowAlpha = 1; + outcomeTitle.hideWhenInMenu = false; + outcomeTitle.archived = false; + outcomeTitle setPulseFX( 100, duration, 1000 ); + + outcomeText = createFontString( font, 2 ); + outcomeText setParent( outcomeTitle ); + outcomeText setPoint( "TOP", "BOTTOM", 0, 0 ); + outcomeText.glowAlpha = 1; + outcomeText.hideWhenInMenu = false; + outcomeText.archived = false; + outcomeText.glowColor = (0.2, 0.3, 0.7); + outcomeText setText( endReasonText ); + + firstTitle = createFontString( font, winnerSize ); + firstTitle setParent( outcomeText ); + firstTitle setPoint( "TOP", "BOTTOM", 0, spacing ); + firstTitle.glowColor = (0.3, 0.7, 0.2); + firstTitle.glowAlpha = 1; + firstTitle.hideWhenInMenu = false; + firstTitle.archived = false; + if ( isDefined( players[0] ) ) + { + firstTitle.label = &"MP_FIRSTPLACE_NAME"; + firstTitle setPlayerNameString( players[0] ); + firstTitle setPulseFX( 100, duration, 1000 ); + } + + secondTitle = createFontString( font, otherSize ); + secondTitle setParent( firstTitle ); + secondTitle setPoint( "TOP", "BOTTOM", 0, spacing ); + secondTitle.glowColor = (0.2, 0.3, 0.7); + secondTitle.glowAlpha = 1; + secondTitle.hideWhenInMenu = false; + secondTitle.archived = false; + if ( isDefined( players[1] ) ) + { + secondTitle.label = &"MP_SECONDPLACE_NAME"; + secondTitle setPlayerNameString( players[1] ); + secondTitle setPulseFX( 100, duration, 1000 ); + } + + thirdTitle = createFontString( font, otherSize ); + thirdTitle setParent( secondTitle ); + thirdTitle setPoint( "TOP", "BOTTOM", 0, spacing ); + thirdTitle setParent( secondTitle ); + thirdTitle.glowColor = (0.2, 0.3, 0.7); + thirdTitle.glowAlpha = 1; + thirdTitle.hideWhenInMenu = false; + thirdTitle.archived = false; + if ( isDefined( players[2] ) ) + { + thirdTitle.label = &"MP_THIRDPLACE_NAME"; + thirdTitle setPlayerNameString( players[2] ); + thirdTitle setPulseFX( 100, duration, 1000 ); + } + + matchBonus = createFontString( font, 2 ); + matchBonus setParent( thirdTitle ); + matchBonus setPoint( "TOP", "BOTTOM", 0, spacing ); + matchBonus.glowAlpha = 1; + matchBonus.hideWhenInMenu = false; + matchBonus.archived = false; + if ( isDefined( self.matchBonus ) ) + { + matchBonus.label = game["strings"]["match_bonus"]; + matchBonus setValue( self.matchBonus ); + } + + self thread updateOutcome( firstTitle, secondTitle, thirdTitle ); + self thread resetOutcomeNotify( outcomeTitle, outcomeText, firstTitle, secondTitle, thirdTitle, matchBonus ); +} + +resetOutcomeNotify( outcomeTitle, outcomeText, firstTitle, secondTitle, thirdTitle, matchBonus ) +{ + self endon ( "disconnect" ); + self waittill ( "reset_outcome" ); + + if ( isDefined( outcomeTitle ) ) + outcomeTitle destroyElem(); + if ( isDefined( outcomeText ) ) + outcomeText destroyElem(); + if ( isDefined( firstTitle ) ) + firstTitle destroyElem(); + if ( isDefined( secondTitle ) ) + secondTitle destroyElem(); + if ( isDefined( thirdTitle ) ) + thirdTitle destroyElem(); + if ( isDefined( matchBonus ) ) + matchBonus destroyElem(); +} + +resetTeamOutcomeNotify( outcomeTitle, outcomeText, leftIcon, rightIcon, LeftScore, rightScore, matchBonus ) +{ + self endon ( "disconnect" ); + self waittill ( "reset_outcome" ); + + if ( isDefined( outcomeTitle ) ) + outcomeTitle destroyElem(); + if ( isDefined( outcomeText ) ) + outcomeText destroyElem(); + if ( isDefined( leftIcon ) ) + leftIcon destroyElem(); + if ( isDefined( rightIcon ) ) + rightIcon destroyElem(); + if ( isDefined( leftScore ) ) + leftScore destroyElem(); + if ( isDefined( rightScore ) ) + rightScore destroyElem(); + if ( isDefined( matchBonus ) ) + matchBonus destroyElem(); +} + +updateOutcome( firstTitle, secondTitle, thirdTitle ) +{ + self endon( "disconnect" ); + self endon( "reset_outcome" ); + + for(;;) + { + self waittill( "update_outcome" ); + + players = level.placement["all"]; + + if ( isDefined( firstTitle ) && isDefined( players[0] ) ) + firstTitle setPlayerNameString( players[0] ); + else if ( isDefined( firstTitle ) ) + firstTitle.alpha = 0; + + if ( isDefined( secondTitle ) && isDefined( players[1] ) ) + secondTitle setPlayerNameString( players[1] ); + else if ( isDefined( secondTitle ) ) + secondTitle.alpha = 0; + + if ( isDefined( thirdTitle ) && isDefined( players[2] ) ) + thirdTitle setPlayerNameString( players[2] ); + else if ( isDefined( thirdTitle ) ) + thirdTitle.alpha = 0; + } +} diff --git a/maps/mp/gametypes/_killcam.gsc b/maps/mp/gametypes/_killcam.gsc index 70d0d73..813035e 100644 --- a/maps/mp/gametypes/_killcam.gsc +++ b/maps/mp/gametypes/_killcam.gsc @@ -1,211 +1,211 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\gametypes\_hud_util; - -init() -{ - precacheString(&"PLATFORM_PRESS_TO_SKIP"); - precacheString(&"PLATFORM_PRESS_TO_RESPAWN"); - precacheShader("white"); - - level.killcam = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "allowkillcam" ); - - if( level.killcam ) - setArchive(true); -} - -killcam( attackerNum, killcamentity, sWeapon, predelay, offsetTime, respawn, maxtime, perks, attacker ) -{ - self endon("disconnect"); - self endon("spawned"); - level endon("game_ended"); - - if(attackerNum < 0) - return; - - if ( !respawn ) - camtime = 5; - else if (sWeapon == "frag_grenade_mp" || sWeapon == "frag_grenade_short_mp") - camtime = 4.5; - else - camtime = 2.5; - - if (isdefined(maxtime)) - { - if (camtime > maxtime) - camtime = maxtime; - if (camtime < 0.05) - camtime = 0.05; - } - - postdelay = 2; - - killcamlength = camtime + postdelay; - - if (isdefined(maxtime) && killcamlength > maxtime) - { - if (maxtime < 2) - return; - - if (maxtime - camtime >= 1) - postdelay = maxtime - camtime; - else - { - postdelay = 1; - camtime = maxtime - 1; - } - - killcamlength = camtime + postdelay; - } - - killcamoffset = camtime + predelay; - - self notify ( "begin_killcam", getTime() ); - - self.sessionstate = "spectator"; - self.spectatorclient = attackerNum; - self.killcamentity = killcamentity; - self.archivetime = killcamoffset; - self.killcamlength = killcamlength; - self.psoffsettime = offsetTime; - - self allowSpectateTeam("allies", true); - self allowSpectateTeam("axis", true); - self allowSpectateTeam("freelook", true); - self allowSpectateTeam("none", true); - - wait 0.05; - - if ( self.archivetime <= predelay ) - { - self.sessionstate = "dead"; - self.spectatorclient = -1; - self.killcamentity = -1; - self.archivetime = 0; - self.psoffsettime = 0; - return; - } - - self.killcam = true; - - if ( !isdefined( self.kc_skiptext ) ) - { - self.kc_skiptext = newClientHudElem(self); - self.kc_skiptext.archived = false; - self.kc_skiptext.x = 0; - self.kc_skiptext.alignX = "center"; - self.kc_skiptext.alignY = "middle"; - self.kc_skiptext.horzAlign = "center_safearea"; - self.kc_skiptext.vertAlign = "top"; - self.kc_skiptext.sort = 1; - self.kc_skiptext.font = "objective"; - self.kc_skiptext.foreground = true; - self.kc_skiptext.y = 60; - self.kc_skiptext.fontscale = 2; - } - if ( respawn ) - self.kc_skiptext setText(&"PLATFORM_PRESS_TO_RESPAWN"); - else - self.kc_skiptext setText(&"PLATFORM_PRESS_TO_SKIP"); - - self.kc_skiptext.alpha = 1; - - if ( !isdefined( self.kc_timer ) ) - { - self.kc_timer = createFontString( "objective", 2 ); - self.kc_timer setPoint( "BOTTOM", undefined, 0, -60 ); - self.kc_timer.archived = false; - self.kc_timer.foreground = true; - } - - self.kc_timer.alpha = 1; - self.kc_timer setTenthsTimer(camtime); - - self thread spawnedKillcamCleanup(); - self thread endedKillcamCleanup(); - self thread waitSkipKillcamButton(); - self thread waitKillcamTime(); - - self waittill("end_killcam"); - - self endKillcam(); - - self.sessionstate = "dead"; - self.spectatorclient = -1; - self.killcamentity = -1; - self.archivetime = 0; - self.psoffsettime = 0; -} - -waitKillcamTime() -{ - self endon("disconnect"); - self endon("end_killcam"); - - wait(self.killcamlength - 0.05); - self notify("end_killcam"); -} - -waitSkipKillcamButton() -{ - self endon("disconnect"); - self endon("end_killcam"); - - while(self useButtonPressed()) - wait 0.05; - - while(!(self useButtonPressed())) - wait 0.05; - - self notify("end_killcam"); -} - -endKillcam() -{ - if(isDefined(self.kc_skiptext)) - self.kc_skiptext.alpha = 0; - if(isDefined(self.kc_timer)) - self.kc_timer.alpha = 0; - - self.killcam = undefined; - - self thread maps\mp\gametypes\_spectating::setSpectatePermissions(); -} - -spawnedKillcamCleanup() -{ - self endon("end_killcam"); - self endon("disconnect"); - - self waittill("spawned"); - self endKillcam(); -} - -spectatorKillcamCleanup( attacker ) -{ - self endon("end_killcam"); - self endon("disconnect"); - attacker endon ( "disconnect" ); - - attacker waittill ( "begin_killcam", attackerKcStartTime ); - waitTime = max( 0, (attackerKcStartTime - self.deathTime) - 50 ); - wait waitTime; - self endKillcam(); -} - -endedKillcamCleanup() -{ - self endon("end_killcam"); - self endon("disconnect"); - - level waittill("game_ended"); - self endKillcam(); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\gametypes\_hud_util; + +init() +{ + precacheString(&"PLATFORM_PRESS_TO_SKIP"); + precacheString(&"PLATFORM_PRESS_TO_RESPAWN"); + precacheShader("white"); + + level.killcam = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "allowkillcam" ); + + if( level.killcam ) + setArchive(true); +} + +killcam( attackerNum, killcamentity, sWeapon, predelay, offsetTime, respawn, maxtime, perks, attacker ) +{ + self endon("disconnect"); + self endon("spawned"); + level endon("game_ended"); + + if(attackerNum < 0) + return; + + if ( !respawn ) + camtime = 5; + else if (sWeapon == "frag_grenade_mp" || sWeapon == "frag_grenade_short_mp") + camtime = 4.5; + else + camtime = 2.5; + + if (isdefined(maxtime)) + { + if (camtime > maxtime) + camtime = maxtime; + if (camtime < 0.05) + camtime = 0.05; + } + + postdelay = 2; + + killcamlength = camtime + postdelay; + + if (isdefined(maxtime) && killcamlength > maxtime) + { + if (maxtime < 2) + return; + + if (maxtime - camtime >= 1) + postdelay = maxtime - camtime; + else + { + postdelay = 1; + camtime = maxtime - 1; + } + + killcamlength = camtime + postdelay; + } + + killcamoffset = camtime + predelay; + + self notify ( "begin_killcam", getTime() ); + + self.sessionstate = "spectator"; + self.spectatorclient = attackerNum; + self.killcamentity = killcamentity; + self.archivetime = killcamoffset; + self.killcamlength = killcamlength; + self.psoffsettime = offsetTime; + + self allowSpectateTeam("allies", true); + self allowSpectateTeam("axis", true); + self allowSpectateTeam("freelook", true); + self allowSpectateTeam("none", true); + + wait 0.05; + + if ( self.archivetime <= predelay ) + { + self.sessionstate = "dead"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + return; + } + + self.killcam = true; + + if ( !isdefined( self.kc_skiptext ) ) + { + self.kc_skiptext = newClientHudElem(self); + self.kc_skiptext.archived = false; + self.kc_skiptext.x = 0; + self.kc_skiptext.alignX = "center"; + self.kc_skiptext.alignY = "middle"; + self.kc_skiptext.horzAlign = "center_safearea"; + self.kc_skiptext.vertAlign = "top"; + self.kc_skiptext.sort = 1; + self.kc_skiptext.font = "objective"; + self.kc_skiptext.foreground = true; + self.kc_skiptext.y = 60; + self.kc_skiptext.fontscale = 2; + } + if ( respawn ) + self.kc_skiptext setText(&"PLATFORM_PRESS_TO_RESPAWN"); + else + self.kc_skiptext setText(&"PLATFORM_PRESS_TO_SKIP"); + + self.kc_skiptext.alpha = 1; + + if ( !isdefined( self.kc_timer ) ) + { + self.kc_timer = createFontString( "objective", 2 ); + self.kc_timer setPoint( "BOTTOM", undefined, 0, -60 ); + self.kc_timer.archived = false; + self.kc_timer.foreground = true; + } + + self.kc_timer.alpha = 1; + self.kc_timer setTenthsTimer(camtime); + + self thread spawnedKillcamCleanup(); + self thread endedKillcamCleanup(); + self thread waitSkipKillcamButton(); + self thread waitKillcamTime(); + + self waittill("end_killcam"); + + self endKillcam(); + + self.sessionstate = "dead"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; +} + +waitKillcamTime() +{ + self endon("disconnect"); + self endon("end_killcam"); + + wait(self.killcamlength - 0.05); + self notify("end_killcam"); +} + +waitSkipKillcamButton() +{ + self endon("disconnect"); + self endon("end_killcam"); + + while(self useButtonPressed()) + wait 0.05; + + while(!(self useButtonPressed())) + wait 0.05; + + self notify("end_killcam"); +} + +endKillcam() +{ + if(isDefined(self.kc_skiptext)) + self.kc_skiptext.alpha = 0; + if(isDefined(self.kc_timer)) + self.kc_timer.alpha = 0; + + self.killcam = undefined; + + self thread maps\mp\gametypes\_spectating::setSpectatePermissions(); +} + +spawnedKillcamCleanup() +{ + self endon("end_killcam"); + self endon("disconnect"); + + self waittill("spawned"); + self endKillcam(); +} + +spectatorKillcamCleanup( attacker ) +{ + self endon("end_killcam"); + self endon("disconnect"); + attacker endon ( "disconnect" ); + + attacker waittill ( "begin_killcam", attackerKcStartTime ); + waitTime = max( 0, (attackerKcStartTime - self.deathTime) - 50 ); + wait waitTime; + self endKillcam(); +} + +endedKillcamCleanup() +{ + self endon("end_killcam"); + self endon("disconnect"); + + level waittill("game_ended"); + self endKillcam(); +} diff --git a/maps/mp/gametypes/_menus.gsc b/maps/mp/gametypes/_menus.gsc index adaa0ea..f5f0cf4 100644 --- a/maps/mp/gametypes/_menus.gsc +++ b/maps/mp/gametypes/_menus.gsc @@ -1,239 +1,239 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - game["menu_team"] = "team_marinesopfor"; - if(game["attackers"] == "axis" && game["defenders"] == "allies") - game["menu_team"] += "_flipped"; - game["menu_class_allies"] = "class_marines"; - game["menu_changeclass_allies"] = "changeclass_marines_mw"; - game["menu_class_axis"] = "class_opfor"; - game["menu_changeclass_axis"] = "changeclass_opfor_mw"; - game["menu_class"] = "class"; - game["menu_changeclass"] = "changeclass_mw"; - game["menu_changeclass_offline"] = "changeclass_offline"; - game["menu_shoutcast"] = "shoutcast"; - game["menu_shoutcast_map"] = "shoutcast_map"; - game["menu_shoutcast_setup"] = "shoutcast_setup"; - game["menu_callvote"] = "callvote"; - game["menu_muteplayer"] = "muteplayer"; - game["menu_quickcommands"] = "quickcommands"; - game["menu_quickstatements"] = "quickstatements"; - game["menu_quickresponses"] = "quickresponses"; - game["menu_quickpromod"] = "quickpromod"; - game["menu_quickpromodgfx"] = "quickpromodgfx"; - game["menu_demo"] = "demo"; - - precacheMenu("quickcommands"); - precacheMenu("quickstatements"); - precacheMenu("quickresponses"); - precacheMenu("quickpromod"); - precacheMenu("quickpromodgfx"); - precacheMenu("scoreboard"); - precacheMenu(game["menu_team"]); - precacheMenu("class_marines"); - precacheMenu("changeclass_marines_mw"); - precacheMenu("class_opfor"); - precacheMenu("changeclass_opfor_mw"); - precacheMenu("class"); - precacheMenu("changeclass_mw"); - precacheMenu("changeclass_offline"); - precacheMenu("callvote"); - precacheMenu("muteplayer"); - precacheMenu("shoutcast"); - precacheMenu("shoutcast_map"); - precacheMenu("shoutcast_setup"); - precacheMenu("shoutcast_setup_binds"); - precacheMenu("echo"); - precacheMenu("demo"); - - level thread onPlayerConnect(); -} - -onPlayerConnect() -{ - for(;;) - { - level waittill("connecting", player); - player thread onMenuResponse(); - } -} - -onMenuResponse() -{ - level endon("restarting"); - self endon("disconnect"); - - for(;;) - { - self waittill("menuresponse", menu, response); - - if ( !isDefined( self.pers["team"] ) ) - continue; - - if( getSubStr( response, 0, 7 ) == "loadout" ) - { - self maps\mp\gametypes\_promod::processLoadoutResponse( response ); - continue; - } - - switch( response ) - { - case "back": - if ( self.pers["team"] == "none" ) - continue; - - if( menu == game["menu_changeclass"] && ( self.pers["team"] == "axis" || self.pers["team"] == "allies" ) ) - { - if( isDefined(self.pers["class"]) ) - { - self maps\mp\gametypes\_promod::setClassChoice( self.pers["class"] ); - self maps\mp\gametypes\_promod::menuAcceptClass( "go" ); - } - - self openMenu( game["menu_changeclass_"+self.pers["team"]] ); - } - else - { - self closeMenu(); - self closeInGameMenu(); - } - continue; - - case "demo": - if ( menu == "demo" ) - self.inrecmenu = false; - continue; - - case "changeteam": - self closeMenu(); - self closeInGameMenu(); - self openMenu(game["menu_team"]); - continue; - - case "shoutcast_setup": - if ( self.pers["team"] != "spectator" ) - continue; - - self closeMenu(); - self closeInGameMenu(); - self openMenu(game["menu_shoutcast_setup"]); - continue; - - case "changeclass_marines": - case "changeclass_opfor": - if ( self.pers["team"] == "axis" || self.pers["team"] == "allies" ) - { - self closeMenu(); - self closeInGameMenu(); - self openMenu( game["menu_changeclass_"+self.pers["team"]] ); - } - continue; - } - - switch( menu ) - { - case "echo": - k = strtok(response, "_"); - buf = k[0]; - for(i=1;i 0 ) - self promod\shoutcast::followBar(int(response)-1); - } - continue; - - case "quickcommands": - case "quickstatements": - case "quickresponses": - maps\mp\gametypes\_quickmessages::doQuickMessage( menu, int(response)-1 ); - continue; - - case "quickpromod": - maps\mp\gametypes\_quickmessages::quickpromod( response ); - continue; - - case "quickpromodgfx": - maps\mp\gametypes\_quickmessages::quickpromodgfx( response ); - continue; - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + game["menu_team"] = "team_marinesopfor"; + if(game["attackers"] == "axis" && game["defenders"] == "allies") + game["menu_team"] += "_flipped"; + game["menu_class_allies"] = "class_marines"; + game["menu_changeclass_allies"] = "changeclass_marines_mw"; + game["menu_class_axis"] = "class_opfor"; + game["menu_changeclass_axis"] = "changeclass_opfor_mw"; + game["menu_class"] = "class"; + game["menu_changeclass"] = "changeclass_mw"; + game["menu_changeclass_offline"] = "changeclass_offline"; + game["menu_shoutcast"] = "shoutcast"; + game["menu_shoutcast_map"] = "shoutcast_map"; + game["menu_shoutcast_setup"] = "shoutcast_setup"; + game["menu_callvote"] = "callvote"; + game["menu_muteplayer"] = "muteplayer"; + game["menu_quickcommands"] = "quickcommands"; + game["menu_quickstatements"] = "quickstatements"; + game["menu_quickresponses"] = "quickresponses"; + game["menu_quickpromod"] = "quickpromod"; + game["menu_quickpromodgfx"] = "quickpromodgfx"; + game["menu_demo"] = "demo"; + + precacheMenu("quickcommands"); + precacheMenu("quickstatements"); + precacheMenu("quickresponses"); + precacheMenu("quickpromod"); + precacheMenu("quickpromodgfx"); + precacheMenu("scoreboard"); + precacheMenu(game["menu_team"]); + precacheMenu("class_marines"); + precacheMenu("changeclass_marines_mw"); + precacheMenu("class_opfor"); + precacheMenu("changeclass_opfor_mw"); + precacheMenu("class"); + precacheMenu("changeclass_mw"); + precacheMenu("changeclass_offline"); + precacheMenu("callvote"); + precacheMenu("muteplayer"); + precacheMenu("shoutcast"); + precacheMenu("shoutcast_map"); + precacheMenu("shoutcast_setup"); + precacheMenu("shoutcast_setup_binds"); + precacheMenu("echo"); + precacheMenu("demo"); + + level thread onPlayerConnect(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill("connecting", player); + player thread onMenuResponse(); + } +} + +onMenuResponse() +{ + level endon("restarting"); + self endon("disconnect"); + + for(;;) + { + self waittill("menuresponse", menu, response); + + if ( !isDefined( self.pers["team"] ) ) + continue; + + if( getSubStr( response, 0, 7 ) == "loadout" ) + { + self maps\mp\gametypes\_promod::processLoadoutResponse( response ); + continue; + } + + switch( response ) + { + case "back": + if ( self.pers["team"] == "none" ) + continue; + + if( menu == game["menu_changeclass"] && ( self.pers["team"] == "axis" || self.pers["team"] == "allies" ) ) + { + if( isDefined(self.pers["class"]) ) + { + self maps\mp\gametypes\_promod::setClassChoice( self.pers["class"] ); + self maps\mp\gametypes\_promod::menuAcceptClass( "go" ); + } + + self openMenu( game["menu_changeclass_"+self.pers["team"]] ); + } + else + { + self closeMenu(); + self closeInGameMenu(); + } + continue; + + case "demo": + if ( menu == "demo" ) + self.inrecmenu = false; + continue; + + case "changeteam": + self closeMenu(); + self closeInGameMenu(); + self openMenu(game["menu_team"]); + continue; + + case "shoutcast_setup": + if ( self.pers["team"] != "spectator" ) + continue; + + self closeMenu(); + self closeInGameMenu(); + self openMenu(game["menu_shoutcast_setup"]); + continue; + + case "changeclass_marines": + case "changeclass_opfor": + if ( self.pers["team"] == "axis" || self.pers["team"] == "allies" ) + { + self closeMenu(); + self closeInGameMenu(); + self openMenu( game["menu_changeclass_"+self.pers["team"]] ); + } + continue; + } + + switch( menu ) + { + case "echo": + k = strtok(response, "_"); + buf = k[0]; + for(i=1;i 0 ) + self promod\shoutcast::followBar(int(response)-1); + } + continue; + + case "quickcommands": + case "quickstatements": + case "quickresponses": + maps\mp\gametypes\_quickmessages::doQuickMessage( menu, int(response)-1 ); + continue; + + case "quickpromod": + maps\mp\gametypes\_quickmessages::quickpromod( response ); + continue; + + case "quickpromodgfx": + maps\mp\gametypes\_quickmessages::quickpromodgfx( response ); + continue; + } + } +} diff --git a/maps/mp/gametypes/_missions.gsc b/maps/mp/gametypes/_missions.gsc index 400249b..fdcdc36 100644 --- a/maps/mp/gametypes/_missions.gsc +++ b/maps/mp/gametypes/_missions.gsc @@ -1,11 +1,11 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init(){} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init(){} diff --git a/maps/mp/gametypes/_promod.gsc b/maps/mp/gametypes/_promod.gsc index 33d2ace..2205739 100644 --- a/maps/mp/gametypes/_promod.gsc +++ b/maps/mp/gametypes/_promod.gsc @@ -1,623 +1,623 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - level.serverDvars = []; - - setDvarDefault( "class_assault_limit", 64, 0, 64 ); - setDvarDefault( "class_specops_limit", 2, 0, 64 ); - setDvarDefault( "class_demolitions_limit", 1, 0, 64 ); - setDvarDefault( "class_sniper_limit", 1, 0, 64 ); - - setDvarDefault( "class_assault_allowdrop", 1, 0, 1 ); - setDvarDefault( "class_specops_allowdrop", 1, 0, 1 ); - setDvarDefault( "class_demolitions_allowdrop", 0, 0, 1 ); - setDvarDefault( "class_sniper_allowdrop", 0, 0, 1 ); - - setDvarDefault( "weap_allow_m16", 1, 0, 1 ); - setDvarDefault( "weap_allow_ak47", 1, 0, 1 ); - setDvarDefault( "weap_allow_m4", 1, 0, 1 ); - setDvarDefault( "weap_allow_g3", 1, 0, 1 ); - setDvarDefault( "weap_allow_g36c", 1, 0, 1 ); - setDvarDefault( "weap_allow_m14", 1, 0, 1 ); - setDvarDefault( "weap_allow_mp44", 1, 0, 1 ); - - setDvarDefault( "attach_allow_assault_none", 1, 0, 1 ); - setDvarDefault( "attach_allow_assault_silencer", 1, 0, 1 ); - - setDvarDefault( "weap_allow_mp5", 1, 0, 1 ); - setDvarDefault( "weap_allow_uzi", 1, 0, 1 ); - setDvarDefault( "weap_allow_ak74u", 1, 0, 1 ); - - setDvarDefault( "attach_allow_specops_none", 1, 0, 1 ); - setDvarDefault( "attach_allow_specops_silencer", 1, 0, 1 ); - - setDvarDefault( "weap_allow_m1014", 1, 0, 1 ); - setDvarDefault( "weap_allow_winchester1200", 1, 0, 1 ); - - setDvarDefault( "weap_allow_m40a3", 1, 0, 1 ); - setDvarDefault( "weap_allow_remington700", 1, 0, 1 ); - - setServerDvarDefault( "weap_allow_beretta", 1, 0, 1 ); - setServerDvarDefault( "weap_allow_colt45", 1, 0, 1 ); - setServerDvarDefault( "weap_allow_usp", 1, 0, 1 ); - setServerDvarDefault( "weap_allow_deserteagle", 1, 0, 1 ); - setServerDvarDefault( "weap_allow_deserteaglegold", 1, 0, 1 ); - - setServerDvarDefault( "attach_allow_pistol_none", 1, 0, 1 ); - setServerDvarDefault( "attach_allow_pistol_silencer", 1, 0, 1 ); - - setServerDvarDefault( "weap_allow_frag_grenade", 1, 0, 1 ); - setServerDvarDefault( "weap_allow_flash_grenade", 1, 0, 1 ); - setServerDvarDefault( "weap_allow_smoke_grenade", 1, 0, 1 ); - - setServerDvarDefault( "allies_allow_assault", 1, 0, 1 ); - setServerDvarDefault( "allies_allow_specops", 1, 0, 1 ); - setServerDvarDefault( "allies_allow_demolitions", 1, 0, 1 ); - setServerDvarDefault( "allies_allow_sniper", 1, 0, 1 ); - setServerDvarDefault( "axis_allow_assault", 1, 0, 1 ); - setServerDvarDefault( "axis_allow_specops", 1, 0, 1 ); - setServerDvarDefault( "axis_allow_demolitions", 1, 0, 1 ); - setServerDvarDefault( "axis_allow_sniper", 1, 0, 1 ); - - setDvarDefault( "class_assault_primary", "ak47" ); - setDvarDefault( "class_assault_primary_attachment", "none" ); - setDvarDefault( "class_assault_secondary", "deserteagle" ); - setDvarDefault( "class_assault_secondary_attachment", "none" ); - setDvarDefault( "class_assault_grenade", "smoke_grenade" ); - setDvarDefault( "class_assault_camo", "camo_none" ); - - setDvarDefault( "class_specops_primary", "ak74u" ); - setDvarDefault( "class_specops_primary_attachment", "none" ); - setDvarDefault( "class_specops_secondary", "deserteagle" ); - setDvarDefault( "class_specops_secondary_attachment", "none" ); - setDvarDefault( "class_specops_grenade", "smoke_grenade" ); - setDvarDefault( "class_specops_camo", "camo_none" ); - - setDvarDefault( "class_demolitions_primary", "winchester1200" ); - setDvarDefault( "class_demolitions_primary_attachment", "none" ); - setDvarDefault( "class_demolitions_secondary", "deserteagle" ); - setDvarDefault( "class_demolitions_secondary_attachment", "none" ); - setDvarDefault( "class_demolitions_grenade", "smoke_grenade" ); - setDvarDefault( "class_demolitions_camo", "camo_none" ); - - setDvarDefault( "class_sniper_primary", "m40a3" ); - setDvarDefault( "class_sniper_primary_attachment", "none" ); - setDvarDefault( "class_sniper_secondary", "deserteagle" ); - setDvarDefault( "class_sniper_secondary_attachment", "none" ); - setDvarDefault( "class_sniper_grenade", "smoke_grenade" ); - setDvarDefault( "class_sniper_camo", "camo_none" ); - - setDvarDefault( "scr_enable_hiticon", 2, 0, 2 ); - setDvarDefault( "scr_enable_scoretext", 1, 0, 1 ); - - level thread onPlayerConnect(); -} - -onPlayerConnect() -{ - for(;;) - { - level waittill( "connecting", player ); - player thread updateServerDvars(); - } -} - -setClassChoice( classType ) -{ - if( classType != "assault" && classType != "specops" && classType != "demolitions" && classType != "sniper" ) - return; - - idef = !isDefined(self.pers["class"]); - - self.pers["class"] = classType; - self.class = classType; - - if(idef) - self promod\shoutcast::addPlayer(); - - self setClientDvar( "loadout_class", classType ); - - self initClassLoadouts(); - self setDvarsFromClass( classType ); - - switch ( classType ) - { - case "assault": - self setClientDvars( - "weap_allow_m16", getDvar( "weap_allow_m16" ), - "weap_allow_ak47", getDvar( "weap_allow_ak47" ), - "weap_allow_m4", getDvar( "weap_allow_m4" ), - "weap_allow_g3", getDvar( "weap_allow_g3" ), - "weap_allow_g36c", getDvar( "weap_allow_g36c" ), - "weap_allow_m14", getDvar( "weap_allow_m14" ), - "weap_allow_mp44", getDvar( "weap_allow_mp44" ), - "attach_allow_assault_none", getDvar( "attach_allow_assault_none" ), - "attach_allow_assault_silencer", getDvar( "attach_allow_assault_silencer" ) ); - break; - case "specops": - self setClientDvars( - "weap_allow_mp5", getDvar( "weap_allow_mp5" ), - "weap_allow_uzi", getDvar( "weap_allow_uzi" ), - "weap_allow_ak74u", getDvar( "weap_allow_ak74u" ), - "attach_allow_specops_none", getDvar( "attach_allow_specops_none" ), - "attach_allow_specops_silencer", getDvar( "attach_allow_specops_silencer" ) ); - break; - case "demolitions": - self setClientDvars( - "weap_allow_m1014", getDvar( "weap_allow_m1014" ), - "weap_allow_winchester1200", getDvar( "weap_allow_winchester1200" ) ); - break; - case "sniper": - self setClientDvars( - "weap_allow_m40a3", getDvar( "weap_allow_m40a3" ), - "weap_allow_remington700", getDvar( "weap_allow_remington700" ) ); - break; - } - - thread updateClassAvailability( self.pers["team"] ); -} - -setDvarWrapper( dvarName, setVal ) -{ - setDvar( dvarName, setVal ); - if ( isDefined( level.serverDvars[dvarName] ) ) - { - level.serverDvars[dvarName] = setVal; - for ( i = 0; i < level.players.size; i++ ) - level.players[i] setClientDvar( dvarName, setVal ); - } -} - -setDvarDefault( dvarName, setVal, minVal, maxVal ) -{ - if ( getDvar( dvarName ) != "" ) - { - if ( isString( setVal ) ) - setVal = getDvar( dvarName ); - else - setVal = getDvarFloat( dvarName ); - } - - if ( isDefined( minVal ) && !isString( setVal ) ) - setVal = max( setVal, minVal ); - - if ( isDefined( maxVal ) && !isString( setVal ) ) - setVal = min( setVal, maxVal ); - - setDvar( dvarName, setVal ); - return setVal; -} - -setServerDvarDefault( dvarName, setVal, minVal, maxVal ) -{ - setVal = setDvarDefault( dvarName, setVal, minVal, maxVal ); - - level.serverDvars[dvarName] = setVal; -} - -initClassLoadouts() -{ - self initLoadoutForClass( "assault" ); - self initLoadoutForClass( "specops" ); - self initLoadoutForClass( "demolitions" ); - self initLoadoutForClass( "sniper" ); -} - -initLoadoutForClass( classType ) -{ - SSALC = ""; - if ( classType == "assault" ) - SSALC = "ASSAULT"; - else if ( classType == "specops" ) - SSALC = "SPECOPS"; - else if ( classType == "demolitions" ) - SSALC = "DEMOLITIONS"; - else if ( classType == "sniper" ) - SSALC = "SNIPER"; - - CLASS_PRIMARY = SSALC + "_PRIMARY"; - CLASS_PRIMARY_ATTACHMENT = SSALC + "_PRIMARY_ATTACHMENT"; - CLASS_SECONDARY = SSALC + "_SECONDARY"; - CLASS_SECONDARY_ATTACHMENT = SSALC + "_SECONDARY_ATTACHMENT"; - CLASS_GRENADE = SSALC + "_GRENADE"; - CLASS_CAMO = SSALC + "_CAMO"; - - if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_primary"] ) ) - { - if ( validClass( classType, get_config( CLASS_PRIMARY ), "loadout_primary" ) ) - self.pers[classType]["loadout_primary"] = get_config( CLASS_PRIMARY ); - else - self.pers[classType]["loadout_primary"] = getDvar( "class_" + classType + "_primary" ); - } - - if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_primary_attachment"] ) ) - { - if ( validClass( classType, get_config( CLASS_PRIMARY_ATTACHMENT ), "loadout_primary_attachment" ) ) - self.pers[classType]["loadout_primary_attachment"] = get_config( CLASS_PRIMARY_ATTACHMENT ); - else - self.pers[classType]["loadout_primary_attachment"] = getDvar( "class_" + classType + "_primary_attachment" ); - } - - if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_secondary"] ) ) - { - if ( validClass( classType, get_config( CLASS_SECONDARY ), "loadout_secondary" ) ) - self.pers[classType]["loadout_secondary"] = get_config( CLASS_SECONDARY ); - else - self.pers[classType]["loadout_secondary"] = getDvar( "class_" + classType + "_secondary" ); - } - - if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_secondary_attachment"] ) ) - { - if ( validClass( classType, get_config( CLASS_SECONDARY_ATTACHMENT ), "loadout_secondary_attachment" ) ) - self.pers[classType]["loadout_secondary_attachment"] = get_config( CLASS_SECONDARY_ATTACHMENT ); - else - self.pers[classType]["loadout_secondary_attachment"] = getDvar( "class_" + classType + "_secondary_attachment" ); - } - - if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_grenade"] ) ) - { - if ( validClass( classType, get_config( CLASS_GRENADE ), "loadout_grenade" ) ) - self.pers[classType]["loadout_grenade"] = get_config( CLASS_GRENADE ); - else - self.pers[classType]["loadout_grenade"] = getDvar( "class_" + classType + "_grenade" ); - } - - if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_camo"] ) ) - { - if ( validClass( classType, get_config( CLASS_CAMO ), "loadout_camo" ) ) - self.pers[classType]["loadout_camo"] = get_config( CLASS_CAMO ); - else - self.pers[classType]["loadout_camo"] = getDvar( "class_" + classType + "_camo" ); - } -} - -validClass( classType, preServed, type ) -{ - if ( preServed == "" ) - return false; - - loadout_primary = ""; - loadout_primary_attachment = ""; - loadout_secondary = ""; - loadout_secondary_attachment = ""; - loadout_grenade = ""; - loadout_camo = ""; - - if ( classType == "assault" ) - loadout_primary = strTok( "m16,ak47,m4,g3,g36c,m14,mp44", "," ); - else if ( classType == "specops" ) - loadout_primary = strTok( "mp5,uzi,ak74u", "," ); - else if ( classType == "demolitions" ) - loadout_primary = strTok( "winchester1200,m1014", "," ); - else if ( classType == "sniper" ) - loadout_primary = strTok( "m40a3,remington700", "," ); - - loadout_primary_attachment = strTok( "none,silencer", "," ); - loadout_secondary = strTok( "deserteaglegold,deserteagle,colt45,usp,beretta", "," ); - loadout_secondary_attachment = strTok( "none,silencer", "," ); - loadout_grenade = strTok( "flash_grenade,smoke_grenade", "," ); - loadout_camo = strTok( "camo_none,camo_brockhaurd,camo_bushdweller,camo_blackwhitemarpat,camo_tigerred,camo_stagger,camo_gold", "," ); - - switch ( type ) - { - case "loadout_primary": - for ( i = 0; i < loadout_primary.size; i++ ) - { - exp = loadout_primary[i]; - - if ( exp == preServed ) - if ( getDvarInt( "weap_allow_" + preServed ) ) - return true; - } - break; - - case "loadout_primary_attachment": - if ( classType == "assault" || classType == "specops" ) - { - for ( i = 0; i < loadout_primary_attachment.size; i++ ) - { - exp = loadout_primary_attachment[i]; - - if ( exp == preServed ) - if ( getDvarInt( "attach_allow" + "_" + classType + "_" + preServed ) ) - return true; - } - } - break; - - case "loadout_secondary": - for ( i = 0; i < loadout_secondary.size; i++ ) - { - exp = loadout_secondary[i]; - - if ( exp == preServed ) - if ( getDvarInt( "weap_allow_" + preServed ) ) - return true; - } - break; - - case "loadout_secondary_attachment": - for ( i = 0; i < loadout_secondary_attachment.size; i++ ) - { - exp = loadout_secondary_attachment[i]; - - if ( exp == preServed ) - if ( getDvarInt( "attach_allow_pistol_" + preServed ) ) - return true; - } - break; - - case "loadout_grenade": - for ( i = 0; i < loadout_grenade.size; i++ ) - { - exp = loadout_grenade[i]; - - if ( exp == preServed ) - if ( getDvarInt( "weap_allow_" + preServed ) ) - return true; - } - break; - - case "loadout_camo": - for ( i = 0; i < loadout_camo.size; i++ ) - { - exp = loadout_camo[i]; - - if ( exp == preServed ) - return true; - } - break; - - default: - return false; - } - - return false; -} - -setDvarsFromClass( classType ) -{ - self setClientDvars( - "loadout_primary", self.pers[classType]["loadout_primary"], - "loadout_primary_attachment", self.pers[classType]["loadout_primary_attachment"], - "loadout_secondary", self.pers[classType]["loadout_secondary"], - "loadout_secondary_attachment", self.pers[classType]["loadout_secondary_attachment"], - "loadout_grenade", self.pers[classType]["loadout_grenade"], - "loadout_camo", self.pers[classType]["loadout_camo"] ); -} - -processLoadoutResponse( respString ) -{ - if ( !isDefined( self.pers["class"] ) ) - return; - - commandTokens = strTok( respString, "," ); - - for ( i = 0; i < commandTokens.size; i++ ) - { - subTokens = strTok( commandTokens[i], ":" ); - if( subTokens.size < 2 ) - return; - - switch ( subTokens[0] ) - { - case "loadout_primary": - case "loadout_secondary": - if ( getDvarInt( "weap_allow_" + subTokens[1] ) && self verifyWeaponChoice( subTokens[1], self.class ) ) - { - self.pers[self.class][subTokens[0]] = subTokens[1]; - self setClientDvar( subTokens[0], subTokens[1] ); - if ( subTokens[1] == "mp44" ) - { - self.pers[self.class]["loadout_primary_attachment"] = "none"; - self setClientDvar( "loadout_primary_attachment", "none" ); - } - else if ( subTokens[1] == "deserteagle" || subTokens[1] == "deserteaglegold" ) - { - self.pers[self.class]["loadout_secondary_attachment"] = "none"; - self setClientDvar( "loadout_secondary_attachment", "none" ); - } - } - else - self setClientDvar( subTokens[0], self.pers[self.class][subTokens[0]] ); - break; - - case "loadout_primary_attachment": - case "loadout_secondary_attachment": - if ( ( subTokens[1] == "assault" || subTokens[1] == "specops" || subTokens[1] == "pistol" ) && ( subTokens[2] == "none" || subTokens[2] == "silencer" ) ) - { - if ( subTokens[0] == "loadout_primary_attachment" && self.pers[self.class]["loadout_primary"] == "mp44" ) - { - self.pers[self.class]["loadout_primary_attachment"] = "none"; - self setClientDvar( "loadout_primary_attachment", "none" ); - } - else if ( getDvarInt( "attach_allow_" + subTokens[1] + "_" + subTokens[2] ) ) - { - self.pers[self.class][subTokens[0]] = subTokens[2]; - self setClientDvar( subTokens[0], subTokens[2] ); - } - else - self setClientDvar( subTokens[0], self.pers[self.class][subTokens[0]] ); - break; - } - else - return; - - case "loadout_grenade": - switch ( subTokens[1] ) - { - case "flash_grenade": - case "smoke_grenade": - if ( getDvarInt( "weap_allow_" + subTokens[1] ) ) - { - self.pers[self.class][subTokens[0]] = subTokens[1]; - self setClientDvar( subTokens[0], subTokens[1] ); - } - else - self setClientDvar( subTokens[0], self.pers[self.class][subTokens[0]] ); - break; - default: - return; - } - - case "loadout_camo": - switch ( subTokens[1] ) - { - case "camo_none": - case "camo_brockhaurd": - case "camo_bushdweller": - case "camo_blackwhitemarpat": - case "camo_tigerred": - case "camo_stagger": - case "camo_gold": - self.pers[self.class][subTokens[0]] = subTokens[1]; - break; - default: - return; - } - } - } -} - -verifyWeaponChoice( weaponName, classType ) -{ - if ( tableLookup( "mp/statsTable.csv", 4, weaponName, 2 ) == "weapon_pistol" ) - return true; - - switch ( classType ) - { - case "assault": - case "sniper": - if ( tableLookup( "mp/statsTable.csv", 4, weaponName, 2 ) == "weapon_"+classType ) - return true; - break; - case "specops": - if ( tableLookup( "mp/statsTable.csv", 4, weaponName, 2 ) == "weapon_smg" ) - return true; - break; - case "demolitions": - if ( tableLookup( "mp/statsTable.csv", 4, weaponName, 2 ) == "weapon_shotgun" ) - return true; - break; - } - - return false; -} - -verifyClassChoice( teamName, classType ) -{ - if ( teamName == "allies" || teamName == "axis" ) - { - if ( isDefined( self.pers["class"] ) && self.pers["class"] == classType ) - return true; - - game[teamName + "_" + classType + "_count"] = 0; - for ( i = 0; i < level.players.size; i++ ) - if ( level.players[i].team == teamName && isDefined( level.players[i].class ) && level.players[i].class == classType ) - game[teamName + "_" + classType + "_count"]++; - - return ( game[teamName + "_" + classType + "_count"] < getDvarInt( "class_" + classType + "_limit" ) ); - } - - return false; -} - -updateClassAvailability( teamName ) -{ - game[teamName + "_assault_count"] = 0; - game[teamName + "_specops_count"] = 0; - game[teamName + "_demolitions_count"] = 0; - game[teamName + "_sniper_count"] = 0; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - if ( player.team == teamName && isDefined( player.class ) && player.class == "assault" ) - game[teamName + "_assault_count"]++; - - if ( player.team == teamName && isDefined( player.class ) && player.class == "specops" ) - game[teamName + "_specops_count"]++; - - if ( player.team == teamName && isDefined( player.class ) && player.class == "demolitions" ) - game[teamName + "_demolitions_count"]++; - - if ( player.team == teamName && isDefined( player.class ) && player.class == "sniper" ) - game[teamName + "_sniper_count"]++; - } - - setDvarWrapper( teamName + "_allow_assault", game[teamName + "_assault_count"] < getDvarInt( "class_assault_limit" ) ); - setDvarWrapper( teamName + "_allow_specops", game[teamName + "_specops_count"] < getDvarInt( "class_specops_limit" ) ); - setDvarWrapper( teamName + "_allow_demolitions", game[teamName + "_demolitions_count"] < getDvarInt( "class_demolitions_limit" ) ); - setDvarWrapper( teamName + "_allow_sniper", game[teamName + "_sniper_count"] < getDvarInt( "class_sniper_limit" ) ); -} - -menuAcceptClass( response ) -{ - if ( !isDefined( self.pers["class"] ) ) - return; - - if ( !isDefined( response ) || response != "back" ) - self maps\mp\gametypes\_globallogic::closeMenus(); - - if ( !isDefined( self.pers["team"] ) || ( self.pers["team"] != "allies" && self.pers["team"] != "axis" ) ) - return; - - if ( self.sessionstate == "playing" ) - { - if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" || isDefined( level.rdyup ) && level.rdyup || isDefined( level.strat_over ) && !level.strat_over ) - self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], self.pers["class"] ); - else - { - self iprintlnbold( game["strings"]["change_class"] ); - self setClientDvar( "loadout_curclass", self.pers["class"] ); - } - - if ( isDefined( response ) ) - self thread maps\mp\gametypes\_class::preserveClass( self.pers["class"] ); - } - else - { - self setClientDvar( "loadout_curclass", self.pers["class"] ); - - if ( isDefined( response) && response == "go" ) - self thread maps\mp\gametypes\_class::preserveClass( self.pers["class"] ); - - if ( isDefined( game["state"] ) && game["state"] == "postgame" ) - return; - - if ( isDefined( game["state"] ) && game["state"] == "playing" ) - self thread [[level.spawnClient]](); - } - - self thread maps\mp\gametypes\_spectating::setSpectatePermissions(); -} - -updateServerDvars() -{ - self endon ( "disconnect" ); - - dvarKeys = getArrayKeys( level.serverDvars ); - for ( i = 0; i < dvarKeys.size; i++ ) - { - self setClientDvar( dvarKeys[i], level.serverDvars[dvarKeys[i]] ); - wait 0.05; - } -} - -get_config( dataName ) -{ - dataValue = self getStat( int( tableLookup( "promod/customStatsTable.csv", 1, dataName, 0 ) ) ); - dataString = tablelookup( "promod/customStatsTable.csv", 0, dataValue, 1 ); - - return dataString; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + level.serverDvars = []; + + setDvarDefault( "class_assault_limit", 64, 0, 64 ); + setDvarDefault( "class_specops_limit", 2, 0, 64 ); + setDvarDefault( "class_demolitions_limit", 1, 0, 64 ); + setDvarDefault( "class_sniper_limit", 1, 0, 64 ); + + setDvarDefault( "class_assault_allowdrop", 1, 0, 1 ); + setDvarDefault( "class_specops_allowdrop", 1, 0, 1 ); + setDvarDefault( "class_demolitions_allowdrop", 0, 0, 1 ); + setDvarDefault( "class_sniper_allowdrop", 0, 0, 1 ); + + setDvarDefault( "weap_allow_m16", 1, 0, 1 ); + setDvarDefault( "weap_allow_ak47", 1, 0, 1 ); + setDvarDefault( "weap_allow_m4", 1, 0, 1 ); + setDvarDefault( "weap_allow_g3", 1, 0, 1 ); + setDvarDefault( "weap_allow_g36c", 1, 0, 1 ); + setDvarDefault( "weap_allow_m14", 1, 0, 1 ); + setDvarDefault( "weap_allow_mp44", 1, 0, 1 ); + + setDvarDefault( "attach_allow_assault_none", 1, 0, 1 ); + setDvarDefault( "attach_allow_assault_silencer", 1, 0, 1 ); + + setDvarDefault( "weap_allow_mp5", 1, 0, 1 ); + setDvarDefault( "weap_allow_uzi", 1, 0, 1 ); + setDvarDefault( "weap_allow_ak74u", 1, 0, 1 ); + + setDvarDefault( "attach_allow_specops_none", 1, 0, 1 ); + setDvarDefault( "attach_allow_specops_silencer", 1, 0, 1 ); + + setDvarDefault( "weap_allow_m1014", 1, 0, 1 ); + setDvarDefault( "weap_allow_winchester1200", 1, 0, 1 ); + + setDvarDefault( "weap_allow_m40a3", 1, 0, 1 ); + setDvarDefault( "weap_allow_remington700", 1, 0, 1 ); + + setServerDvarDefault( "weap_allow_beretta", 1, 0, 1 ); + setServerDvarDefault( "weap_allow_colt45", 1, 0, 1 ); + setServerDvarDefault( "weap_allow_usp", 1, 0, 1 ); + setServerDvarDefault( "weap_allow_deserteagle", 1, 0, 1 ); + setServerDvarDefault( "weap_allow_deserteaglegold", 1, 0, 1 ); + + setServerDvarDefault( "attach_allow_pistol_none", 1, 0, 1 ); + setServerDvarDefault( "attach_allow_pistol_silencer", 1, 0, 1 ); + + setServerDvarDefault( "weap_allow_frag_grenade", 1, 0, 1 ); + setServerDvarDefault( "weap_allow_flash_grenade", 1, 0, 1 ); + setServerDvarDefault( "weap_allow_smoke_grenade", 1, 0, 1 ); + + setServerDvarDefault( "allies_allow_assault", 1, 0, 1 ); + setServerDvarDefault( "allies_allow_specops", 1, 0, 1 ); + setServerDvarDefault( "allies_allow_demolitions", 1, 0, 1 ); + setServerDvarDefault( "allies_allow_sniper", 1, 0, 1 ); + setServerDvarDefault( "axis_allow_assault", 1, 0, 1 ); + setServerDvarDefault( "axis_allow_specops", 1, 0, 1 ); + setServerDvarDefault( "axis_allow_demolitions", 1, 0, 1 ); + setServerDvarDefault( "axis_allow_sniper", 1, 0, 1 ); + + setDvarDefault( "class_assault_primary", "ak47" ); + setDvarDefault( "class_assault_primary_attachment", "none" ); + setDvarDefault( "class_assault_secondary", "deserteagle" ); + setDvarDefault( "class_assault_secondary_attachment", "none" ); + setDvarDefault( "class_assault_grenade", "smoke_grenade" ); + setDvarDefault( "class_assault_camo", "camo_none" ); + + setDvarDefault( "class_specops_primary", "ak74u" ); + setDvarDefault( "class_specops_primary_attachment", "none" ); + setDvarDefault( "class_specops_secondary", "deserteagle" ); + setDvarDefault( "class_specops_secondary_attachment", "none" ); + setDvarDefault( "class_specops_grenade", "smoke_grenade" ); + setDvarDefault( "class_specops_camo", "camo_none" ); + + setDvarDefault( "class_demolitions_primary", "winchester1200" ); + setDvarDefault( "class_demolitions_primary_attachment", "none" ); + setDvarDefault( "class_demolitions_secondary", "deserteagle" ); + setDvarDefault( "class_demolitions_secondary_attachment", "none" ); + setDvarDefault( "class_demolitions_grenade", "smoke_grenade" ); + setDvarDefault( "class_demolitions_camo", "camo_none" ); + + setDvarDefault( "class_sniper_primary", "m40a3" ); + setDvarDefault( "class_sniper_primary_attachment", "none" ); + setDvarDefault( "class_sniper_secondary", "deserteagle" ); + setDvarDefault( "class_sniper_secondary_attachment", "none" ); + setDvarDefault( "class_sniper_grenade", "smoke_grenade" ); + setDvarDefault( "class_sniper_camo", "camo_none" ); + + setDvarDefault( "scr_enable_hiticon", 2, 0, 2 ); + setDvarDefault( "scr_enable_scoretext", 1, 0, 1 ); + + level thread onPlayerConnect(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill( "connecting", player ); + player thread updateServerDvars(); + } +} + +setClassChoice( classType ) +{ + if( classType != "assault" && classType != "specops" && classType != "demolitions" && classType != "sniper" ) + return; + + idef = !isDefined(self.pers["class"]); + + self.pers["class"] = classType; + self.class = classType; + + if(idef) + self promod\shoutcast::addPlayer(); + + self setClientDvar( "loadout_class", classType ); + + self initClassLoadouts(); + self setDvarsFromClass( classType ); + + switch ( classType ) + { + case "assault": + self setClientDvars( + "weap_allow_m16", getDvar( "weap_allow_m16" ), + "weap_allow_ak47", getDvar( "weap_allow_ak47" ), + "weap_allow_m4", getDvar( "weap_allow_m4" ), + "weap_allow_g3", getDvar( "weap_allow_g3" ), + "weap_allow_g36c", getDvar( "weap_allow_g36c" ), + "weap_allow_m14", getDvar( "weap_allow_m14" ), + "weap_allow_mp44", getDvar( "weap_allow_mp44" ), + "attach_allow_assault_none", getDvar( "attach_allow_assault_none" ), + "attach_allow_assault_silencer", getDvar( "attach_allow_assault_silencer" ) ); + break; + case "specops": + self setClientDvars( + "weap_allow_mp5", getDvar( "weap_allow_mp5" ), + "weap_allow_uzi", getDvar( "weap_allow_uzi" ), + "weap_allow_ak74u", getDvar( "weap_allow_ak74u" ), + "attach_allow_specops_none", getDvar( "attach_allow_specops_none" ), + "attach_allow_specops_silencer", getDvar( "attach_allow_specops_silencer" ) ); + break; + case "demolitions": + self setClientDvars( + "weap_allow_m1014", getDvar( "weap_allow_m1014" ), + "weap_allow_winchester1200", getDvar( "weap_allow_winchester1200" ) ); + break; + case "sniper": + self setClientDvars( + "weap_allow_m40a3", getDvar( "weap_allow_m40a3" ), + "weap_allow_remington700", getDvar( "weap_allow_remington700" ) ); + break; + } + + thread updateClassAvailability( self.pers["team"] ); +} + +setDvarWrapper( dvarName, setVal ) +{ + setDvar( dvarName, setVal ); + if ( isDefined( level.serverDvars[dvarName] ) ) + { + level.serverDvars[dvarName] = setVal; + for ( i = 0; i < level.players.size; i++ ) + level.players[i] setClientDvar( dvarName, setVal ); + } +} + +setDvarDefault( dvarName, setVal, minVal, maxVal ) +{ + if ( getDvar( dvarName ) != "" ) + { + if ( isString( setVal ) ) + setVal = getDvar( dvarName ); + else + setVal = getDvarFloat( dvarName ); + } + + if ( isDefined( minVal ) && !isString( setVal ) ) + setVal = max( setVal, minVal ); + + if ( isDefined( maxVal ) && !isString( setVal ) ) + setVal = min( setVal, maxVal ); + + setDvar( dvarName, setVal ); + return setVal; +} + +setServerDvarDefault( dvarName, setVal, minVal, maxVal ) +{ + setVal = setDvarDefault( dvarName, setVal, minVal, maxVal ); + + level.serverDvars[dvarName] = setVal; +} + +initClassLoadouts() +{ + self initLoadoutForClass( "assault" ); + self initLoadoutForClass( "specops" ); + self initLoadoutForClass( "demolitions" ); + self initLoadoutForClass( "sniper" ); +} + +initLoadoutForClass( classType ) +{ + SSALC = ""; + if ( classType == "assault" ) + SSALC = "ASSAULT"; + else if ( classType == "specops" ) + SSALC = "SPECOPS"; + else if ( classType == "demolitions" ) + SSALC = "DEMOLITIONS"; + else if ( classType == "sniper" ) + SSALC = "SNIPER"; + + CLASS_PRIMARY = SSALC + "_PRIMARY"; + CLASS_PRIMARY_ATTACHMENT = SSALC + "_PRIMARY_ATTACHMENT"; + CLASS_SECONDARY = SSALC + "_SECONDARY"; + CLASS_SECONDARY_ATTACHMENT = SSALC + "_SECONDARY_ATTACHMENT"; + CLASS_GRENADE = SSALC + "_GRENADE"; + CLASS_CAMO = SSALC + "_CAMO"; + + if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_primary"] ) ) + { + if ( validClass( classType, get_config( CLASS_PRIMARY ), "loadout_primary" ) ) + self.pers[classType]["loadout_primary"] = get_config( CLASS_PRIMARY ); + else + self.pers[classType]["loadout_primary"] = getDvar( "class_" + classType + "_primary" ); + } + + if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_primary_attachment"] ) ) + { + if ( validClass( classType, get_config( CLASS_PRIMARY_ATTACHMENT ), "loadout_primary_attachment" ) ) + self.pers[classType]["loadout_primary_attachment"] = get_config( CLASS_PRIMARY_ATTACHMENT ); + else + self.pers[classType]["loadout_primary_attachment"] = getDvar( "class_" + classType + "_primary_attachment" ); + } + + if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_secondary"] ) ) + { + if ( validClass( classType, get_config( CLASS_SECONDARY ), "loadout_secondary" ) ) + self.pers[classType]["loadout_secondary"] = get_config( CLASS_SECONDARY ); + else + self.pers[classType]["loadout_secondary"] = getDvar( "class_" + classType + "_secondary" ); + } + + if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_secondary_attachment"] ) ) + { + if ( validClass( classType, get_config( CLASS_SECONDARY_ATTACHMENT ), "loadout_secondary_attachment" ) ) + self.pers[classType]["loadout_secondary_attachment"] = get_config( CLASS_SECONDARY_ATTACHMENT ); + else + self.pers[classType]["loadout_secondary_attachment"] = getDvar( "class_" + classType + "_secondary_attachment" ); + } + + if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_grenade"] ) ) + { + if ( validClass( classType, get_config( CLASS_GRENADE ), "loadout_grenade" ) ) + self.pers[classType]["loadout_grenade"] = get_config( CLASS_GRENADE ); + else + self.pers[classType]["loadout_grenade"] = getDvar( "class_" + classType + "_grenade" ); + } + + if ( !isDefined( self.pers[classType] ) || !isDefined( self.pers[classType]["loadout_camo"] ) ) + { + if ( validClass( classType, get_config( CLASS_CAMO ), "loadout_camo" ) ) + self.pers[classType]["loadout_camo"] = get_config( CLASS_CAMO ); + else + self.pers[classType]["loadout_camo"] = getDvar( "class_" + classType + "_camo" ); + } +} + +validClass( classType, preServed, type ) +{ + if ( preServed == "" ) + return false; + + loadout_primary = ""; + loadout_primary_attachment = ""; + loadout_secondary = ""; + loadout_secondary_attachment = ""; + loadout_grenade = ""; + loadout_camo = ""; + + if ( classType == "assault" ) + loadout_primary = strTok( "m16,ak47,m4,g3,g36c,m14,mp44", "," ); + else if ( classType == "specops" ) + loadout_primary = strTok( "mp5,uzi,ak74u", "," ); + else if ( classType == "demolitions" ) + loadout_primary = strTok( "winchester1200,m1014", "," ); + else if ( classType == "sniper" ) + loadout_primary = strTok( "m40a3,remington700", "," ); + + loadout_primary_attachment = strTok( "none,silencer", "," ); + loadout_secondary = strTok( "deserteaglegold,deserteagle,colt45,usp,beretta", "," ); + loadout_secondary_attachment = strTok( "none,silencer", "," ); + loadout_grenade = strTok( "flash_grenade,smoke_grenade", "," ); + loadout_camo = strTok( "camo_none,camo_brockhaurd,camo_bushdweller,camo_blackwhitemarpat,camo_tigerred,camo_stagger,camo_gold", "," ); + + switch ( type ) + { + case "loadout_primary": + for ( i = 0; i < loadout_primary.size; i++ ) + { + exp = loadout_primary[i]; + + if ( exp == preServed ) + if ( getDvarInt( "weap_allow_" + preServed ) ) + return true; + } + break; + + case "loadout_primary_attachment": + if ( classType == "assault" || classType == "specops" ) + { + for ( i = 0; i < loadout_primary_attachment.size; i++ ) + { + exp = loadout_primary_attachment[i]; + + if ( exp == preServed ) + if ( getDvarInt( "attach_allow" + "_" + classType + "_" + preServed ) ) + return true; + } + } + break; + + case "loadout_secondary": + for ( i = 0; i < loadout_secondary.size; i++ ) + { + exp = loadout_secondary[i]; + + if ( exp == preServed ) + if ( getDvarInt( "weap_allow_" + preServed ) ) + return true; + } + break; + + case "loadout_secondary_attachment": + for ( i = 0; i < loadout_secondary_attachment.size; i++ ) + { + exp = loadout_secondary_attachment[i]; + + if ( exp == preServed ) + if ( getDvarInt( "attach_allow_pistol_" + preServed ) ) + return true; + } + break; + + case "loadout_grenade": + for ( i = 0; i < loadout_grenade.size; i++ ) + { + exp = loadout_grenade[i]; + + if ( exp == preServed ) + if ( getDvarInt( "weap_allow_" + preServed ) ) + return true; + } + break; + + case "loadout_camo": + for ( i = 0; i < loadout_camo.size; i++ ) + { + exp = loadout_camo[i]; + + if ( exp == preServed ) + return true; + } + break; + + default: + return false; + } + + return false; +} + +setDvarsFromClass( classType ) +{ + self setClientDvars( + "loadout_primary", self.pers[classType]["loadout_primary"], + "loadout_primary_attachment", self.pers[classType]["loadout_primary_attachment"], + "loadout_secondary", self.pers[classType]["loadout_secondary"], + "loadout_secondary_attachment", self.pers[classType]["loadout_secondary_attachment"], + "loadout_grenade", self.pers[classType]["loadout_grenade"], + "loadout_camo", self.pers[classType]["loadout_camo"] ); +} + +processLoadoutResponse( respString ) +{ + if ( !isDefined( self.pers["class"] ) ) + return; + + commandTokens = strTok( respString, "," ); + + for ( i = 0; i < commandTokens.size; i++ ) + { + subTokens = strTok( commandTokens[i], ":" ); + if( subTokens.size < 2 ) + return; + + switch ( subTokens[0] ) + { + case "loadout_primary": + case "loadout_secondary": + if ( getDvarInt( "weap_allow_" + subTokens[1] ) && self verifyWeaponChoice( subTokens[1], self.class ) ) + { + self.pers[self.class][subTokens[0]] = subTokens[1]; + self setClientDvar( subTokens[0], subTokens[1] ); + if ( subTokens[1] == "mp44" ) + { + self.pers[self.class]["loadout_primary_attachment"] = "none"; + self setClientDvar( "loadout_primary_attachment", "none" ); + } + else if ( subTokens[1] == "deserteagle" || subTokens[1] == "deserteaglegold" ) + { + self.pers[self.class]["loadout_secondary_attachment"] = "none"; + self setClientDvar( "loadout_secondary_attachment", "none" ); + } + } + else + self setClientDvar( subTokens[0], self.pers[self.class][subTokens[0]] ); + break; + + case "loadout_primary_attachment": + case "loadout_secondary_attachment": + if ( ( subTokens[1] == "assault" || subTokens[1] == "specops" || subTokens[1] == "pistol" ) && ( subTokens[2] == "none" || subTokens[2] == "silencer" ) ) + { + if ( subTokens[0] == "loadout_primary_attachment" && self.pers[self.class]["loadout_primary"] == "mp44" ) + { + self.pers[self.class]["loadout_primary_attachment"] = "none"; + self setClientDvar( "loadout_primary_attachment", "none" ); + } + else if ( getDvarInt( "attach_allow_" + subTokens[1] + "_" + subTokens[2] ) ) + { + self.pers[self.class][subTokens[0]] = subTokens[2]; + self setClientDvar( subTokens[0], subTokens[2] ); + } + else + self setClientDvar( subTokens[0], self.pers[self.class][subTokens[0]] ); + break; + } + else + return; + + case "loadout_grenade": + switch ( subTokens[1] ) + { + case "flash_grenade": + case "smoke_grenade": + if ( getDvarInt( "weap_allow_" + subTokens[1] ) ) + { + self.pers[self.class][subTokens[0]] = subTokens[1]; + self setClientDvar( subTokens[0], subTokens[1] ); + } + else + self setClientDvar( subTokens[0], self.pers[self.class][subTokens[0]] ); + break; + default: + return; + } + + case "loadout_camo": + switch ( subTokens[1] ) + { + case "camo_none": + case "camo_brockhaurd": + case "camo_bushdweller": + case "camo_blackwhitemarpat": + case "camo_tigerred": + case "camo_stagger": + case "camo_gold": + self.pers[self.class][subTokens[0]] = subTokens[1]; + break; + default: + return; + } + } + } +} + +verifyWeaponChoice( weaponName, classType ) +{ + if ( tableLookup( "mp/statsTable.csv", 4, weaponName, 2 ) == "weapon_pistol" ) + return true; + + switch ( classType ) + { + case "assault": + case "sniper": + if ( tableLookup( "mp/statsTable.csv", 4, weaponName, 2 ) == "weapon_"+classType ) + return true; + break; + case "specops": + if ( tableLookup( "mp/statsTable.csv", 4, weaponName, 2 ) == "weapon_smg" ) + return true; + break; + case "demolitions": + if ( tableLookup( "mp/statsTable.csv", 4, weaponName, 2 ) == "weapon_shotgun" ) + return true; + break; + } + + return false; +} + +verifyClassChoice( teamName, classType ) +{ + if ( teamName == "allies" || teamName == "axis" ) + { + if ( isDefined( self.pers["class"] ) && self.pers["class"] == classType ) + return true; + + game[teamName + "_" + classType + "_count"] = 0; + for ( i = 0; i < level.players.size; i++ ) + if ( level.players[i].team == teamName && isDefined( level.players[i].class ) && level.players[i].class == classType ) + game[teamName + "_" + classType + "_count"]++; + + return ( game[teamName + "_" + classType + "_count"] < getDvarInt( "class_" + classType + "_limit" ) ); + } + + return false; +} + +updateClassAvailability( teamName ) +{ + game[teamName + "_assault_count"] = 0; + game[teamName + "_specops_count"] = 0; + game[teamName + "_demolitions_count"] = 0; + game[teamName + "_sniper_count"] = 0; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + if ( player.team == teamName && isDefined( player.class ) && player.class == "assault" ) + game[teamName + "_assault_count"]++; + + if ( player.team == teamName && isDefined( player.class ) && player.class == "specops" ) + game[teamName + "_specops_count"]++; + + if ( player.team == teamName && isDefined( player.class ) && player.class == "demolitions" ) + game[teamName + "_demolitions_count"]++; + + if ( player.team == teamName && isDefined( player.class ) && player.class == "sniper" ) + game[teamName + "_sniper_count"]++; + } + + setDvarWrapper( teamName + "_allow_assault", game[teamName + "_assault_count"] < getDvarInt( "class_assault_limit" ) ); + setDvarWrapper( teamName + "_allow_specops", game[teamName + "_specops_count"] < getDvarInt( "class_specops_limit" ) ); + setDvarWrapper( teamName + "_allow_demolitions", game[teamName + "_demolitions_count"] < getDvarInt( "class_demolitions_limit" ) ); + setDvarWrapper( teamName + "_allow_sniper", game[teamName + "_sniper_count"] < getDvarInt( "class_sniper_limit" ) ); +} + +menuAcceptClass( response ) +{ + if ( !isDefined( self.pers["class"] ) ) + return; + + if ( !isDefined( response ) || response != "back" ) + self maps\mp\gametypes\_globallogic::closeMenus(); + + if ( !isDefined( self.pers["team"] ) || ( self.pers["team"] != "allies" && self.pers["team"] != "axis" ) ) + return; + + if ( self.sessionstate == "playing" ) + { + if ( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" || isDefined( level.rdyup ) && level.rdyup || isDefined( level.strat_over ) && !level.strat_over ) + self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], self.pers["class"] ); + else + { + self iprintlnbold( game["strings"]["change_class"] ); + self setClientDvar( "loadout_curclass", self.pers["class"] ); + } + + if ( isDefined( response ) ) + self thread maps\mp\gametypes\_class::preserveClass( self.pers["class"] ); + } + else + { + self setClientDvar( "loadout_curclass", self.pers["class"] ); + + if ( isDefined( response) && response == "go" ) + self thread maps\mp\gametypes\_class::preserveClass( self.pers["class"] ); + + if ( isDefined( game["state"] ) && game["state"] == "postgame" ) + return; + + if ( isDefined( game["state"] ) && game["state"] == "playing" ) + self thread [[level.spawnClient]](); + } + + self thread maps\mp\gametypes\_spectating::setSpectatePermissions(); +} + +updateServerDvars() +{ + self endon ( "disconnect" ); + + dvarKeys = getArrayKeys( level.serverDvars ); + for ( i = 0; i < dvarKeys.size; i++ ) + { + self setClientDvar( dvarKeys[i], level.serverDvars[dvarKeys[i]] ); + wait 0.05; + } +} + +get_config( dataName ) +{ + dataValue = self getStat( int( tableLookup( "promod/customStatsTable.csv", 1, dataName, 0 ) ) ); + dataString = tablelookup( "promod/customStatsTable.csv", 0, dataValue, 1 ); + + return dataString; +} diff --git a/maps/mp/gametypes/_quickmessages.gsc b/maps/mp/gametypes/_quickmessages.gsc index 603b4ec..b07fb9e 100644 --- a/maps/mp/gametypes/_quickmessages.gsc +++ b/maps/mp/gametypes/_quickmessages.gsc @@ -1,269 +1,269 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - level.saytext[0] = &"QUICKMESSAGE_FOLLOW_ME"; - level.saytext[1] = &"QUICKMESSAGE_MOVE_IN"; - level.saytext[2] = &"QUICKMESSAGE_FALL_BACK"; - level.saytext[3] = &"QUICKMESSAGE_SUPPRESSING_FIRE"; - level.saytext[4] = &"QUICKMESSAGE_ATTACK_LEFT_FLANK"; - level.saytext[5] = &"QUICKMESSAGE_ATTACK_RIGHT_FLANK"; - level.saytext[6] = &"QUICKMESSAGE_HOLD_THIS_POSITION"; - level.saytext[7] = &"QUICKMESSAGE_REGROUP"; - level.saytext[8] = &"QUICKMESSAGE_ENEMY_SPOTTED"; - level.saytext[9] = &"QUICKMESSAGE_ENEMIES_SPOTTED"; - level.saytext[10] = &"QUICKMESSAGE_IM_IN_POSITION"; - level.saytext[11] = &"QUICKMESSAGE_AREA_SECURE"; - level.saytext[12] = &"QUICKMESSAGE_WATCH_SIX"; - level.saytext[13] = &"QUICKMESSAGE_SNIPER"; - level.saytext[14] = &"QUICKMESSAGE_NEED_REINFORCEMENTS"; - level.saytext[15] = &"QUICKMESSAGE_YES_SIR"; - level.saytext[16] = &"QUICKMESSAGE_NO_SIR"; - level.saytext[17] = &"QUICKMESSAGE_IM_ON_MY_WAY"; - level.saytext[18] = &"QUICKMESSAGE_SORRY"; - level.saytext[19] = &"QUICKMESSAGE_GREAT_SHOT"; - level.saytext[20] = &"QUICKMESSAGE_COME_ON"; - for(i=0;i<21;i++) precacheString(level.saytext[i]); - level.soundalias = strtok("followme|movein|fallback|suppressfire|attackleftflank|attackrightflank|holdposition|regroup|enemyspotted|enemiesspotted|iminposition|areasecure|watchsix|sniper|needreinforcements|yessir|nosir|onmyway|sorry|greatshot|comeon", "|"); -} - -getSoundPrefixForTeam() -{ - a = ""; - if ( self.pers["team"] == "allies" ) - { - if ( game["allies"] == "sas" ) - a = "UK"; - else - a = "US"; - } - else - { - if ( game["axis"] == "russian" ) - a = "RU"; - else - a = "AB"; - } - return a+"_"; -} - -doQuickMessage( t, i ) -{ - if( self.sessionstate == "playing" && isdefined(self.pers["team"]) && self.pers["team"] != "spectator" && !isdefined(self.spamdelay) ) - { - maxsize = 7; - offset = 8; - type = "stm"; - - if(t == "quickcommands") - { - maxsize = 8; - offset = 0; - type = "cmd"; - } - else if(t == "quickresponses") - { - maxsize = 6; - offset = 15; - type = "rsp"; - } - if( i >= 0 && i < maxsize ) - { - self.spamdelay = true; - - self playSound( self getSoundPrefixForTeam()+"mp_"+type+"_"+level.soundalias[offset+i] ); - saytext = level.saytext[offset+i]; - if(isdefined(level.QuickMessageToAll) && level.QuickMessageToAll) - self sayAll( saytext ); - else - { - self sayTeam( saytext ); - self pingPlayer(); - } - wait 3; - self.spamdelay = undefined; - } - } -} - -quickpromod(response) -{ - self endon ( "disconnect" ); - - switch(response) - { - case "1": - if ( self.pers["team"] != "axis" && self.pers["team"] != "allies" ) - return; - - self thread promod\timeout::timeoutCall(); - break; - - case "2": - if ( self.sessionstate == "playing" && (!isDefined( self.isPlanting ) || !self.isPlanting) && !level.gameEnded && isDefined( self.carryObject ) ) - self.carryObject thread maps\mp\gametypes\_gameobjects::setDropped(); - break; - - case "3": - self suicide(); - break; - - case "4": - a = "en"; - if ( self promod\client::toggle("PROMOD_RECORD") ) - a = "dis"; - self iprintln("Record reminder has been "+a+"abled"); - break; - - case "5": - self maps\mp\gametypes\_weapons::printStats(); - break; - - case "silencer": - if ( self.pers["team"] != "axis" && self.pers["team"] != "allies" || !isDefined( self.pers["class"] ) || !getDvarInt( "attach_allow_" + self.pers["class"] + "_silencer" ) || self.pers[self.pers["class"]]["loadout_primary"] == "mp44" || self.pers["class"] == "sniper" || self.pers["class"] == "demolitions" ) - return; - - attach = "none"; - if(self.pers[self.pers["class"]]["loadout_primary_attachment"] == "none") - { - attach = "silencer"; - self iprintln("Silencer attached"); - } - else - self iprintln("Silencer detached"); - - self.pers[self.pers["class"]]["loadout_primary_attachment"] = attach; - - self maps\mp\gametypes\_promod::menuAcceptClass( "go" ); - break; - - case "grenade": - if ( self.pers["team"] != "axis" && self.pers["team"] != "allies" || !isDefined( self.pers["class"] ) ) - return; - - classType = self.pers["class"]; - - if ( self.pers[classType]["loadout_grenade"] == "smoke_grenade" && getDvarInt( "weap_allow_flash_grenade" ) ) - { - self.pers[classType]["loadout_grenade"] = "flash_grenade"; - self iprintln("Flash selected"); - } - else if ( self.pers[classType]["loadout_grenade"] == "flash_grenade" && getDvarInt( "weap_allow_smoke_grenade" ) ) - { - self.pers[classType]["loadout_grenade"] = "smoke_grenade"; - self iprintln("Smoke selected"); - } - else - return; - - self maps\mp\gametypes\_promod::menuAcceptClass( "go" ); - break; - - case "assault": - case "specops": - case "demolitions": - case "sniper": - if ( ( self.pers["team"] != "axis" && self.pers["team"] != "allies" ) ) - return; - - if ( !self maps\mp\gametypes\_promod::verifyClassChoice( self.pers["team"], response ) ) - { - self iprintln(chooseClassName(response)+" is unavailable"); - return; - } - - if ( !isDefined( self.pers["class"] ) || self.pers["class"] != response ) - self iprintln(chooseClassName(response)+" selected"); - - self maps\mp\gametypes\_promod::setClassChoice( response ); - self maps\mp\gametypes\_promod::menuAcceptClass(); - break; - - case "X": - if ( self.pers["team"] == "axis" || self.pers["team"] == "allies" ) - self openMenu( game["menu_changeclass_" + self.pers["team"] ] ); - break; - - case "shoutcaster": - if ( self.pers["team"] == "spectator" ) - self openMenu( game["menu_shoutcast"] ); - break; - - case "overview": - if ( self.pers["team"] == "spectator" ) - self openmenu( game["menu_shoutcast_map"] ); - break; - - case "controls": - self openMenu("quickpromod"); - break; - - case "graphics": - self openMenu("quickpromodgfx"); - break; - - case "killspec": - self [[level.killspec]](); - break; - } -} - -quickpromodgfx(response) -{ - self endon ( "disconnect" ); - - switch(response) - { - case "1": - self promod\client::setsunlight(self promod\client::loopthrough("PROMOD_SUNLIGHT", 2)); - break; - - case "2": - self setclientdvar("r_filmusetweaks", self promod\client::toggle("PROMOD_FILMTWEAK")); - break; - - case "3": - self setclientdvar("r_texfilterdisable", self promod\client::toggle("PROMOD_TEXTURE")); - break; - - case "4": - self setclientdvar("r_normalmap", self promod\client::toggle("PROMOD_NORMALMAP")); - break; - - case "5": - self setclientdvar("cg_fovscale", 1 + int(!self promod\client::toggle("PROMOD_FOVSCALE")) * 0.125); - break; - - case "6": - self setclientdvar("r_blur", 0.2 * self promod\client::loopthrough("PROMOD_GFXBLUR", 5)); - break; - } -} - -chooseClassName( classname ) -{ - if ( !isDefined( classname ) ) - return ""; - - switch( classname ) - { - case "assault": - return "Assault"; - case "specops": - return "Spec Ops"; - case "demolitions": - return "Demolitions"; - case "sniper": - return "Sniper"; - default: - return ""; - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + level.saytext[0] = &"QUICKMESSAGE_FOLLOW_ME"; + level.saytext[1] = &"QUICKMESSAGE_MOVE_IN"; + level.saytext[2] = &"QUICKMESSAGE_FALL_BACK"; + level.saytext[3] = &"QUICKMESSAGE_SUPPRESSING_FIRE"; + level.saytext[4] = &"QUICKMESSAGE_ATTACK_LEFT_FLANK"; + level.saytext[5] = &"QUICKMESSAGE_ATTACK_RIGHT_FLANK"; + level.saytext[6] = &"QUICKMESSAGE_HOLD_THIS_POSITION"; + level.saytext[7] = &"QUICKMESSAGE_REGROUP"; + level.saytext[8] = &"QUICKMESSAGE_ENEMY_SPOTTED"; + level.saytext[9] = &"QUICKMESSAGE_ENEMIES_SPOTTED"; + level.saytext[10] = &"QUICKMESSAGE_IM_IN_POSITION"; + level.saytext[11] = &"QUICKMESSAGE_AREA_SECURE"; + level.saytext[12] = &"QUICKMESSAGE_WATCH_SIX"; + level.saytext[13] = &"QUICKMESSAGE_SNIPER"; + level.saytext[14] = &"QUICKMESSAGE_NEED_REINFORCEMENTS"; + level.saytext[15] = &"QUICKMESSAGE_YES_SIR"; + level.saytext[16] = &"QUICKMESSAGE_NO_SIR"; + level.saytext[17] = &"QUICKMESSAGE_IM_ON_MY_WAY"; + level.saytext[18] = &"QUICKMESSAGE_SORRY"; + level.saytext[19] = &"QUICKMESSAGE_GREAT_SHOT"; + level.saytext[20] = &"QUICKMESSAGE_COME_ON"; + for(i=0;i<21;i++) precacheString(level.saytext[i]); + level.soundalias = strtok("followme|movein|fallback|suppressfire|attackleftflank|attackrightflank|holdposition|regroup|enemyspotted|enemiesspotted|iminposition|areasecure|watchsix|sniper|needreinforcements|yessir|nosir|onmyway|sorry|greatshot|comeon", "|"); +} + +getSoundPrefixForTeam() +{ + a = ""; + if ( self.pers["team"] == "allies" ) + { + if ( game["allies"] == "sas" ) + a = "UK"; + else + a = "US"; + } + else + { + if ( game["axis"] == "russian" ) + a = "RU"; + else + a = "AB"; + } + return a+"_"; +} + +doQuickMessage( t, i ) +{ + if( self.sessionstate == "playing" && isdefined(self.pers["team"]) && self.pers["team"] != "spectator" && !isdefined(self.spamdelay) ) + { + maxsize = 7; + offset = 8; + type = "stm"; + + if(t == "quickcommands") + { + maxsize = 8; + offset = 0; + type = "cmd"; + } + else if(t == "quickresponses") + { + maxsize = 6; + offset = 15; + type = "rsp"; + } + if( i >= 0 && i < maxsize ) + { + self.spamdelay = true; + + self playSound( self getSoundPrefixForTeam()+"mp_"+type+"_"+level.soundalias[offset+i] ); + saytext = level.saytext[offset+i]; + if(isdefined(level.QuickMessageToAll) && level.QuickMessageToAll) + self sayAll( saytext ); + else + { + self sayTeam( saytext ); + self pingPlayer(); + } + wait 3; + self.spamdelay = undefined; + } + } +} + +quickpromod(response) +{ + self endon ( "disconnect" ); + + switch(response) + { + case "1": + if ( self.pers["team"] != "axis" && self.pers["team"] != "allies" ) + return; + + self thread promod\timeout::timeoutCall(); + break; + + case "2": + if ( self.sessionstate == "playing" && (!isDefined( self.isPlanting ) || !self.isPlanting) && !level.gameEnded && isDefined( self.carryObject ) ) + self.carryObject thread maps\mp\gametypes\_gameobjects::setDropped(); + break; + + case "3": + self suicide(); + break; + + case "4": + a = "en"; + if ( self promod\client::toggle("PROMOD_RECORD") ) + a = "dis"; + self iprintln("Record reminder has been "+a+"abled"); + break; + + case "5": + self maps\mp\gametypes\_weapons::printStats(); + break; + + case "silencer": + if ( self.pers["team"] != "axis" && self.pers["team"] != "allies" || !isDefined( self.pers["class"] ) || !getDvarInt( "attach_allow_" + self.pers["class"] + "_silencer" ) || self.pers[self.pers["class"]]["loadout_primary"] == "mp44" || self.pers["class"] == "sniper" || self.pers["class"] == "demolitions" ) + return; + + attach = "none"; + if(self.pers[self.pers["class"]]["loadout_primary_attachment"] == "none") + { + attach = "silencer"; + self iprintln("Silencer attached"); + } + else + self iprintln("Silencer detached"); + + self.pers[self.pers["class"]]["loadout_primary_attachment"] = attach; + + self maps\mp\gametypes\_promod::menuAcceptClass( "go" ); + break; + + case "grenade": + if ( self.pers["team"] != "axis" && self.pers["team"] != "allies" || !isDefined( self.pers["class"] ) ) + return; + + classType = self.pers["class"]; + + if ( self.pers[classType]["loadout_grenade"] == "smoke_grenade" && getDvarInt( "weap_allow_flash_grenade" ) ) + { + self.pers[classType]["loadout_grenade"] = "flash_grenade"; + self iprintln("Flash selected"); + } + else if ( self.pers[classType]["loadout_grenade"] == "flash_grenade" && getDvarInt( "weap_allow_smoke_grenade" ) ) + { + self.pers[classType]["loadout_grenade"] = "smoke_grenade"; + self iprintln("Smoke selected"); + } + else + return; + + self maps\mp\gametypes\_promod::menuAcceptClass( "go" ); + break; + + case "assault": + case "specops": + case "demolitions": + case "sniper": + if ( ( self.pers["team"] != "axis" && self.pers["team"] != "allies" ) ) + return; + + if ( !self maps\mp\gametypes\_promod::verifyClassChoice( self.pers["team"], response ) ) + { + self iprintln(chooseClassName(response)+" is unavailable"); + return; + } + + if ( !isDefined( self.pers["class"] ) || self.pers["class"] != response ) + self iprintln(chooseClassName(response)+" selected"); + + self maps\mp\gametypes\_promod::setClassChoice( response ); + self maps\mp\gametypes\_promod::menuAcceptClass(); + break; + + case "X": + if ( self.pers["team"] == "axis" || self.pers["team"] == "allies" ) + self openMenu( game["menu_changeclass_" + self.pers["team"] ] ); + break; + + case "shoutcaster": + if ( self.pers["team"] == "spectator" ) + self openMenu( game["menu_shoutcast"] ); + break; + + case "overview": + if ( self.pers["team"] == "spectator" ) + self openmenu( game["menu_shoutcast_map"] ); + break; + + case "controls": + self openMenu("quickpromod"); + break; + + case "graphics": + self openMenu("quickpromodgfx"); + break; + + case "killspec": + self [[level.killspec]](); + break; + } +} + +quickpromodgfx(response) +{ + self endon ( "disconnect" ); + + switch(response) + { + case "1": + self promod\client::setsunlight(self promod\client::loopthrough("PROMOD_SUNLIGHT", 2)); + break; + + case "2": + self setclientdvar("r_filmusetweaks", self promod\client::toggle("PROMOD_FILMTWEAK")); + break; + + case "3": + self setclientdvar("r_texfilterdisable", self promod\client::toggle("PROMOD_TEXTURE")); + break; + + case "4": + self setclientdvar("r_normalmap", self promod\client::toggle("PROMOD_NORMALMAP")); + break; + + case "5": + self setclientdvar("cg_fovscale", 1 + int(!self promod\client::toggle("PROMOD_FOVSCALE")) * 0.125); + break; + + case "6": + self setclientdvar("r_blur", 0.2 * self promod\client::loopthrough("PROMOD_GFXBLUR", 5)); + break; + } +} + +chooseClassName( classname ) +{ + if ( !isDefined( classname ) ) + return ""; + + switch( classname ) + { + case "assault": + return "Assault"; + case "specops": + return "Spec Ops"; + case "demolitions": + return "Demolitions"; + case "sniper": + return "Sniper"; + default: + return ""; + } +} diff --git a/maps/mp/gametypes/_rank.gsc b/maps/mp/gametypes/_rank.gsc index aac440d..0506481 100644 --- a/maps/mp/gametypes/_rank.gsc +++ b/maps/mp/gametypes/_rank.gsc @@ -1,167 +1,167 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - level.scoreInfo = []; - level.rankTable = []; - - registerScoreInfo( "kill", 5 ); - registerScoreInfo( "headshot", 5 ); - registerScoreInfo( "assist", 3 ); - registerScoreInfo( "suicide", 0 ); - registerScoreInfo( "teamkill", 0 ); - registerScoreInfo( "win", 2 ); - registerScoreInfo( "loss", 1 ); - registerScoreInfo( "tie", 1.5 ); - registerScoreInfo( "plant", 3 ); - registerScoreInfo( "defuse", 3 ); - registerScoreInfo( "capture", 3 ); - registerScoreInfo( "assault", 3 ); - registerScoreInfo( "assault_assist", 1 ); - registerScoreInfo( "defend", 3 ); - registerScoreInfo( "defend_assist", 1 ); - - level thread onPlayerConnect(); -} - -registerScoreInfo( type, value ) -{ - level.scoreInfo[type]["value"] = value; -} - -getScoreInfoValue( type ) -{ - return ( level.scoreInfo[type]["value"] ); -} - -onPlayerConnect() -{ - for(;;) - { - level waittill( "connected", player ); - player.rankUpdateTotal = 0; - - player thread onPlayerSpawned(); - player thread onJoinedTeam(); - player thread onJoinedSpectators(); - } -} - -onJoinedTeam() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("joined_team"); - self thread removeRankHUD(); - } -} - -onJoinedSpectators() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("joined_spectators"); - self thread removeRankHUD(); - } -} - -onPlayerSpawned() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("spawned_player"); - - if(!isdefined(self.hud_rankscroreupdate)) - { - self.hud_rankscroreupdate = newClientHudElem(self); - self.hud_rankscroreupdate.horzAlign = "center"; - self.hud_rankscroreupdate.vertAlign = "middle"; - self.hud_rankscroreupdate.alignX = "center"; - self.hud_rankscroreupdate.alignY = "middle"; - self.hud_rankscroreupdate.x = 0; - self.hud_rankscroreupdate.y = -60; - self.hud_rankscroreupdate.font = "default"; - self.hud_rankscroreupdate.fontscale = 2; - self.hud_rankscroreupdate.archived = false; - self.hud_rankscroreupdate.color = (0.5,0.5,0.5); - self.hud_rankscroreupdate maps\mp\gametypes\_hud::fontPulseInit(); - } - } -} - -giveRankXP( type, value ) -{ - self endon("disconnect"); - - if ( !isDefined( value ) ) - value = getScoreInfoValue( type ); - - if ( getDvarInt( "scr_enable_scoretext" ) ) - { - if ( type == "teamkill" ) - self thread updateRankScoreHUD( 0 - getScoreInfoValue( "kill" ) ); - else - self thread updateRankScoreHUD( value ); - } -} - -updateRankScoreHUD( amount ) -{ - self endon( "disconnect" ); - self endon( "joined_team" ); - self endon( "joined_spectators" ); - - if ( !amount ) - return; - - self notify( "update_score" ); - self endon( "update_score" ); - - self.rankUpdateTotal += amount; - - wait 0.05; - - if( isDefined( self.hud_rankscroreupdate ) ) - { - if ( self.rankUpdateTotal < 0 ) - { - self.hud_rankscroreupdate.label = &""; - self.hud_rankscroreupdate.color = (1,0,0); - } - else - { - self.hud_rankscroreupdate.label = &"MP_PLUS"; - self.hud_rankscroreupdate.color = (1,1,0.5); - } - - self.hud_rankscroreupdate setValue(self.rankUpdateTotal); - self.hud_rankscroreupdate.alpha = 0.85; - self.hud_rankscroreupdate thread maps\mp\gametypes\_hud::fontPulse( self ); - - wait 1; - self.hud_rankscroreupdate fadeOverTime( 0.75 ); - self.hud_rankscroreupdate.alpha = 0; - - self.rankUpdateTotal = 0; - } -} - -removeRankHUD() -{ - if(isDefined(self.hud_rankscroreupdate)) - self.hud_rankscroreupdate.alpha = 0; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + level.scoreInfo = []; + level.rankTable = []; + + registerScoreInfo( "kill", 5 ); + registerScoreInfo( "headshot", 5 ); + registerScoreInfo( "assist", 3 ); + registerScoreInfo( "suicide", 0 ); + registerScoreInfo( "teamkill", 0 ); + registerScoreInfo( "win", 2 ); + registerScoreInfo( "loss", 1 ); + registerScoreInfo( "tie", 1.5 ); + registerScoreInfo( "plant", 3 ); + registerScoreInfo( "defuse", 3 ); + registerScoreInfo( "capture", 3 ); + registerScoreInfo( "assault", 3 ); + registerScoreInfo( "assault_assist", 1 ); + registerScoreInfo( "defend", 3 ); + registerScoreInfo( "defend_assist", 1 ); + + level thread onPlayerConnect(); +} + +registerScoreInfo( type, value ) +{ + level.scoreInfo[type]["value"] = value; +} + +getScoreInfoValue( type ) +{ + return ( level.scoreInfo[type]["value"] ); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill( "connected", player ); + player.rankUpdateTotal = 0; + + player thread onPlayerSpawned(); + player thread onJoinedTeam(); + player thread onJoinedSpectators(); + } +} + +onJoinedTeam() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("joined_team"); + self thread removeRankHUD(); + } +} + +onJoinedSpectators() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("joined_spectators"); + self thread removeRankHUD(); + } +} + +onPlayerSpawned() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("spawned_player"); + + if(!isdefined(self.hud_rankscroreupdate)) + { + self.hud_rankscroreupdate = newClientHudElem(self); + self.hud_rankscroreupdate.horzAlign = "center"; + self.hud_rankscroreupdate.vertAlign = "middle"; + self.hud_rankscroreupdate.alignX = "center"; + self.hud_rankscroreupdate.alignY = "middle"; + self.hud_rankscroreupdate.x = 0; + self.hud_rankscroreupdate.y = -60; + self.hud_rankscroreupdate.font = "default"; + self.hud_rankscroreupdate.fontscale = 2; + self.hud_rankscroreupdate.archived = false; + self.hud_rankscroreupdate.color = (0.5,0.5,0.5); + self.hud_rankscroreupdate maps\mp\gametypes\_hud::fontPulseInit(); + } + } +} + +giveRankXP( type, value ) +{ + self endon("disconnect"); + + if ( !isDefined( value ) ) + value = getScoreInfoValue( type ); + + if ( getDvarInt( "scr_enable_scoretext" ) ) + { + if ( type == "teamkill" ) + self thread updateRankScoreHUD( 0 - getScoreInfoValue( "kill" ) ); + else + self thread updateRankScoreHUD( value ); + } +} + +updateRankScoreHUD( amount ) +{ + self endon( "disconnect" ); + self endon( "joined_team" ); + self endon( "joined_spectators" ); + + if ( !amount ) + return; + + self notify( "update_score" ); + self endon( "update_score" ); + + self.rankUpdateTotal += amount; + + wait 0.05; + + if( isDefined( self.hud_rankscroreupdate ) ) + { + if ( self.rankUpdateTotal < 0 ) + { + self.hud_rankscroreupdate.label = &""; + self.hud_rankscroreupdate.color = (1,0,0); + } + else + { + self.hud_rankscroreupdate.label = &"MP_PLUS"; + self.hud_rankscroreupdate.color = (1,1,0.5); + } + + self.hud_rankscroreupdate setValue(self.rankUpdateTotal); + self.hud_rankscroreupdate.alpha = 0.85; + self.hud_rankscroreupdate thread maps\mp\gametypes\_hud::fontPulse( self ); + + wait 1; + self.hud_rankscroreupdate fadeOverTime( 0.75 ); + self.hud_rankscroreupdate.alpha = 0; + + self.rankUpdateTotal = 0; + } +} + +removeRankHUD() +{ + if(isDefined(self.hud_rankscroreupdate)) + self.hud_rankscroreupdate.alpha = 0; +} diff --git a/maps/mp/gametypes/_scoreboard.gsc b/maps/mp/gametypes/_scoreboard.gsc index dbf961f..3e26d08 100644 --- a/maps/mp/gametypes/_scoreboard.gsc +++ b/maps/mp/gametypes/_scoreboard.gsc @@ -1,62 +1,62 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - switch(game["allies"]) - { - case "sas": - precacheShader("faction_128_sas"); - setdvar("g_TeamIcon_Allies", "faction_128_sas"); - setdvar("g_TeamColor_Allies", "0.5 0.5 0.5"); - setdvar("g_ScoresColor_Allies", "0 0 0"); - break; - - default: - precacheShader("faction_128_usmc"); - setdvar("g_TeamIcon_Allies", "faction_128_usmc"); - setdvar("g_TeamColor_Allies", "0.6 0.64 0.69"); - setdvar("g_ScoresColor_Allies", "0.6 0.64 0.69"); - break; - } - - switch(game["axis"]) - { - case "russian": - precacheShader("faction_128_ussr"); - setdvar("g_TeamIcon_Axis", "faction_128_ussr"); - setdvar("g_TeamColor_Axis", "0.52 0.28 0.28"); - setdvar("g_ScoresColor_Axis", "0.52 0.28 0.28"); - break; - - default: - precacheShader("faction_128_arab"); - setdvar("g_TeamIcon_Axis", "faction_128_arab"); - setdvar("g_TeamColor_Axis", "0.65 0.57 0.41"); - setdvar("g_ScoresColor_Axis", "0.65 0.57 0.41"); - break; - } - - if ( game["attackers"] == "allies" && game["defenders"] == "axis" ) - { - setdvar("g_TeamName_Allies", "Attack"); - setdvar("g_TeamName_Axis", "Defence"); - } - else - { - setdvar("g_TeamName_Allies", "Defence"); - setdvar("g_TeamName_Axis", "Attack"); - } - - setdvar("g_ScoresColor_Spectator", "0.25 0.25 0.25"); - setdvar("g_ScoresColor_Free", "0.76 0.78 0.1"); - setdvar("g_teamColor_MyTeam", "0.6 0.8 0.6" ); - setdvar("g_teamColor_EnemyTeam", "1 0.45 0.5" ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + switch(game["allies"]) + { + case "sas": + precacheShader("faction_128_sas"); + setdvar("g_TeamIcon_Allies", "faction_128_sas"); + setdvar("g_TeamColor_Allies", "0.5 0.5 0.5"); + setdvar("g_ScoresColor_Allies", "0 0 0"); + break; + + default: + precacheShader("faction_128_usmc"); + setdvar("g_TeamIcon_Allies", "faction_128_usmc"); + setdvar("g_TeamColor_Allies", "0.6 0.64 0.69"); + setdvar("g_ScoresColor_Allies", "0.6 0.64 0.69"); + break; + } + + switch(game["axis"]) + { + case "russian": + precacheShader("faction_128_ussr"); + setdvar("g_TeamIcon_Axis", "faction_128_ussr"); + setdvar("g_TeamColor_Axis", "0.52 0.28 0.28"); + setdvar("g_ScoresColor_Axis", "0.52 0.28 0.28"); + break; + + default: + precacheShader("faction_128_arab"); + setdvar("g_TeamIcon_Axis", "faction_128_arab"); + setdvar("g_TeamColor_Axis", "0.65 0.57 0.41"); + setdvar("g_ScoresColor_Axis", "0.65 0.57 0.41"); + break; + } + + if ( game["attackers"] == "allies" && game["defenders"] == "axis" ) + { + setdvar("g_TeamName_Allies", "Attack"); + setdvar("g_TeamName_Axis", "Defence"); + } + else + { + setdvar("g_TeamName_Allies", "Defence"); + setdvar("g_TeamName_Axis", "Attack"); + } + + setdvar("g_ScoresColor_Spectator", "0.25 0.25 0.25"); + setdvar("g_ScoresColor_Free", "0.76 0.78 0.1"); + setdvar("g_teamColor_MyTeam", "0.6 0.8 0.6" ); + setdvar("g_teamColor_EnemyTeam", "1 0.45 0.5" ); +} diff --git a/maps/mp/gametypes/_spawnlogic.gsc b/maps/mp/gametypes/_spawnlogic.gsc index 98ae1e0..6788d5c 100644 --- a/maps/mp/gametypes/_spawnlogic.gsc +++ b/maps/mp/gametypes/_spawnlogic.gsc @@ -1,701 +1,701 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\_utility; - -onPlayerConnect() -{ - for(;;) - level waittill("connected", player); -} - -findBoxCenter( mins, maxs ) -{ - center = ( 0, 0, 0 ); - center = maxs - mins; - center = ( center[0]/2, center[1]/2, center[2]/2 ) + mins; - return center; -} - -expandMins( mins, point ) -{ - if ( mins[0] > point[0] ) - mins = ( point[0], mins[1], mins[2] ); - if ( mins[1] > point[1] ) - mins = ( mins[0], point[1], mins[2] ); - if ( mins[2] > point[2] ) - mins = ( mins[0], mins[1], point[2] ); - return mins; -} - -expandMaxs( maxs, point ) -{ - if ( maxs[0] < point[0] ) - maxs = ( point[0], maxs[1], maxs[2] ); - if ( maxs[1] < point[1] ) - maxs = ( maxs[0], point[1], maxs[2] ); - if ( maxs[2] < point[2] ) - maxs = ( maxs[0], maxs[1], point[2] ); - return maxs; -} - -addSpawnPoints( team, spawnPointName ) -{ - oldSpawnPoints = []; - if ( level.teamSpawnPoints[team].size ) - oldSpawnPoints = level.teamSpawnPoints[team]; - - level.teamSpawnPoints[team] = getEntArray( spawnPointName, "classname" ); - - if ( !level.teamSpawnPoints[team].size ) - { - if ( isDefined( level.restarting ) ) - { - setdvar("g_gametype", "dm"); - setDvar( "o_gametype", "dm" ); - } - else - maps\mp\gametypes\_callbacksetup::AbortLevel(); - - wait 1; - return; - } - - if ( !isDefined( level.spawnpoints ) ) - level.spawnpoints = []; - - for ( i = 0; i < level.teamSpawnPoints[team].size; i++ ) - { - spawnpoint = level.teamSpawnPoints[team][i]; - - if ( !isdefined( spawnpoint.inited ) ) - { - spawnpoint spawnPointInit(); - level.spawnpoints[ level.spawnpoints.size ] = spawnpoint; - } - } - - for ( i = 0; i < oldSpawnPoints.size; i++ ) - { - origin = oldSpawnPoints[i].origin; - - level.spawnMins = expandMins( level.spawnMins, origin ); - level.spawnMaxs = expandMaxs( level.spawnMaxs, origin ); - - level.teamSpawnPoints[team][ level.teamSpawnPoints[team].size ] = oldSpawnPoints[i]; - } -} - -placeSpawnPoints( spawnPointName ) -{ - spawnPoints = getEntArray( spawnPointName, "classname" ); - - if ( !spawnPoints.size ) - { - if ( isDefined( level.restarting ) ) - { - setdvar("g_gametype", "dm"); - setDvar( "o_gametype", "dm" ); - } - else - maps\mp\gametypes\_callbacksetup::AbortLevel(); - - wait 1; - return; - } - - for( i = 0; i < spawnPoints.size; i++ ) - spawnPoints[i] spawnPointInit(); -} - -spawnPointInit() -{ - spawnpoint = self; - origin = spawnpoint.origin; - - level.spawnMins = expandMins( level.spawnMins, origin ); - level.spawnMaxs = expandMaxs( level.spawnMaxs, origin ); - - spawnpoint placeSpawnpoint(); - spawnpoint.forward = anglesToForward( spawnpoint.angles ); - spawnpoint.sightTracePoint = spawnpoint.origin + (0,0,50); - - spawnpoint.inited = true; -} - -getTeamSpawnPoints( team ) -{ - return level.teamSpawnPoints[team]; -} - -getSpawnpoint_Final( spawnpoints, useweights ) -{ - prof_begin( "spawn_final" ); - - bestspawnpoint = undefined; - - if ( !isdefined( spawnpoints ) || !spawnpoints.size ) - return undefined; - - if ( !isdefined( useweights ) ) - useweights = true; - - if ( useweights ) - bestspawnpoint = getBestWeightedSpawnpoint( spawnpoints ); - else - { - for ( i = 0; i < spawnpoints.size; i++ ) - { - if( ( isdefined( self.lastspawnpoint ) && self.lastspawnpoint == spawnpoints[i] ) || positionWouldTelefrag( spawnpoints[i].origin ) ) - continue; - - bestspawnpoint = spawnpoints[i]; - break; - } - if ( !isdefined( bestspawnpoint ) && isdefined( self.lastspawnpoint ) && !positionWouldTelefrag( self.lastspawnpoint.origin ) ) - { - for ( i = 0; i < spawnpoints.size; i++ ) - { - if ( spawnpoints[i] == self.lastspawnpoint ) - { - bestspawnpoint = spawnpoints[i]; - break; - } - } - } - } - - if ( !isdefined( bestspawnpoint ) ) - { - if ( useweights ) - bestspawnpoint = spawnpoints[randomint(spawnpoints.size)]; - else - bestspawnpoint = spawnpoints[0]; - } - - time = getTime(); - - self.lastspawnpoint = bestspawnpoint; - self.lastspawntime = time; - bestspawnpoint.lastspawnedplayer = self; - bestspawnpoint.lastspawntime = time; - - prof_end( "spawn_final" ); - - return bestspawnpoint; -} - -getBestWeightedSpawnpoint( spawnpoints ) -{ - maxSightTracedSpawnpoints = 3; - for ( try = 0; try <= maxSightTracedSpawnpoints; try++ ) - { - bestspawnpoints = []; - bestweight = undefined; - bestspawnpoint = undefined; - for ( i = 0; i < spawnpoints.size; i++ ) - { - if ( !isdefined( bestweight ) || spawnpoints[i].weight > bestweight ) - { - if ( positionWouldTelefrag( spawnpoints[i].origin ) ) - continue; - - bestspawnpoints = []; - bestspawnpoints[0] = spawnpoints[i]; - bestweight = spawnpoints[i].weight; - } - else if ( spawnpoints[i].weight == bestweight ) - { - if ( positionWouldTelefrag( spawnpoints[i].origin ) ) - continue; - - bestspawnpoints[bestspawnpoints.size] = spawnpoints[i]; - } - } - if ( !bestspawnpoints.size ) - return undefined; - - bestspawnpoint = bestspawnpoints[randomint( bestspawnpoints.size )]; - - if ( try == maxSightTracedSpawnpoints || ( isdefined( bestspawnpoint.lastSightTraceTime ) && bestspawnpoint.lastSightTraceTime == gettime() ) || !lastMinuteSightTraces( bestspawnpoint ) ) - return bestspawnpoint; - - penalty = getLosPenalty(); - - bestspawnpoint.weight -= penalty; - - bestspawnpoint.lastSightTraceTime = gettime(); - } -} - -getSpawnpoint_Random(spawnpoints) -{ - if(!isdefined(spawnpoints)) - return undefined; - - for(i = 0; i < spawnpoints.size; i++) - { - j = randomInt(spawnpoints.size); - spawnpoint = spawnpoints[i]; - spawnpoints[i] = spawnpoints[j]; - spawnpoints[j] = spawnpoint; - } - - return getSpawnpoint_Final(spawnpoints, false); -} - -getAllOtherPlayers() -{ - aliveplayers = []; - - for(i = 0; i < level.players.size; i++) - { - if ( !isdefined( level.players[i] ) || ( level.players[i].sessionstate != "playing" || level.players[i] == self ) ) - continue; - - aliveplayers[aliveplayers.size] = level.players[i]; - } - return aliveplayers; -} - -getAllAlliedAndEnemyPlayers( obj ) -{ - if ( level.teambased ) - { - if ( self.pers["team"] == "allies" ) - { - obj.allies = level.alivePlayers["allies"]; - obj.enemies = level.alivePlayers["axis"]; - } - else - { - obj.allies = level.alivePlayers["axis"]; - obj.enemies = level.alivePlayers["allies"]; - } - } - else - { - obj.allies = []; - obj.enemies = level.activePlayers; - } -} - -initWeights(spawnpoints) -{ - for (i = 0; i < spawnpoints.size; i++) - spawnpoints[i].weight = 0; -} - -getSpawnpoint_NearTeam( spawnpoints, favoredspawnpoints ) -{ - if(!isdefined(spawnpoints)) - return undefined; - - prof_begin("basic_spawnlogic"); - - initWeights(spawnpoints); - - prof_begin("getteams"); - obj = spawnstruct(); - getAllAlliedAndEnemyPlayers(obj); - prof_end("getteams"); - - numplayers = obj.allies.size + obj.enemies.size; - - alliedDistanceWeight = 2; - - prof_begin("sumdists"); - myTeam = self.pers["team"]; - enemyTeam = getOtherTeam( myTeam ); - for (i = 0; i < spawnpoints.size; i++) - { - spawnpoint = spawnpoints[i]; - - if ( isDefined( spawnpoint.numPlayersAtLastUpdate ) && spawnpoint.numPlayersAtLastUpdate > 0 ) - { - allyDistSum = spawnpoint.distSum[ myTeam ]; - enemyDistSum = spawnpoint.distSum[ enemyTeam ]; - - spawnpoint.weight = (enemyDistSum - alliedDistanceWeight*allyDistSum) / spawnpoint.numPlayersAtLastUpdate; - } - else - spawnpoint.weight = 0; - } - prof_end("sumdists"); - - if (isdefined(favoredspawnpoints)) - for (i = 0; i < favoredspawnpoints.size; i++) - favoredspawnpoints[i].weight += 25000; - - prof_end("basic_spawnlogic"); - - prof_begin("complex_spawnlogic"); - - avoidSameSpawn(spawnpoints); - avoidSpawnReuse(spawnpoints, true); - avoidWeaponDamage(spawnpoints); - avoidVisibleEnemies(spawnpoints, true); - - prof_end("complex_spawnlogic"); - - result = getSpawnpoint_Final(spawnpoints); - - return result; -} - -getSpawnpoint_DM(spawnpoints) -{ - if(!isdefined(spawnpoints)) - return undefined; - - initWeights(spawnpoints); - - aliveplayers = getAllOtherPlayers(); - - idealDist = 1600; - badDist = 1200; - - if (aliveplayers.size > 0) - { - for (i = 0; i < spawnpoints.size; i++) - { - totalDistFromIdeal = 0; - nearbyBadAmount = 0; - for (j = 0; j < aliveplayers.size; j++) - { - dist = distance(spawnpoints[i].origin, aliveplayers[j].origin); - - if (dist < badDist) - nearbyBadAmount += (badDist - dist) / badDist; - - distfromideal = abs(dist - idealDist); - totalDistFromIdeal += distfromideal; - } - avgDistFromIdeal = totalDistFromIdeal / aliveplayers.size; - - wellDistancedAmount = (idealDist - avgDistFromIdeal) / idealDist; - - spawnpoints[i].weight = wellDistancedAmount - nearbyBadAmount * 2 + randomfloat(0.2); - } - } - - avoidSameSpawn(spawnpoints); - avoidSpawnReuse(spawnpoints, false); - avoidWeaponDamage(spawnpoints); - avoidVisibleEnemies(spawnpoints, false); - - return getSpawnpoint_Final(spawnpoints); -} - -init() -{ - level.spawnlogic_deaths = []; - - level.players = []; - level.grenades = []; - level.pipebombs = []; - - level thread onPlayerConnect(); - level thread trackGrenades(); -} - -updateDeathInfo() -{ - prof_begin("updateDeathInfo"); - - time = getTime(); - for (i = 0; i < level.spawnlogic_deaths.size; i++) - { - deathInfo = level.spawnlogic_deaths[i]; - - if (time - deathInfo.time > 90000 || - !isdefined(deathInfo.killer) || - !isalive(deathInfo.killer) || - (deathInfo.killer.pers["team"] != "axis" && deathInfo.killer.pers["team"] != "allies") || - distance(deathInfo.killer.origin, deathInfo.killOrg) > 400) { - level.spawnlogic_deaths[i].remove = true; - } - } - - oldarray = level.spawnlogic_deaths; - level.spawnlogic_deaths = []; - - start = 0; - if (oldarray.size - 1024 > 0) start = oldarray.size - 1024; - - for (i = start; i < oldarray.size; i++) - { - if (!isdefined(oldarray[i].remove)) - level.spawnlogic_deaths[level.spawnlogic_deaths.size] = oldarray[i]; - } - - prof_end("updateDeathInfo"); -} - -trackGrenades() -{ - for(;;) - { - level.grenades = getentarray("grenade", "classname"); - wait 0.05; - } -} - -isPointVulnerable(playerorigin) -{ - pos = self.origin + level.claymoremodelcenteroffset; - playerpos = playerorigin + (0,0,32); - distsqrd = distancesquared(pos, playerpos); - - forward = anglestoforward(self.angles); - - if (distsqrd < level.claymoreDetectionRadius*level.claymoreDetectionRadius) - { - playerdir = vectornormalize(playerpos - pos); - angle = acos(vectordot(playerdir, forward)); - if (angle < level.claymoreDetectionConeAngle) - return true; - } - return false; -} - -avoidWeaponDamage(spawnpoints) -{ - prof_begin("spawn_grenade"); - - for (i = 0; i < spawnpoints.size; i++) - { - for (j = 0; j < level.grenades.size; j++) - { - if ( !isdefined( level.grenades[j] ) ) - continue; - - if (distancesquared(spawnpoints[i].origin, level.grenades[j].origin) < 62500) - spawnpoints[i].weight -= 100000; - } - } - - prof_end("spawn_grenade"); -} - -spawnPerFrameUpdate() -{ - spawnpointindex = 0; - - prevspawnpoint = undefined; - - for(;;) - { - wait 0.05; - - prof_begin("spawn_sight_checks"); - - if ( !isDefined( level.spawnPoints ) ) - return; - - spawnpointindex = (spawnpointindex + 1) % level.spawnPoints.size; - spawnpoint = level.spawnPoints[spawnpointindex]; - - if ( level.teambased ) - { - spawnpoint.sights["axis"] = 0; - spawnpoint.sights["allies"] = 0; - - spawnpoint.nearbyPlayers["axis"] = []; - spawnpoint.nearbyPlayers["allies"] = []; - } - else - { - spawnpoint.sights = 0; - - spawnpoint.nearbyPlayers["all"] = []; - } - - spawnpointdir = spawnpoint.forward; - - spawnpoint.distSum["all"] = 0; - spawnpoint.distSum["allies"] = 0; - spawnpoint.distSum["axis"] = 0; - - spawnpoint.numPlayersAtLastUpdate = 0; - - for (i = 0; i < level.players.size; i++) - { - player = level.players[i]; - - if ( player.sessionstate != "playing" ) - continue; - - diff = player.origin - spawnpoint.origin; - dist = length( diff ); - - team = "all"; - if ( level.teambased ) - team = player.pers["team"]; - - if ( dist < 1024 ) - spawnpoint.nearbyPlayers[team][spawnpoint.nearbyPlayers[team].size] = player; - - spawnpoint.distSum[ team ] += dist; - spawnpoint.numPlayersAtLastUpdate++; - - pdir = anglestoforward(player.angles); - if (vectordot(spawnpointdir, diff) < 0 && vectordot(pdir, diff) > 0) - continue; - - losExists = bullettracepassed(player.origin + (0,0,50), spawnpoint.sightTracePoint, false, undefined); - - spawnpoint.lastSightTraceTime = gettime(); - - if (losExists) - { - if ( level.teamBased ) - spawnpoint.sights[player.pers["team"]]++; - else - spawnpoint.sights++; - } - } - - prof_end("spawn_sight_checks"); - } -} - -getLosPenalty() -{ - return 100000; -} - -lastMinuteSightTraces( spawnpoint ) -{ - prof_begin("spawn_lastminutesc"); - - team = "all"; - if ( level.teambased ) - team = getOtherTeam( self.pers["team"] ); - - if ( !isdefined( spawnpoint.nearbyPlayers ) ) - return false; - - closest = undefined; - closestDistsq = undefined; - secondClosest = undefined; - secondClosestDistsq = undefined; - for ( i = 0; i < spawnpoint.nearbyPlayers[team].size; i++ ) - { - player = spawnpoint.nearbyPlayers[team][i]; - - if ( !isdefined( player ) || player.sessionstate != "playing" || player == self ) - continue; - - distsq = distanceSquared( spawnpoint.origin, player.origin ); - if ( !isdefined( closest ) || distsq < closestDistsq ) - { - secondClosest = closest; - secondClosestDistsq = closestDistsq; - - closest = player; - closestDistSq = distsq; - } - else if ( !isdefined( secondClosest ) || distsq < secondClosestDistSq ) - { - secondClosest = player; - secondClosestDistSq = distsq; - } - } - - if ( isdefined( closest ) && bullettracepassed( closest.origin + (0,0,50), spawnpoint.sightTracePoint, false, undefined) || ( isdefined( secondClosest ) && bullettracepassed( secondClosest.origin + (0,0,50), spawnpoint.sightTracePoint, false, undefined) ) ) - return true; - - return false; -} - -avoidVisibleEnemies(spawnpoints, teambased) -{ - lospenalty = getLosPenalty(); - - otherteam = "axis"; - if ( self.pers["team"] == "axis" ) - otherteam = "allies"; - - if ( teambased ) - { - for ( i = 0; i < spawnpoints.size; i++ ) - { - if ( !isdefined(spawnpoints[i].sights) ) - continue; - - penalty = lospenalty * spawnpoints[i].sights[otherteam]; - spawnpoints[i].weight -= penalty; - } - } - else - { - for ( i = 0; i < spawnpoints.size; i++ ) - { - if ( !isdefined(spawnpoints[i].sights) ) - continue; - - penalty = lospenalty * spawnpoints[i].sights; - spawnpoints[i].weight -= penalty; - } - } -} - -avoidSpawnReuse(spawnpoints, teambased) -{ - prof_begin("spawn_reuse"); - - time = getTime(); - - maxtime = 10000; - maxdistSq = 640000; - - for (i = 0; i < spawnpoints.size; i++) - { - if (!isdefined(spawnpoints[i].lastspawnedplayer) || !isdefined(spawnpoints[i].lastspawntime) || !isalive(spawnpoints[i].lastspawnedplayer) || spawnpoints[i].lastspawnedplayer == self || ( teambased && spawnpoints[i].lastspawnedplayer.pers["team"] == self.pers["team"] ) ) - continue; - - timepassed = time - spawnpoints[i].lastspawntime; - if (timepassed < maxtime) - { - distSq = distanceSquared(spawnpoints[i].lastspawnedplayer.origin, spawnpoints[i].origin); - if (distSq < maxdistSq) - { - worsen = 1000 * (1 - distSq/maxdistSq) * (1 - timepassed/maxtime); - spawnpoints[i].weight -= worsen; - } - else - spawnpoints[i].lastspawnedplayer = undefined; - } - else - spawnpoints[i].lastspawnedplayer = undefined; - } - - prof_end("spawn_reuse"); -} - -avoidSameSpawn(spawnpoints) -{ - prof_begin("spawn_samespwn"); - - if (!isdefined(self.lastspawnpoint)) - return; - - for (i = 0; i < spawnpoints.size; i++) - { - if (spawnpoints[i] == self.lastspawnpoint) - { - spawnpoints[i].weight -= 50000; - break; - } - } - - prof_end("spawn_samespwn"); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\_utility; + +onPlayerConnect() +{ + for(;;) + level waittill("connected", player); +} + +findBoxCenter( mins, maxs ) +{ + center = ( 0, 0, 0 ); + center = maxs - mins; + center = ( center[0]/2, center[1]/2, center[2]/2 ) + mins; + return center; +} + +expandMins( mins, point ) +{ + if ( mins[0] > point[0] ) + mins = ( point[0], mins[1], mins[2] ); + if ( mins[1] > point[1] ) + mins = ( mins[0], point[1], mins[2] ); + if ( mins[2] > point[2] ) + mins = ( mins[0], mins[1], point[2] ); + return mins; +} + +expandMaxs( maxs, point ) +{ + if ( maxs[0] < point[0] ) + maxs = ( point[0], maxs[1], maxs[2] ); + if ( maxs[1] < point[1] ) + maxs = ( maxs[0], point[1], maxs[2] ); + if ( maxs[2] < point[2] ) + maxs = ( maxs[0], maxs[1], point[2] ); + return maxs; +} + +addSpawnPoints( team, spawnPointName ) +{ + oldSpawnPoints = []; + if ( level.teamSpawnPoints[team].size ) + oldSpawnPoints = level.teamSpawnPoints[team]; + + level.teamSpawnPoints[team] = getEntArray( spawnPointName, "classname" ); + + if ( !level.teamSpawnPoints[team].size ) + { + if ( isDefined( level.restarting ) ) + { + setdvar("g_gametype", "dm"); + setDvar( "o_gametype", "dm" ); + } + else + maps\mp\gametypes\_callbacksetup::AbortLevel(); + + wait 1; + return; + } + + if ( !isDefined( level.spawnpoints ) ) + level.spawnpoints = []; + + for ( i = 0; i < level.teamSpawnPoints[team].size; i++ ) + { + spawnpoint = level.teamSpawnPoints[team][i]; + + if ( !isdefined( spawnpoint.inited ) ) + { + spawnpoint spawnPointInit(); + level.spawnpoints[ level.spawnpoints.size ] = spawnpoint; + } + } + + for ( i = 0; i < oldSpawnPoints.size; i++ ) + { + origin = oldSpawnPoints[i].origin; + + level.spawnMins = expandMins( level.spawnMins, origin ); + level.spawnMaxs = expandMaxs( level.spawnMaxs, origin ); + + level.teamSpawnPoints[team][ level.teamSpawnPoints[team].size ] = oldSpawnPoints[i]; + } +} + +placeSpawnPoints( spawnPointName ) +{ + spawnPoints = getEntArray( spawnPointName, "classname" ); + + if ( !spawnPoints.size ) + { + if ( isDefined( level.restarting ) ) + { + setdvar("g_gametype", "dm"); + setDvar( "o_gametype", "dm" ); + } + else + maps\mp\gametypes\_callbacksetup::AbortLevel(); + + wait 1; + return; + } + + for( i = 0; i < spawnPoints.size; i++ ) + spawnPoints[i] spawnPointInit(); +} + +spawnPointInit() +{ + spawnpoint = self; + origin = spawnpoint.origin; + + level.spawnMins = expandMins( level.spawnMins, origin ); + level.spawnMaxs = expandMaxs( level.spawnMaxs, origin ); + + spawnpoint placeSpawnpoint(); + spawnpoint.forward = anglesToForward( spawnpoint.angles ); + spawnpoint.sightTracePoint = spawnpoint.origin + (0,0,50); + + spawnpoint.inited = true; +} + +getTeamSpawnPoints( team ) +{ + return level.teamSpawnPoints[team]; +} + +getSpawnpoint_Final( spawnpoints, useweights ) +{ + prof_begin( "spawn_final" ); + + bestspawnpoint = undefined; + + if ( !isdefined( spawnpoints ) || !spawnpoints.size ) + return undefined; + + if ( !isdefined( useweights ) ) + useweights = true; + + if ( useweights ) + bestspawnpoint = getBestWeightedSpawnpoint( spawnpoints ); + else + { + for ( i = 0; i < spawnpoints.size; i++ ) + { + if( ( isdefined( self.lastspawnpoint ) && self.lastspawnpoint == spawnpoints[i] ) || positionWouldTelefrag( spawnpoints[i].origin ) ) + continue; + + bestspawnpoint = spawnpoints[i]; + break; + } + if ( !isdefined( bestspawnpoint ) && isdefined( self.lastspawnpoint ) && !positionWouldTelefrag( self.lastspawnpoint.origin ) ) + { + for ( i = 0; i < spawnpoints.size; i++ ) + { + if ( spawnpoints[i] == self.lastspawnpoint ) + { + bestspawnpoint = spawnpoints[i]; + break; + } + } + } + } + + if ( !isdefined( bestspawnpoint ) ) + { + if ( useweights ) + bestspawnpoint = spawnpoints[randomint(spawnpoints.size)]; + else + bestspawnpoint = spawnpoints[0]; + } + + time = getTime(); + + self.lastspawnpoint = bestspawnpoint; + self.lastspawntime = time; + bestspawnpoint.lastspawnedplayer = self; + bestspawnpoint.lastspawntime = time; + + prof_end( "spawn_final" ); + + return bestspawnpoint; +} + +getBestWeightedSpawnpoint( spawnpoints ) +{ + maxSightTracedSpawnpoints = 3; + for ( try = 0; try <= maxSightTracedSpawnpoints; try++ ) + { + bestspawnpoints = []; + bestweight = undefined; + bestspawnpoint = undefined; + for ( i = 0; i < spawnpoints.size; i++ ) + { + if ( !isdefined( bestweight ) || spawnpoints[i].weight > bestweight ) + { + if ( positionWouldTelefrag( spawnpoints[i].origin ) ) + continue; + + bestspawnpoints = []; + bestspawnpoints[0] = spawnpoints[i]; + bestweight = spawnpoints[i].weight; + } + else if ( spawnpoints[i].weight == bestweight ) + { + if ( positionWouldTelefrag( spawnpoints[i].origin ) ) + continue; + + bestspawnpoints[bestspawnpoints.size] = spawnpoints[i]; + } + } + if ( !bestspawnpoints.size ) + return undefined; + + bestspawnpoint = bestspawnpoints[randomint( bestspawnpoints.size )]; + + if ( try == maxSightTracedSpawnpoints || ( isdefined( bestspawnpoint.lastSightTraceTime ) && bestspawnpoint.lastSightTraceTime == gettime() ) || !lastMinuteSightTraces( bestspawnpoint ) ) + return bestspawnpoint; + + penalty = getLosPenalty(); + + bestspawnpoint.weight -= penalty; + + bestspawnpoint.lastSightTraceTime = gettime(); + } +} + +getSpawnpoint_Random(spawnpoints) +{ + if(!isdefined(spawnpoints)) + return undefined; + + for(i = 0; i < spawnpoints.size; i++) + { + j = randomInt(spawnpoints.size); + spawnpoint = spawnpoints[i]; + spawnpoints[i] = spawnpoints[j]; + spawnpoints[j] = spawnpoint; + } + + return getSpawnpoint_Final(spawnpoints, false); +} + +getAllOtherPlayers() +{ + aliveplayers = []; + + for(i = 0; i < level.players.size; i++) + { + if ( !isdefined( level.players[i] ) || ( level.players[i].sessionstate != "playing" || level.players[i] == self ) ) + continue; + + aliveplayers[aliveplayers.size] = level.players[i]; + } + return aliveplayers; +} + +getAllAlliedAndEnemyPlayers( obj ) +{ + if ( level.teambased ) + { + if ( self.pers["team"] == "allies" ) + { + obj.allies = level.alivePlayers["allies"]; + obj.enemies = level.alivePlayers["axis"]; + } + else + { + obj.allies = level.alivePlayers["axis"]; + obj.enemies = level.alivePlayers["allies"]; + } + } + else + { + obj.allies = []; + obj.enemies = level.activePlayers; + } +} + +initWeights(spawnpoints) +{ + for (i = 0; i < spawnpoints.size; i++) + spawnpoints[i].weight = 0; +} + +getSpawnpoint_NearTeam( spawnpoints, favoredspawnpoints ) +{ + if(!isdefined(spawnpoints)) + return undefined; + + prof_begin("basic_spawnlogic"); + + initWeights(spawnpoints); + + prof_begin("getteams"); + obj = spawnstruct(); + getAllAlliedAndEnemyPlayers(obj); + prof_end("getteams"); + + numplayers = obj.allies.size + obj.enemies.size; + + alliedDistanceWeight = 2; + + prof_begin("sumdists"); + myTeam = self.pers["team"]; + enemyTeam = getOtherTeam( myTeam ); + for (i = 0; i < spawnpoints.size; i++) + { + spawnpoint = spawnpoints[i]; + + if ( isDefined( spawnpoint.numPlayersAtLastUpdate ) && spawnpoint.numPlayersAtLastUpdate > 0 ) + { + allyDistSum = spawnpoint.distSum[ myTeam ]; + enemyDistSum = spawnpoint.distSum[ enemyTeam ]; + + spawnpoint.weight = (enemyDistSum - alliedDistanceWeight*allyDistSum) / spawnpoint.numPlayersAtLastUpdate; + } + else + spawnpoint.weight = 0; + } + prof_end("sumdists"); + + if (isdefined(favoredspawnpoints)) + for (i = 0; i < favoredspawnpoints.size; i++) + favoredspawnpoints[i].weight += 25000; + + prof_end("basic_spawnlogic"); + + prof_begin("complex_spawnlogic"); + + avoidSameSpawn(spawnpoints); + avoidSpawnReuse(spawnpoints, true); + avoidWeaponDamage(spawnpoints); + avoidVisibleEnemies(spawnpoints, true); + + prof_end("complex_spawnlogic"); + + result = getSpawnpoint_Final(spawnpoints); + + return result; +} + +getSpawnpoint_DM(spawnpoints) +{ + if(!isdefined(spawnpoints)) + return undefined; + + initWeights(spawnpoints); + + aliveplayers = getAllOtherPlayers(); + + idealDist = 1600; + badDist = 1200; + + if (aliveplayers.size > 0) + { + for (i = 0; i < spawnpoints.size; i++) + { + totalDistFromIdeal = 0; + nearbyBadAmount = 0; + for (j = 0; j < aliveplayers.size; j++) + { + dist = distance(spawnpoints[i].origin, aliveplayers[j].origin); + + if (dist < badDist) + nearbyBadAmount += (badDist - dist) / badDist; + + distfromideal = abs(dist - idealDist); + totalDistFromIdeal += distfromideal; + } + avgDistFromIdeal = totalDistFromIdeal / aliveplayers.size; + + wellDistancedAmount = (idealDist - avgDistFromIdeal) / idealDist; + + spawnpoints[i].weight = wellDistancedAmount - nearbyBadAmount * 2 + randomfloat(0.2); + } + } + + avoidSameSpawn(spawnpoints); + avoidSpawnReuse(spawnpoints, false); + avoidWeaponDamage(spawnpoints); + avoidVisibleEnemies(spawnpoints, false); + + return getSpawnpoint_Final(spawnpoints); +} + +init() +{ + level.spawnlogic_deaths = []; + + level.players = []; + level.grenades = []; + level.pipebombs = []; + + level thread onPlayerConnect(); + level thread trackGrenades(); +} + +updateDeathInfo() +{ + prof_begin("updateDeathInfo"); + + time = getTime(); + for (i = 0; i < level.spawnlogic_deaths.size; i++) + { + deathInfo = level.spawnlogic_deaths[i]; + + if (time - deathInfo.time > 90000 || + !isdefined(deathInfo.killer) || + !isalive(deathInfo.killer) || + (deathInfo.killer.pers["team"] != "axis" && deathInfo.killer.pers["team"] != "allies") || + distance(deathInfo.killer.origin, deathInfo.killOrg) > 400) { + level.spawnlogic_deaths[i].remove = true; + } + } + + oldarray = level.spawnlogic_deaths; + level.spawnlogic_deaths = []; + + start = 0; + if (oldarray.size - 1024 > 0) start = oldarray.size - 1024; + + for (i = start; i < oldarray.size; i++) + { + if (!isdefined(oldarray[i].remove)) + level.spawnlogic_deaths[level.spawnlogic_deaths.size] = oldarray[i]; + } + + prof_end("updateDeathInfo"); +} + +trackGrenades() +{ + for(;;) + { + level.grenades = getentarray("grenade", "classname"); + wait 0.05; + } +} + +isPointVulnerable(playerorigin) +{ + pos = self.origin + level.claymoremodelcenteroffset; + playerpos = playerorigin + (0,0,32); + distsqrd = distancesquared(pos, playerpos); + + forward = anglestoforward(self.angles); + + if (distsqrd < level.claymoreDetectionRadius*level.claymoreDetectionRadius) + { + playerdir = vectornormalize(playerpos - pos); + angle = acos(vectordot(playerdir, forward)); + if (angle < level.claymoreDetectionConeAngle) + return true; + } + return false; +} + +avoidWeaponDamage(spawnpoints) +{ + prof_begin("spawn_grenade"); + + for (i = 0; i < spawnpoints.size; i++) + { + for (j = 0; j < level.grenades.size; j++) + { + if ( !isdefined( level.grenades[j] ) ) + continue; + + if (distancesquared(spawnpoints[i].origin, level.grenades[j].origin) < 62500) + spawnpoints[i].weight -= 100000; + } + } + + prof_end("spawn_grenade"); +} + +spawnPerFrameUpdate() +{ + spawnpointindex = 0; + + prevspawnpoint = undefined; + + for(;;) + { + wait 0.05; + + prof_begin("spawn_sight_checks"); + + if ( !isDefined( level.spawnPoints ) ) + return; + + spawnpointindex = (spawnpointindex + 1) % level.spawnPoints.size; + spawnpoint = level.spawnPoints[spawnpointindex]; + + if ( level.teambased ) + { + spawnpoint.sights["axis"] = 0; + spawnpoint.sights["allies"] = 0; + + spawnpoint.nearbyPlayers["axis"] = []; + spawnpoint.nearbyPlayers["allies"] = []; + } + else + { + spawnpoint.sights = 0; + + spawnpoint.nearbyPlayers["all"] = []; + } + + spawnpointdir = spawnpoint.forward; + + spawnpoint.distSum["all"] = 0; + spawnpoint.distSum["allies"] = 0; + spawnpoint.distSum["axis"] = 0; + + spawnpoint.numPlayersAtLastUpdate = 0; + + for (i = 0; i < level.players.size; i++) + { + player = level.players[i]; + + if ( player.sessionstate != "playing" ) + continue; + + diff = player.origin - spawnpoint.origin; + dist = length( diff ); + + team = "all"; + if ( level.teambased ) + team = player.pers["team"]; + + if ( dist < 1024 ) + spawnpoint.nearbyPlayers[team][spawnpoint.nearbyPlayers[team].size] = player; + + spawnpoint.distSum[ team ] += dist; + spawnpoint.numPlayersAtLastUpdate++; + + pdir = anglestoforward(player.angles); + if (vectordot(spawnpointdir, diff) < 0 && vectordot(pdir, diff) > 0) + continue; + + losExists = bullettracepassed(player.origin + (0,0,50), spawnpoint.sightTracePoint, false, undefined); + + spawnpoint.lastSightTraceTime = gettime(); + + if (losExists) + { + if ( level.teamBased ) + spawnpoint.sights[player.pers["team"]]++; + else + spawnpoint.sights++; + } + } + + prof_end("spawn_sight_checks"); + } +} + +getLosPenalty() +{ + return 100000; +} + +lastMinuteSightTraces( spawnpoint ) +{ + prof_begin("spawn_lastminutesc"); + + team = "all"; + if ( level.teambased ) + team = getOtherTeam( self.pers["team"] ); + + if ( !isdefined( spawnpoint.nearbyPlayers ) ) + return false; + + closest = undefined; + closestDistsq = undefined; + secondClosest = undefined; + secondClosestDistsq = undefined; + for ( i = 0; i < spawnpoint.nearbyPlayers[team].size; i++ ) + { + player = spawnpoint.nearbyPlayers[team][i]; + + if ( !isdefined( player ) || player.sessionstate != "playing" || player == self ) + continue; + + distsq = distanceSquared( spawnpoint.origin, player.origin ); + if ( !isdefined( closest ) || distsq < closestDistsq ) + { + secondClosest = closest; + secondClosestDistsq = closestDistsq; + + closest = player; + closestDistSq = distsq; + } + else if ( !isdefined( secondClosest ) || distsq < secondClosestDistSq ) + { + secondClosest = player; + secondClosestDistSq = distsq; + } + } + + if ( isdefined( closest ) && bullettracepassed( closest.origin + (0,0,50), spawnpoint.sightTracePoint, false, undefined) || ( isdefined( secondClosest ) && bullettracepassed( secondClosest.origin + (0,0,50), spawnpoint.sightTracePoint, false, undefined) ) ) + return true; + + return false; +} + +avoidVisibleEnemies(spawnpoints, teambased) +{ + lospenalty = getLosPenalty(); + + otherteam = "axis"; + if ( self.pers["team"] == "axis" ) + otherteam = "allies"; + + if ( teambased ) + { + for ( i = 0; i < spawnpoints.size; i++ ) + { + if ( !isdefined(spawnpoints[i].sights) ) + continue; + + penalty = lospenalty * spawnpoints[i].sights[otherteam]; + spawnpoints[i].weight -= penalty; + } + } + else + { + for ( i = 0; i < spawnpoints.size; i++ ) + { + if ( !isdefined(spawnpoints[i].sights) ) + continue; + + penalty = lospenalty * spawnpoints[i].sights; + spawnpoints[i].weight -= penalty; + } + } +} + +avoidSpawnReuse(spawnpoints, teambased) +{ + prof_begin("spawn_reuse"); + + time = getTime(); + + maxtime = 10000; + maxdistSq = 640000; + + for (i = 0; i < spawnpoints.size; i++) + { + if (!isdefined(spawnpoints[i].lastspawnedplayer) || !isdefined(spawnpoints[i].lastspawntime) || !isalive(spawnpoints[i].lastspawnedplayer) || spawnpoints[i].lastspawnedplayer == self || ( teambased && spawnpoints[i].lastspawnedplayer.pers["team"] == self.pers["team"] ) ) + continue; + + timepassed = time - spawnpoints[i].lastspawntime; + if (timepassed < maxtime) + { + distSq = distanceSquared(spawnpoints[i].lastspawnedplayer.origin, spawnpoints[i].origin); + if (distSq < maxdistSq) + { + worsen = 1000 * (1 - distSq/maxdistSq) * (1 - timepassed/maxtime); + spawnpoints[i].weight -= worsen; + } + else + spawnpoints[i].lastspawnedplayer = undefined; + } + else + spawnpoints[i].lastspawnedplayer = undefined; + } + + prof_end("spawn_reuse"); +} + +avoidSameSpawn(spawnpoints) +{ + prof_begin("spawn_samespwn"); + + if (!isdefined(self.lastspawnpoint)) + return; + + for (i = 0; i < spawnpoints.size; i++) + { + if (spawnpoints[i] == self.lastspawnpoint) + { + spawnpoints[i].weight -= 50000; + break; + } + } + + prof_end("spawn_samespwn"); +} diff --git a/maps/mp/gametypes/_spectating.gsc b/maps/mp/gametypes/_spectating.gsc index 70d1ffd..f3de1d3 100644 --- a/maps/mp/gametypes/_spectating.gsc +++ b/maps/mp/gametypes/_spectating.gsc @@ -1,132 +1,132 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - level.spectateOverride["allies"] = spawnstruct(); - level.spectateOverride["axis"] = spawnstruct(); - - level thread onPlayerConnect(); -} - -onPlayerConnect() -{ - for(;;) - { - level waittill("connecting", player); - - player thread onJoinedTeam(); - player thread onJoinedSpectators(); - player thread onPlayerSpawned(); - } -} - -onPlayerSpawned() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("spawned_player"); - self setSpectatePermissions(); - } -} - -onJoinedTeam() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("joined_team"); - self setSpectatePermissions(); - } -} - -onJoinedSpectators() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("joined_spectators"); - self setSpectatePermissions(); - } -} - -updateSpectateSettings() -{ - level endon ( "game_ended" ); - - for ( i = 0; i < level.players.size; i++ ) - level.players[i] setSpectatePermissions(); -} - -getOtherTeam( team ) -{ - if ( team == "axis" ) - return "allies"; - else if ( team == "allies" ) - return "axis"; - else - return "none"; -} - -setSpectatePermissions() -{ - team = self.sessionteam; - spectateType = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "spectatetype" ); - - switch( spectateType ) - { - case 0: - self allowSpectateTeam( "allies", false ); - self allowSpectateTeam( "axis", false ); - self allowSpectateTeam( "freelook", false ); - self allowSpectateTeam( "none", false ); - break; - case 1: - if ( !level.teamBased ) - { - self allowSpectateTeam( "allies", true ); - self allowSpectateTeam( "axis", true ); - self allowSpectateTeam( "none", true ); - self allowSpectateTeam( "freelook", true ); - } - else if ( isDefined( team ) && ( team == "allies" || team == "axis" ) ) - { - self allowSpectateTeam( team, true ); - self allowSpectateTeam( getOtherTeam( team ), false ); - self allowSpectateTeam( "freelook", false ); - self allowSpectateTeam( "none", false ); - } - else if ( isDefined( team ) && ( team == "spectator" ) ) - { - self allowSpectateTeam( "allies", true ); - self allowSpectateTeam( "axis", true ); - self allowSpectateTeam( "freelook", true ); - self allowSpectateTeam( "none", true ); - } - else - { - self allowSpectateTeam( "allies", false ); - self allowSpectateTeam( "axis", false ); - self allowSpectateTeam( "freelook", false ); - self allowSpectateTeam( "none", false ); - } - break; - case 2: - self allowSpectateTeam( "allies", true ); - self allowSpectateTeam( "axis", true ); - self allowSpectateTeam( "freelook", true ); - self allowSpectateTeam( "none", true ); - break; - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + level.spectateOverride["allies"] = spawnstruct(); + level.spectateOverride["axis"] = spawnstruct(); + + level thread onPlayerConnect(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill("connecting", player); + + player thread onJoinedTeam(); + player thread onJoinedSpectators(); + player thread onPlayerSpawned(); + } +} + +onPlayerSpawned() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("spawned_player"); + self setSpectatePermissions(); + } +} + +onJoinedTeam() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("joined_team"); + self setSpectatePermissions(); + } +} + +onJoinedSpectators() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("joined_spectators"); + self setSpectatePermissions(); + } +} + +updateSpectateSettings() +{ + level endon ( "game_ended" ); + + for ( i = 0; i < level.players.size; i++ ) + level.players[i] setSpectatePermissions(); +} + +getOtherTeam( team ) +{ + if ( team == "axis" ) + return "allies"; + else if ( team == "allies" ) + return "axis"; + else + return "none"; +} + +setSpectatePermissions() +{ + team = self.sessionteam; + spectateType = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "spectatetype" ); + + switch( spectateType ) + { + case 0: + self allowSpectateTeam( "allies", false ); + self allowSpectateTeam( "axis", false ); + self allowSpectateTeam( "freelook", false ); + self allowSpectateTeam( "none", false ); + break; + case 1: + if ( !level.teamBased ) + { + self allowSpectateTeam( "allies", true ); + self allowSpectateTeam( "axis", true ); + self allowSpectateTeam( "none", true ); + self allowSpectateTeam( "freelook", true ); + } + else if ( isDefined( team ) && ( team == "allies" || team == "axis" ) ) + { + self allowSpectateTeam( team, true ); + self allowSpectateTeam( getOtherTeam( team ), false ); + self allowSpectateTeam( "freelook", false ); + self allowSpectateTeam( "none", false ); + } + else if ( isDefined( team ) && ( team == "spectator" ) ) + { + self allowSpectateTeam( "allies", true ); + self allowSpectateTeam( "axis", true ); + self allowSpectateTeam( "freelook", true ); + self allowSpectateTeam( "none", true ); + } + else + { + self allowSpectateTeam( "allies", false ); + self allowSpectateTeam( "axis", false ); + self allowSpectateTeam( "freelook", false ); + self allowSpectateTeam( "none", false ); + } + break; + case 2: + self allowSpectateTeam( "allies", true ); + self allowSpectateTeam( "axis", true ); + self allowSpectateTeam( "freelook", true ); + self allowSpectateTeam( "none", true ); + break; + } +} diff --git a/maps/mp/gametypes/_teams.gsc b/maps/mp/gametypes/_teams.gsc index 00bfbd6..971e36c 100644 --- a/maps/mp/gametypes/_teams.gsc +++ b/maps/mp/gametypes/_teams.gsc @@ -1,190 +1,190 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - setPlayerModels(); -} - -setPlayerModels() -{ - game["allies_model"] = []; - game["axis_model"] = []; - - alliesCharSet = tableLookup( "mp/mapsTable.csv", 0, getDvar( "mapname" ), 1 ); - if ( isDefined( alliesCharSet ) && alliesCharSet != "" ) - game["allies_soldiertype"] = alliesCharSet; - else if ( !isDefined( game["allies_soldiertype"] ) || !isDefined( game["allies"] ) ) - { - game["allies_soldiertype"] = "desert"; - game["allies"] = "marines"; - } - - axisCharSet = tableLookup( "mp/mapsTable.csv", 0, getDvar( "mapname" ), 2 ); - if ( isDefined( axisCharSet ) && axisCharSet != "" ) - game["axis_soldiertype"] = axisCharSet; - else if ( !isDefined( game["axis_soldiertype"] ) || !isDefined( game["axis"] ) ) - { - game["axis_soldiertype"] = "desert"; - game["axis"] = "arab"; - } - - if ( game["allies_soldiertype"] == "desert" ) - { - mptype\mptype_ally_cqb::precache(); - mptype\mptype_ally_sniper::precache(); - mptype\mptype_ally_engineer::precache(); - mptype\mptype_ally_rifleman::precache(); - mptype\mptype_ally_support::precache(); - - game["allies_model"]["SNIPER"] = mptype\mptype_ally_sniper::main; - game["allies_model"]["SUPPORT"] = mptype\mptype_ally_support::main; - game["allies_model"]["ASSAULT"] = mptype\mptype_ally_rifleman::main; - game["allies_model"]["RECON"] = mptype\mptype_ally_engineer::main; - game["allies_model"]["SPECOPS"] = mptype\mptype_ally_cqb::main; - } - else if ( game["allies_soldiertype"] == "urban" ) - { - mptype\mptype_ally_urban_sniper::precache(); - mptype\mptype_ally_urban_support::precache(); - mptype\mptype_ally_urban_assault::precache(); - mptype\mptype_ally_urban_recon::precache(); - mptype\mptype_ally_urban_specops::precache(); - - game["allies_model"]["SNIPER"] = mptype\mptype_ally_urban_sniper::main; - game["allies_model"]["SUPPORT"] = mptype\mptype_ally_urban_support::main; - game["allies_model"]["ASSAULT"] = mptype\mptype_ally_urban_assault::main; - game["allies_model"]["RECON"] = mptype\mptype_ally_urban_recon::main; - game["allies_model"]["SPECOPS"] = mptype\mptype_ally_urban_specops::main; - } - else - { - mptype\mptype_ally_woodland_assault::precache(); - mptype\mptype_ally_woodland_recon::precache(); - mptype\mptype_ally_woodland_sniper::precache(); - mptype\mptype_ally_woodland_specops::precache(); - mptype\mptype_ally_woodland_support::precache(); - - game["allies_model"]["SNIPER"] = mptype\mptype_ally_woodland_sniper::main; - game["allies_model"]["SUPPORT"] = mptype\mptype_ally_woodland_support::main; - game["allies_model"]["ASSAULT"] = mptype\mptype_ally_woodland_assault::main; - game["allies_model"]["RECON"] = mptype\mptype_ally_woodland_recon::main; - game["allies_model"]["SPECOPS"] = mptype\mptype_ally_woodland_specops::main; - } - - if ( game["axis_soldiertype"] == "desert" ) - { - mptype\mptype_axis_cqb::precache(); - mptype\mptype_axis_sniper::precache(); - mptype\mptype_axis_engineer::precache(); - mptype\mptype_axis_rifleman::precache(); - mptype\mptype_axis_support::precache(); - - game["axis_model"]["SNIPER"] = mptype\mptype_axis_sniper::main; - game["axis_model"]["SUPPORT"] = mptype\mptype_axis_support::main; - game["axis_model"]["ASSAULT"] = mptype\mptype_axis_rifleman::main; - game["axis_model"]["RECON"] = mptype\mptype_axis_engineer::main; - game["axis_model"]["SPECOPS"] = mptype\mptype_axis_cqb::main; - } - else if ( game["axis_soldiertype"] == "urban" ) - { - mptype\mptype_axis_urban_sniper::precache(); - mptype\mptype_axis_urban_support::precache(); - mptype\mptype_axis_urban_assault::precache(); - mptype\mptype_axis_urban_engineer::precache(); - mptype\mptype_axis_urban_cqb::precache(); - - game["axis_model"]["SNIPER"] = mptype\mptype_axis_urban_sniper::main; - game["axis_model"]["SUPPORT"] = mptype\mptype_axis_urban_support::main; - game["axis_model"]["ASSAULT"] = mptype\mptype_axis_urban_assault::main; - game["axis_model"]["RECON"] = mptype\mptype_axis_urban_engineer::main; - game["axis_model"]["SPECOPS"] = mptype\mptype_axis_urban_cqb::main; - } - else - { - mptype\mptype_axis_woodland_rifleman::precache(); - mptype\mptype_axis_woodland_cqb::precache(); - mptype\mptype_axis_woodland_sniper::precache(); - mptype\mptype_axis_woodland_engineer::precache(); - mptype\mptype_axis_woodland_support::precache(); - - game["axis_model"]["SNIPER"] = mptype\mptype_axis_woodland_sniper::main; - game["axis_model"]["SUPPORT"] = mptype\mptype_axis_woodland_support::main; - game["axis_model"]["ASSAULT"] = mptype\mptype_axis_woodland_rifleman::main; - game["axis_model"]["RECON"] = mptype\mptype_axis_woodland_engineer::main; - game["axis_model"]["SPECOPS"] = mptype\mptype_axis_woodland_cqb::main; - } -} - -playerModelForWeapon( weapon ) -{ - self detachAll(); - - weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 ); - - switch ( weaponClass ) - { - case "weapon_smg": - [[game[self.pers["team"]+"_model"]["SPECOPS"]]](); - break; - case "weapon_assault": - [[game[self.pers["team"]+"_model"]["ASSAULT"]]](); - break; - case "weapon_sniper": - [[game[self.pers["team"]+"_model"]["SNIPER"]]](); - break; - case "weapon_shotgun": - [[game[self.pers["team"]+"_model"]["RECON"]]](); - break; - default: - [[game[self.pers["team"]+"_model"]["ASSAULT"]]](); - break; - } -} - -CountPlayers() -{ - players = level.players; - allies = 0; - axis = 0; - for(i = 0; i < players.size; i++) - { - if ( players[i] == self ) - continue; - - if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "allies")) - allies++; - else if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "axis")) - axis++; - } - players["allies"] = allies; - players["axis"] = axis; - return players; -} - -getJoinTeamPermissions( team ) -{ - level.maxClients = getDvarInt( "sv_maxclients" ); - level.teamLimit = level.maxclients / 2; - teamcount = 0; - - for(i = 0; i < level.players.size; i++) - { - player = level.players[i]; - - if((isdefined(player.pers["team"])) && (player.pers["team"] == team)) - teamcount++; - } - - if( teamCount < level.teamLimit ) - return true; - else - return false; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + setPlayerModels(); +} + +setPlayerModels() +{ + game["allies_model"] = []; + game["axis_model"] = []; + + alliesCharSet = tableLookup( "mp/mapsTable.csv", 0, getDvar( "mapname" ), 1 ); + if ( isDefined( alliesCharSet ) && alliesCharSet != "" ) + game["allies_soldiertype"] = alliesCharSet; + else if ( !isDefined( game["allies_soldiertype"] ) || !isDefined( game["allies"] ) ) + { + game["allies_soldiertype"] = "desert"; + game["allies"] = "marines"; + } + + axisCharSet = tableLookup( "mp/mapsTable.csv", 0, getDvar( "mapname" ), 2 ); + if ( isDefined( axisCharSet ) && axisCharSet != "" ) + game["axis_soldiertype"] = axisCharSet; + else if ( !isDefined( game["axis_soldiertype"] ) || !isDefined( game["axis"] ) ) + { + game["axis_soldiertype"] = "desert"; + game["axis"] = "arab"; + } + + if ( game["allies_soldiertype"] == "desert" ) + { + mptype\mptype_ally_cqb::precache(); + mptype\mptype_ally_sniper::precache(); + mptype\mptype_ally_engineer::precache(); + mptype\mptype_ally_rifleman::precache(); + mptype\mptype_ally_support::precache(); + + game["allies_model"]["SNIPER"] = mptype\mptype_ally_sniper::main; + game["allies_model"]["SUPPORT"] = mptype\mptype_ally_support::main; + game["allies_model"]["ASSAULT"] = mptype\mptype_ally_rifleman::main; + game["allies_model"]["RECON"] = mptype\mptype_ally_engineer::main; + game["allies_model"]["SPECOPS"] = mptype\mptype_ally_cqb::main; + } + else if ( game["allies_soldiertype"] == "urban" ) + { + mptype\mptype_ally_urban_sniper::precache(); + mptype\mptype_ally_urban_support::precache(); + mptype\mptype_ally_urban_assault::precache(); + mptype\mptype_ally_urban_recon::precache(); + mptype\mptype_ally_urban_specops::precache(); + + game["allies_model"]["SNIPER"] = mptype\mptype_ally_urban_sniper::main; + game["allies_model"]["SUPPORT"] = mptype\mptype_ally_urban_support::main; + game["allies_model"]["ASSAULT"] = mptype\mptype_ally_urban_assault::main; + game["allies_model"]["RECON"] = mptype\mptype_ally_urban_recon::main; + game["allies_model"]["SPECOPS"] = mptype\mptype_ally_urban_specops::main; + } + else + { + mptype\mptype_ally_woodland_assault::precache(); + mptype\mptype_ally_woodland_recon::precache(); + mptype\mptype_ally_woodland_sniper::precache(); + mptype\mptype_ally_woodland_specops::precache(); + mptype\mptype_ally_woodland_support::precache(); + + game["allies_model"]["SNIPER"] = mptype\mptype_ally_woodland_sniper::main; + game["allies_model"]["SUPPORT"] = mptype\mptype_ally_woodland_support::main; + game["allies_model"]["ASSAULT"] = mptype\mptype_ally_woodland_assault::main; + game["allies_model"]["RECON"] = mptype\mptype_ally_woodland_recon::main; + game["allies_model"]["SPECOPS"] = mptype\mptype_ally_woodland_specops::main; + } + + if ( game["axis_soldiertype"] == "desert" ) + { + mptype\mptype_axis_cqb::precache(); + mptype\mptype_axis_sniper::precache(); + mptype\mptype_axis_engineer::precache(); + mptype\mptype_axis_rifleman::precache(); + mptype\mptype_axis_support::precache(); + + game["axis_model"]["SNIPER"] = mptype\mptype_axis_sniper::main; + game["axis_model"]["SUPPORT"] = mptype\mptype_axis_support::main; + game["axis_model"]["ASSAULT"] = mptype\mptype_axis_rifleman::main; + game["axis_model"]["RECON"] = mptype\mptype_axis_engineer::main; + game["axis_model"]["SPECOPS"] = mptype\mptype_axis_cqb::main; + } + else if ( game["axis_soldiertype"] == "urban" ) + { + mptype\mptype_axis_urban_sniper::precache(); + mptype\mptype_axis_urban_support::precache(); + mptype\mptype_axis_urban_assault::precache(); + mptype\mptype_axis_urban_engineer::precache(); + mptype\mptype_axis_urban_cqb::precache(); + + game["axis_model"]["SNIPER"] = mptype\mptype_axis_urban_sniper::main; + game["axis_model"]["SUPPORT"] = mptype\mptype_axis_urban_support::main; + game["axis_model"]["ASSAULT"] = mptype\mptype_axis_urban_assault::main; + game["axis_model"]["RECON"] = mptype\mptype_axis_urban_engineer::main; + game["axis_model"]["SPECOPS"] = mptype\mptype_axis_urban_cqb::main; + } + else + { + mptype\mptype_axis_woodland_rifleman::precache(); + mptype\mptype_axis_woodland_cqb::precache(); + mptype\mptype_axis_woodland_sniper::precache(); + mptype\mptype_axis_woodland_engineer::precache(); + mptype\mptype_axis_woodland_support::precache(); + + game["axis_model"]["SNIPER"] = mptype\mptype_axis_woodland_sniper::main; + game["axis_model"]["SUPPORT"] = mptype\mptype_axis_woodland_support::main; + game["axis_model"]["ASSAULT"] = mptype\mptype_axis_woodland_rifleman::main; + game["axis_model"]["RECON"] = mptype\mptype_axis_woodland_engineer::main; + game["axis_model"]["SPECOPS"] = mptype\mptype_axis_woodland_cqb::main; + } +} + +playerModelForWeapon( weapon ) +{ + self detachAll(); + + weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 ); + + switch ( weaponClass ) + { + case "weapon_smg": + [[game[self.pers["team"]+"_model"]["SPECOPS"]]](); + break; + case "weapon_assault": + [[game[self.pers["team"]+"_model"]["ASSAULT"]]](); + break; + case "weapon_sniper": + [[game[self.pers["team"]+"_model"]["SNIPER"]]](); + break; + case "weapon_shotgun": + [[game[self.pers["team"]+"_model"]["RECON"]]](); + break; + default: + [[game[self.pers["team"]+"_model"]["ASSAULT"]]](); + break; + } +} + +CountPlayers() +{ + players = level.players; + allies = 0; + axis = 0; + for(i = 0; i < players.size; i++) + { + if ( players[i] == self ) + continue; + + if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "allies")) + allies++; + else if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "axis")) + axis++; + } + players["allies"] = allies; + players["axis"] = axis; + return players; +} + +getJoinTeamPermissions( team ) +{ + level.maxClients = getDvarInt( "sv_maxclients" ); + level.teamLimit = level.maxclients / 2; + teamcount = 0; + + for(i = 0; i < level.players.size; i++) + { + player = level.players[i]; + + if((isdefined(player.pers["team"])) && (player.pers["team"] == team)) + teamcount++; + } + + if( teamCount < level.teamLimit ) + return true; + else + return false; +} diff --git a/maps/mp/gametypes/_weapons.gsc b/maps/mp/gametypes/_weapons.gsc index 0fdeb71..cc47018 100644 --- a/maps/mp/gametypes/_weapons.gsc +++ b/maps/mp/gametypes/_weapons.gsc @@ -1,315 +1,315 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -init() -{ - precacheItem( "ak47_mp" ); - precacheItem( "ak47_silencer_mp" ); - precacheItem( "ak74u_mp" ); - precacheItem( "ak74u_silencer_mp" ); - precacheItem( "beretta_mp" ); - precacheItem( "beretta_silencer_mp" ); - precacheItem( "colt45_mp" ); - precacheItem( "colt45_silencer_mp" ); - precacheItem( "deserteagle_mp" ); - precacheItem( "deserteaglegold_mp" ); - precacheItem( "frag_grenade_mp" ); - precacheItem( "frag_grenade_short_mp" ); - precacheItem( "g3_mp" ); - precacheItem( "g3_silencer_mp" ); - precacheItem( "g36c_mp" ); - precacheItem( "g36c_silencer_mp" ); - precacheItem( "m4_mp" ); - precacheItem( "m4_silencer_mp" ); - precacheItem( "m14_mp" ); - precacheItem( "m14_silencer_mp" ); - precacheItem( "m16_mp" ); - precacheItem( "m16_silencer_mp" ); - precacheItem( "m40a3_mp" ); - precacheItem( "m1014_mp" ); - precacheItem( "mp5_mp" ); - precacheItem( "mp5_silencer_mp" ); - precacheItem( "mp44_mp" ); - precacheItem( "remington700_mp" ); - precacheItem( "usp_mp" ); - precacheItem( "usp_silencer_mp" ); - precacheItem( "uzi_mp" ); - precacheItem( "uzi_silencer_mp" ); - precacheItem( "winchester1200_mp" ); - precacheItem( "smoke_grenade_mp" ); - precacheItem( "flash_grenade_mp" ); - precacheItem( "destructible_car" ); - precacheShellShock( "default" ); - thread maps\mp\_flashgrenades::main(); - level thread onPlayerConnect(); -} - -onPlayerConnect() -{ - for(;;) - { - level waittill("connecting", player); - player thread onPlayerSpawned(); - } -} - -onPlayerSpawned() -{ - self endon("disconnect"); - - for(;;) - { - self waittill("spawned_player"); - - self.hasDoneCombat = false; - self thread watchWeaponUsage(); - self thread watchGrenadeUsage(); - self thread watchGrenadeAmmo(); - - if(!isDefined(self.pers["shots"])) - self.pers["shots"] = 0; - self thread shotCounter(); - } -} - -watchGrenadeAmmo() -{ - self endon("death"); - self endon("disconnect"); - self endon("game_ended"); - - prim = true; - sec = true; - - while(prim || sec) - { - self waittill("grenade_fire"); - - if((isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat") || getDvarInt("sv_cheats")) - break; - - wait 0.25; // 5 frames, ought to be enough - - pg = ""; - if(self hasWeapon("frag_grenade_mp")) - pg = "frag_grenade_mp"; - else if(self hasWeapon("frag_grenade_short_mp")) - pg = "frag_grenade_short_mp"; - else - prim = false; - - sg = ""; - if(self hasWeapon("flash_grenade_mp")) - sg = "flash_grenade_mp"; - else if(self hasWeapon("smoke_grenade_mp")) - sg = "smoke_grenade_mp"; - else - sec = false; - - if(prim && pg != "" && self GetAmmoCount(pg) < 1) - { - self TakeWeapon(pg); - prim = false; - } - - if(sec && sg != "" && self GetAmmoCount(sg) < 1) - { - self TakeWeapon(sg); - sec = false; - } - } -} - -shotCounter() -{ - self endon( "death" ); - self endon( "disconnect" ); - level endon ( "game_ended" ); - - for(;;) - { - self waittill("weapon_fired"); - if(!isDefined( level.rdyup ) || !level.rdyup) - self.pers["shots"]++; - } -} - -printStats() -{ - if(isDefined(game["PROMOD_MATCH_MODE"]) && game["PROMOD_MATCH_MODE"] == "match" && isDefined(self.hasDoneCombat) && self.hasDoneCombat && isDefined(level.gameEnded) && !level.gameEnded && (!isDefined( game["promod_do_readyup"] ) || !game["promod_do_readyup"])) - self iprintln("Can't display stats. Wait for the round to end."); - else - { - if ( !isDefined( self.pers["damage_done"] ) ) - self.pers["damage_done"] = 0; - - if ( !isDefined( self.pers["damage_taken"] ) ) - self.pers["damage_taken"] = 0; - - if ( !isDefined( self.pers["friendly_damage_done"] ) ) - self.pers["friendly_damage_done"] = 0; - - if ( !isDefined( self.pers["friendly_damage_taken"] ) ) - self.pers["friendly_damage_taken"] = 0; - - if ( !isDefined( self.pers["shots"] ) ) - self.pers["shots"] = 0; - - if ( !isDefined( self.pers["hits"] ) ) - self.pers["hits"] = 0; - - // Log, print, reset - if(self.pers["damage_done"] > 0 || self.pers["damage_taken"] > 0 || self.pers["friendly_damage_done"] > 0 || self.pers["friendly_damage_taken"] > 0 || self.pers["shots"] > 0 || self.pers["hits"] > 0) - logPrint("P_A;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.name + ";" + self.pers["shots"] + ";" + self.pers["hits"] + ";" + self.pers["damage_done"] + ";" + self.pers["damage_taken"] + ";" + self.pers["friendly_damage_done"] + ";" + self.pers["friendly_damage_taken"] + "\n"); - - self iprintln("^3" + self.name); - self iprintln("Damage Done: ^2" + self.pers["damage_done"] + "^7 Damage Taken: ^1" + self.pers["damage_taken"]); - if( level.teamBased ) - self iprintln("Friendly Damage Done: ^2" + self.pers["friendly_damage_done"] + "^7 Friendly Damage Taken: ^1" + self.pers["friendly_damage_taken"]); - acc = 0; - if(self.pers["shots"] > 0) // avoid division by 0 - acc = int(self.pers["hits"]/self.pers["shots"]*10000)/100; - self iprintln("Shots Fired: ^2" + self.pers["shots"] + "^7 Shots Hit: ^2" + self.pers["hits"] + "^7 Accuracy: ^1" + acc + " pct"); - - // Reset the stats afterwards - self.pers["damage_done"] = 0; - self.pers["damage_taken"] = 0; - self.pers["friendly_damage_done"] = 0; - self.pers["friendly_damage_taken"] = 0; - self.pers["shots"] = 0; - self.pers["hits"] = 0; - } -} - -dropWeaponForDeath( attacker ) -{ - weapon = self getCurrentWeapon(); - - if ( !isDefined( weapon ) || !self hasWeapon( weapon ) ) - return; - - switch ( weapon ) - { - case "m16_mp": - case "m16_silencer_mp": - case "ak47_mp": - case "ak47_silencer_mp": - case "m4_mp": - case "m4_silencer_mp": - case "g3_mp": - case "g3_silencer_mp": - case "g36c_mp": - case "g36c_silencer_mp": - case "m14_mp": - case "m14_silencer_mp": - case "mp44_mp": - if ( !getDvarInt( "class_assault_allowdrop" ) ) - return; - break; - case "mp5_mp": - case "mp5_silencer_mp": - case "uzi_mp": - case "uzi_silencer_mp": - case "ak74u_mp": - case "ak74u_silencer_mp": - if ( !getDvarInt( "class_specops_allowdrop" ) ) - return; - break; - case "m40a3_mp": - case "remington700_mp": - if ( !getDvarInt( "class_sniper_allowdrop" ) ) - return; - break; - case "winchester1200_mp": - case "m1014_mp": - if ( !getDvarInt( "class_demolitions_allowdrop" ) ) - return; - break; - default: - return; - } - - clipAmmo = self GetWeaponAmmoClip( weapon ); - - if ( !clipAmmo ) - return; - - stockAmmo = self GetWeaponAmmoStock( weapon ); - stockMax = WeaponMaxAmmo( weapon ); - if ( stockAmmo > stockMax ) - stockAmmo = stockMax; - - item = self dropItem( weapon ); - - item ItemWeaponSetAmmo( clipAmmo, stockAmmo ); - - if( !isDefined(game["PROMOD_MATCH_MODE"]) || game["PROMOD_MATCH_MODE"] != "match" || (game["PROMOD_MATCH_MODE"] == "match" && level.gametype != "sd") || game["promod_do_readyup"] ) - item thread deletePickupAfterAWhile(); -} - -deletePickupAfterAWhile() -{ - self endon("death"); - - wait 180; - - if ( !isDefined( self ) ) - return; - - self delete(); -} - -watchWeaponUsage() -{ - self endon( "death" ); - self endon( "disconnect" ); - level endon ( "game_ended" ); - - self waittill ( "begin_firing" ); - self.hasDoneCombat = true; -} - -watchGrenadeUsage() -{ - self endon( "death" ); - self endon( "disconnect" ); - - self.throwingGrenade = false; - - for(;;) - { - self waittill ( "grenade_pullback", weaponName ); - - self.hasDoneCombat = true; - self.throwingGrenade = true; - self beginGrenadeTracking(); - } -} - -beginGrenadeTracking() -{ - self endon ( "death" ); - self endon ( "disconnect" ); - - self waittill ( "grenade_fire", grenade, weaponName ); - - if ( weaponName == "frag_grenade_mp" || weaponName == "frag_grenade_short_mp" ) - grenade thread maps\mp\gametypes\_shellshock::grenade_earthQuake(); - - self.throwingGrenade = false; -} - -onWeaponDamage( eInflictor, sWeapon, meansOfDeath, damage ) -{ - self endon ( "death" ); - self endon ( "disconnect" ); - - maps\mp\gametypes\_shellshock::shellshockOnDamage( meansOfDeath, damage ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +init() +{ + precacheItem( "ak47_mp" ); + precacheItem( "ak47_silencer_mp" ); + precacheItem( "ak74u_mp" ); + precacheItem( "ak74u_silencer_mp" ); + precacheItem( "beretta_mp" ); + precacheItem( "beretta_silencer_mp" ); + precacheItem( "colt45_mp" ); + precacheItem( "colt45_silencer_mp" ); + precacheItem( "deserteagle_mp" ); + precacheItem( "deserteaglegold_mp" ); + precacheItem( "frag_grenade_mp" ); + precacheItem( "frag_grenade_short_mp" ); + precacheItem( "g3_mp" ); + precacheItem( "g3_silencer_mp" ); + precacheItem( "g36c_mp" ); + precacheItem( "g36c_silencer_mp" ); + precacheItem( "m4_mp" ); + precacheItem( "m4_silencer_mp" ); + precacheItem( "m14_mp" ); + precacheItem( "m14_silencer_mp" ); + precacheItem( "m16_mp" ); + precacheItem( "m16_silencer_mp" ); + precacheItem( "m40a3_mp" ); + precacheItem( "m1014_mp" ); + precacheItem( "mp5_mp" ); + precacheItem( "mp5_silencer_mp" ); + precacheItem( "mp44_mp" ); + precacheItem( "remington700_mp" ); + precacheItem( "usp_mp" ); + precacheItem( "usp_silencer_mp" ); + precacheItem( "uzi_mp" ); + precacheItem( "uzi_silencer_mp" ); + precacheItem( "winchester1200_mp" ); + precacheItem( "smoke_grenade_mp" ); + precacheItem( "flash_grenade_mp" ); + precacheItem( "destructible_car" ); + precacheShellShock( "default" ); + thread maps\mp\_flashgrenades::main(); + level thread onPlayerConnect(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill("connecting", player); + player thread onPlayerSpawned(); + } +} + +onPlayerSpawned() +{ + self endon("disconnect"); + + for(;;) + { + self waittill("spawned_player"); + + self.hasDoneCombat = false; + self thread watchWeaponUsage(); + self thread watchGrenadeUsage(); + self thread watchGrenadeAmmo(); + + if(!isDefined(self.pers["shots"])) + self.pers["shots"] = 0; + self thread shotCounter(); + } +} + +watchGrenadeAmmo() +{ + self endon("death"); + self endon("disconnect"); + self endon("game_ended"); + + prim = true; + sec = true; + + while(prim || sec) + { + self waittill("grenade_fire"); + + if((isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"]) || (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat") || getDvarInt("sv_cheats")) + break; + + wait 0.25; // 5 frames, ought to be enough + + pg = ""; + if(self hasWeapon("frag_grenade_mp")) + pg = "frag_grenade_mp"; + else if(self hasWeapon("frag_grenade_short_mp")) + pg = "frag_grenade_short_mp"; + else + prim = false; + + sg = ""; + if(self hasWeapon("flash_grenade_mp")) + sg = "flash_grenade_mp"; + else if(self hasWeapon("smoke_grenade_mp")) + sg = "smoke_grenade_mp"; + else + sec = false; + + if(prim && pg != "" && self GetAmmoCount(pg) < 1) + { + self TakeWeapon(pg); + prim = false; + } + + if(sec && sg != "" && self GetAmmoCount(sg) < 1) + { + self TakeWeapon(sg); + sec = false; + } + } +} + +shotCounter() +{ + self endon( "death" ); + self endon( "disconnect" ); + level endon ( "game_ended" ); + + for(;;) + { + self waittill("weapon_fired"); + if(!isDefined( level.rdyup ) || !level.rdyup) + self.pers["shots"]++; + } +} + +printStats() +{ + if(isDefined(game["PROMOD_MATCH_MODE"]) && game["PROMOD_MATCH_MODE"] == "match" && isDefined(self.hasDoneCombat) && self.hasDoneCombat && isDefined(level.gameEnded) && !level.gameEnded && (!isDefined( game["promod_do_readyup"] ) || !game["promod_do_readyup"])) + self iprintln("Can't display stats. Wait for the round to end."); + else + { + if ( !isDefined( self.pers["damage_done"] ) ) + self.pers["damage_done"] = 0; + + if ( !isDefined( self.pers["damage_taken"] ) ) + self.pers["damage_taken"] = 0; + + if ( !isDefined( self.pers["friendly_damage_done"] ) ) + self.pers["friendly_damage_done"] = 0; + + if ( !isDefined( self.pers["friendly_damage_taken"] ) ) + self.pers["friendly_damage_taken"] = 0; + + if ( !isDefined( self.pers["shots"] ) ) + self.pers["shots"] = 0; + + if ( !isDefined( self.pers["hits"] ) ) + self.pers["hits"] = 0; + + // Log, print, reset + if(self.pers["damage_done"] > 0 || self.pers["damage_taken"] > 0 || self.pers["friendly_damage_done"] > 0 || self.pers["friendly_damage_taken"] > 0 || self.pers["shots"] > 0 || self.pers["hits"] > 0) + logPrint("P_A;" + self getGuid() + ";" + self getEntityNumber() + ";" + self.name + ";" + self.pers["shots"] + ";" + self.pers["hits"] + ";" + self.pers["damage_done"] + ";" + self.pers["damage_taken"] + ";" + self.pers["friendly_damage_done"] + ";" + self.pers["friendly_damage_taken"] + "\n"); + + self iprintln("^3" + self.name); + self iprintln("Damage Done: ^2" + self.pers["damage_done"] + "^7 Damage Taken: ^1" + self.pers["damage_taken"]); + if( level.teamBased ) + self iprintln("Friendly Damage Done: ^2" + self.pers["friendly_damage_done"] + "^7 Friendly Damage Taken: ^1" + self.pers["friendly_damage_taken"]); + acc = 0; + if(self.pers["shots"] > 0) // avoid division by 0 + acc = int(self.pers["hits"]/self.pers["shots"]*10000)/100; + self iprintln("Shots Fired: ^2" + self.pers["shots"] + "^7 Shots Hit: ^2" + self.pers["hits"] + "^7 Accuracy: ^1" + acc + " pct"); + + // Reset the stats afterwards + self.pers["damage_done"] = 0; + self.pers["damage_taken"] = 0; + self.pers["friendly_damage_done"] = 0; + self.pers["friendly_damage_taken"] = 0; + self.pers["shots"] = 0; + self.pers["hits"] = 0; + } +} + +dropWeaponForDeath( attacker ) +{ + weapon = self getCurrentWeapon(); + + if ( !isDefined( weapon ) || !self hasWeapon( weapon ) ) + return; + + switch ( weapon ) + { + case "m16_mp": + case "m16_silencer_mp": + case "ak47_mp": + case "ak47_silencer_mp": + case "m4_mp": + case "m4_silencer_mp": + case "g3_mp": + case "g3_silencer_mp": + case "g36c_mp": + case "g36c_silencer_mp": + case "m14_mp": + case "m14_silencer_mp": + case "mp44_mp": + if ( !getDvarInt( "class_assault_allowdrop" ) ) + return; + break; + case "mp5_mp": + case "mp5_silencer_mp": + case "uzi_mp": + case "uzi_silencer_mp": + case "ak74u_mp": + case "ak74u_silencer_mp": + if ( !getDvarInt( "class_specops_allowdrop" ) ) + return; + break; + case "m40a3_mp": + case "remington700_mp": + if ( !getDvarInt( "class_sniper_allowdrop" ) ) + return; + break; + case "winchester1200_mp": + case "m1014_mp": + if ( !getDvarInt( "class_demolitions_allowdrop" ) ) + return; + break; + default: + return; + } + + clipAmmo = self GetWeaponAmmoClip( weapon ); + + if ( !clipAmmo ) + return; + + stockAmmo = self GetWeaponAmmoStock( weapon ); + stockMax = WeaponMaxAmmo( weapon ); + if ( stockAmmo > stockMax ) + stockAmmo = stockMax; + + item = self dropItem( weapon ); + + item ItemWeaponSetAmmo( clipAmmo, stockAmmo ); + + if( !isDefined(game["PROMOD_MATCH_MODE"]) || game["PROMOD_MATCH_MODE"] != "match" || (game["PROMOD_MATCH_MODE"] == "match" && level.gametype != "sd") || game["promod_do_readyup"] ) + item thread deletePickupAfterAWhile(); +} + +deletePickupAfterAWhile() +{ + self endon("death"); + + wait 180; + + if ( !isDefined( self ) ) + return; + + self delete(); +} + +watchWeaponUsage() +{ + self endon( "death" ); + self endon( "disconnect" ); + level endon ( "game_ended" ); + + self waittill ( "begin_firing" ); + self.hasDoneCombat = true; +} + +watchGrenadeUsage() +{ + self endon( "death" ); + self endon( "disconnect" ); + + self.throwingGrenade = false; + + for(;;) + { + self waittill ( "grenade_pullback", weaponName ); + + self.hasDoneCombat = true; + self.throwingGrenade = true; + self beginGrenadeTracking(); + } +} + +beginGrenadeTracking() +{ + self endon ( "death" ); + self endon ( "disconnect" ); + + self waittill ( "grenade_fire", grenade, weaponName ); + + if ( weaponName == "frag_grenade_mp" || weaponName == "frag_grenade_short_mp" ) + grenade thread maps\mp\gametypes\_shellshock::grenade_earthQuake(); + + self.throwingGrenade = false; +} + +onWeaponDamage( eInflictor, sWeapon, meansOfDeath, damage ) +{ + self endon ( "death" ); + self endon ( "disconnect" ); + + maps\mp\gametypes\_shellshock::shellshockOnDamage( meansOfDeath, damage ); +} diff --git a/maps/mp/gametypes/dm.gsc b/maps/mp/gametypes/dm.gsc index e9e3e3d..ebe2ddb 100644 --- a/maps/mp/gametypes/dm.gsc +++ b/maps/mp/gametypes/dm.gsc @@ -1,67 +1,67 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\gametypes\_globallogic::init(); - maps\mp\gametypes\_callbacksetup::SetupCallbacks(); - maps\mp\gametypes\_globallogic::SetupCallbacks(); - - level.onStartGameType = ::onStartGameType; - level.onSpawnPlayer = ::onSpawnPlayer; -} - -onStartGameType() -{ - setClientNameMode("auto_change"); - - maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_DM" ); - maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_DM" ); - - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" ); - - maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" ); - - level.spawnMins = ( 0, 0, 0 ); - level.spawnMaxs = ( 0, 0, 0 ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" ); - level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); - setMapCenter( level.mapCenter ); - - allowed[0] = "dm"; - maps\mp\gametypes\_gameobjects::main(allowed); - - level.displayRoundEndText = false; - level.QuickMessageToAll = true; - - if ( level.roundLimit != 1 && level.numLives ) - { - level.overridePlayerScore = true; - level.displayRoundEndText = true; - level.onEndGame = ::onEndGame; - } -} - -onSpawnPlayer() -{ - spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] ); - spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints ); - - self spawn( spawnPoint.origin, spawnPoint.angles ); -} - -onEndGame( winningPlayer ) -{ - if ( isDefined( winningPlayer ) ) - [[level._setPlayerScore]]( winningPlayer, winningPlayer [[level._getPlayerScore]]() + 1 ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\gametypes\_globallogic::init(); + maps\mp\gametypes\_callbacksetup::SetupCallbacks(); + maps\mp\gametypes\_globallogic::SetupCallbacks(); + + level.onStartGameType = ::onStartGameType; + level.onSpawnPlayer = ::onSpawnPlayer; +} + +onStartGameType() +{ + setClientNameMode("auto_change"); + + maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_DM" ); + maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_DM" ); + + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" ); + + maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" ); + + level.spawnMins = ( 0, 0, 0 ); + level.spawnMaxs = ( 0, 0, 0 ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" ); + level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); + setMapCenter( level.mapCenter ); + + allowed[0] = "dm"; + maps\mp\gametypes\_gameobjects::main(allowed); + + level.displayRoundEndText = false; + level.QuickMessageToAll = true; + + if ( level.roundLimit != 1 && level.numLives ) + { + level.overridePlayerScore = true; + level.displayRoundEndText = true; + level.onEndGame = ::onEndGame; + } +} + +onSpawnPlayer() +{ + spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] ); + spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints ); + + self spawn( spawnPoint.origin, spawnPoint.angles ); +} + +onEndGame( winningPlayer ) +{ + if ( isDefined( winningPlayer ) ) + [[level._setPlayerScore]]( winningPlayer, winningPlayer [[level._getPlayerScore]]() + 1 ); +} diff --git a/maps/mp/gametypes/dom.gsc b/maps/mp/gametypes/dom.gsc index fa81e6e..3260729 100644 --- a/maps/mp/gametypes/dom.gsc +++ b/maps/mp/gametypes/dom.gsc @@ -1,627 +1,627 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\_utility; - -main() -{ - if(getdvar("mapname") == "mp_background") - return; - - maps\mp\gametypes\_globallogic::init(); - maps\mp\gametypes\_callbacksetup::SetupCallbacks(); - maps\mp\gametypes\_globallogic::SetupCallbacks(); - - level.teamBased = true; - level.overrideTeamScore = true; - level.onStartGameType = ::onStartGameType; - level.onSpawnPlayer = ::onSpawnPlayer; - level.onPlayerKilled = ::onPlayerKilled; - level.onPrecacheGameType = ::onPrecacheGameType; - level.onRoundSwitch = ::onRoundSwitch; - - level.displayRoundEndText = false; -} - -onPrecacheGameType() -{ - precacheShader( "compass_waypoint_captureneutral" ); - precacheShader( "compass_waypoint_capture" ); - precacheShader( "compass_waypoint_defend" ); - precacheShader( "compass_waypoint_captureneutral_a" ); - precacheShader( "compass_waypoint_capture_a" ); - precacheShader( "compass_waypoint_defend_a" ); - precacheShader( "compass_waypoint_captureneutral_b" ); - precacheShader( "compass_waypoint_capture_b" ); - precacheShader( "compass_waypoint_defend_b" ); - precacheShader( "compass_waypoint_captureneutral_c" ); - precacheShader( "compass_waypoint_capture_c" ); - precacheShader( "compass_waypoint_defend_c" ); - precacheShader( "compass_waypoint_captureneutral_d" ); - precacheShader( "compass_waypoint_capture_d" ); - precacheShader( "compass_waypoint_defend_d" ); - precacheShader( "compass_waypoint_captureneutral_e" ); - precacheShader( "compass_waypoint_capture_e" ); - precacheShader( "compass_waypoint_defend_e" ); - - precacheShader( "waypoint_captureneutral" ); - precacheShader( "waypoint_capture" ); - precacheShader( "waypoint_defend" ); - precacheShader( "waypoint_captureneutral_a" ); - precacheShader( "waypoint_capture_a" ); - precacheShader( "waypoint_defend_a" ); - precacheShader( "waypoint_captureneutral_b" ); - precacheShader( "waypoint_capture_b" ); - precacheShader( "waypoint_defend_b" ); - precacheShader( "waypoint_captureneutral_c" ); - precacheShader( "waypoint_capture_c" ); - precacheShader( "waypoint_defend_c" ); - precacheShader( "waypoint_captureneutral_d" ); - precacheShader( "waypoint_capture_d" ); - precacheShader( "waypoint_defend_d" ); - precacheShader( "waypoint_captureneutral_e" ); - precacheShader( "waypoint_capture_e" ); - precacheShader( "waypoint_defend_e" ); - - flagBaseFX = []; - flagBaseFX["marines"] = "misc/ui_flagbase_silver"; - flagBaseFX["sas"] = "misc/ui_flagbase_black"; - flagBaseFX["russian"] = "misc/ui_flagbase_red"; - flagBaseFX["opfor"] = "misc/ui_flagbase_gold"; - - game["flagBaseFXid"] = []; - game["flagBaseFXid"][ "allies" ] = loadfx( flagBaseFX[ game[ "allies" ] ] ); - game["flagBaseFXid"][ "axis" ] = loadfx( flagBaseFX[ game[ "axis" ] ] ); -} - -onStartGameType() -{ - maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_DOM" ); - maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_DOM" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_DOM_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_DOM_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_DOM_HINT" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_DOM_HINT" ); - - setClientNameMode("auto_change"); - - level.spawnMins = ( 0, 0, 0 ); - level.spawnMaxs = ( 0, 0, 0 ); - maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_dom_spawn_allies_start" ); - maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_dom_spawn_axis_start" ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dom_spawn" ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dom_spawn" ); - - level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); - setMapCenter( level.mapCenter ); - - level.spawn_all = getentarray( "mp_dom_spawn", "classname" ); - level.spawn_axis_start = getentarray("mp_dom_spawn_axis_start", "classname" ); - level.spawn_allies_start = getentarray("mp_dom_spawn_allies_start", "classname" ); - - level.startPos["allies"] = level.spawn_allies_start[0].origin; - level.startPos["axis"] = level.spawn_axis_start[0].origin; - - allowed[0] = "dom"; - - maps\mp\gametypes\_gameobjects::main(allowed); - - thread domFlags(); - thread updateDomScores(); -} - -onSpawnPlayer() -{ - spawnpoint = undefined; - - if ( !level.useStartSpawns ) - { - flagsOwned = 0; - enemyFlagsOwned = 0; - myTeam = self.pers["team"]; - enemyTeam = getOtherTeam( myTeam ); - for ( i = 0; i < level.flags.size; i++ ) - { - team = level.flags[i] getFlagTeam(); - if ( team == myTeam ) - flagsOwned++; - else if ( team == enemyTeam ) - enemyFlagsOwned++; - } - - if ( flagsOwned == level.flags.size ) - { - enemyBestSpawnFlag = level.bestSpawnFlag[ getOtherTeam( self.pers["team"] ) ]; - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, getSpawnsBoundingFlag( enemyBestSpawnFlag ) ); - } - else if ( flagsOwned > 0 ) - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, getBoundaryFlagSpawns( myTeam ) ); - else - { - bestFlag = undefined; - if ( enemyFlagsOwned > 0 && enemyFlagsOwned < level.flags.size ) - bestFlag = getUnownedFlagNearestStart( myTeam ); - if ( !isdefined( bestFlag ) ) - bestFlag = level.bestSpawnFlag[ self.pers["team"] ]; - - level.bestSpawnFlag[ self.pers["team"] ] = bestFlag; - - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, bestFlag.nearbyspawns ); - } - } - - if ( !isdefined( spawnpoint ) ) - { - if (self.pers["team"] == "axis") - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_axis_start); - else - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_allies_start); - } - - self spawn(spawnpoint.origin, spawnpoint.angles); -} - -domFlags() -{ - level.lastStatus["allies"] = 0; - level.lastStatus["axis"] = 0; - - game["flagmodels"] = []; - game["flagmodels"]["neutral"] = "prop_flag_neutral"; - if ( game["allies"] == "marines" ) - game["flagmodels"]["allies"] = "prop_flag_american"; - else - game["flagmodels"]["allies"] = "prop_flag_brit"; - - if ( game["axis"] == "russian" ) - game["flagmodels"]["axis"] = "prop_flag_russian"; - else - game["flagmodels"]["axis"] = "prop_flag_opfor"; - - precacheModel( game["flagmodels"]["neutral"] ); - precacheModel( game["flagmodels"]["allies"] ); - precacheModel( game["flagmodels"]["axis"] ); - - precacheString( &"MP_CAPTURING_FLAG" ); - precacheString( &"MP_LOSING_FLAG" ); - precacheString( &"MP_DOM_YOUR_FLAG_WAS_CAPTURED" ); - precacheString( &"MP_DOM_ENEMY_FLAG_CAPTURED" ); - precacheString( &"MP_DOM_NEUTRAL_FLAG_CAPTURED" ); - - precacheString( &"MP_ENEMY_FLAG_CAPTURED_BY" ); - precacheString( &"MP_NEUTRAL_FLAG_CAPTURED_BY" ); - precacheString( &"MP_FRIENDLY_FLAG_CAPTURED_BY" ); - - primaryFlags = getEntArray( "flag_primary", "targetname" ); - secondaryFlags = getEntArray( "flag_secondary", "targetname" ); - - if ( (primaryFlags.size + secondaryFlags.size) < 2 ) - { - if ( isDefined( level.restarting ) ) - { - setdvar("g_gametype", "dm"); - setDvar( "o_gametype", "dm" ); - } - else - maps\mp\gametypes\_callbacksetup::AbortLevel(); - return; - } - - level.flags = []; - for ( i = 0; i < primaryFlags.size; i++ ) - level.flags[level.flags.size] = primaryFlags[i]; - - for ( i = 0; i < secondaryFlags.size; i++ ) - level.flags[level.flags.size] = secondaryFlags[i]; - - level.domFlags = []; - for ( i = 0; i < level.flags.size; i++ ) - { - trigger = level.flags[i]; - if ( isDefined( trigger.target ) ) - visuals[0] = getEnt( trigger.target, "targetname" ); - else - { - visuals[0] = spawn( "script_model", trigger.origin ); - visuals[0].angles = trigger.angles; - } - - visuals[0] setModel( game["flagmodels"]["neutral"] ); - - domFlag = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", trigger, visuals, (0,0,100) ); - domFlag maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); - domFlag maps\mp\gametypes\_gameobjects::setUseTime( 10 ); - domFlag maps\mp\gametypes\_gameobjects::setUseText( &"MP_CAPTURING_FLAG" ); - label = domFlag maps\mp\gametypes\_gameobjects::getLabel(); - domFlag.label = label; - domFlag maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" + label ); - domFlag maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" + label ); - domFlag maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" + label ); - domFlag maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" + label ); - domFlag maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); - domFlag.onUse = ::onUse; - domFlag.onBeginUse = ::onBeginUse; - domFlag.onEndUse = ::onEndUse; - - traceStart = visuals[0].origin + (0,0,32); - traceEnd = visuals[0].origin + (0,0,-32); - trace = bulletTrace( traceStart, traceEnd, false, undefined ); - - upangles = vectorToAngles( trace["normal"] ); - domFlag.baseeffectforward = anglesToForward( upangles ); - domFlag.baseeffectright = anglesToRight( upangles ); - - domFlag.baseeffectpos = trace["position"]; - - level.flags[i].useObj = domFlag; - level.flags[i].adjflags = []; - level.flags[i].nearbyspawns = []; - - domFlag.levelFlag = level.flags[i]; - - level.domFlags[level.domFlags.size] = domFlag; - } - - level.bestSpawnFlag = []; - level.bestSpawnFlag[ "allies" ] = getUnownedFlagNearestStart( "allies", undefined ); - level.bestSpawnFlag[ "axis" ] = getUnownedFlagNearestStart( "axis", level.bestSpawnFlag[ "allies" ] ); - - flagSetup(); -} - -onRoundSwitch() -{ - level.halftimeType = "halftime"; -} - -getUnownedFlagNearestStart( team, excludeFlag ) -{ - best = undefined; - bestdistsq = undefined; - for ( i = 0; i < level.flags.size; i++ ) - { - flag = level.flags[i]; - - if ( flag getFlagTeam() != "neutral" ) - continue; - - distsq = distanceSquared( flag.origin, level.startPos[team] ); - if ( (!isDefined( excludeFlag ) || flag != excludeFlag) && (!isdefined( best ) || distsq < bestdistsq) ) - { - bestdistsq = distsq; - best = flag; - } - } - return best; -} - -onBeginUse( player ) -{ - ownerTeam = self maps\mp\gametypes\_gameobjects::getOwnerTeam(); - setDvar( "scr_obj" + self maps\mp\gametypes\_gameobjects::getLabel() + "_flash", 1 ); - - if ( ownerTeam == "neutral" ) - { - self.objPoints[player.pers["team"]] thread maps\mp\gametypes\_objpoints::startFlashing(); - return; - } - - if ( ownerTeam == "allies" ) - otherTeam = "axis"; - else - otherTeam = "allies"; - - self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::startFlashing(); - self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::startFlashing(); -} - -onEndUse( team, player, success ) -{ - setDvar( "scr_obj" + self maps\mp\gametypes\_gameobjects::getLabel() + "_flash", 0 ); - - self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::stopFlashing(); - self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::stopFlashing(); -} - -resetFlagBaseEffect() -{ - if ( isdefined( self.baseeffect ) ) - self.baseeffect delete(); - - team = self maps\mp\gametypes\_gameobjects::getOwnerTeam(); - - if ( team != "axis" && team != "allies" ) - return; - - fxid = game["flagBaseFXid"][ team ]; - - self.baseeffect = spawnFx( fxid, self.baseeffectpos, self.baseeffectforward, self.baseeffectright ); - triggerFx( self.baseeffect ); -} - -onUse( player ) -{ - team = player.pers["team"]; - oldTeam = self maps\mp\gametypes\_gameobjects::getOwnerTeam(); - label = self maps\mp\gametypes\_gameobjects::getLabel(); - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "captured" + self.label + "" + player.name; - - logPrint("P_F;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); - - self maps\mp\gametypes\_gameobjects::setOwnerTeam( team ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" + label ); - self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" + label ); - self.visuals[0] setModel( game["flagmodels"][team] ); - setDvar( "scr_obj" + self maps\mp\gametypes\_gameobjects::getLabel(), team ); - - self resetFlagBaseEffect(); - - level.useStartSpawns = false; - - if ( oldTeam == "neutral" ) - { - otherTeam = getOtherTeam( team ); - thread printAndSoundOnEveryone( team, otherTeam, &"MP_NEUTRAL_FLAG_CAPTURED_BY", &"MP_NEUTRAL_FLAG_CAPTURED_BY", "mp_war_objective_taken", undefined, player ); - } - else - { - thread printAndSoundOnEveryone( team, oldTeam, &"MP_ENEMY_FLAG_CAPTURED_BY", &"MP_FRIENDLY_FLAG_CAPTURED_BY", "mp_war_objective_taken", "mp_war_objective_lost", player ); - level.bestSpawnFlag[ oldTeam ] = self.levelFlag; - } - - thread giveFlagCaptureXP( self.touchList[team] ); -} - -giveFlagCaptureXP( touchList ) -{ - wait 0.05; - maps\mp\gametypes\_globallogic::WaitTillSlowProcessAllowed(); - - players = getArrayKeys( touchList ); - for ( i = 0; i < players.size; i++ ) - { - touchList[players[i]].player thread [[level.onXPEvent]]( "capture" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "capture", touchList[players[i]].player ); - } -} - -updateDomScores() -{ - level.endGameOnScoreLimit = false; - - while ( !level.gameEnded ) - { - numFlags = getTeamFlagCount( "allies" ); - if ( numFlags ) - [[level._setTeamScore]]( "allies", [[level._getTeamScore]]( "allies" ) + numFlags ); - - numFlags = getTeamFlagCount( "axis" ); - if ( numFlags ) - [[level._setTeamScore]]( "axis", [[level._getTeamScore]]( "axis" ) + numFlags ); - - level.endGameOnScoreLimit = true; - maps\mp\gametypes\_globallogic::checkScoreLimit(); - level.endGameOnScoreLimit = false; - wait 5; - } -} - -onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration ) -{ - if ( self.touchTriggers.size && isPlayer( attacker ) && attacker.pers["team"] != self.pers["team"] ) - { - triggerIds = getArrayKeys( self.touchTriggers ); - ownerTeam = self.touchTriggers[triggerIds[0]].useObj.ownerTeam; - team = self.pers["team"]; - - if ( team == ownerTeam ) - { - attacker thread [[level.onXPEvent]]( "assault" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "assault", attacker ); - } - else - { - attacker thread [[level.onXPEvent]]( "defend" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "defend", attacker ); - } - } -} - -getTeamFlagCount( team ) -{ - score = 0; - for (i = 0; i < level.flags.size; i++) - { - if ( level.domFlags[i] maps\mp\gametypes\_gameobjects::getOwnerTeam() == team ) - score++; - } - return score; -} - -getFlagTeam() -{ - return self.useObj maps\mp\gametypes\_gameobjects::getOwnerTeam(); -} - -getBoundaryFlags() -{ - bflags = []; - for (i = 0; i < level.flags.size; i++) - { - for (j = 0; j < level.flags[i].adjflags.size; j++) - { - if (level.flags[i].useObj maps\mp\gametypes\_gameobjects::getOwnerTeam() != level.flags[i].adjflags[j].useObj maps\mp\gametypes\_gameobjects::getOwnerTeam() ) - { - bflags[bflags.size] = level.flags[i]; - break; - } - } - } - - return bflags; -} - -getBoundaryFlagSpawns(team) -{ - spawns = []; - - bflags = getBoundaryFlags(); - for (i = 0; i < bflags.size; i++) - { - if (isdefined(team) && bflags[i] getFlagTeam() != team) - continue; - - for (j = 0; j < bflags[i].nearbyspawns.size; j++) - spawns[spawns.size] = bflags[i].nearbyspawns[j]; - } - - return spawns; -} - -getSpawnsBoundingFlag( avoidflag ) -{ - spawns = []; - - for (i = 0; i < level.flags.size; i++) - { - flag = level.flags[i]; - if ( flag == avoidflag ) - continue; - - isbounding = false; - for (j = 0; j < flag.adjflags.size; j++) - { - if ( flag.adjflags[j] == avoidflag ) - { - isbounding = true; - break; - } - } - - if ( !isbounding ) - continue; - - for (j = 0; j < flag.nearbyspawns.size; j++) - spawns[spawns.size] = flag.nearbyspawns[j]; - } - - return spawns; -} - -getOwnedAndBoundingFlagSpawns(team) -{ - spawns = []; - - for (i = 0; i < level.flags.size; i++) - { - if ( level.flags[i] getFlagTeam() == team ) - { - for (s = 0; s < level.flags[i].nearbyspawns.size; s++) - spawns[spawns.size] = level.flags[i].nearbyspawns[s]; - } - else - { - for (j = 0; j < level.flags[i].adjflags.size; j++) - { - if ( level.flags[i].adjflags[j] getFlagTeam() == team ) - { - for (s = 0; s < level.flags[i].nearbyspawns.size; s++) - spawns[spawns.size] = level.flags[i].nearbyspawns[s]; - break; - } - } - } - } - - return spawns; -} - -getOwnedFlagSpawns(team) -{ - spawns = []; - - for (i = 0; i < level.flags.size; i++) - { - if ( level.flags[i] getFlagTeam() == team ) - { - for (s = 0; s < level.flags[i].nearbyspawns.size; s++) - spawns[spawns.size] = level.flags[i].nearbyspawns[s]; - } - } - - return spawns; -} - -flagSetup() -{ - descriptorsByLinkname = []; - - descriptors = getentarray("flag_descriptor", "targetname"); - - flags = level.flags; - - for (i = 0; i < level.domFlags.size; i++) - { - closestdist = undefined; - closestdesc = undefined; - for (j = 0; j < descriptors.size; j++) - { - dist = distance(flags[i].origin, descriptors[j].origin); - if (!isdefined(closestdist) || dist < closestdist) { - closestdist = dist; - closestdesc = descriptors[j]; - } - } - - flags[i].descriptor = closestdesc; - closestdesc.flag = flags[i]; - descriptorsByLinkname[closestdesc.script_linkname] = closestdesc; - } - - for (i = 0; i < flags.size; i++) - { - if (isdefined(flags[i].descriptor.script_linkto)) - adjdescs = strtok(flags[i].descriptor.script_linkto, " "); - else - adjdescs = []; - - for (j = 0; j < adjdescs.size; j++) - { - otherdesc = descriptorsByLinkname[adjdescs[j]]; - adjflag = otherdesc.flag; - flags[i].adjflags[flags[i].adjflags.size] = adjflag; - } - } - - spawnpoints = getentarray("mp_dom_spawn", "classname"); - for (i = 0; i < spawnpoints.size; i++) - { - if (isdefined(spawnpoints[i].script_linkto)) { - desc = descriptorsByLinkname[spawnpoints[i].script_linkto]; - nearestflag = desc.flag; - } - else { - nearestflag = undefined; - nearestdist = undefined; - for (j = 0; j < flags.size; j++) - { - dist = distancesquared(flags[j].origin, spawnpoints[i].origin); - if (!isdefined(nearestflag) || dist < nearestdist) - { - nearestflag = flags[j]; - nearestdist = dist; - } - } - } - nearestflag.nearbyspawns[nearestflag.nearbyspawns.size] = spawnpoints[i]; - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\_utility; + +main() +{ + if(getdvar("mapname") == "mp_background") + return; + + maps\mp\gametypes\_globallogic::init(); + maps\mp\gametypes\_callbacksetup::SetupCallbacks(); + maps\mp\gametypes\_globallogic::SetupCallbacks(); + + level.teamBased = true; + level.overrideTeamScore = true; + level.onStartGameType = ::onStartGameType; + level.onSpawnPlayer = ::onSpawnPlayer; + level.onPlayerKilled = ::onPlayerKilled; + level.onPrecacheGameType = ::onPrecacheGameType; + level.onRoundSwitch = ::onRoundSwitch; + + level.displayRoundEndText = false; +} + +onPrecacheGameType() +{ + precacheShader( "compass_waypoint_captureneutral" ); + precacheShader( "compass_waypoint_capture" ); + precacheShader( "compass_waypoint_defend" ); + precacheShader( "compass_waypoint_captureneutral_a" ); + precacheShader( "compass_waypoint_capture_a" ); + precacheShader( "compass_waypoint_defend_a" ); + precacheShader( "compass_waypoint_captureneutral_b" ); + precacheShader( "compass_waypoint_capture_b" ); + precacheShader( "compass_waypoint_defend_b" ); + precacheShader( "compass_waypoint_captureneutral_c" ); + precacheShader( "compass_waypoint_capture_c" ); + precacheShader( "compass_waypoint_defend_c" ); + precacheShader( "compass_waypoint_captureneutral_d" ); + precacheShader( "compass_waypoint_capture_d" ); + precacheShader( "compass_waypoint_defend_d" ); + precacheShader( "compass_waypoint_captureneutral_e" ); + precacheShader( "compass_waypoint_capture_e" ); + precacheShader( "compass_waypoint_defend_e" ); + + precacheShader( "waypoint_captureneutral" ); + precacheShader( "waypoint_capture" ); + precacheShader( "waypoint_defend" ); + precacheShader( "waypoint_captureneutral_a" ); + precacheShader( "waypoint_capture_a" ); + precacheShader( "waypoint_defend_a" ); + precacheShader( "waypoint_captureneutral_b" ); + precacheShader( "waypoint_capture_b" ); + precacheShader( "waypoint_defend_b" ); + precacheShader( "waypoint_captureneutral_c" ); + precacheShader( "waypoint_capture_c" ); + precacheShader( "waypoint_defend_c" ); + precacheShader( "waypoint_captureneutral_d" ); + precacheShader( "waypoint_capture_d" ); + precacheShader( "waypoint_defend_d" ); + precacheShader( "waypoint_captureneutral_e" ); + precacheShader( "waypoint_capture_e" ); + precacheShader( "waypoint_defend_e" ); + + flagBaseFX = []; + flagBaseFX["marines"] = "misc/ui_flagbase_silver"; + flagBaseFX["sas"] = "misc/ui_flagbase_black"; + flagBaseFX["russian"] = "misc/ui_flagbase_red"; + flagBaseFX["opfor"] = "misc/ui_flagbase_gold"; + + game["flagBaseFXid"] = []; + game["flagBaseFXid"][ "allies" ] = loadfx( flagBaseFX[ game[ "allies" ] ] ); + game["flagBaseFXid"][ "axis" ] = loadfx( flagBaseFX[ game[ "axis" ] ] ); +} + +onStartGameType() +{ + maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_DOM" ); + maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_DOM" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_DOM_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_DOM_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_DOM_HINT" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_DOM_HINT" ); + + setClientNameMode("auto_change"); + + level.spawnMins = ( 0, 0, 0 ); + level.spawnMaxs = ( 0, 0, 0 ); + maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_dom_spawn_allies_start" ); + maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_dom_spawn_axis_start" ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dom_spawn" ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dom_spawn" ); + + level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); + setMapCenter( level.mapCenter ); + + level.spawn_all = getentarray( "mp_dom_spawn", "classname" ); + level.spawn_axis_start = getentarray("mp_dom_spawn_axis_start", "classname" ); + level.spawn_allies_start = getentarray("mp_dom_spawn_allies_start", "classname" ); + + level.startPos["allies"] = level.spawn_allies_start[0].origin; + level.startPos["axis"] = level.spawn_axis_start[0].origin; + + allowed[0] = "dom"; + + maps\mp\gametypes\_gameobjects::main(allowed); + + thread domFlags(); + thread updateDomScores(); +} + +onSpawnPlayer() +{ + spawnpoint = undefined; + + if ( !level.useStartSpawns ) + { + flagsOwned = 0; + enemyFlagsOwned = 0; + myTeam = self.pers["team"]; + enemyTeam = getOtherTeam( myTeam ); + for ( i = 0; i < level.flags.size; i++ ) + { + team = level.flags[i] getFlagTeam(); + if ( team == myTeam ) + flagsOwned++; + else if ( team == enemyTeam ) + enemyFlagsOwned++; + } + + if ( flagsOwned == level.flags.size ) + { + enemyBestSpawnFlag = level.bestSpawnFlag[ getOtherTeam( self.pers["team"] ) ]; + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, getSpawnsBoundingFlag( enemyBestSpawnFlag ) ); + } + else if ( flagsOwned > 0 ) + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, getBoundaryFlagSpawns( myTeam ) ); + else + { + bestFlag = undefined; + if ( enemyFlagsOwned > 0 && enemyFlagsOwned < level.flags.size ) + bestFlag = getUnownedFlagNearestStart( myTeam ); + if ( !isdefined( bestFlag ) ) + bestFlag = level.bestSpawnFlag[ self.pers["team"] ]; + + level.bestSpawnFlag[ self.pers["team"] ] = bestFlag; + + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, bestFlag.nearbyspawns ); + } + } + + if ( !isdefined( spawnpoint ) ) + { + if (self.pers["team"] == "axis") + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_axis_start); + else + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_allies_start); + } + + self spawn(spawnpoint.origin, spawnpoint.angles); +} + +domFlags() +{ + level.lastStatus["allies"] = 0; + level.lastStatus["axis"] = 0; + + game["flagmodels"] = []; + game["flagmodels"]["neutral"] = "prop_flag_neutral"; + if ( game["allies"] == "marines" ) + game["flagmodels"]["allies"] = "prop_flag_american"; + else + game["flagmodels"]["allies"] = "prop_flag_brit"; + + if ( game["axis"] == "russian" ) + game["flagmodels"]["axis"] = "prop_flag_russian"; + else + game["flagmodels"]["axis"] = "prop_flag_opfor"; + + precacheModel( game["flagmodels"]["neutral"] ); + precacheModel( game["flagmodels"]["allies"] ); + precacheModel( game["flagmodels"]["axis"] ); + + precacheString( &"MP_CAPTURING_FLAG" ); + precacheString( &"MP_LOSING_FLAG" ); + precacheString( &"MP_DOM_YOUR_FLAG_WAS_CAPTURED" ); + precacheString( &"MP_DOM_ENEMY_FLAG_CAPTURED" ); + precacheString( &"MP_DOM_NEUTRAL_FLAG_CAPTURED" ); + + precacheString( &"MP_ENEMY_FLAG_CAPTURED_BY" ); + precacheString( &"MP_NEUTRAL_FLAG_CAPTURED_BY" ); + precacheString( &"MP_FRIENDLY_FLAG_CAPTURED_BY" ); + + primaryFlags = getEntArray( "flag_primary", "targetname" ); + secondaryFlags = getEntArray( "flag_secondary", "targetname" ); + + if ( (primaryFlags.size + secondaryFlags.size) < 2 ) + { + if ( isDefined( level.restarting ) ) + { + setdvar("g_gametype", "dm"); + setDvar( "o_gametype", "dm" ); + } + else + maps\mp\gametypes\_callbacksetup::AbortLevel(); + return; + } + + level.flags = []; + for ( i = 0; i < primaryFlags.size; i++ ) + level.flags[level.flags.size] = primaryFlags[i]; + + for ( i = 0; i < secondaryFlags.size; i++ ) + level.flags[level.flags.size] = secondaryFlags[i]; + + level.domFlags = []; + for ( i = 0; i < level.flags.size; i++ ) + { + trigger = level.flags[i]; + if ( isDefined( trigger.target ) ) + visuals[0] = getEnt( trigger.target, "targetname" ); + else + { + visuals[0] = spawn( "script_model", trigger.origin ); + visuals[0].angles = trigger.angles; + } + + visuals[0] setModel( game["flagmodels"]["neutral"] ); + + domFlag = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", trigger, visuals, (0,0,100) ); + domFlag maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); + domFlag maps\mp\gametypes\_gameobjects::setUseTime( 10 ); + domFlag maps\mp\gametypes\_gameobjects::setUseText( &"MP_CAPTURING_FLAG" ); + label = domFlag maps\mp\gametypes\_gameobjects::getLabel(); + domFlag.label = label; + domFlag maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" + label ); + domFlag maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" + label ); + domFlag maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" + label ); + domFlag maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" + label ); + domFlag maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); + domFlag.onUse = ::onUse; + domFlag.onBeginUse = ::onBeginUse; + domFlag.onEndUse = ::onEndUse; + + traceStart = visuals[0].origin + (0,0,32); + traceEnd = visuals[0].origin + (0,0,-32); + trace = bulletTrace( traceStart, traceEnd, false, undefined ); + + upangles = vectorToAngles( trace["normal"] ); + domFlag.baseeffectforward = anglesToForward( upangles ); + domFlag.baseeffectright = anglesToRight( upangles ); + + domFlag.baseeffectpos = trace["position"]; + + level.flags[i].useObj = domFlag; + level.flags[i].adjflags = []; + level.flags[i].nearbyspawns = []; + + domFlag.levelFlag = level.flags[i]; + + level.domFlags[level.domFlags.size] = domFlag; + } + + level.bestSpawnFlag = []; + level.bestSpawnFlag[ "allies" ] = getUnownedFlagNearestStart( "allies", undefined ); + level.bestSpawnFlag[ "axis" ] = getUnownedFlagNearestStart( "axis", level.bestSpawnFlag[ "allies" ] ); + + flagSetup(); +} + +onRoundSwitch() +{ + level.halftimeType = "halftime"; +} + +getUnownedFlagNearestStart( team, excludeFlag ) +{ + best = undefined; + bestdistsq = undefined; + for ( i = 0; i < level.flags.size; i++ ) + { + flag = level.flags[i]; + + if ( flag getFlagTeam() != "neutral" ) + continue; + + distsq = distanceSquared( flag.origin, level.startPos[team] ); + if ( (!isDefined( excludeFlag ) || flag != excludeFlag) && (!isdefined( best ) || distsq < bestdistsq) ) + { + bestdistsq = distsq; + best = flag; + } + } + return best; +} + +onBeginUse( player ) +{ + ownerTeam = self maps\mp\gametypes\_gameobjects::getOwnerTeam(); + setDvar( "scr_obj" + self maps\mp\gametypes\_gameobjects::getLabel() + "_flash", 1 ); + + if ( ownerTeam == "neutral" ) + { + self.objPoints[player.pers["team"]] thread maps\mp\gametypes\_objpoints::startFlashing(); + return; + } + + if ( ownerTeam == "allies" ) + otherTeam = "axis"; + else + otherTeam = "allies"; + + self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::startFlashing(); + self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::startFlashing(); +} + +onEndUse( team, player, success ) +{ + setDvar( "scr_obj" + self maps\mp\gametypes\_gameobjects::getLabel() + "_flash", 0 ); + + self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::stopFlashing(); + self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::stopFlashing(); +} + +resetFlagBaseEffect() +{ + if ( isdefined( self.baseeffect ) ) + self.baseeffect delete(); + + team = self maps\mp\gametypes\_gameobjects::getOwnerTeam(); + + if ( team != "axis" && team != "allies" ) + return; + + fxid = game["flagBaseFXid"][ team ]; + + self.baseeffect = spawnFx( fxid, self.baseeffectpos, self.baseeffectforward, self.baseeffectright ); + triggerFx( self.baseeffect ); +} + +onUse( player ) +{ + team = player.pers["team"]; + oldTeam = self maps\mp\gametypes\_gameobjects::getOwnerTeam(); + label = self maps\mp\gametypes\_gameobjects::getLabel(); + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "captured" + self.label + "" + player.name; + + logPrint("P_F;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); + + self maps\mp\gametypes\_gameobjects::setOwnerTeam( team ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" + label ); + self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" + label ); + self.visuals[0] setModel( game["flagmodels"][team] ); + setDvar( "scr_obj" + self maps\mp\gametypes\_gameobjects::getLabel(), team ); + + self resetFlagBaseEffect(); + + level.useStartSpawns = false; + + if ( oldTeam == "neutral" ) + { + otherTeam = getOtherTeam( team ); + thread printAndSoundOnEveryone( team, otherTeam, &"MP_NEUTRAL_FLAG_CAPTURED_BY", &"MP_NEUTRAL_FLAG_CAPTURED_BY", "mp_war_objective_taken", undefined, player ); + } + else + { + thread printAndSoundOnEveryone( team, oldTeam, &"MP_ENEMY_FLAG_CAPTURED_BY", &"MP_FRIENDLY_FLAG_CAPTURED_BY", "mp_war_objective_taken", "mp_war_objective_lost", player ); + level.bestSpawnFlag[ oldTeam ] = self.levelFlag; + } + + thread giveFlagCaptureXP( self.touchList[team] ); +} + +giveFlagCaptureXP( touchList ) +{ + wait 0.05; + maps\mp\gametypes\_globallogic::WaitTillSlowProcessAllowed(); + + players = getArrayKeys( touchList ); + for ( i = 0; i < players.size; i++ ) + { + touchList[players[i]].player thread [[level.onXPEvent]]( "capture" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "capture", touchList[players[i]].player ); + } +} + +updateDomScores() +{ + level.endGameOnScoreLimit = false; + + while ( !level.gameEnded ) + { + numFlags = getTeamFlagCount( "allies" ); + if ( numFlags ) + [[level._setTeamScore]]( "allies", [[level._getTeamScore]]( "allies" ) + numFlags ); + + numFlags = getTeamFlagCount( "axis" ); + if ( numFlags ) + [[level._setTeamScore]]( "axis", [[level._getTeamScore]]( "axis" ) + numFlags ); + + level.endGameOnScoreLimit = true; + maps\mp\gametypes\_globallogic::checkScoreLimit(); + level.endGameOnScoreLimit = false; + wait 5; + } +} + +onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration ) +{ + if ( self.touchTriggers.size && isPlayer( attacker ) && attacker.pers["team"] != self.pers["team"] ) + { + triggerIds = getArrayKeys( self.touchTriggers ); + ownerTeam = self.touchTriggers[triggerIds[0]].useObj.ownerTeam; + team = self.pers["team"]; + + if ( team == ownerTeam ) + { + attacker thread [[level.onXPEvent]]( "assault" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "assault", attacker ); + } + else + { + attacker thread [[level.onXPEvent]]( "defend" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "defend", attacker ); + } + } +} + +getTeamFlagCount( team ) +{ + score = 0; + for (i = 0; i < level.flags.size; i++) + { + if ( level.domFlags[i] maps\mp\gametypes\_gameobjects::getOwnerTeam() == team ) + score++; + } + return score; +} + +getFlagTeam() +{ + return self.useObj maps\mp\gametypes\_gameobjects::getOwnerTeam(); +} + +getBoundaryFlags() +{ + bflags = []; + for (i = 0; i < level.flags.size; i++) + { + for (j = 0; j < level.flags[i].adjflags.size; j++) + { + if (level.flags[i].useObj maps\mp\gametypes\_gameobjects::getOwnerTeam() != level.flags[i].adjflags[j].useObj maps\mp\gametypes\_gameobjects::getOwnerTeam() ) + { + bflags[bflags.size] = level.flags[i]; + break; + } + } + } + + return bflags; +} + +getBoundaryFlagSpawns(team) +{ + spawns = []; + + bflags = getBoundaryFlags(); + for (i = 0; i < bflags.size; i++) + { + if (isdefined(team) && bflags[i] getFlagTeam() != team) + continue; + + for (j = 0; j < bflags[i].nearbyspawns.size; j++) + spawns[spawns.size] = bflags[i].nearbyspawns[j]; + } + + return spawns; +} + +getSpawnsBoundingFlag( avoidflag ) +{ + spawns = []; + + for (i = 0; i < level.flags.size; i++) + { + flag = level.flags[i]; + if ( flag == avoidflag ) + continue; + + isbounding = false; + for (j = 0; j < flag.adjflags.size; j++) + { + if ( flag.adjflags[j] == avoidflag ) + { + isbounding = true; + break; + } + } + + if ( !isbounding ) + continue; + + for (j = 0; j < flag.nearbyspawns.size; j++) + spawns[spawns.size] = flag.nearbyspawns[j]; + } + + return spawns; +} + +getOwnedAndBoundingFlagSpawns(team) +{ + spawns = []; + + for (i = 0; i < level.flags.size; i++) + { + if ( level.flags[i] getFlagTeam() == team ) + { + for (s = 0; s < level.flags[i].nearbyspawns.size; s++) + spawns[spawns.size] = level.flags[i].nearbyspawns[s]; + } + else + { + for (j = 0; j < level.flags[i].adjflags.size; j++) + { + if ( level.flags[i].adjflags[j] getFlagTeam() == team ) + { + for (s = 0; s < level.flags[i].nearbyspawns.size; s++) + spawns[spawns.size] = level.flags[i].nearbyspawns[s]; + break; + } + } + } + } + + return spawns; +} + +getOwnedFlagSpawns(team) +{ + spawns = []; + + for (i = 0; i < level.flags.size; i++) + { + if ( level.flags[i] getFlagTeam() == team ) + { + for (s = 0; s < level.flags[i].nearbyspawns.size; s++) + spawns[spawns.size] = level.flags[i].nearbyspawns[s]; + } + } + + return spawns; +} + +flagSetup() +{ + descriptorsByLinkname = []; + + descriptors = getentarray("flag_descriptor", "targetname"); + + flags = level.flags; + + for (i = 0; i < level.domFlags.size; i++) + { + closestdist = undefined; + closestdesc = undefined; + for (j = 0; j < descriptors.size; j++) + { + dist = distance(flags[i].origin, descriptors[j].origin); + if (!isdefined(closestdist) || dist < closestdist) { + closestdist = dist; + closestdesc = descriptors[j]; + } + } + + flags[i].descriptor = closestdesc; + closestdesc.flag = flags[i]; + descriptorsByLinkname[closestdesc.script_linkname] = closestdesc; + } + + for (i = 0; i < flags.size; i++) + { + if (isdefined(flags[i].descriptor.script_linkto)) + adjdescs = strtok(flags[i].descriptor.script_linkto, " "); + else + adjdescs = []; + + for (j = 0; j < adjdescs.size; j++) + { + otherdesc = descriptorsByLinkname[adjdescs[j]]; + adjflag = otherdesc.flag; + flags[i].adjflags[flags[i].adjflags.size] = adjflag; + } + } + + spawnpoints = getentarray("mp_dom_spawn", "classname"); + for (i = 0; i < spawnpoints.size; i++) + { + if (isdefined(spawnpoints[i].script_linkto)) { + desc = descriptorsByLinkname[spawnpoints[i].script_linkto]; + nearestflag = desc.flag; + } + else { + nearestflag = undefined; + nearestdist = undefined; + for (j = 0; j < flags.size; j++) + { + dist = distancesquared(flags[j].origin, spawnpoints[i].origin); + if (!isdefined(nearestflag) || dist < nearestdist) + { + nearestflag = flags[j]; + nearestdist = dist; + } + } + } + nearestflag.nearbyspawns[nearestflag.nearbyspawns.size] = spawnpoints[i]; + } +} diff --git a/maps/mp/gametypes/koth.gsc b/maps/mp/gametypes/koth.gsc index 8de7029..e10cb07 100644 --- a/maps/mp/gametypes/koth.gsc +++ b/maps/mp/gametypes/koth.gsc @@ -1,709 +1,709 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\_utility; -#include maps\mp\gametypes\_hud_util; - -main() -{ - if ( getdvar("mapname") == "mp_background" ) - return; - - maps\mp\gametypes\_globallogic::init(); - maps\mp\gametypes\_callbacksetup::SetupCallbacks(); - maps\mp\gametypes\_globallogic::SetupCallbacks(); - - level.teamBased = true; - level.doPrematch = true; - level.overrideTeamScore = true; - level.onStartGameType = ::onStartGameType; - level.onSpawnPlayer = ::onSpawnPlayer; - level.onPlayerKilled = ::onPlayerKilled; - level.onRoundSwitch = ::onRoundSwitch; - - precacheShader( "compass_waypoint_captureneutral" ); - precacheShader( "compass_waypoint_capture" ); - precacheShader( "compass_waypoint_defend" ); - - precacheShader( "waypoint_targetneutral" ); - precacheShader( "waypoint_captureneutral" ); - precacheShader( "waypoint_capture" ); - precacheShader( "waypoint_defend" ); - - precacheString( &"MP_WAITING_FOR_HQ" ); - - level.hqAutoDestroyTime = getdvarint("koth_autodestroytime"); - level.hqSpawnTime = getdvarint("koth_spawntime"); - level.kothMode = getdvarint("koth_kothmode"); - level.captureTime = getdvarint("koth_captureTime"); - level.destroyTime = getdvarint("koth_destroyTime"); - level.delayPlayer = getdvarint("koth_delayPlayer"); - level.spawnDelay = getdvarint("koth_spawnDelay"); - - level.iconoffset = (0,0,32); - - level.onRespawnDelay = ::getRespawnDelay; -} - -updateObjectiveHintMessages( alliesObjective, axisObjective ) -{ - game["strings"]["objective_hint_allies"] = alliesObjective; - game["strings"]["objective_hint_axis"] = axisObjective; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - if ( isDefined( player.pers["team"] ) && player.pers["team"] != "spectator" ) - { - hintText = maps\mp\gametypes\_globallogic::getObjectiveHintText( player.pers["team"] ); - player thread maps\mp\gametypes\_hud_message::hintMessage( hintText ); - } - } -} - -getRespawnDelay() -{ - self.lowerMessageOverride = undefined; - - if ( !isDefined( level.radioObject ) ) - return undefined; - - hqOwningTeam = level.radioObject maps\mp\gametypes\_gameobjects::getOwnerTeam(); - if ( self.pers["team"] == hqOwningTeam ) - { - if ( !isDefined( level.hqDestroyTime ) ) - return undefined; - - timeRemaining = (level.hqDestroyTime - gettime()) / 1000; - - if (!level.spawnDelay ) - return undefined; - - if ( level.spawnDelay >= level.hqAutoDestroyTime ) - self.lowerMessageOverride = &"MP_WAITING_FOR_HQ"; - - if ( level.delayPlayer ) - return min( level.spawnDelay, timeRemaining ); - else - return (int(timeRemaining) % level.spawnDelay); - } -} - -onStartGameType() -{ - maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_KOTH" ); - maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_KOTH" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_KOTH_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_KOTH_SCORE" ); - - level.objectiveHintPrepareHQ = &"MP_CONTROL_HQ"; - level.objectiveHintCaptureHQ = &"MP_CAPTURE_HQ"; - level.objectiveHintDestroyHQ = &"MP_DESTROY_HQ"; - level.objectiveHintDefendHQ = &"MP_DEFEND_HQ"; - - precacheString( level.objectiveHintPrepareHQ ); - precacheString( level.objectiveHintCaptureHQ ); - precacheString( level.objectiveHintDestroyHQ ); - precacheString( level.objectiveHintDefendHQ ); - - if ( level.kothmode ) - level.objectiveHintDestroyHQ = level.objectiveHintCaptureHQ; - - if ( level.hqSpawnTime ) - updateObjectiveHintMessages( level.objectiveHintPrepareHQ, level.objectiveHintPrepareHQ ); - else - updateObjectiveHintMessages( level.objectiveHintCaptureHQ, level.objectiveHintCaptureHQ ); - - setClientNameMode("auto_change"); - - level.spawnMins = ( 0, 0, 0 ); - level.spawnMaxs = ( 0, 0, 0 ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" ); - - level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); - setMapCenter( level.mapCenter ); - - level.spawn_all = getentarray( "mp_tdm_spawn", "classname" ); - if ( !level.spawn_all.size ) - { - if ( isDefined( level.restarting ) ) - { - setdvar("g_gametype", "dm"); - setDvar( "o_gametype", "dm" ); - } - else - maps\mp\gametypes\_callbacksetup::AbortLevel(); - return; - } - - allowed[0] = "hq"; - maps\mp\gametypes\_gameobjects::main(allowed); - - thread SetupRadios(); - - thread HQMainLoop(); -} - -onRoundSwitch() -{ - level.halftimeType = "halftime"; -} - -HQMainLoop() -{ - level endon("game_ended"); - - level.hqRevealTime = -100000; - - hqSpawningInStr = &"MP_HQ_AVAILABLE_IN"; - if ( level.kothmode ) - { - hqDestroyedInFriendlyStr = &"MP_HQ_DESPAWN_IN"; - hqDestroyedInEnemyStr = &"MP_HQ_DESPAWN_IN"; - } - else - { - hqDestroyedInFriendlyStr = &"MP_HQ_REINFORCEMENTS_IN"; - hqDestroyedInEnemyStr = &"MP_HQ_DESPAWN_IN"; - } - - precacheString( hqSpawningInStr ); - precacheString( hqDestroyedInFriendlyStr ); - precacheString( hqDestroyedInEnemyStr ); - precacheString( &"MP_CAPTURING_HQ" ); - precacheString( &"MP_DESTROYING_HQ" ); - - if ( isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"] || game["PROMOD_MATCH_MODE"] == "strat") - return; - - while ( level.inPrematchPeriod ) - wait 0.05; - - wait 5; - - timerDisplay = []; - timerDisplay["allies"] = createServerTimer( "objective", 1.4, "allies" ); - timerDisplay["allies"] setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 ); - timerDisplay["allies"].label = hqSpawningInStr; - timerDisplay["allies"].alpha = 0; - timerDisplay["allies"].archived = false; - timerDisplay["allies"].hideWhenInMenu = true; - - timerDisplay["axis"] = createServerTimer( "objective", 1.4, "axis" ); - timerDisplay["axis"] setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 ); - timerDisplay["axis"].label = hqSpawningInStr; - timerDisplay["axis"].alpha = 0; - timerDisplay["axis"].archived = false; - timerDisplay["axis"].hideWhenInMenu = true; - - thread hideTimerDisplayOnGameEnd( timerDisplay["allies"] ); - thread hideTimerDisplayOnGameEnd( timerDisplay["axis"] ); - - locationObjID = maps\mp\gametypes\_gameobjects::getNextObjID(); - - objective_add( locationObjID, "invisible", (0,0,0) ); - - for(;;) - { - radio = PickRadioToSpawn(); - - iPrintLn( &"MP_HQ_REVEALED" ); - playSoundOnPlayers( "mp_suitcase_pickup" ); - - radioObject = radio.gameobject; - level.radioObject = radioObject; - - radioObject maps\mp\gametypes\_gameobjects::setModelVisibility( true ); - - level.hqRevealTime = gettime(); - - if ( level.hqSpawnTime ) - { - nextObjPoint = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_next_hq", radio.origin + level.iconoffset, "all", "waypoint_targetneutral" ); - nextObjPoint setWayPoint( true, "waypoint_targetneutral" ); - objective_position( locationObjID, radio.trigorigin ); - objective_icon( locationObjID, "compass_waypoint_captureneutral" ); - objective_state( locationObjID, "active" ); - - updateObjectiveHintMessages( level.objectiveHintPrepareHQ, level.objectiveHintPrepareHQ ); - - timerDisplay["allies"].label = hqSpawningInStr; - timerDisplay["allies"] setTimer( level.hqSpawnTime ); - timerDisplay["allies"].alpha = 1; - timerDisplay["axis"].label = hqSpawningInStr; - timerDisplay["axis"] setTimer( level.hqSpawnTime ); - timerDisplay["axis"].alpha = 1; - - wait level.hqSpawnTime; - - maps\mp\gametypes\_objpoints::deleteObjPoint( nextObjPoint ); - objective_state( locationObjID, "invisible" ); - } - - timerDisplay["allies"].alpha = 0; - timerDisplay["axis"].alpha = 0; - - waittillframeend; - - updateObjectiveHintMessages( level.objectiveHintCaptureHQ, level.objectiveHintCaptureHQ ); - playSoundOnPlayers( "mp_killstreak_radar" ); - - radioObject maps\mp\gametypes\_gameobjects::enableObject(); - - radioObject maps\mp\gametypes\_gameobjects::allowUse( "any" ); - radioObject maps\mp\gametypes\_gameobjects::setUseTime( level.captureTime ); - radioObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_CAPTURING_HQ" ); - - radioObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" ); - radioObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" ); - radioObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); - radioObject maps\mp\gametypes\_gameobjects::setModelVisibility( true ); - - radioObject.onUse = ::onRadioCapture; - radioObject.onBeginUse = ::onBeginUse; - radioObject.onEndUse = ::onEndUse; - - level waittill( "hq_captured" ); - - ownerTeam = radioObject maps\mp\gametypes\_gameobjects::getOwnerTeam(); - otherTeam = getOtherTeam( ownerTeam ); - - if ( level.hqAutoDestroyTime ) - { - thread DestroyHQAfterTime( level.hqAutoDestroyTime ); - timerDisplay[ownerTeam] setTimer( level.hqAutoDestroyTime ); - timerDisplay[otherTeam] setTimer( level.hqAutoDestroyTime ); - } - else - level.hqDestroyedByTimer = false; - - for(;;) - { - ownerTeam = radioObject maps\mp\gametypes\_gameobjects::getOwnerTeam(); - otherTeam = getOtherTeam( ownerTeam ); - - if ( ownerTeam == "allies" ) - updateObjectiveHintMessages( level.objectiveHintDefendHQ, level.objectiveHintDestroyHQ ); - else - updateObjectiveHintMessages( level.objectiveHintDestroyHQ, level.objectiveHintDefendHQ ); - - radioObject maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); - radioObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" ); - radioObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" ); - radioObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" ); - radioObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" ); - - if ( !level.kothMode ) - radioObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DESTROYING_HQ" ); - - radioObject.onUse = ::onRadioDestroy; - - if ( level.hqAutoDestroyTime ) - { - timerDisplay[ownerTeam].label = hqDestroyedInFriendlyStr; - timerDisplay[ownerTeam].alpha = 1; - timerDisplay[otherTeam].label = hqDestroyedInEnemyStr; - timerDisplay[otherTeam].alpha = 1; - } - - level waittill( "hq_destroyed" ); - - if ( !level.kothmode || level.hqDestroyedByTimer ) - break; - - thread forceSpawnTeam( ownerTeam ); - - radioObject maps\mp\gametypes\_gameobjects::setOwnerTeam( getOtherTeam( ownerTeam ) ); - } - - level notify("hq_reset"); - - radioObject maps\mp\gametypes\_gameobjects::disableObject(); - radioObject maps\mp\gametypes\_gameobjects::allowUse( "none" ); - radioObject maps\mp\gametypes\_gameobjects::setOwnerTeam( "neutral" ); - radioObject maps\mp\gametypes\_gameobjects::setModelVisibility( false ); - - timerDisplay["allies"].alpha = 0; - timerDisplay["axis"].alpha = 0; - - level.radioObject = undefined; - - wait 0.05; - - thread forceSpawnTeam( ownerTeam ); - - wait 3; - } -} - -hideTimerDisplayOnGameEnd( timerDisplay ) -{ - level waittill("game_ended"); - timerDisplay.alpha = 0; -} - -forceSpawnTeam( team ) -{ - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - if ( !isdefined( player ) ) - continue; - - if ( player.pers["team"] == team ) - { - player.lowerMessageOverride = undefined; - player notify( "force_spawn" ); - wait 0.1; - } - } -} - -onBeginUse( player ) -{ - ownerTeam = self maps\mp\gametypes\_gameobjects::getOwnerTeam(); - - if ( ownerTeam == "neutral" ) - self.objPoints[player.pers["team"]] thread maps\mp\gametypes\_objpoints::startFlashing(); - else - { - self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::startFlashing(); - self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::startFlashing(); - } -} - -onEndUse( team, player, success ) -{ - self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::stopFlashing(); - self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::stopFlashing(); -} - -onRadioCapture( player ) -{ - team = player.pers["team"]; - - player thread [[level.onXPEvent]]( "capture" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "capture", player ); - - oldTeam = maps\mp\gametypes\_gameobjects::getOwnerTeam(); - self maps\mp\gametypes\_gameobjects::setOwnerTeam( team ); - if ( !level.kothMode ) - self maps\mp\gametypes\_gameobjects::setUseTime( level.destroyTime ); - - otherTeam = "axis"; - if ( team == "axis" ) - otherTeam = "allies"; - - thread printOnTeamArg( &"MP_HQ_CAPTURED_BY", team, player ); - thread printOnTeam( &"MP_HQ_CAPTURED_BY_ENEMY", otherTeam ); - thread playSoundOnPlayers( "mp_war_objective_taken", team ); - thread playSoundOnPlayers( "mp_war_objective_lost", otherTeam ); - - level thread awardHQPoints( team ); - - level notify( "hq_captured" ); - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "hq_captured" + player.name; - - logPrint("P_HQC;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); -} - -onRadioDestroy( player ) -{ - team = player.pers["team"]; - otherTeam = "axis"; - if ( team == "axis" ) - otherTeam = "allies"; - - player thread [[level.onXPEvent]]( "capture" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "capture", player ); - - if ( level.kothmode ) - { - thread printOnTeamArg( &"MP_HQ_CAPTURED_BY", team, player ); - thread printOnTeam( &"MP_HQ_CAPTURED_BY_ENEMY", otherTeam ); - } - else - { - thread printOnTeamArg( &"MP_HQ_DESTROYED_BY", team, player ); - thread printOnTeam( &"MP_HQ_DESTROYED_BY_ENEMY", otherTeam ); - } - thread playSoundOnPlayers( "mp_war_objective_taken", team ); - thread playSoundOnPlayers( "mp_war_objective_lost", otherTeam ); - - level notify( "hq_destroyed" ); - - if ( level.kothmode ) - level thread awardHQPoints( team ); - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "hq_destroyed" + player.name; - - logPrint("P_HQD;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); -} - -DestroyHQAfterTime( time ) -{ - level endon( "game_ended" ); - level endon( "hq_reset" ); - - level.hqDestroyTime = gettime() + time * 1000; - level.hqDestroyedByTimer = false; - - wait time; - - level.hqDestroyedByTimer = true; - level notify( "hq_destroyed" ); -} - -awardHQPoints( team ) -{ - level endon( "game_ended" ); - level endon( "hq_destroyed" ); - - level notify("awardHQPointsRunning"); - level endon("awardHQPointsRunning"); - - seconds = 5; - - while ( !level.gameEnded ) - { - [[level._setTeamScore]]( team, [[level._getTeamScore]]( team ) + seconds ); - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - if ( player.pers["team"] == team ) - { - player thread [[level.onXPEvent]]( "defend" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "defend", player ); - } - } - - wait seconds; - } -} - -onSpawnPlayer() -{ - spawnpoint = undefined; - - if ( isdefined( level.radioObject ) ) - { - hqOwningTeam = level.radioObject maps\mp\gametypes\_gameobjects::getOwnerTeam(); - if ( self.pers["team"] == hqOwningTeam ) - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, level.radioObject.nearSpawns ); - else if ( level.spawnDelay >= level.hqAutoDestroyTime && gettime() > level.hqRevealTime + 10000 ) - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all ); - else - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, level.radioObject.outerSpawns ); - } - - if ( !isDefined( spawnpoint ) ) - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all ); - - self.lowerMessageOverride = undefined; - - self spawn( spawnpoint.origin, spawnpoint.angles ); -} - -SetupRadios() -{ - radios = getentarray( "hq_hardpoint", "targetname" ); - - trigs = getentarray("radiotrigger", "targetname"); - for ( i = 0; i < radios.size; i++ ) - { - radio = radios[i]; - radio.trig = undefined; - for ( j = 0; j < trigs.size; j++ ) - { - if ( radio istouching( trigs[j] ) ) - { - radio.trig = trigs[j]; - break; - } - } - - radio.trigorigin = radio.trig.origin; - - visuals = []; - visuals[0] = radio; - - otherVisuals = getEntArray( radio.target, "targetname" ); - for ( j = 0; j < otherVisuals.size; j++ ) - visuals[visuals.size] = otherVisuals[j]; - - radio.gameObject = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", radio.trig, visuals, (radio.origin - radio.trigorigin) + level.iconoffset ); - radio.gameObject maps\mp\gametypes\_gameobjects::disableObject(); - radio.gameObject maps\mp\gametypes\_gameobjects::setModelVisibility( false ); - radio.trig.useObj = radio.gameObject; - - radio setUpNearbySpawns(); - } - - level.radios = radios; - - level.prevradio = undefined; - level.prevradio2 = undefined; - - return true; -} - -setUpNearbySpawns() -{ - spawns = level.spawn_all; - - for ( i = 0; i < spawns.size; i++ ) - spawns[i].distsq = distanceSquared( spawns[i].origin, self.origin ); - - for ( i = 1; i < spawns.size; i++ ) - { - thespawn = spawns[i]; - for ( j = i - 1; j >= 0 && thespawn.distsq < spawns[j].distsq; j-- ) - spawns[j + 1] = spawns[j]; - spawns[j + 1] = thespawn; - } - - first = []; - second = []; - third = []; - outer = []; - - thirdSize = spawns.size / 3; - for ( i = 0; i <= thirdSize; i++ ) - first[ first.size ] = spawns[i]; - for ( ; i < spawns.size; i++ ) - { - outer[ outer.size ] = spawns[i]; - if ( i <= (thirdSize*2) ) - second[ second.size ] = spawns[i]; - else - third[ third.size ] = spawns[i]; - } - - self.gameObject.nearSpawns = first; - self.gameObject.midSpawns = second; - self.gameObject.farSpawns = third; - self.gameObject.outerSpawns = outer; -} - -PickRadioToSpawn() -{ - avgpos["allies"] = (0,0,0); - avgpos["axis"] = (0,0,0); - num["allies"] = 0; - num["axis"] = 0; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - if ( isalive( player ) ) - { - avgpos[ player.pers["team"] ] += player.origin; - num[ player.pers["team"] ]++; - } - } - - if ( !num["allies"] || !num["axis"] ) - { - radio = level.radios[ randomint( level.radios.size) ]; - while ( isDefined( level.prevradio ) && radio == level.prevradio ) - radio = level.radios[ randomint( level.radios.size) ]; - - level.prevradio2 = level.prevradio; - level.prevradio = radio; - - return radio; - } - - avgpos["allies"] = avgpos["allies"] / num["allies"]; - avgpos["axis"] = avgpos["axis"] / num["axis"]; - - bestradio = undefined; - lowestcost = undefined; - for ( i = 0; i < level.radios.size; i++ ) - { - radio = level.radios[i]; - - cost = abs( distance( radio.origin, avgpos["allies"] ) - distance( radio.origin, avgpos["axis"] ) ); - - if ( isdefined( level.prevradio ) && radio == level.prevradio ) - continue; - if ( isdefined( level.prevradio2 ) && radio == level.prevradio2 ) - { - if ( level.radios.size > 2 ) - continue; - else - cost += 512; - } - - if ( !isdefined( lowestcost ) || cost < lowestcost ) - { - lowestcost = cost; - bestradio = radio; - } - } - - level.prevradio2 = level.prevradio; - level.prevradio = bestradio; - - return bestradio; -} - -onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration ) -{ - if ( !isPlayer( attacker ) || (!self.touchTriggers.size && !attacker.touchTriggers.size) || attacker.pers["team"] == self.pers["team"] ) - return; - - if ( self.touchTriggers.size ) - { - triggerIds = getArrayKeys( self.touchTriggers ); - ownerTeam = self.touchTriggers[triggerIds[0]].useObj.ownerTeam; - - if ( ownerTeam != "neutral" ) - { - team = self.pers["team"]; - if ( team == ownerTeam ) - { - attacker thread [[level.onXPEvent]]( "assault" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "assault", attacker ); - } - else - { - attacker thread [[level.onXPEvent]]( "defend" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "defend", attacker ); - } - } - } - - if ( attacker.touchTriggers.size ) - { - triggerIds = getArrayKeys( attacker.touchTriggers ); - ownerTeam = attacker.touchTriggers[triggerIds[0]].useObj.ownerTeam; - - if ( ownerTeam != "neutral" ) - { - team = attacker.pers["team"]; - if ( team == ownerTeam ) - { - attacker thread [[level.onXPEvent]]( "defend" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "defend", attacker ); - } - else - { - attacker thread [[level.onXPEvent]]( "assault" ); - maps\mp\gametypes\_globallogic::givePlayerScore( "assault", attacker ); - } - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\_utility; +#include maps\mp\gametypes\_hud_util; + +main() +{ + if ( getdvar("mapname") == "mp_background" ) + return; + + maps\mp\gametypes\_globallogic::init(); + maps\mp\gametypes\_callbacksetup::SetupCallbacks(); + maps\mp\gametypes\_globallogic::SetupCallbacks(); + + level.teamBased = true; + level.doPrematch = true; + level.overrideTeamScore = true; + level.onStartGameType = ::onStartGameType; + level.onSpawnPlayer = ::onSpawnPlayer; + level.onPlayerKilled = ::onPlayerKilled; + level.onRoundSwitch = ::onRoundSwitch; + + precacheShader( "compass_waypoint_captureneutral" ); + precacheShader( "compass_waypoint_capture" ); + precacheShader( "compass_waypoint_defend" ); + + precacheShader( "waypoint_targetneutral" ); + precacheShader( "waypoint_captureneutral" ); + precacheShader( "waypoint_capture" ); + precacheShader( "waypoint_defend" ); + + precacheString( &"MP_WAITING_FOR_HQ" ); + + level.hqAutoDestroyTime = getdvarint("koth_autodestroytime"); + level.hqSpawnTime = getdvarint("koth_spawntime"); + level.kothMode = getdvarint("koth_kothmode"); + level.captureTime = getdvarint("koth_captureTime"); + level.destroyTime = getdvarint("koth_destroyTime"); + level.delayPlayer = getdvarint("koth_delayPlayer"); + level.spawnDelay = getdvarint("koth_spawnDelay"); + + level.iconoffset = (0,0,32); + + level.onRespawnDelay = ::getRespawnDelay; +} + +updateObjectiveHintMessages( alliesObjective, axisObjective ) +{ + game["strings"]["objective_hint_allies"] = alliesObjective; + game["strings"]["objective_hint_axis"] = axisObjective; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + if ( isDefined( player.pers["team"] ) && player.pers["team"] != "spectator" ) + { + hintText = maps\mp\gametypes\_globallogic::getObjectiveHintText( player.pers["team"] ); + player thread maps\mp\gametypes\_hud_message::hintMessage( hintText ); + } + } +} + +getRespawnDelay() +{ + self.lowerMessageOverride = undefined; + + if ( !isDefined( level.radioObject ) ) + return undefined; + + hqOwningTeam = level.radioObject maps\mp\gametypes\_gameobjects::getOwnerTeam(); + if ( self.pers["team"] == hqOwningTeam ) + { + if ( !isDefined( level.hqDestroyTime ) ) + return undefined; + + timeRemaining = (level.hqDestroyTime - gettime()) / 1000; + + if (!level.spawnDelay ) + return undefined; + + if ( level.spawnDelay >= level.hqAutoDestroyTime ) + self.lowerMessageOverride = &"MP_WAITING_FOR_HQ"; + + if ( level.delayPlayer ) + return min( level.spawnDelay, timeRemaining ); + else + return (int(timeRemaining) % level.spawnDelay); + } +} + +onStartGameType() +{ + maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_KOTH" ); + maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_KOTH" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_KOTH_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_KOTH_SCORE" ); + + level.objectiveHintPrepareHQ = &"MP_CONTROL_HQ"; + level.objectiveHintCaptureHQ = &"MP_CAPTURE_HQ"; + level.objectiveHintDestroyHQ = &"MP_DESTROY_HQ"; + level.objectiveHintDefendHQ = &"MP_DEFEND_HQ"; + + precacheString( level.objectiveHintPrepareHQ ); + precacheString( level.objectiveHintCaptureHQ ); + precacheString( level.objectiveHintDestroyHQ ); + precacheString( level.objectiveHintDefendHQ ); + + if ( level.kothmode ) + level.objectiveHintDestroyHQ = level.objectiveHintCaptureHQ; + + if ( level.hqSpawnTime ) + updateObjectiveHintMessages( level.objectiveHintPrepareHQ, level.objectiveHintPrepareHQ ); + else + updateObjectiveHintMessages( level.objectiveHintCaptureHQ, level.objectiveHintCaptureHQ ); + + setClientNameMode("auto_change"); + + level.spawnMins = ( 0, 0, 0 ); + level.spawnMaxs = ( 0, 0, 0 ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" ); + + level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); + setMapCenter( level.mapCenter ); + + level.spawn_all = getentarray( "mp_tdm_spawn", "classname" ); + if ( !level.spawn_all.size ) + { + if ( isDefined( level.restarting ) ) + { + setdvar("g_gametype", "dm"); + setDvar( "o_gametype", "dm" ); + } + else + maps\mp\gametypes\_callbacksetup::AbortLevel(); + return; + } + + allowed[0] = "hq"; + maps\mp\gametypes\_gameobjects::main(allowed); + + thread SetupRadios(); + + thread HQMainLoop(); +} + +onRoundSwitch() +{ + level.halftimeType = "halftime"; +} + +HQMainLoop() +{ + level endon("game_ended"); + + level.hqRevealTime = -100000; + + hqSpawningInStr = &"MP_HQ_AVAILABLE_IN"; + if ( level.kothmode ) + { + hqDestroyedInFriendlyStr = &"MP_HQ_DESPAWN_IN"; + hqDestroyedInEnemyStr = &"MP_HQ_DESPAWN_IN"; + } + else + { + hqDestroyedInFriendlyStr = &"MP_HQ_REINFORCEMENTS_IN"; + hqDestroyedInEnemyStr = &"MP_HQ_DESPAWN_IN"; + } + + precacheString( hqSpawningInStr ); + precacheString( hqDestroyedInFriendlyStr ); + precacheString( hqDestroyedInEnemyStr ); + precacheString( &"MP_CAPTURING_HQ" ); + precacheString( &"MP_DESTROYING_HQ" ); + + if ( isDefined( game["promod_do_readyup"] ) && game["promod_do_readyup"] || game["PROMOD_MATCH_MODE"] == "strat") + return; + + while ( level.inPrematchPeriod ) + wait 0.05; + + wait 5; + + timerDisplay = []; + timerDisplay["allies"] = createServerTimer( "objective", 1.4, "allies" ); + timerDisplay["allies"] setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 ); + timerDisplay["allies"].label = hqSpawningInStr; + timerDisplay["allies"].alpha = 0; + timerDisplay["allies"].archived = false; + timerDisplay["allies"].hideWhenInMenu = true; + + timerDisplay["axis"] = createServerTimer( "objective", 1.4, "axis" ); + timerDisplay["axis"] setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 ); + timerDisplay["axis"].label = hqSpawningInStr; + timerDisplay["axis"].alpha = 0; + timerDisplay["axis"].archived = false; + timerDisplay["axis"].hideWhenInMenu = true; + + thread hideTimerDisplayOnGameEnd( timerDisplay["allies"] ); + thread hideTimerDisplayOnGameEnd( timerDisplay["axis"] ); + + locationObjID = maps\mp\gametypes\_gameobjects::getNextObjID(); + + objective_add( locationObjID, "invisible", (0,0,0) ); + + for(;;) + { + radio = PickRadioToSpawn(); + + iPrintLn( &"MP_HQ_REVEALED" ); + playSoundOnPlayers( "mp_suitcase_pickup" ); + + radioObject = radio.gameobject; + level.radioObject = radioObject; + + radioObject maps\mp\gametypes\_gameobjects::setModelVisibility( true ); + + level.hqRevealTime = gettime(); + + if ( level.hqSpawnTime ) + { + nextObjPoint = maps\mp\gametypes\_objpoints::createTeamObjpoint( "objpoint_next_hq", radio.origin + level.iconoffset, "all", "waypoint_targetneutral" ); + nextObjPoint setWayPoint( true, "waypoint_targetneutral" ); + objective_position( locationObjID, radio.trigorigin ); + objective_icon( locationObjID, "compass_waypoint_captureneutral" ); + objective_state( locationObjID, "active" ); + + updateObjectiveHintMessages( level.objectiveHintPrepareHQ, level.objectiveHintPrepareHQ ); + + timerDisplay["allies"].label = hqSpawningInStr; + timerDisplay["allies"] setTimer( level.hqSpawnTime ); + timerDisplay["allies"].alpha = 1; + timerDisplay["axis"].label = hqSpawningInStr; + timerDisplay["axis"] setTimer( level.hqSpawnTime ); + timerDisplay["axis"].alpha = 1; + + wait level.hqSpawnTime; + + maps\mp\gametypes\_objpoints::deleteObjPoint( nextObjPoint ); + objective_state( locationObjID, "invisible" ); + } + + timerDisplay["allies"].alpha = 0; + timerDisplay["axis"].alpha = 0; + + waittillframeend; + + updateObjectiveHintMessages( level.objectiveHintCaptureHQ, level.objectiveHintCaptureHQ ); + playSoundOnPlayers( "mp_killstreak_radar" ); + + radioObject maps\mp\gametypes\_gameobjects::enableObject(); + + radioObject maps\mp\gametypes\_gameobjects::allowUse( "any" ); + radioObject maps\mp\gametypes\_gameobjects::setUseTime( level.captureTime ); + radioObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_CAPTURING_HQ" ); + + radioObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" ); + radioObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" ); + radioObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); + radioObject maps\mp\gametypes\_gameobjects::setModelVisibility( true ); + + radioObject.onUse = ::onRadioCapture; + radioObject.onBeginUse = ::onBeginUse; + radioObject.onEndUse = ::onEndUse; + + level waittill( "hq_captured" ); + + ownerTeam = radioObject maps\mp\gametypes\_gameobjects::getOwnerTeam(); + otherTeam = getOtherTeam( ownerTeam ); + + if ( level.hqAutoDestroyTime ) + { + thread DestroyHQAfterTime( level.hqAutoDestroyTime ); + timerDisplay[ownerTeam] setTimer( level.hqAutoDestroyTime ); + timerDisplay[otherTeam] setTimer( level.hqAutoDestroyTime ); + } + else + level.hqDestroyedByTimer = false; + + for(;;) + { + ownerTeam = radioObject maps\mp\gametypes\_gameobjects::getOwnerTeam(); + otherTeam = getOtherTeam( ownerTeam ); + + if ( ownerTeam == "allies" ) + updateObjectiveHintMessages( level.objectiveHintDefendHQ, level.objectiveHintDestroyHQ ); + else + updateObjectiveHintMessages( level.objectiveHintDestroyHQ, level.objectiveHintDefendHQ ); + + radioObject maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); + radioObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" ); + radioObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" ); + radioObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" ); + radioObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" ); + + if ( !level.kothMode ) + radioObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DESTROYING_HQ" ); + + radioObject.onUse = ::onRadioDestroy; + + if ( level.hqAutoDestroyTime ) + { + timerDisplay[ownerTeam].label = hqDestroyedInFriendlyStr; + timerDisplay[ownerTeam].alpha = 1; + timerDisplay[otherTeam].label = hqDestroyedInEnemyStr; + timerDisplay[otherTeam].alpha = 1; + } + + level waittill( "hq_destroyed" ); + + if ( !level.kothmode || level.hqDestroyedByTimer ) + break; + + thread forceSpawnTeam( ownerTeam ); + + radioObject maps\mp\gametypes\_gameobjects::setOwnerTeam( getOtherTeam( ownerTeam ) ); + } + + level notify("hq_reset"); + + radioObject maps\mp\gametypes\_gameobjects::disableObject(); + radioObject maps\mp\gametypes\_gameobjects::allowUse( "none" ); + radioObject maps\mp\gametypes\_gameobjects::setOwnerTeam( "neutral" ); + radioObject maps\mp\gametypes\_gameobjects::setModelVisibility( false ); + + timerDisplay["allies"].alpha = 0; + timerDisplay["axis"].alpha = 0; + + level.radioObject = undefined; + + wait 0.05; + + thread forceSpawnTeam( ownerTeam ); + + wait 3; + } +} + +hideTimerDisplayOnGameEnd( timerDisplay ) +{ + level waittill("game_ended"); + timerDisplay.alpha = 0; +} + +forceSpawnTeam( team ) +{ + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + if ( !isdefined( player ) ) + continue; + + if ( player.pers["team"] == team ) + { + player.lowerMessageOverride = undefined; + player notify( "force_spawn" ); + wait 0.1; + } + } +} + +onBeginUse( player ) +{ + ownerTeam = self maps\mp\gametypes\_gameobjects::getOwnerTeam(); + + if ( ownerTeam == "neutral" ) + self.objPoints[player.pers["team"]] thread maps\mp\gametypes\_objpoints::startFlashing(); + else + { + self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::startFlashing(); + self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::startFlashing(); + } +} + +onEndUse( team, player, success ) +{ + self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::stopFlashing(); + self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::stopFlashing(); +} + +onRadioCapture( player ) +{ + team = player.pers["team"]; + + player thread [[level.onXPEvent]]( "capture" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "capture", player ); + + oldTeam = maps\mp\gametypes\_gameobjects::getOwnerTeam(); + self maps\mp\gametypes\_gameobjects::setOwnerTeam( team ); + if ( !level.kothMode ) + self maps\mp\gametypes\_gameobjects::setUseTime( level.destroyTime ); + + otherTeam = "axis"; + if ( team == "axis" ) + otherTeam = "allies"; + + thread printOnTeamArg( &"MP_HQ_CAPTURED_BY", team, player ); + thread printOnTeam( &"MP_HQ_CAPTURED_BY_ENEMY", otherTeam ); + thread playSoundOnPlayers( "mp_war_objective_taken", team ); + thread playSoundOnPlayers( "mp_war_objective_lost", otherTeam ); + + level thread awardHQPoints( team ); + + level notify( "hq_captured" ); + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "hq_captured" + player.name; + + logPrint("P_HQC;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); +} + +onRadioDestroy( player ) +{ + team = player.pers["team"]; + otherTeam = "axis"; + if ( team == "axis" ) + otherTeam = "allies"; + + player thread [[level.onXPEvent]]( "capture" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "capture", player ); + + if ( level.kothmode ) + { + thread printOnTeamArg( &"MP_HQ_CAPTURED_BY", team, player ); + thread printOnTeam( &"MP_HQ_CAPTURED_BY_ENEMY", otherTeam ); + } + else + { + thread printOnTeamArg( &"MP_HQ_DESTROYED_BY", team, player ); + thread printOnTeam( &"MP_HQ_DESTROYED_BY_ENEMY", otherTeam ); + } + thread playSoundOnPlayers( "mp_war_objective_taken", team ); + thread playSoundOnPlayers( "mp_war_objective_lost", otherTeam ); + + level notify( "hq_destroyed" ); + + if ( level.kothmode ) + level thread awardHQPoints( team ); + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "hq_destroyed" + player.name; + + logPrint("P_HQD;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); +} + +DestroyHQAfterTime( time ) +{ + level endon( "game_ended" ); + level endon( "hq_reset" ); + + level.hqDestroyTime = gettime() + time * 1000; + level.hqDestroyedByTimer = false; + + wait time; + + level.hqDestroyedByTimer = true; + level notify( "hq_destroyed" ); +} + +awardHQPoints( team ) +{ + level endon( "game_ended" ); + level endon( "hq_destroyed" ); + + level notify("awardHQPointsRunning"); + level endon("awardHQPointsRunning"); + + seconds = 5; + + while ( !level.gameEnded ) + { + [[level._setTeamScore]]( team, [[level._getTeamScore]]( team ) + seconds ); + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + if ( player.pers["team"] == team ) + { + player thread [[level.onXPEvent]]( "defend" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "defend", player ); + } + } + + wait seconds; + } +} + +onSpawnPlayer() +{ + spawnpoint = undefined; + + if ( isdefined( level.radioObject ) ) + { + hqOwningTeam = level.radioObject maps\mp\gametypes\_gameobjects::getOwnerTeam(); + if ( self.pers["team"] == hqOwningTeam ) + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, level.radioObject.nearSpawns ); + else if ( level.spawnDelay >= level.hqAutoDestroyTime && gettime() > level.hqRevealTime + 10000 ) + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all ); + else + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all, level.radioObject.outerSpawns ); + } + + if ( !isDefined( spawnpoint ) ) + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( level.spawn_all ); + + self.lowerMessageOverride = undefined; + + self spawn( spawnpoint.origin, spawnpoint.angles ); +} + +SetupRadios() +{ + radios = getentarray( "hq_hardpoint", "targetname" ); + + trigs = getentarray("radiotrigger", "targetname"); + for ( i = 0; i < radios.size; i++ ) + { + radio = radios[i]; + radio.trig = undefined; + for ( j = 0; j < trigs.size; j++ ) + { + if ( radio istouching( trigs[j] ) ) + { + radio.trig = trigs[j]; + break; + } + } + + radio.trigorigin = radio.trig.origin; + + visuals = []; + visuals[0] = radio; + + otherVisuals = getEntArray( radio.target, "targetname" ); + for ( j = 0; j < otherVisuals.size; j++ ) + visuals[visuals.size] = otherVisuals[j]; + + radio.gameObject = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", radio.trig, visuals, (radio.origin - radio.trigorigin) + level.iconoffset ); + radio.gameObject maps\mp\gametypes\_gameobjects::disableObject(); + radio.gameObject maps\mp\gametypes\_gameobjects::setModelVisibility( false ); + radio.trig.useObj = radio.gameObject; + + radio setUpNearbySpawns(); + } + + level.radios = radios; + + level.prevradio = undefined; + level.prevradio2 = undefined; + + return true; +} + +setUpNearbySpawns() +{ + spawns = level.spawn_all; + + for ( i = 0; i < spawns.size; i++ ) + spawns[i].distsq = distanceSquared( spawns[i].origin, self.origin ); + + for ( i = 1; i < spawns.size; i++ ) + { + thespawn = spawns[i]; + for ( j = i - 1; j >= 0 && thespawn.distsq < spawns[j].distsq; j-- ) + spawns[j + 1] = spawns[j]; + spawns[j + 1] = thespawn; + } + + first = []; + second = []; + third = []; + outer = []; + + thirdSize = spawns.size / 3; + for ( i = 0; i <= thirdSize; i++ ) + first[ first.size ] = spawns[i]; + for ( ; i < spawns.size; i++ ) + { + outer[ outer.size ] = spawns[i]; + if ( i <= (thirdSize*2) ) + second[ second.size ] = spawns[i]; + else + third[ third.size ] = spawns[i]; + } + + self.gameObject.nearSpawns = first; + self.gameObject.midSpawns = second; + self.gameObject.farSpawns = third; + self.gameObject.outerSpawns = outer; +} + +PickRadioToSpawn() +{ + avgpos["allies"] = (0,0,0); + avgpos["axis"] = (0,0,0); + num["allies"] = 0; + num["axis"] = 0; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + if ( isalive( player ) ) + { + avgpos[ player.pers["team"] ] += player.origin; + num[ player.pers["team"] ]++; + } + } + + if ( !num["allies"] || !num["axis"] ) + { + radio = level.radios[ randomint( level.radios.size) ]; + while ( isDefined( level.prevradio ) && radio == level.prevradio ) + radio = level.radios[ randomint( level.radios.size) ]; + + level.prevradio2 = level.prevradio; + level.prevradio = radio; + + return radio; + } + + avgpos["allies"] = avgpos["allies"] / num["allies"]; + avgpos["axis"] = avgpos["axis"] / num["axis"]; + + bestradio = undefined; + lowestcost = undefined; + for ( i = 0; i < level.radios.size; i++ ) + { + radio = level.radios[i]; + + cost = abs( distance( radio.origin, avgpos["allies"] ) - distance( radio.origin, avgpos["axis"] ) ); + + if ( isdefined( level.prevradio ) && radio == level.prevradio ) + continue; + if ( isdefined( level.prevradio2 ) && radio == level.prevradio2 ) + { + if ( level.radios.size > 2 ) + continue; + else + cost += 512; + } + + if ( !isdefined( lowestcost ) || cost < lowestcost ) + { + lowestcost = cost; + bestradio = radio; + } + } + + level.prevradio2 = level.prevradio; + level.prevradio = bestradio; + + return bestradio; +} + +onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration ) +{ + if ( !isPlayer( attacker ) || (!self.touchTriggers.size && !attacker.touchTriggers.size) || attacker.pers["team"] == self.pers["team"] ) + return; + + if ( self.touchTriggers.size ) + { + triggerIds = getArrayKeys( self.touchTriggers ); + ownerTeam = self.touchTriggers[triggerIds[0]].useObj.ownerTeam; + + if ( ownerTeam != "neutral" ) + { + team = self.pers["team"]; + if ( team == ownerTeam ) + { + attacker thread [[level.onXPEvent]]( "assault" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "assault", attacker ); + } + else + { + attacker thread [[level.onXPEvent]]( "defend" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "defend", attacker ); + } + } + } + + if ( attacker.touchTriggers.size ) + { + triggerIds = getArrayKeys( attacker.touchTriggers ); + ownerTeam = attacker.touchTriggers[triggerIds[0]].useObj.ownerTeam; + + if ( ownerTeam != "neutral" ) + { + team = attacker.pers["team"]; + if ( team == ownerTeam ) + { + attacker thread [[level.onXPEvent]]( "defend" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "defend", attacker ); + } + else + { + attacker thread [[level.onXPEvent]]( "assault" ); + maps\mp\gametypes\_globallogic::givePlayerScore( "assault", attacker ); + } + } + } +} diff --git a/maps/mp/gametypes/sab.gsc b/maps/mp/gametypes/sab.gsc index 3a42095..044f2d6 100644 --- a/maps/mp/gametypes/sab.gsc +++ b/maps/mp/gametypes/sab.gsc @@ -1,625 +1,625 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\_utility; - -main() -{ - if ( getdvar("mapname") == "mp_background" ) - return; - - maps\mp\gametypes\_globallogic::init(); - maps\mp\gametypes\_callbacksetup::SetupCallbacks(); - maps\mp\gametypes\_globallogic::SetupCallbacks(); - - level.teamBased = true; - level.overrideTeamScore = true; - - if ( !game["tiebreaker"] ) - { - level.onPrecacheGameType = ::onPrecacheGameType; - level.onStartGameType = ::onStartGameType; - level.onSpawnPlayer = ::onSpawnPlayer; - level.onTimeLimit = ::onTimeLimit; - level.onDeadEvent = ::onDeadEvent; - level.onRoundSwitch = ::onRoundSwitch; - level.endGameOnScoreLimit = false; - } - else - { - level.onStartGameType = ::onStartGameType; - level.onSpawnPlayer = ::onSpawnPlayer; - level.onEndGame = ::onEndGame; - level.endGameOnScoreLimit = false; - - level.numLives = 1; - level.timeLimit = 0; - } - - badtrig = getent( "sab_bomb_defuse_allies", "targetname" ); - if ( isdefined( badtrig ) ) - badtrig delete(); - - badtrig = getent( "sab_bomb_defuse_axis", "targetname" ); - if ( isdefined( badtrig ) ) - badtrig delete(); -} - -onPrecacheGameType() -{ - game["bomb_dropped_sound"] = "mp_war_objective_lost"; - game["bomb_recovered_sound"] = "mp_war_objective_taken"; - - precacheShader("waypoint_bomb"); - precacheShader("waypoint_kill"); - precacheShader("waypoint_bomb_enemy"); - precacheShader("waypoint_defend"); - precacheShader("waypoint_defuse"); - precacheShader("waypoint_target"); - precacheShader("compass_waypoint_bomb"); - precacheShader("compass_waypoint_defend"); - precacheShader("compass_waypoint_defuse"); - precacheShader("compass_waypoint_target"); - precacheShader("hud_suitcase_bomb"); - - precacheString(&"MP_EXPLOSIVES_RECOVERED_BY"); - precacheString(&"MP_EXPLOSIVES_DROPPED_BY"); - precacheString(&"MP_EXPLOSIVES_PLANTED_BY"); - precacheString(&"MP_EXPLOSIVES_DEFUSED_BY"); - precacheString(&"MP_YOU_HAVE_RECOVERED_THE_BOMB"); - precacheString(&"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES"); - precacheString(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES"); - precacheString(&"MP_PLANTING_EXPLOSIVE"); - precacheString(&"MP_DEFUSING_EXPLOSIVE"); - precacheString(&"MP_TARGET_DESTROYED"); - precacheString(&"MP_NO_RESPAWN"); - precacheString(&"MP_TIE_BREAKER"); - precacheString(&"MP_NO_RESPAWN"); - precacheString(&"MP_SUDDEN_DEATH"); -} - -onRoundSwitch() -{ - if ( game["teamScores"]["allies"] == level.scorelimit - 1 && game["teamScores"]["axis"] == level.scorelimit - 1 ) - { - level.halftimeType = "overtime"; - level.halftimeSubCaption = &"MP_TIE_BREAKER"; - game["tiebreaker"] = true; - } - else - level.halftimeType = "halftime"; -} - -onStartGameType() -{ - setClientNameMode("auto_change"); - - game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED"; - - if ( !game["tiebreaker"] ) - { - maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_SAB" ); - maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_SAB" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_SAB_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_SAB_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_SAB_HINT" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_SAB_HINT" ); - } - else - { - maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_WAR" ); - maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_WAR" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_WAR_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_WAR_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_WAR_HINT" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_WAR_HINT" ); - } - - level.spawnMins = ( 0, 0, 0 ); - level.spawnMaxs = ( 0, 0, 0 ); - maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sab_spawn_allies_start" ); - maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sab_spawn_axis_start" ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_sab_spawn_allies" ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_sab_spawn_axis" ); - - level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); - setMapCenter( level.mapCenter ); - - level.spawn_axis = getentarray("mp_sab_spawn_axis", "classname"); - level.spawn_allies = getentarray("mp_sab_spawn_allies", "classname"); - level.spawn_axis_start = getentarray("mp_sab_spawn_axis_start", "classname"); - level.spawn_allies_start = getentarray("mp_sab_spawn_allies_start", "classname"); - - if ( game["tiebreaker"] ) - { - allowed[0] = "war"; - maps\mp\gametypes\_gameobjects::main(allowed); - return; - } - - allowed[0] = "sab"; - maps\mp\gametypes\_gameobjects::main(allowed); - - thread updateGametypeDvars(); - - thread sabotage(); -} - -onTimeLimit() -{ - if ( level.inOvertime ) - return; - - thread onOvertime(); -} - -onOvertime() -{ - level endon ( "game_ended" ); - - level.timeLimitOverride = true; - level.inOvertime = true; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - player notify("force_spawn"); - player thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_SUDDEN_DEATH", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" ); - player setClientDvar( "g_compassShowEnemies", 1 ); - } - - waitTime = 0; - while ( waitTime < 90 ) - { - if ( !level.bombPlanted ) - { - waitTime += 1; - setGameEndTime( getTime() + ((90-waitTime)*1000) ); - } - wait 1; - } - - thread maps\mp\gametypes\_globallogic::endGame( "tie", game["strings"]["tie"] ); -} - -onDeadEvent( team ) -{ - if ( level.bombExploded ) - return; - - if ( team == "all" ) - { - if ( level.bombPlanted ) - { - [[level._setTeamScore]]( level.bombPlantedBy, [[level._getTeamScore]]( level.bombPlantedBy ) + 1 ); - thread maps\mp\gametypes\_globallogic::endGame( level.bombPlantedBy, game["strings"][level.bombPlantedBy+"_mission_accomplished"] ); - } - else - thread maps\mp\gametypes\_globallogic::endGame( "tie", game["strings"]["tie"] ); - } - else if ( level.bombPlanted ) - { - if ( team == level.bombPlantedBy ) - { - level.plantingTeamDead = true; - return; - } - - [[level._setTeamScore]]( level.bombPlantedBy, [[level._getTeamScore]]( level.bombPlantedBy ) + 1 ); - thread maps\mp\gametypes\_globallogic::endGame( level.bombPlantedBy, game["strings"][level.otherTeam[level.bombPlantedBy]+"_eliminated"] ); - } - else - { - [[level._setTeamScore]]( level.otherTeam[team], [[level._getTeamScore]]( level.otherTeam[team] ) + 1 ); - thread maps\mp\gametypes\_globallogic::endGame( level.otherTeam[team], game["strings"][team+"_eliminated"] ); - } -} - -onSpawnPlayer() -{ - self.isPlanting = false; - self.isDefusing = false; - - spawnteam = self.pers["team"]; - - if ( level.useStartSpawns ) - { - if (spawnteam == "axis") - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_axis_start); - else - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_allies_start); - } - else - { - if (spawnteam == "axis") - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam(level.spawn_axis); - else - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam(level.spawn_allies); - } - - if ( game["tiebreaker"] ) - { - self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_TIE_BREAKER", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" ); - - hintMessage = maps\mp\gametypes\_globallogic::getObjectiveHintText( self.pers["team"] ); - if ( isDefined( hintMessage ) ) - self thread maps\mp\gametypes\_hud_message::hintMessage( hintMessage ); - - self setClientDvar( "g_compassShowEnemies", 1 ); - } - - self spawn( spawnpoint.origin, spawnpoint.angles ); -} - -updateGametypeDvars() -{ - level.plantTime = dvarFloatValue( "planttime", 5, 0, 20 ); - level.defuseTime = dvarFloatValue( "defusetime", 5, 0, 20 ); - level.bombTimer = dvarFloatValue( "bombtimer", 45, 1, 300 ); - level.hotPotato = dvarIntValue( "hotpotato", 1, 0, 1 ); -} - -sabotage() -{ - level.bombPlanted = false; - level.bombExploded = false; - - level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion"); - - trigger = getEnt( "sab_bomb_pickup_trig", "targetname" ); - if ( !isDefined( trigger ) ) - return; - - visuals[0] = getEnt( "sab_bomb", "targetname" ); - if ( !isDefined( visuals[0] ) ) - return; - - precacheModel( "prop_suitcase_bomb" ); - visuals[0] setModel( "prop_suitcase_bomb" ); - - if ( ( !isDefined( game["promod_do_readyup"] ) || isDefined( game["promod_do_readyup"] ) && !game["promod_do_readyup"] ) && ( !isDefined( game["PROMOD_MATCH_MODE"] ) || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "strat" ) ) - { - level.sabBomb = maps\mp\gametypes\_gameobjects::createCarryObject( "neutral", trigger, visuals, (0,0,32) ); - level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "any" ); - level.sabBomb maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_bomb" ); - level.sabBomb maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_bomb" ); - level.sabBomb maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" ); - level.sabBomb maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" ); - level.sabBomb maps\mp\gametypes\_gameobjects::setCarryIcon( "hud_suitcase_bomb" ); - level.sabBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); - level.sabBomb.objIDPingEnemy = true; - level.sabBomb.onPickup = ::onPickup; - level.sabBomb.onDrop = ::onDrop; - level.sabBomb.objPoints["allies"].archived = true; - level.sabBomb.objPoints["axis"].archived = true; - level.sabBomb.autoResetTime = 60; - } - else - { - trigger delete(); - visuals[0] delete(); - } - - if ( !isDefined( getEnt( "sab_bomb_axis", "targetname" ) ) || !isDefined( getEnt( "sab_bomb_allies", "targetname" ) ) ) - return; - - level.bombZones["allies"] = createBombZone( "allies", getEnt( "sab_bomb_allies", "targetname" ) ); - level.bombZones["axis"] = createBombZone( "axis", getEnt( "sab_bomb_axis", "targetname" ) ); -} - -createBombZone( team, trigger ) -{ - visuals = getEntArray( trigger.target, "targetname" ); - - bombZone = maps\mp\gametypes\_gameobjects::createUseObject( team, trigger, visuals, (0,0,64) ); - bombZone resetBombsite(); - bombZone.onUse = ::onUse; - bombZone.onBeginUse = ::onBeginUse; - bombZone.onEndUse = ::onEndUse; - bombZone.onCantUse = ::onCantUse; - - for ( i = 0; i < visuals.size; i++ ) - { - if ( isDefined( visuals[i].script_exploder ) ) - { - bombZone.exploderIndex = visuals[i].script_exploder; - break; - } - } - - return bombZone; -} - -onBeginUse( player ) -{ - if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) - { - player playSound( "mp_bomb_plant" ); - player.isPlanting = true; - } - else - { - player playSound( "mp_bomb_defuse" ); - player.isDefusing = true; - } -} - -onEndUse( team, player, result ) -{ - if ( isAlive( player ) ) - { - player.isDefusing = false; - player.isPlanting = false; - } -} - -onPickup( player ) -{ - level notify ( "bomb_picked_up" ); - - self.autoResetTime = 60; - - level.useStartSpawns = false; - - team = player.pers["team"]; - - if ( team == "allies" ) - otherTeam = "axis"; - else - otherTeam = "allies"; - - player playLocalSound( "mp_suitcase_pickup" ); - - if ( isDefined( level.scorebot ) && level.scorebot && isDefined( player ) && isDefined( player.name ) ) - game["promod_scorebot_ticker_buffer"] += "pickup_bomb" + player.name; - - excludeList[0] = player; - - if ( team == self maps\mp\gametypes\_gameobjects::getOwnerTeam() ) - { - printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", team, player ); - playSoundOnPlayers( game["bomb_recovered_sound"], team ); - } - else - { - printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", team, player ); - playSoundOnPlayers( game["bomb_recovered_sound"] ); - } - - self maps\mp\gametypes\_gameobjects::setOwnerTeam( team ); - self maps\mp\gametypes\_gameobjects::setVisibleTeam( "friendly" ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" ); - self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_kill" ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" ); - self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" ); - - level.bombZones[team] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); - level.bombZones[otherTeam] maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); -} - -onDrop( player ) -{ - if ( !level.bombPlanted ) - { - if ( isDefined( player ) ) - printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", self maps\mp\gametypes\_gameobjects::getOwnerTeam(), player ); - - if ( isDefined( level.scorebot ) && level.scorebot && isDefined( player ) && isDefined( player.name ) ) - game["promod_scorebot_ticker_buffer"] += "dropped_bomb" + player.name; - - playSoundOnPlayers( game["bomb_dropped_sound"], self maps\mp\gametypes\_gameobjects::getOwnerTeam() ); - - thread abandonmentThink(); - } -} - -abandonmentThink() -{ - level endon ( "bomb_picked_up" ); - - if ( isDefined( self.carrier ) ) - return; - - if ( self maps\mp\gametypes\_gameobjects::getOwnerTeam() == "allies" ) - otherTeam = "axis"; - else - otherTeam = "allies"; - - playSoundOnPlayers( game["bomb_dropped_sound"], otherTeam ); - - self maps\mp\gametypes\_gameobjects::setOwnerTeam( "neutral" ); - self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_bomb" ); - self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_bomb" ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" ); - self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" ); - - level.bombZones["allies"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); - level.bombZones["axis"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); -} - -onUse( player ) -{ - team = player.pers["team"]; - otherTeam = level.otherTeam[team]; - - if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) - { - if ( !level.hardcoreMode ) - iPrintLn( &"MP_EXPLOSIVES_PLANTED_BY", player.name ); - - maps\mp\gametypes\_globallogic::givePlayerScore( "plant", player ); - - playSoundOnPlayers("promod_planted"); - - player thread [[level.onXPEvent]]( "plant" ); - level thread bombPlanted( self, player.pers["team"] ); - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "planted_by" + player.name; - - logPrint("P_P;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); - - level.bombOwner = player; - - level.sabBomb.autoResetTime = undefined; - level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" ); - level.sabBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); - level.sabBomb maps\mp\gametypes\_gameobjects::setDropped(); - - self setUpForDefusing(); - } - else - { - level notify ( "bomb_defused" ); - - if ( !level.hardcoreMode ) - iPrintLn( &"MP_EXPLOSIVES_DEFUSED_BY", player.name ); - - maps\mp\gametypes\_globallogic::givePlayerScore( "defuse", player ); - - playSoundOnPlayers("promod_defused"); - - player thread [[level.onXPEvent]]( "defuse" ); - level thread bombDefused( self ); - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "defused_by" + player.name; - - logPrint("P_D;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); - - if ( level.inOverTime && isDefined( level.plantingTeamDead ) ) - { - thread maps\mp\gametypes\_globallogic::endGame( player.pers["team"], game["strings"][level.bombPlantedBy+"_eliminated"] ); - return; - } - - self resetBombsite(); - - level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "any" ); - level.sabBomb maps\mp\gametypes\_gameobjects::setPickedUp( player ); - } -} - -onCantUse( player ) -{ - player iPrintLnBold( &"MP_CANT_PLANT_WITHOUT_BOMB" ); -} - -bombPlanted( destroyedObj, team ) -{ - maps\mp\gametypes\_globallogic::pauseTimer(); - level.bombPlanted = true; - level.bombPlantedBy = team; - level.timeLimitOverride = true; - setDvar( "ui_bomb_timer", 1 ); - - setGameEndTime( int( getTime() + (level.bombTimer * 1000) ) ); - - destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic::playTickingSound(); - - starttime = gettime(); - bombTimerWait(); - - setDvar( "ui_bomb_timer", 0 ); - destroyedObj.visuals[0] maps\mp\gametypes\_globallogic::stopTickingSound(); - - if ( !level.bombPlanted ) - { - if ( level.hotPotato ) - { - timePassed = (gettime() - starttime) / 1000; - level.bombTimer -= timePassed; - } - return; - } - - explosionOrigin = level.sabBomb.visuals[0].origin; - level.bombExploded = true; - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "bomb_exploded"; - - if ( isdefined( level.bombowner ) ) - destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, level.bombowner ); - else - destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20 ); - - rot = randomfloat(360); - explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) ); - triggerFx( explosionEffect ); - - thread playSoundinSpace( "exp_suitcase_bomb_main", explosionOrigin ); - - [[level._setTeamScore]]( team, [[level._getTeamScore]]( team ) + 1 ); - - setGameEndTime( 0 ); - - wait 3; - - for ( i = 0; i < level.players.size; i++ ) - level.players[i] playLocalSound("promod_destroyed"); - - thread maps\mp\gametypes\_globallogic::endGame( team, game["strings"]["target_destroyed"] ); -} - -playSoundinSpace( alias, origin ) -{ - org = spawn( "script_origin", origin ); - org.origin = origin; - org playSound( alias ); - wait 10; - org delete(); -} - -bombTimerWait() -{ - level endon("bomb_defused"); - wait level.bombTimer; -} - -resetBombsite() -{ - self maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); - self maps\mp\gametypes\_gameobjects::setUseTime( level.plantTime ); - self maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" ); - self maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" ); - self maps\mp\gametypes\_gameobjects::setKeyObject( level.sabBomb ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" ); - self maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); -} - -setUpForDefusing() -{ - self maps\mp\gametypes\_gameobjects::allowUse( "friendly" ); - self maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime ); - self maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" ); - self maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" ); - self maps\mp\gametypes\_gameobjects::setKeyObject( undefined ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" ); - self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" ); - self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); -} - -bombDefused( object ) -{ - setDvar( "ui_bomb_timer", 0 ); - maps\mp\gametypes\_globallogic::resumeTimer(); - level.bombPlanted = false; - if ( !level.inOvertime ) - level.timeLimitOverride = false; -} - -onEndGame( winningTeam ) -{ - if ( isdefined( winningTeam ) && (winningTeam == "allies" || winningTeam == "axis") ) - [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\_utility; + +main() +{ + if ( getdvar("mapname") == "mp_background" ) + return; + + maps\mp\gametypes\_globallogic::init(); + maps\mp\gametypes\_callbacksetup::SetupCallbacks(); + maps\mp\gametypes\_globallogic::SetupCallbacks(); + + level.teamBased = true; + level.overrideTeamScore = true; + + if ( !game["tiebreaker"] ) + { + level.onPrecacheGameType = ::onPrecacheGameType; + level.onStartGameType = ::onStartGameType; + level.onSpawnPlayer = ::onSpawnPlayer; + level.onTimeLimit = ::onTimeLimit; + level.onDeadEvent = ::onDeadEvent; + level.onRoundSwitch = ::onRoundSwitch; + level.endGameOnScoreLimit = false; + } + else + { + level.onStartGameType = ::onStartGameType; + level.onSpawnPlayer = ::onSpawnPlayer; + level.onEndGame = ::onEndGame; + level.endGameOnScoreLimit = false; + + level.numLives = 1; + level.timeLimit = 0; + } + + badtrig = getent( "sab_bomb_defuse_allies", "targetname" ); + if ( isdefined( badtrig ) ) + badtrig delete(); + + badtrig = getent( "sab_bomb_defuse_axis", "targetname" ); + if ( isdefined( badtrig ) ) + badtrig delete(); +} + +onPrecacheGameType() +{ + game["bomb_dropped_sound"] = "mp_war_objective_lost"; + game["bomb_recovered_sound"] = "mp_war_objective_taken"; + + precacheShader("waypoint_bomb"); + precacheShader("waypoint_kill"); + precacheShader("waypoint_bomb_enemy"); + precacheShader("waypoint_defend"); + precacheShader("waypoint_defuse"); + precacheShader("waypoint_target"); + precacheShader("compass_waypoint_bomb"); + precacheShader("compass_waypoint_defend"); + precacheShader("compass_waypoint_defuse"); + precacheShader("compass_waypoint_target"); + precacheShader("hud_suitcase_bomb"); + + precacheString(&"MP_EXPLOSIVES_RECOVERED_BY"); + precacheString(&"MP_EXPLOSIVES_DROPPED_BY"); + precacheString(&"MP_EXPLOSIVES_PLANTED_BY"); + precacheString(&"MP_EXPLOSIVES_DEFUSED_BY"); + precacheString(&"MP_YOU_HAVE_RECOVERED_THE_BOMB"); + precacheString(&"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES"); + precacheString(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES"); + precacheString(&"MP_PLANTING_EXPLOSIVE"); + precacheString(&"MP_DEFUSING_EXPLOSIVE"); + precacheString(&"MP_TARGET_DESTROYED"); + precacheString(&"MP_NO_RESPAWN"); + precacheString(&"MP_TIE_BREAKER"); + precacheString(&"MP_NO_RESPAWN"); + precacheString(&"MP_SUDDEN_DEATH"); +} + +onRoundSwitch() +{ + if ( game["teamScores"]["allies"] == level.scorelimit - 1 && game["teamScores"]["axis"] == level.scorelimit - 1 ) + { + level.halftimeType = "overtime"; + level.halftimeSubCaption = &"MP_TIE_BREAKER"; + game["tiebreaker"] = true; + } + else + level.halftimeType = "halftime"; +} + +onStartGameType() +{ + setClientNameMode("auto_change"); + + game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED"; + + if ( !game["tiebreaker"] ) + { + maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_SAB" ); + maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_SAB" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_SAB_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_SAB_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_SAB_HINT" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_SAB_HINT" ); + } + else + { + maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_WAR" ); + maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_WAR" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_WAR_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_WAR_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_WAR_HINT" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_WAR_HINT" ); + } + + level.spawnMins = ( 0, 0, 0 ); + level.spawnMaxs = ( 0, 0, 0 ); + maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sab_spawn_allies_start" ); + maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sab_spawn_axis_start" ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_sab_spawn_allies" ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_sab_spawn_axis" ); + + level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); + setMapCenter( level.mapCenter ); + + level.spawn_axis = getentarray("mp_sab_spawn_axis", "classname"); + level.spawn_allies = getentarray("mp_sab_spawn_allies", "classname"); + level.spawn_axis_start = getentarray("mp_sab_spawn_axis_start", "classname"); + level.spawn_allies_start = getentarray("mp_sab_spawn_allies_start", "classname"); + + if ( game["tiebreaker"] ) + { + allowed[0] = "war"; + maps\mp\gametypes\_gameobjects::main(allowed); + return; + } + + allowed[0] = "sab"; + maps\mp\gametypes\_gameobjects::main(allowed); + + thread updateGametypeDvars(); + + thread sabotage(); +} + +onTimeLimit() +{ + if ( level.inOvertime ) + return; + + thread onOvertime(); +} + +onOvertime() +{ + level endon ( "game_ended" ); + + level.timeLimitOverride = true; + level.inOvertime = true; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + player notify("force_spawn"); + player thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_SUDDEN_DEATH", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" ); + player setClientDvar( "g_compassShowEnemies", 1 ); + } + + waitTime = 0; + while ( waitTime < 90 ) + { + if ( !level.bombPlanted ) + { + waitTime += 1; + setGameEndTime( getTime() + ((90-waitTime)*1000) ); + } + wait 1; + } + + thread maps\mp\gametypes\_globallogic::endGame( "tie", game["strings"]["tie"] ); +} + +onDeadEvent( team ) +{ + if ( level.bombExploded ) + return; + + if ( team == "all" ) + { + if ( level.bombPlanted ) + { + [[level._setTeamScore]]( level.bombPlantedBy, [[level._getTeamScore]]( level.bombPlantedBy ) + 1 ); + thread maps\mp\gametypes\_globallogic::endGame( level.bombPlantedBy, game["strings"][level.bombPlantedBy+"_mission_accomplished"] ); + } + else + thread maps\mp\gametypes\_globallogic::endGame( "tie", game["strings"]["tie"] ); + } + else if ( level.bombPlanted ) + { + if ( team == level.bombPlantedBy ) + { + level.plantingTeamDead = true; + return; + } + + [[level._setTeamScore]]( level.bombPlantedBy, [[level._getTeamScore]]( level.bombPlantedBy ) + 1 ); + thread maps\mp\gametypes\_globallogic::endGame( level.bombPlantedBy, game["strings"][level.otherTeam[level.bombPlantedBy]+"_eliminated"] ); + } + else + { + [[level._setTeamScore]]( level.otherTeam[team], [[level._getTeamScore]]( level.otherTeam[team] ) + 1 ); + thread maps\mp\gametypes\_globallogic::endGame( level.otherTeam[team], game["strings"][team+"_eliminated"] ); + } +} + +onSpawnPlayer() +{ + self.isPlanting = false; + self.isDefusing = false; + + spawnteam = self.pers["team"]; + + if ( level.useStartSpawns ) + { + if (spawnteam == "axis") + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_axis_start); + else + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_allies_start); + } + else + { + if (spawnteam == "axis") + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam(level.spawn_axis); + else + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam(level.spawn_allies); + } + + if ( game["tiebreaker"] ) + { + self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_TIE_BREAKER", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" ); + + hintMessage = maps\mp\gametypes\_globallogic::getObjectiveHintText( self.pers["team"] ); + if ( isDefined( hintMessage ) ) + self thread maps\mp\gametypes\_hud_message::hintMessage( hintMessage ); + + self setClientDvar( "g_compassShowEnemies", 1 ); + } + + self spawn( spawnpoint.origin, spawnpoint.angles ); +} + +updateGametypeDvars() +{ + level.plantTime = dvarFloatValue( "planttime", 5, 0, 20 ); + level.defuseTime = dvarFloatValue( "defusetime", 5, 0, 20 ); + level.bombTimer = dvarFloatValue( "bombtimer", 45, 1, 300 ); + level.hotPotato = dvarIntValue( "hotpotato", 1, 0, 1 ); +} + +sabotage() +{ + level.bombPlanted = false; + level.bombExploded = false; + + level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion"); + + trigger = getEnt( "sab_bomb_pickup_trig", "targetname" ); + if ( !isDefined( trigger ) ) + return; + + visuals[0] = getEnt( "sab_bomb", "targetname" ); + if ( !isDefined( visuals[0] ) ) + return; + + precacheModel( "prop_suitcase_bomb" ); + visuals[0] setModel( "prop_suitcase_bomb" ); + + if ( ( !isDefined( game["promod_do_readyup"] ) || isDefined( game["promod_do_readyup"] ) && !game["promod_do_readyup"] ) && ( !isDefined( game["PROMOD_MATCH_MODE"] ) || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "strat" ) ) + { + level.sabBomb = maps\mp\gametypes\_gameobjects::createCarryObject( "neutral", trigger, visuals, (0,0,32) ); + level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "any" ); + level.sabBomb maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_bomb" ); + level.sabBomb maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_bomb" ); + level.sabBomb maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" ); + level.sabBomb maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" ); + level.sabBomb maps\mp\gametypes\_gameobjects::setCarryIcon( "hud_suitcase_bomb" ); + level.sabBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); + level.sabBomb.objIDPingEnemy = true; + level.sabBomb.onPickup = ::onPickup; + level.sabBomb.onDrop = ::onDrop; + level.sabBomb.objPoints["allies"].archived = true; + level.sabBomb.objPoints["axis"].archived = true; + level.sabBomb.autoResetTime = 60; + } + else + { + trigger delete(); + visuals[0] delete(); + } + + if ( !isDefined( getEnt( "sab_bomb_axis", "targetname" ) ) || !isDefined( getEnt( "sab_bomb_allies", "targetname" ) ) ) + return; + + level.bombZones["allies"] = createBombZone( "allies", getEnt( "sab_bomb_allies", "targetname" ) ); + level.bombZones["axis"] = createBombZone( "axis", getEnt( "sab_bomb_axis", "targetname" ) ); +} + +createBombZone( team, trigger ) +{ + visuals = getEntArray( trigger.target, "targetname" ); + + bombZone = maps\mp\gametypes\_gameobjects::createUseObject( team, trigger, visuals, (0,0,64) ); + bombZone resetBombsite(); + bombZone.onUse = ::onUse; + bombZone.onBeginUse = ::onBeginUse; + bombZone.onEndUse = ::onEndUse; + bombZone.onCantUse = ::onCantUse; + + for ( i = 0; i < visuals.size; i++ ) + { + if ( isDefined( visuals[i].script_exploder ) ) + { + bombZone.exploderIndex = visuals[i].script_exploder; + break; + } + } + + return bombZone; +} + +onBeginUse( player ) +{ + if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) + { + player playSound( "mp_bomb_plant" ); + player.isPlanting = true; + } + else + { + player playSound( "mp_bomb_defuse" ); + player.isDefusing = true; + } +} + +onEndUse( team, player, result ) +{ + if ( isAlive( player ) ) + { + player.isDefusing = false; + player.isPlanting = false; + } +} + +onPickup( player ) +{ + level notify ( "bomb_picked_up" ); + + self.autoResetTime = 60; + + level.useStartSpawns = false; + + team = player.pers["team"]; + + if ( team == "allies" ) + otherTeam = "axis"; + else + otherTeam = "allies"; + + player playLocalSound( "mp_suitcase_pickup" ); + + if ( isDefined( level.scorebot ) && level.scorebot && isDefined( player ) && isDefined( player.name ) ) + game["promod_scorebot_ticker_buffer"] += "pickup_bomb" + player.name; + + excludeList[0] = player; + + if ( team == self maps\mp\gametypes\_gameobjects::getOwnerTeam() ) + { + printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", team, player ); + playSoundOnPlayers( game["bomb_recovered_sound"], team ); + } + else + { + printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", team, player ); + playSoundOnPlayers( game["bomb_recovered_sound"] ); + } + + self maps\mp\gametypes\_gameobjects::setOwnerTeam( team ); + self maps\mp\gametypes\_gameobjects::setVisibleTeam( "friendly" ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" ); + self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_kill" ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" ); + self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" ); + + level.bombZones[team] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); + level.bombZones[otherTeam] maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); +} + +onDrop( player ) +{ + if ( !level.bombPlanted ) + { + if ( isDefined( player ) ) + printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", self maps\mp\gametypes\_gameobjects::getOwnerTeam(), player ); + + if ( isDefined( level.scorebot ) && level.scorebot && isDefined( player ) && isDefined( player.name ) ) + game["promod_scorebot_ticker_buffer"] += "dropped_bomb" + player.name; + + playSoundOnPlayers( game["bomb_dropped_sound"], self maps\mp\gametypes\_gameobjects::getOwnerTeam() ); + + thread abandonmentThink(); + } +} + +abandonmentThink() +{ + level endon ( "bomb_picked_up" ); + + if ( isDefined( self.carrier ) ) + return; + + if ( self maps\mp\gametypes\_gameobjects::getOwnerTeam() == "allies" ) + otherTeam = "axis"; + else + otherTeam = "allies"; + + playSoundOnPlayers( game["bomb_dropped_sound"], otherTeam ); + + self maps\mp\gametypes\_gameobjects::setOwnerTeam( "neutral" ); + self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_bomb" ); + self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_bomb" ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" ); + self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" ); + + level.bombZones["allies"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); + level.bombZones["axis"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); +} + +onUse( player ) +{ + team = player.pers["team"]; + otherTeam = level.otherTeam[team]; + + if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) + { + if ( !level.hardcoreMode ) + iPrintLn( &"MP_EXPLOSIVES_PLANTED_BY", player.name ); + + maps\mp\gametypes\_globallogic::givePlayerScore( "plant", player ); + + playSoundOnPlayers("promod_planted"); + + player thread [[level.onXPEvent]]( "plant" ); + level thread bombPlanted( self, player.pers["team"] ); + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "planted_by" + player.name; + + logPrint("P_P;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); + + level.bombOwner = player; + + level.sabBomb.autoResetTime = undefined; + level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" ); + level.sabBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); + level.sabBomb maps\mp\gametypes\_gameobjects::setDropped(); + + self setUpForDefusing(); + } + else + { + level notify ( "bomb_defused" ); + + if ( !level.hardcoreMode ) + iPrintLn( &"MP_EXPLOSIVES_DEFUSED_BY", player.name ); + + maps\mp\gametypes\_globallogic::givePlayerScore( "defuse", player ); + + playSoundOnPlayers("promod_defused"); + + player thread [[level.onXPEvent]]( "defuse" ); + level thread bombDefused( self ); + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "defused_by" + player.name; + + logPrint("P_D;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); + + if ( level.inOverTime && isDefined( level.plantingTeamDead ) ) + { + thread maps\mp\gametypes\_globallogic::endGame( player.pers["team"], game["strings"][level.bombPlantedBy+"_eliminated"] ); + return; + } + + self resetBombsite(); + + level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "any" ); + level.sabBomb maps\mp\gametypes\_gameobjects::setPickedUp( player ); + } +} + +onCantUse( player ) +{ + player iPrintLnBold( &"MP_CANT_PLANT_WITHOUT_BOMB" ); +} + +bombPlanted( destroyedObj, team ) +{ + maps\mp\gametypes\_globallogic::pauseTimer(); + level.bombPlanted = true; + level.bombPlantedBy = team; + level.timeLimitOverride = true; + setDvar( "ui_bomb_timer", 1 ); + + setGameEndTime( int( getTime() + (level.bombTimer * 1000) ) ); + + destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic::playTickingSound(); + + starttime = gettime(); + bombTimerWait(); + + setDvar( "ui_bomb_timer", 0 ); + destroyedObj.visuals[0] maps\mp\gametypes\_globallogic::stopTickingSound(); + + if ( !level.bombPlanted ) + { + if ( level.hotPotato ) + { + timePassed = (gettime() - starttime) / 1000; + level.bombTimer -= timePassed; + } + return; + } + + explosionOrigin = level.sabBomb.visuals[0].origin; + level.bombExploded = true; + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "bomb_exploded"; + + if ( isdefined( level.bombowner ) ) + destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, level.bombowner ); + else + destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20 ); + + rot = randomfloat(360); + explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) ); + triggerFx( explosionEffect ); + + thread playSoundinSpace( "exp_suitcase_bomb_main", explosionOrigin ); + + [[level._setTeamScore]]( team, [[level._getTeamScore]]( team ) + 1 ); + + setGameEndTime( 0 ); + + wait 3; + + for ( i = 0; i < level.players.size; i++ ) + level.players[i] playLocalSound("promod_destroyed"); + + thread maps\mp\gametypes\_globallogic::endGame( team, game["strings"]["target_destroyed"] ); +} + +playSoundinSpace( alias, origin ) +{ + org = spawn( "script_origin", origin ); + org.origin = origin; + org playSound( alias ); + wait 10; + org delete(); +} + +bombTimerWait() +{ + level endon("bomb_defused"); + wait level.bombTimer; +} + +resetBombsite() +{ + self maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); + self maps\mp\gametypes\_gameobjects::setUseTime( level.plantTime ); + self maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" ); + self maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" ); + self maps\mp\gametypes\_gameobjects::setKeyObject( level.sabBomb ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" ); + self maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); +} + +setUpForDefusing() +{ + self maps\mp\gametypes\_gameobjects::allowUse( "friendly" ); + self maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime ); + self maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" ); + self maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" ); + self maps\mp\gametypes\_gameobjects::setKeyObject( undefined ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" ); + self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" ); + self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); +} + +bombDefused( object ) +{ + setDvar( "ui_bomb_timer", 0 ); + maps\mp\gametypes\_globallogic::resumeTimer(); + level.bombPlanted = false; + if ( !level.inOvertime ) + level.timeLimitOverride = false; +} + +onEndGame( winningTeam ) +{ + if ( isdefined( winningTeam ) && (winningTeam == "allies" || winningTeam == "axis") ) + [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 ); +} diff --git a/maps/mp/gametypes/sd.gsc b/maps/mp/gametypes/sd.gsc index 5bf2001..4b611b3 100644 --- a/maps/mp/gametypes/sd.gsc +++ b/maps/mp/gametypes/sd.gsc @@ -1,584 +1,584 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\_utility; -#include maps\mp\gametypes\_hud_util; - -main() -{ - if(getdvar("mapname") == "mp_background") - return; - - maps\mp\gametypes\_globallogic::init(); - maps\mp\gametypes\_callbacksetup::SetupCallbacks(); - maps\mp\gametypes\_globallogic::SetupCallbacks(); - - level.teamBased = true; - level.overrideTeamScore = true; - level.onPrecacheGameType = ::onPrecacheGameType; - level.onStartGameType = ::onStartGameType; - level.onSpawnPlayer = ::onSpawnPlayer; - level.onDeadEvent = ::onDeadEvent; - level.onTimeLimit = ::onTimeLimit; - level.onRoundSwitch = ::onRoundSwitch; - - level.endGameOnScoreLimit = false; -} - -onPrecacheGameType() -{ - game["bomb_dropped_sound"] = "mp_war_objective_lost"; - game["bomb_recovered_sound"] = "mp_war_objective_taken"; - - precacheShader("waypoint_bomb"); - precacheShader("hud_suitcase_bomb"); - precacheShader("waypoint_target"); - precacheShader("waypoint_target_a"); - precacheShader("waypoint_target_b"); - precacheShader("waypoint_defend"); - precacheShader("waypoint_defend_a"); - precacheShader("waypoint_defend_b"); - precacheShader("waypoint_defuse"); - precacheShader("waypoint_defuse_a"); - precacheShader("waypoint_defuse_b"); - precacheShader("compass_waypoint_target"); - precacheShader("compass_waypoint_target_a"); - precacheShader("compass_waypoint_target_b"); - precacheShader("compass_waypoint_defend"); - precacheShader("compass_waypoint_defend_a"); - precacheShader("compass_waypoint_defend_b"); - precacheShader("compass_waypoint_defuse"); - precacheShader("compass_waypoint_defuse_a"); - precacheShader("compass_waypoint_defuse_b"); - - precacheString( &"MP_EXPLOSIVES_RECOVERED_BY" ); - precacheString( &"MP_EXPLOSIVES_DROPPED_BY" ); - precacheString( &"MP_EXPLOSIVES_PLANTED_BY" ); - precacheString( &"MP_EXPLOSIVES_DEFUSED_BY" ); - precacheString( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" ); - precacheString( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" ); - precacheString( &"MP_CANT_PLANT_WITHOUT_BOMB" ); - precacheString( &"MP_PLANTING_EXPLOSIVE" ); - precacheString( &"MP_DEFUSING_EXPLOSIVE" ); -} - -onRoundSwitch() -{ - level.halftimeType = "halftime"; -} - -getBetterTeam() -{ - kills["allies"] = 0; - kills["axis"] = 0; - deaths["allies"] = 0; - deaths["axis"] = 0; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - team = player.pers["team"]; - if ( isDefined( team ) && (team == "allies" || team == "axis") ) - { - kills[ team ] += player.kills; - deaths[ team ] += player.deaths; - } - } - - if ( kills["allies"] > kills["axis"] ) - return "allies"; - else if ( kills["axis"] > kills["allies"] ) - return "axis"; - - if ( deaths["allies"] < deaths["axis"] ) - return "allies"; - else if ( deaths["axis"] < deaths["allies"] ) - return "axis"; - - if ( randomint(2) == 0 ) - return "allies"; - - return "axis"; -} - -onStartGameType() -{ - setClientNameMode("manual_change"); - game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED"; - game["strings"]["bomb_defused"] = &"MP_BOMB_DEFUSED"; - - precacheString( game["strings"]["target_destroyed"] ); - precacheString( game["strings"]["bomb_defused"] ); - - level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion"); - - maps\mp\gametypes\_globallogic::setObjectiveText( game["attackers"], &"OBJECTIVES_SD_ATTACKER" ); - maps\mp\gametypes\_globallogic::setObjectiveText( game["defenders"], &"OBJECTIVES_SD_DEFENDER" ); - - maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["attackers"], &"OBJECTIVES_SD_ATTACKER_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["defenders"], &"OBJECTIVES_SD_DEFENDER_SCORE" ); - - maps\mp\gametypes\_globallogic::setObjectiveHintText( game["attackers"], &"OBJECTIVES_SD_ATTACKER_HINT" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( game["defenders"], &"OBJECTIVES_SD_DEFENDER_HINT" ); - - level.spawnMins = ( 0, 0, 0 ); - level.spawnMaxs = ( 0, 0, 0 ); - maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sd_spawn_attacker" ); - maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sd_spawn_defender" ); - - level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); - setMapCenter( level.mapCenter ); - - allowed[0] = "sd"; - allowed[1] = "bombzone"; - allowed[2] = "blocker"; - maps\mp\gametypes\_gameobjects::main(allowed); - - thread updateGametypeDvars(); - - thread bombs(); -} - -onSpawnPlayer() -{ - self.isPlanting = false; - self.isDefusing = false; - - if ( self.pers["team"] == game["attackers"] ) - spawnPointName = "mp_sd_spawn_attacker"; - else - spawnPointName = "mp_sd_spawn_defender"; - - self setclientdvar("ui_drawbombicon", 0); - if ( level.multiBomb && !isDefined( self.carryIcon ) && self.pers["team"] == game["attackers"] && !level.bombPlanted ) - { - self.carryIcon = createIcon( "hud_suitcase_bomb", 50, 50 ); - self.carryIcon setPoint( "CENTER", "CENTER", 223, 167 ); - self.carryIcon.alpha = 0.75; - self setclientdvar("ui_drawbombicon", 1); - } - - spawnPoints = getEntArray( spawnPointName, "classname" ); - spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints ); - - self spawn( spawnpoint.origin, spawnpoint.angles ); - - level notify ( "spawned_player" ); -} - -sd_endGame( winningTeam, endReasonText ) -{ - if ( isdefined( winningTeam ) ) - [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 ); - - thread maps\mp\gametypes\_globallogic::endGame( winningTeam, endReasonText ); -} - -onDeadEvent( team ) -{ - if ( level.bombExploded || level.bombDefused ) - return; - - if ( team == "all" ) - { - if ( level.bombPlanted ) - sd_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] ); - else - sd_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] ); - } - else if ( team == game["attackers"] ) - { - if ( level.bombPlanted ) - return; - - sd_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] ); - } - else if ( team == game["defenders"] ) - sd_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] ); -} - -onTimeLimit() -{ - if ( level.teamBased ) - sd_endGame( game["defenders"], game["strings"]["time_limit_reached"] ); - else - sd_endGame( undefined, game["strings"]["time_limit_reached"] ); -} - -updateGametypeDvars() -{ - level.plantTime = dvarFloatValue( "planttime", 5, 0, 20 ); - level.defuseTime = dvarFloatValue( "defusetime", 7, 0, 20 ); - level.bombTimer = dvarFloatValue( "bombtimer", 45, 1, 300 ); - level.multiBomb = dvarIntValue( "multibomb", 0, 0, 1 ); -} - -bombs() -{ - level.bombPlanted = false; - level.bombDefused = false; - level.bombExploded = false; - - trigger = getEnt( "sd_bomb_pickup_trig", "targetname" ); - if ( !isDefined( trigger ) ) - return; - - visuals[0] = getEnt( "sd_bomb", "targetname" ); - if ( !isDefined( visuals[0] ) ) - return; - - precacheModel( "prop_suitcase_bomb" ); - visuals[0] setModel( "prop_suitcase_bomb" ); - - if ( !level.multiBomb && !game["promod_do_readyup"] && !game["promod_timeout_called"] && !game["PROMOD_KNIFEROUND"] && isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "strat" ) - { - level.sdBomb = maps\mp\gametypes\_gameobjects::createCarryObject( game["attackers"], trigger, visuals, (0,0,32) ); - level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "friendly" ); - level.sdBomb maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" ); - level.sdBomb maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" ); - level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "friendly" ); - level.sdBomb maps\mp\gametypes\_gameobjects::setCarryIcon( "hud_suitcase_bomb" ); - level.sdBomb.onPickup = ::onPickup; - level.sdBomb.onDrop = ::onDrop; - } - else - { - trigger delete(); - visuals[0] delete(); - } - - level.bombZones = []; - - bombZones = getEntArray( "bombzone", "targetname" ); - - for ( i = 0; i < bombZones.size; i++ ) - { - trigger = bombZones[i]; - visuals = getEntArray( bombZones[i].target, "targetname" ); - - bombZone = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,64) ); - bombZone maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); - bombZone maps\mp\gametypes\_gameobjects::setUseTime( level.plantTime ); - bombZone maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" ); - bombZone maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" ); - if ( !level.multiBomb ) - bombZone maps\mp\gametypes\_gameobjects::setKeyObject( level.sdBomb ); - label = bombZone maps\mp\gametypes\_gameobjects::getLabel(); - bombZone.label = label; - bombZone maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" + label ); - bombZone maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" + label ); - - bombZone maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); - - bombZone.onBeginUse = ::onBeginUse; - bombZone.onEndUse = ::onEndUse; - bombZone.onUse = ::onUsePlantObject; - bombZone.onCantUse = ::onCantUse; - - for ( j = 0; j < visuals.size; j++ ) - { - if ( isDefined( visuals[j].script_exploder ) ) - { - bombZone.exploderIndex = visuals[j].script_exploder; - break; - } - } - - level.bombZones[level.bombZones.size] = bombZone; - - bombZone.bombDefuseTrig = getent( visuals[0].target, "targetname" ); - bombZone.bombDefuseTrig.origin += (0,0,-10000); - bombZone.bombDefuseTrig.label = label; - } - - for ( i = 0; i < level.bombZones.size; i++ ) - { - array = []; - for ( j = 0; j < level.bombZones.size; j++ ) - { - if ( j != i ) - array[ array.size ] = level.bombZones[j]; - } - - level.bombZones[i].otherBombZones = array; - } -} - -onBeginUse( player ) -{ - if ( self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) - { - player playSound( "mp_bomb_defuse" ); - player.isDefusing = true; - - if ( isDefined( level.sdBombModel ) ) - level.sdBombModel hide(); - } - else - { - player playSound( "mp_bomb_plant" ); - player.isPlanting = true; - - if ( level.multibomb ) - { - for ( i = 0; i < self.otherBombZones.size; i++ ) - self.otherBombZones[i] maps\mp\gametypes\_gameobjects::disableObject(); - } - } -} - -onEndUse( team, player, result ) -{ - if ( isAlive( player ) ) - { - player.isDefusing = false; - player.isPlanting = false; - } - - if ( self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) - { - if ( isDefined( level.sdBombModel ) && !result ) - level.sdBombModel show(); - } - else - { - if ( level.multibomb && !result ) - { - for ( i = 0; i < self.otherBombZones.size; i++ ) - self.otherBombZones[i] maps\mp\gametypes\_gameobjects::enableObject(); - } - } -} - -onCantUse( player ) -{ - player iPrintLnBold( &"MP_CANT_PLANT_WITHOUT_BOMB" ); -} - -onUsePlantObject( player ) -{ - if ( level.gameEnded ) - return; - - if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) - { - if ( !level.hardcoreMode ) - iPrintLn( &"MP_EXPLOSIVES_PLANTED_BY", player.name ); - - maps\mp\gametypes\_globallogic::givePlayerScore( "plant", player ); - - for ( i = 0; i < level.bombZones.size; i++ ) - { - if ( level.bombZones[i] == self ) - continue; - - level.bombZones[i] maps\mp\gametypes\_gameobjects::disableObject(); - } - - for ( i = 0; i < level.players.size; i++ ) - level.players[i] playLocalSound("promod_planted"); - - player thread [[level.onXPEvent]]( "plant" ); - level thread bombPlanted( self, player ); - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "planted_by" + player.name; - - logPrint("P_P;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); - } -} - -onUseDefuseObject( player ) -{ - if ( level.gameEnded || level.bombExploded ) - return; - - level thread bombDefused(); - self maps\mp\gametypes\_gameobjects::disableObject(); - - playSoundOnPlayers("promod_defused"); - - if ( !level.hardcoreMode ) - iPrintLn( &"MP_EXPLOSIVES_DEFUSED_BY", player.name ); - - maps\mp\gametypes\_globallogic::givePlayerScore( "defuse", player ); - player thread [[level.onXPEvent]]( "defuse" ); - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "defused_by" + player.name; - - logPrint("P_D;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); -} - -onDrop( player ) -{ - if ( !level.bombPlanted ) - { - if ( isDefined( player ) && isDefined( player.name ) ) - printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", game["attackers"], player ); - - if ( isDefined( level.scorebot ) && level.scorebot && isDefined( player ) && isDefined( player.name ) ) - game["promod_scorebot_ticker_buffer"] += "dropped_bomb" + player.name; - } - - self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" ); - - if ( !level.bombPlanted ) - playSoundOnPlayers( game["bomb_dropped_sound"], game["attackers"] ); -} - -onPickup( player ) -{ - self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" ); - - if ( !level.bombDefused ) - { - if ( isDefined( player ) && isDefined( player.name ) ) - printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", game["attackers"], player ); - - if ( isDefined( level.scorebot ) && level.scorebot && isDefined( player ) && isDefined( player.name ) ) - game["promod_scorebot_ticker_buffer"] += "pickup_bomb" + player.name; - } - - playSoundOnPlayers( game["bomb_recovered_sound"], game["attackers"] ); -} - -bombPlanted( destroyedObj, player ) -{ - maps\mp\gametypes\_globallogic::pauseTimer(); - level.bombPlanted = true; - - destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic::playTickingSound(); - level.tickingObject = destroyedObj.visuals[0]; - - level.timeLimitOverride = true; - setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) ); - setDvar( "ui_bomb_timer", 1 ); - - if ( !level.multiBomb ) - { - level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" ); - level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); - level.sdBomb maps\mp\gametypes\_gameobjects::setDropped(); - level.sdBombModel = level.sdBomb.visuals[0]; - } - else - { - for ( i = 0; i < level.players.size; i++ ) - { - if ( isDefined( level.players[i].carryIcon ) ) - level.players[i].carryIcon destroyElem(); - } - - trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player ); - - tempAngle = randomfloat( 360 ); - forward = (cos( tempAngle ), sin( tempAngle ), 0); - forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) ); - dropAngles = vectortoangles( forward ); - - level.sdBombModel = spawn( "script_model", trace["position"] ); - level.sdBombModel.angles = dropAngles; - level.sdBombModel setModel( "prop_suitcase_bomb" ); - } - - destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" ); - destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); - - label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel(); - - trigger = destroyedObj.bombDefuseTrig; - trigger.origin = level.sdBombModel.origin; - visuals = []; - defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) ); - defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" ); - defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime ); - defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" ); - defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" ); - defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); - defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label ); - defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label ); - - defuseObject.label = label; - defuseObject.onBeginUse = ::onBeginUse; - defuseObject.onEndUse = ::onEndUse; - defuseObject.onUse = ::onUseDefuseObject; - - BombTimerWait(); - setDvar( "ui_bomb_timer", 0 ); - - destroyedObj.visuals[0] maps\mp\gametypes\_globallogic::stopTickingSound(); - - if ( level.gameEnded || level.bombDefused ) - return; - - level.bombExploded = true; - - if ( isDefined( level.scorebot ) && level.scorebot ) - game["promod_scorebot_ticker_buffer"] += "bomb_exploded"; - - explosionOrigin = level.sdBombModel.origin; - level.sdBombModel hide(); - - if ( isdefined( player ) ) - destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player ); - else - destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20 ); - - rot = randomfloat(360); - explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) ); - triggerFx( explosionEffect ); - - thread playSoundinSpace( "exp_suitcase_bomb_main", explosionOrigin ); - - for ( i = 0; i < level.bombZones.size; i++ ) - level.bombZones[i] maps\mp\gametypes\_gameobjects::disableObject(); - - defuseObject maps\mp\gametypes\_gameobjects::disableObject(); - - setGameEndTime( 0 ); - - playSoundOnPlayers("promod_destroyed"); - - wait 0.05; - - sd_endGame( game["attackers"], game["strings"]["target_destroyed"] ); -} - -BombTimerWait() -{ - level endon("game_ended"); - level endon("bomb_defused"); - - wait level.bombTimer; -} - -playSoundinSpace( alias, origin ) -{ - org = spawn( "script_origin", origin ); - org.origin = origin; - org playSound( alias ); - wait 10; - org delete(); -} - -bombDefused() -{ - level.tickingObject maps\mp\gametypes\_globallogic::stopTickingSound(); - level.bombDefused = true; - level notify("bomb_defused"); - - setGameEndTime( 0 ); - setDvar( "ui_bomb_timer", 0 ); - - wait 0.05; - - sd_endGame( game["defenders"], game["strings"]["bomb_defused"] ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\_utility; +#include maps\mp\gametypes\_hud_util; + +main() +{ + if(getdvar("mapname") == "mp_background") + return; + + maps\mp\gametypes\_globallogic::init(); + maps\mp\gametypes\_callbacksetup::SetupCallbacks(); + maps\mp\gametypes\_globallogic::SetupCallbacks(); + + level.teamBased = true; + level.overrideTeamScore = true; + level.onPrecacheGameType = ::onPrecacheGameType; + level.onStartGameType = ::onStartGameType; + level.onSpawnPlayer = ::onSpawnPlayer; + level.onDeadEvent = ::onDeadEvent; + level.onTimeLimit = ::onTimeLimit; + level.onRoundSwitch = ::onRoundSwitch; + + level.endGameOnScoreLimit = false; +} + +onPrecacheGameType() +{ + game["bomb_dropped_sound"] = "mp_war_objective_lost"; + game["bomb_recovered_sound"] = "mp_war_objective_taken"; + + precacheShader("waypoint_bomb"); + precacheShader("hud_suitcase_bomb"); + precacheShader("waypoint_target"); + precacheShader("waypoint_target_a"); + precacheShader("waypoint_target_b"); + precacheShader("waypoint_defend"); + precacheShader("waypoint_defend_a"); + precacheShader("waypoint_defend_b"); + precacheShader("waypoint_defuse"); + precacheShader("waypoint_defuse_a"); + precacheShader("waypoint_defuse_b"); + precacheShader("compass_waypoint_target"); + precacheShader("compass_waypoint_target_a"); + precacheShader("compass_waypoint_target_b"); + precacheShader("compass_waypoint_defend"); + precacheShader("compass_waypoint_defend_a"); + precacheShader("compass_waypoint_defend_b"); + precacheShader("compass_waypoint_defuse"); + precacheShader("compass_waypoint_defuse_a"); + precacheShader("compass_waypoint_defuse_b"); + + precacheString( &"MP_EXPLOSIVES_RECOVERED_BY" ); + precacheString( &"MP_EXPLOSIVES_DROPPED_BY" ); + precacheString( &"MP_EXPLOSIVES_PLANTED_BY" ); + precacheString( &"MP_EXPLOSIVES_DEFUSED_BY" ); + precacheString( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" ); + precacheString( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" ); + precacheString( &"MP_CANT_PLANT_WITHOUT_BOMB" ); + precacheString( &"MP_PLANTING_EXPLOSIVE" ); + precacheString( &"MP_DEFUSING_EXPLOSIVE" ); +} + +onRoundSwitch() +{ + level.halftimeType = "halftime"; +} + +getBetterTeam() +{ + kills["allies"] = 0; + kills["axis"] = 0; + deaths["allies"] = 0; + deaths["axis"] = 0; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + team = player.pers["team"]; + if ( isDefined( team ) && (team == "allies" || team == "axis") ) + { + kills[ team ] += player.kills; + deaths[ team ] += player.deaths; + } + } + + if ( kills["allies"] > kills["axis"] ) + return "allies"; + else if ( kills["axis"] > kills["allies"] ) + return "axis"; + + if ( deaths["allies"] < deaths["axis"] ) + return "allies"; + else if ( deaths["axis"] < deaths["allies"] ) + return "axis"; + + if ( randomint(2) == 0 ) + return "allies"; + + return "axis"; +} + +onStartGameType() +{ + setClientNameMode("manual_change"); + game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED"; + game["strings"]["bomb_defused"] = &"MP_BOMB_DEFUSED"; + + precacheString( game["strings"]["target_destroyed"] ); + precacheString( game["strings"]["bomb_defused"] ); + + level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion"); + + maps\mp\gametypes\_globallogic::setObjectiveText( game["attackers"], &"OBJECTIVES_SD_ATTACKER" ); + maps\mp\gametypes\_globallogic::setObjectiveText( game["defenders"], &"OBJECTIVES_SD_DEFENDER" ); + + maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["attackers"], &"OBJECTIVES_SD_ATTACKER_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["defenders"], &"OBJECTIVES_SD_DEFENDER_SCORE" ); + + maps\mp\gametypes\_globallogic::setObjectiveHintText( game["attackers"], &"OBJECTIVES_SD_ATTACKER_HINT" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( game["defenders"], &"OBJECTIVES_SD_DEFENDER_HINT" ); + + level.spawnMins = ( 0, 0, 0 ); + level.spawnMaxs = ( 0, 0, 0 ); + maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sd_spawn_attacker" ); + maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sd_spawn_defender" ); + + level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); + setMapCenter( level.mapCenter ); + + allowed[0] = "sd"; + allowed[1] = "bombzone"; + allowed[2] = "blocker"; + maps\mp\gametypes\_gameobjects::main(allowed); + + thread updateGametypeDvars(); + + thread bombs(); +} + +onSpawnPlayer() +{ + self.isPlanting = false; + self.isDefusing = false; + + if ( self.pers["team"] == game["attackers"] ) + spawnPointName = "mp_sd_spawn_attacker"; + else + spawnPointName = "mp_sd_spawn_defender"; + + self setclientdvar("ui_drawbombicon", 0); + if ( level.multiBomb && !isDefined( self.carryIcon ) && self.pers["team"] == game["attackers"] && !level.bombPlanted ) + { + self.carryIcon = createIcon( "hud_suitcase_bomb", 50, 50 ); + self.carryIcon setPoint( "CENTER", "CENTER", 223, 167 ); + self.carryIcon.alpha = 0.75; + self setclientdvar("ui_drawbombicon", 1); + } + + spawnPoints = getEntArray( spawnPointName, "classname" ); + spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints ); + + self spawn( spawnpoint.origin, spawnpoint.angles ); + + level notify ( "spawned_player" ); +} + +sd_endGame( winningTeam, endReasonText ) +{ + if ( isdefined( winningTeam ) ) + [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 ); + + thread maps\mp\gametypes\_globallogic::endGame( winningTeam, endReasonText ); +} + +onDeadEvent( team ) +{ + if ( level.bombExploded || level.bombDefused ) + return; + + if ( team == "all" ) + { + if ( level.bombPlanted ) + sd_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] ); + else + sd_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] ); + } + else if ( team == game["attackers"] ) + { + if ( level.bombPlanted ) + return; + + sd_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] ); + } + else if ( team == game["defenders"] ) + sd_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] ); +} + +onTimeLimit() +{ + if ( level.teamBased ) + sd_endGame( game["defenders"], game["strings"]["time_limit_reached"] ); + else + sd_endGame( undefined, game["strings"]["time_limit_reached"] ); +} + +updateGametypeDvars() +{ + level.plantTime = dvarFloatValue( "planttime", 5, 0, 20 ); + level.defuseTime = dvarFloatValue( "defusetime", 7, 0, 20 ); + level.bombTimer = dvarFloatValue( "bombtimer", 45, 1, 300 ); + level.multiBomb = dvarIntValue( "multibomb", 0, 0, 1 ); +} + +bombs() +{ + level.bombPlanted = false; + level.bombDefused = false; + level.bombExploded = false; + + trigger = getEnt( "sd_bomb_pickup_trig", "targetname" ); + if ( !isDefined( trigger ) ) + return; + + visuals[0] = getEnt( "sd_bomb", "targetname" ); + if ( !isDefined( visuals[0] ) ) + return; + + precacheModel( "prop_suitcase_bomb" ); + visuals[0] setModel( "prop_suitcase_bomb" ); + + if ( !level.multiBomb && !game["promod_do_readyup"] && !game["promod_timeout_called"] && !game["PROMOD_KNIFEROUND"] && isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "strat" ) + { + level.sdBomb = maps\mp\gametypes\_gameobjects::createCarryObject( game["attackers"], trigger, visuals, (0,0,32) ); + level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "friendly" ); + level.sdBomb maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" ); + level.sdBomb maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" ); + level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "friendly" ); + level.sdBomb maps\mp\gametypes\_gameobjects::setCarryIcon( "hud_suitcase_bomb" ); + level.sdBomb.onPickup = ::onPickup; + level.sdBomb.onDrop = ::onDrop; + } + else + { + trigger delete(); + visuals[0] delete(); + } + + level.bombZones = []; + + bombZones = getEntArray( "bombzone", "targetname" ); + + for ( i = 0; i < bombZones.size; i++ ) + { + trigger = bombZones[i]; + visuals = getEntArray( bombZones[i].target, "targetname" ); + + bombZone = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,64) ); + bombZone maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); + bombZone maps\mp\gametypes\_gameobjects::setUseTime( level.plantTime ); + bombZone maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" ); + bombZone maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" ); + if ( !level.multiBomb ) + bombZone maps\mp\gametypes\_gameobjects::setKeyObject( level.sdBomb ); + label = bombZone maps\mp\gametypes\_gameobjects::getLabel(); + bombZone.label = label; + bombZone maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" + label ); + bombZone maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" + label ); + + bombZone maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); + + bombZone.onBeginUse = ::onBeginUse; + bombZone.onEndUse = ::onEndUse; + bombZone.onUse = ::onUsePlantObject; + bombZone.onCantUse = ::onCantUse; + + for ( j = 0; j < visuals.size; j++ ) + { + if ( isDefined( visuals[j].script_exploder ) ) + { + bombZone.exploderIndex = visuals[j].script_exploder; + break; + } + } + + level.bombZones[level.bombZones.size] = bombZone; + + bombZone.bombDefuseTrig = getent( visuals[0].target, "targetname" ); + bombZone.bombDefuseTrig.origin += (0,0,-10000); + bombZone.bombDefuseTrig.label = label; + } + + for ( i = 0; i < level.bombZones.size; i++ ) + { + array = []; + for ( j = 0; j < level.bombZones.size; j++ ) + { + if ( j != i ) + array[ array.size ] = level.bombZones[j]; + } + + level.bombZones[i].otherBombZones = array; + } +} + +onBeginUse( player ) +{ + if ( self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) + { + player playSound( "mp_bomb_defuse" ); + player.isDefusing = true; + + if ( isDefined( level.sdBombModel ) ) + level.sdBombModel hide(); + } + else + { + player playSound( "mp_bomb_plant" ); + player.isPlanting = true; + + if ( level.multibomb ) + { + for ( i = 0; i < self.otherBombZones.size; i++ ) + self.otherBombZones[i] maps\mp\gametypes\_gameobjects::disableObject(); + } + } +} + +onEndUse( team, player, result ) +{ + if ( isAlive( player ) ) + { + player.isDefusing = false; + player.isPlanting = false; + } + + if ( self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) + { + if ( isDefined( level.sdBombModel ) && !result ) + level.sdBombModel show(); + } + else + { + if ( level.multibomb && !result ) + { + for ( i = 0; i < self.otherBombZones.size; i++ ) + self.otherBombZones[i] maps\mp\gametypes\_gameobjects::enableObject(); + } + } +} + +onCantUse( player ) +{ + player iPrintLnBold( &"MP_CANT_PLANT_WITHOUT_BOMB" ); +} + +onUsePlantObject( player ) +{ + if ( level.gameEnded ) + return; + + if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) + { + if ( !level.hardcoreMode ) + iPrintLn( &"MP_EXPLOSIVES_PLANTED_BY", player.name ); + + maps\mp\gametypes\_globallogic::givePlayerScore( "plant", player ); + + for ( i = 0; i < level.bombZones.size; i++ ) + { + if ( level.bombZones[i] == self ) + continue; + + level.bombZones[i] maps\mp\gametypes\_gameobjects::disableObject(); + } + + for ( i = 0; i < level.players.size; i++ ) + level.players[i] playLocalSound("promod_planted"); + + player thread [[level.onXPEvent]]( "plant" ); + level thread bombPlanted( self, player ); + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "planted_by" + player.name; + + logPrint("P_P;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); + } +} + +onUseDefuseObject( player ) +{ + if ( level.gameEnded || level.bombExploded ) + return; + + level thread bombDefused(); + self maps\mp\gametypes\_gameobjects::disableObject(); + + playSoundOnPlayers("promod_defused"); + + if ( !level.hardcoreMode ) + iPrintLn( &"MP_EXPLOSIVES_DEFUSED_BY", player.name ); + + maps\mp\gametypes\_globallogic::givePlayerScore( "defuse", player ); + player thread [[level.onXPEvent]]( "defuse" ); + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "defused_by" + player.name; + + logPrint("P_D;" + player getGuid() + ";" + player getEntityNumber() + ";" + player.name + "\n"); +} + +onDrop( player ) +{ + if ( !level.bombPlanted ) + { + if ( isDefined( player ) && isDefined( player.name ) ) + printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", game["attackers"], player ); + + if ( isDefined( level.scorebot ) && level.scorebot && isDefined( player ) && isDefined( player.name ) ) + game["promod_scorebot_ticker_buffer"] += "dropped_bomb" + player.name; + } + + self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" ); + + if ( !level.bombPlanted ) + playSoundOnPlayers( game["bomb_dropped_sound"], game["attackers"] ); +} + +onPickup( player ) +{ + self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" ); + + if ( !level.bombDefused ) + { + if ( isDefined( player ) && isDefined( player.name ) ) + printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", game["attackers"], player ); + + if ( isDefined( level.scorebot ) && level.scorebot && isDefined( player ) && isDefined( player.name ) ) + game["promod_scorebot_ticker_buffer"] += "pickup_bomb" + player.name; + } + + playSoundOnPlayers( game["bomb_recovered_sound"], game["attackers"] ); +} + +bombPlanted( destroyedObj, player ) +{ + maps\mp\gametypes\_globallogic::pauseTimer(); + level.bombPlanted = true; + + destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic::playTickingSound(); + level.tickingObject = destroyedObj.visuals[0]; + + level.timeLimitOverride = true; + setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) ); + setDvar( "ui_bomb_timer", 1 ); + + if ( !level.multiBomb ) + { + level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" ); + level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); + level.sdBomb maps\mp\gametypes\_gameobjects::setDropped(); + level.sdBombModel = level.sdBomb.visuals[0]; + } + else + { + for ( i = 0; i < level.players.size; i++ ) + { + if ( isDefined( level.players[i].carryIcon ) ) + level.players[i].carryIcon destroyElem(); + } + + trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player ); + + tempAngle = randomfloat( 360 ); + forward = (cos( tempAngle ), sin( tempAngle ), 0); + forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) ); + dropAngles = vectortoangles( forward ); + + level.sdBombModel = spawn( "script_model", trace["position"] ); + level.sdBombModel.angles = dropAngles; + level.sdBombModel setModel( "prop_suitcase_bomb" ); + } + + destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" ); + destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); + + label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel(); + + trigger = destroyedObj.bombDefuseTrig; + trigger.origin = level.sdBombModel.origin; + visuals = []; + defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) ); + defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" ); + defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime ); + defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" ); + defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" ); + defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); + defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label ); + defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label ); + + defuseObject.label = label; + defuseObject.onBeginUse = ::onBeginUse; + defuseObject.onEndUse = ::onEndUse; + defuseObject.onUse = ::onUseDefuseObject; + + BombTimerWait(); + setDvar( "ui_bomb_timer", 0 ); + + destroyedObj.visuals[0] maps\mp\gametypes\_globallogic::stopTickingSound(); + + if ( level.gameEnded || level.bombDefused ) + return; + + level.bombExploded = true; + + if ( isDefined( level.scorebot ) && level.scorebot ) + game["promod_scorebot_ticker_buffer"] += "bomb_exploded"; + + explosionOrigin = level.sdBombModel.origin; + level.sdBombModel hide(); + + if ( isdefined( player ) ) + destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player ); + else + destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20 ); + + rot = randomfloat(360); + explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) ); + triggerFx( explosionEffect ); + + thread playSoundinSpace( "exp_suitcase_bomb_main", explosionOrigin ); + + for ( i = 0; i < level.bombZones.size; i++ ) + level.bombZones[i] maps\mp\gametypes\_gameobjects::disableObject(); + + defuseObject maps\mp\gametypes\_gameobjects::disableObject(); + + setGameEndTime( 0 ); + + playSoundOnPlayers("promod_destroyed"); + + wait 0.05; + + sd_endGame( game["attackers"], game["strings"]["target_destroyed"] ); +} + +BombTimerWait() +{ + level endon("game_ended"); + level endon("bomb_defused"); + + wait level.bombTimer; +} + +playSoundinSpace( alias, origin ) +{ + org = spawn( "script_origin", origin ); + org.origin = origin; + org playSound( alias ); + wait 10; + org delete(); +} + +bombDefused() +{ + level.tickingObject maps\mp\gametypes\_globallogic::stopTickingSound(); + level.bombDefused = true; + level notify("bomb_defused"); + + setGameEndTime( 0 ); + setDvar( "ui_bomb_timer", 0 ); + + wait 0.05; + + sd_endGame( game["defenders"], game["strings"]["bomb_defused"] ); +} diff --git a/maps/mp/gametypes/war.gsc b/maps/mp/gametypes/war.gsc index e694b1d..e654a32 100644 --- a/maps/mp/gametypes/war.gsc +++ b/maps/mp/gametypes/war.gsc @@ -1,96 +1,96 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - if(getdvar("mapname") == "mp_background") - return; - - maps\mp\gametypes\_globallogic::init(); - maps\mp\gametypes\_callbacksetup::SetupCallbacks(); - maps\mp\gametypes\_globallogic::SetupCallbacks(); - - level.teamBased = true; - level.onStartGameType = ::onStartGameType; - level.onSpawnPlayer = ::onSpawnPlayer; - level.onRoundSwitch = ::onRoundSwitch; -} - -onStartGameType() -{ - setClientNameMode("auto_change"); - maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_WAR" ); - maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_WAR" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_WAR_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_WAR_SCORE" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_WAR_HINT" ); - maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_WAR_HINT" ); - - level.spawnMins = ( 0, 0, 0 ); - level.spawnMaxs = ( 0, 0, 0 ); - - maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" ); - maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" ); - maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" ); - - level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); - setMapCenter( level.mapCenter ); - - allowed[0] = "war"; - - level.displayRoundEndText = false; - maps\mp\gametypes\_gameobjects::main(allowed); - - if ( level.roundLimit != 1 && level.numLives ) - { - level.overrideTeamScore = true; - level.displayRoundEndText = true; - level.onEndGame = ::onEndGame; - } -} - -onRoundSwitch() -{ - level.halftimeType = "halftime"; -} - -onSpawnPlayer() -{ - self.usingObj = undefined; - if ( level.inGracePeriod ) - { - spawnPoints = getentarray("mp_tdm_spawn_" + self.pers["team"] + "_start", "classname"); - - if ( !spawnPoints.size ) - spawnPoints = getentarray("mp_sab_spawn_" + self.pers["team"] + "_start", "classname"); - - if ( !spawnPoints.size ) - { - spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] ); - spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints ); - } - else - spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints ); - } - else - { - spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] ); - spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints ); - } - - self spawn( spawnPoint.origin, spawnPoint.angles ); -} - -onEndGame( winningTeam ) -{ - if ( isdefined( winningTeam ) && (winningTeam == "allies" || winningTeam == "axis") ) - [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + if(getdvar("mapname") == "mp_background") + return; + + maps\mp\gametypes\_globallogic::init(); + maps\mp\gametypes\_callbacksetup::SetupCallbacks(); + maps\mp\gametypes\_globallogic::SetupCallbacks(); + + level.teamBased = true; + level.onStartGameType = ::onStartGameType; + level.onSpawnPlayer = ::onSpawnPlayer; + level.onRoundSwitch = ::onRoundSwitch; +} + +onStartGameType() +{ + setClientNameMode("auto_change"); + maps\mp\gametypes\_globallogic::setObjectiveText( "allies", &"OBJECTIVES_WAR" ); + maps\mp\gametypes\_globallogic::setObjectiveText( "axis", &"OBJECTIVES_WAR" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "allies", &"OBJECTIVES_WAR_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveScoreText( "axis", &"OBJECTIVES_WAR_SCORE" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "allies", &"OBJECTIVES_WAR_HINT" ); + maps\mp\gametypes\_globallogic::setObjectiveHintText( "axis", &"OBJECTIVES_WAR_HINT" ); + + level.spawnMins = ( 0, 0, 0 ); + level.spawnMaxs = ( 0, 0, 0 ); + + maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" ); + maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" ); + maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" ); + + level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); + setMapCenter( level.mapCenter ); + + allowed[0] = "war"; + + level.displayRoundEndText = false; + maps\mp\gametypes\_gameobjects::main(allowed); + + if ( level.roundLimit != 1 && level.numLives ) + { + level.overrideTeamScore = true; + level.displayRoundEndText = true; + level.onEndGame = ::onEndGame; + } +} + +onRoundSwitch() +{ + level.halftimeType = "halftime"; +} + +onSpawnPlayer() +{ + self.usingObj = undefined; + if ( level.inGracePeriod ) + { + spawnPoints = getentarray("mp_tdm_spawn_" + self.pers["team"] + "_start", "classname"); + + if ( !spawnPoints.size ) + spawnPoints = getentarray("mp_sab_spawn_" + self.pers["team"] + "_start", "classname"); + + if ( !spawnPoints.size ) + { + spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] ); + spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints ); + } + else + spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints ); + } + else + { + spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] ); + spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints ); + } + + self spawn( spawnPoint.origin, spawnPoint.angles ); +} + +onEndGame( winningTeam ) +{ + if ( isdefined( winningTeam ) && (winningTeam == "allies" || winningTeam == "axis") ) + [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 ); +} diff --git a/maps/mp/mp_backlot.gsc b/maps/mp/mp_backlot.gsc index 4e18ad8..cbd436d 100644 --- a/maps/mp/mp_backlot.gsc +++ b/maps/mp/mp_backlot.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_backlot"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 1.3; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_backlot"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 1.3; +} diff --git a/maps/mp/mp_bloc.gsc b/maps/mp/mp_bloc.gsc index 6ccd897..5dfc010 100644 --- a/maps/mp/mp_bloc.gsc +++ b/maps/mp/mp_bloc.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_bloc"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 0.9; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_bloc"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 0.9; +} diff --git a/maps/mp/mp_bog.gsc b/maps/mp/mp_bog.gsc index 9b8406d..1b20cb8 100644 --- a/maps/mp/mp_bog.gsc +++ b/maps/mp/mp_bog.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_bog"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 0.8; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_bog"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 0.8; +} diff --git a/maps/mp/mp_broadcast.gsc b/maps/mp/mp_broadcast.gsc index c20a813..09cdf50 100644 --- a/maps/mp/mp_broadcast.gsc +++ b/maps/mp/mp_broadcast.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_broadcast"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 1.4; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_broadcast"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 1.4; +} diff --git a/maps/mp/mp_carentan.gsc b/maps/mp/mp_carentan.gsc index a22ab7b..bcc6841 100644 --- a/maps/mp/mp_carentan.gsc +++ b/maps/mp/mp_carentan.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_carentan"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "urban"; - game["axis_soldiertype"] = "urban"; - - level.sunlight = 0.75; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_carentan"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "urban"; + game["axis_soldiertype"] = "urban"; + + level.sunlight = 0.75; +} diff --git a/maps/mp/mp_cargoship.gsc b/maps/mp/mp_cargoship.gsc index 69a3f2b..c3e95a6 100644 --- a/maps/mp/mp_cargoship.gsc +++ b/maps/mp/mp_cargoship.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_cargoship"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1.3; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_cargoship"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1.3; +} diff --git a/maps/mp/mp_citystreets.gsc b/maps/mp/mp_citystreets.gsc index faabea6..ee9d581 100644 --- a/maps/mp/mp_citystreets.gsc +++ b/maps/mp/mp_citystreets.gsc @@ -1,26 +1,26 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_citystreets"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 0.78; - - maps\mp\_explosive_barrels::main(); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_citystreets"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 0.78; + + maps\mp\_explosive_barrels::main(); +} diff --git a/maps/mp/mp_convoy.gsc b/maps/mp/mp_convoy.gsc index a0a5254..e290c32 100644 --- a/maps/mp/mp_convoy.gsc +++ b/maps/mp/mp_convoy.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_convoy"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 1.6; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_convoy"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 1.6; +} diff --git a/maps/mp/mp_countdown.gsc b/maps/mp/mp_countdown.gsc index 29b85a5..e52f8a7 100644 --- a/maps/mp/mp_countdown.gsc +++ b/maps/mp/mp_countdown.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_countdown"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1.5; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_countdown"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1.5; +} diff --git a/maps/mp/mp_crash.gsc b/maps/mp/mp_crash.gsc index 52494fb..953f6ef 100644 --- a/maps/mp/mp_crash.gsc +++ b/maps/mp/mp_crash.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_crash"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 1.3; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_crash"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 1.3; +} diff --git a/maps/mp/mp_crash_snow.gsc b/maps/mp/mp_crash_snow.gsc index 62600ed..cc23af8 100644 --- a/maps/mp/mp_crash_snow.gsc +++ b/maps/mp/mp_crash_snow.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_crash_snow"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 0.25; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_crash_snow"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 0.25; +} diff --git a/maps/mp/mp_creek.gsc b/maps/mp/mp_creek.gsc index f6596db..761d22c 100644 --- a/maps/mp/mp_creek.gsc +++ b/maps/mp/mp_creek.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_creek"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1.5; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_creek"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1.5; +} diff --git a/maps/mp/mp_crossfire.gsc b/maps/mp/mp_crossfire.gsc index 4bfc90c..c2d8837 100644 --- a/maps/mp/mp_crossfire.gsc +++ b/maps/mp/mp_crossfire.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_crossfire"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 1; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_crossfire"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 1; +} diff --git a/maps/mp/mp_farm.gsc b/maps/mp/mp_farm.gsc index a4d8077..2df7324 100644 --- a/maps/mp/mp_farm.gsc +++ b/maps/mp/mp_farm.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_farm"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_farm"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1; +} diff --git a/maps/mp/mp_killhouse.gsc b/maps/mp/mp_killhouse.gsc index c9bff5e..d3f672d 100644 --- a/maps/mp/mp_killhouse.gsc +++ b/maps/mp/mp_killhouse.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_killhouse"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1.5; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_killhouse"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1.5; +} diff --git a/maps/mp/mp_overgrown.gsc b/maps/mp/mp_overgrown.gsc index 30b8f08..4026fd4 100644 --- a/maps/mp/mp_overgrown.gsc +++ b/maps/mp/mp_overgrown.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_overgrown"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1.1; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_overgrown"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1.1; +} diff --git a/maps/mp/mp_pipeline.gsc b/maps/mp/mp_pipeline.gsc index da91da2..c461251 100644 --- a/maps/mp/mp_pipeline.gsc +++ b/maps/mp/mp_pipeline.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_pipeline"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1.15; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_pipeline"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1.15; +} diff --git a/maps/mp/mp_shipment.gsc b/maps/mp/mp_shipment.gsc index 3398460..9df910f 100644 --- a/maps/mp/mp_shipment.gsc +++ b/maps/mp/mp_shipment.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_shipment"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1.3; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_shipment"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1.3; +} diff --git a/maps/mp/mp_showdown.gsc b/maps/mp/mp_showdown.gsc index 7058676..87323b2 100644 --- a/maps/mp/mp_showdown.gsc +++ b/maps/mp/mp_showdown.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_showdown"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 1.6; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_showdown"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 1.6; +} diff --git a/maps/mp/mp_strike.gsc b/maps/mp/mp_strike.gsc index 0e688bf..f731aa5 100644 --- a/maps/mp/mp_strike.gsc +++ b/maps/mp/mp_strike.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_strike"); - - game["allies"] = "marines"; - game["axis"] = "opfor"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "desert"; - game["axis_soldiertype"] = "desert"; - - level.sunlight = 1; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_strike"); + + game["allies"] = "marines"; + game["axis"] = "opfor"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "desert"; + game["axis_soldiertype"] = "desert"; + + level.sunlight = 1; +} diff --git a/maps/mp/mp_vacant.gsc b/maps/mp/mp_vacant.gsc index 76dc70c..ef24afe 100644 --- a/maps/mp/mp_vacant.gsc +++ b/maps/mp/mp_vacant.gsc @@ -1,24 +1,24 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - maps\mp\_load::main(); - maps\mp\_compass::setupMiniMap("compass_map_mp_vacant"); - - game["allies"] = "sas"; - game["axis"] = "russian"; - game["attackers"] = "allies"; - game["defenders"] = "axis"; - game["allies_soldiertype"] = "woodland"; - game["axis_soldiertype"] = "woodland"; - - level.sunlight = 1.3; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + maps\mp\_load::main(); + maps\mp\_compass::setupMiniMap("compass_map_mp_vacant"); + + game["allies"] = "sas"; + game["axis"] = "russian"; + game["attackers"] = "allies"; + game["defenders"] = "axis"; + game["allies_soldiertype"] = "woodland"; + game["axis_soldiertype"] = "woodland"; + + level.sunlight = 1.3; +} diff --git a/mod.csv b/mod.csv index ebaea0d..89a3116 100644 --- a/mod.csv +++ b/mod.csv @@ -1,124 +1,124 @@ -# Copyright (c) 2009-2017 Andreas Göransson -# Copyright (c) 2009-2017 Indrek Ardel -# -# This file is part of Call of Duty 4 Promod. -# -# Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. -# Terms of license can be found in LICENSE.md document bundled with the project. - -localize,cgame - -menufile,ui_mp/promod.txt -menufile,ui_mp/scriptmenus/changeclass_marines_mw.menu -menufile,ui_mp/scriptmenus/changeclass_mw.menu -menufile,ui_mp/scriptmenus/changeclass_opfor_mw.menu -menufile,ui_mp/scriptmenus/class.menu -menufile,ui_mp/scriptmenus/demo.menu -menufile,ui_mp/scriptmenus/echo.menu -menufile,ui_mp/scriptmenus/quickpromod.menu -menufile,ui_mp/scriptmenus/quickpromodgfx.menu -menufile,ui_mp/scriptmenus/scoreboard.menu -menufile,ui_mp/scriptmenus/shoutcast.menu -menufile,ui_mp/scriptmenus/shoutcast_map.menu -menufile,ui_mp/scriptmenus/shoutcast_setup.menu -menufile,ui_mp/scriptmenus/shoutcast_setup_binds.menu -menufile,ui_mp/scriptmenus/team_marinesopfor.menu -menufile,ui_mp/scriptmenus/team_marinesopfor_flipped.menu - -rawfile,maps/createfx/mp_backlot_fx.gsc -rawfile,maps/createfx/mp_bloc_fx.gsc -rawfile,maps/createfx/mp_bog_fx.gsc -rawfile,maps/createfx/mp_broadcast_fx.gsc -rawfile,maps/createfx/mp_carentan_fx.gsc -rawfile,maps/createfx/mp_cargoship_fx.gsc -rawfile,maps/createfx/mp_citystreets_fx.gsc -rawfile,maps/createfx/mp_convoy_fx.gsc -rawfile,maps/createfx/mp_countdown_fx.gsc -rawfile,maps/createfx/mp_crash_fx.gsc -rawfile,maps/createfx/mp_crash_snow_fx.gsc -rawfile,maps/createfx/mp_creek_fx.gsc -rawfile,maps/createfx/mp_crossfire_fx.gsc -rawfile,maps/createfx/mp_farm_fx.gsc -rawfile,maps/createfx/mp_killhouse_fx.gsc -rawfile,maps/createfx/mp_overgrown_fx.gsc -rawfile,maps/createfx/mp_pipeline_fx.gsc -rawfile,maps/createfx/mp_shipment_fx.gsc -rawfile,maps/createfx/mp_showdown_fx.gsc -rawfile,maps/createfx/mp_strike_fx.gsc -rawfile,maps/createfx/mp_vacant_fx.gsc - -rawfile,maps/mp/_destructible.gsc -rawfile,maps/mp/_explosive_barrels.gsc -rawfile,maps/mp/_flashgrenades.gsc -rawfile,maps/mp/_load.gsc - -rawfile,maps/mp/gametypes/_class.gsc -rawfile,maps/mp/gametypes/_gameobjects.gsc -rawfile,maps/mp/gametypes/_globallogic.gsc -rawfile,maps/mp/gametypes/_healthoverlay.gsc -rawfile,maps/mp/gametypes/_hud.gsc -rawfile,maps/mp/gametypes/_hud_message.gsc -rawfile,maps/mp/gametypes/_killcam.gsc -rawfile,maps/mp/gametypes/_menus.gsc -rawfile,maps/mp/gametypes/_missions.gsc -rawfile,maps/mp/gametypes/_promod.gsc -rawfile,maps/mp/gametypes/_quickmessages.gsc -rawfile,maps/mp/gametypes/_rank.gsc -rawfile,maps/mp/gametypes/_scoreboard.gsc -rawfile,maps/mp/gametypes/_spawnlogic.gsc -rawfile,maps/mp/gametypes/_spectating.gsc -rawfile,maps/mp/gametypes/_teams.gsc -rawfile,maps/mp/gametypes/_weapons.gsc -rawfile,maps/mp/gametypes/dm.gsc -rawfile,maps/mp/gametypes/dom.gsc -rawfile,maps/mp/gametypes/koth.gsc -rawfile,maps/mp/gametypes/sab.gsc -rawfile,maps/mp/gametypes/sd.gsc -rawfile,maps/mp/gametypes/war.gsc - -rawfile,maps/mp/mp_backlot.gsc -rawfile,maps/mp/mp_bloc.gsc -rawfile,maps/mp/mp_bog.gsc -rawfile,maps/mp/mp_broadcast.gsc -rawfile,maps/mp/mp_carentan.gsc -rawfile,maps/mp/mp_cargoship.gsc -rawfile,maps/mp/mp_citystreets.gsc -rawfile,maps/mp/mp_convoy.gsc -rawfile,maps/mp/mp_countdown.gsc -rawfile,maps/mp/mp_crash.gsc -rawfile,maps/mp/mp_crash_snow.gsc -rawfile,maps/mp/mp_creek.gsc -rawfile,maps/mp/mp_crossfire.gsc -rawfile,maps/mp/mp_farm.gsc -rawfile,maps/mp/mp_killhouse.gsc -rawfile,maps/mp/mp_overgrown.gsc -rawfile,maps/mp/mp_pipeline.gsc -rawfile,maps/mp/mp_shipment.gsc -rawfile,maps/mp/mp_showdown.gsc -rawfile,maps/mp/mp_strike.gsc -rawfile,maps/mp/mp_vacant.gsc - -rawfile,mp/playeranim.script - -rawfile,promod/client.gsc -rawfile,promod/comp.gsc -rawfile,promod/dvarmon.gsc -rawfile,promod/messagecenter.gsc -rawfile,promod/modes.gsc -rawfile,promod/readyup.gsc -rawfile,promod/scorebot.gsc -rawfile,promod/servercheck.gsc -rawfile,promod/setvariables.gsc -rawfile,promod/shoutcast.gsc -rawfile,promod/stratmode.gsc -rawfile,promod/strattime.gsc -rawfile,promod/timeout.gsc - -rawfile,shock/damage_mp.shock - -sound,promod,,all_mp - -stringtable,promod/customStatsTable.csv -stringtable,promod/destructible.csv - -xmodel,com_floodlight_on \ No newline at end of file +# Copyright (c) 2009-2017 Andreas Göransson +# Copyright (c) 2009-2017 Indrek Ardel +# +# This file is part of Call of Duty 4 Promod. +# +# Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. +# Terms of license can be found in LICENSE.md document bundled with the project. + +localize,cgame + +menufile,ui_mp/promod.txt +menufile,ui_mp/scriptmenus/changeclass_marines_mw.menu +menufile,ui_mp/scriptmenus/changeclass_mw.menu +menufile,ui_mp/scriptmenus/changeclass_opfor_mw.menu +menufile,ui_mp/scriptmenus/class.menu +menufile,ui_mp/scriptmenus/demo.menu +menufile,ui_mp/scriptmenus/echo.menu +menufile,ui_mp/scriptmenus/quickpromod.menu +menufile,ui_mp/scriptmenus/quickpromodgfx.menu +menufile,ui_mp/scriptmenus/scoreboard.menu +menufile,ui_mp/scriptmenus/shoutcast.menu +menufile,ui_mp/scriptmenus/shoutcast_map.menu +menufile,ui_mp/scriptmenus/shoutcast_setup.menu +menufile,ui_mp/scriptmenus/shoutcast_setup_binds.menu +menufile,ui_mp/scriptmenus/team_marinesopfor.menu +menufile,ui_mp/scriptmenus/team_marinesopfor_flipped.menu + +rawfile,maps/createfx/mp_backlot_fx.gsc +rawfile,maps/createfx/mp_bloc_fx.gsc +rawfile,maps/createfx/mp_bog_fx.gsc +rawfile,maps/createfx/mp_broadcast_fx.gsc +rawfile,maps/createfx/mp_carentan_fx.gsc +rawfile,maps/createfx/mp_cargoship_fx.gsc +rawfile,maps/createfx/mp_citystreets_fx.gsc +rawfile,maps/createfx/mp_convoy_fx.gsc +rawfile,maps/createfx/mp_countdown_fx.gsc +rawfile,maps/createfx/mp_crash_fx.gsc +rawfile,maps/createfx/mp_crash_snow_fx.gsc +rawfile,maps/createfx/mp_creek_fx.gsc +rawfile,maps/createfx/mp_crossfire_fx.gsc +rawfile,maps/createfx/mp_farm_fx.gsc +rawfile,maps/createfx/mp_killhouse_fx.gsc +rawfile,maps/createfx/mp_overgrown_fx.gsc +rawfile,maps/createfx/mp_pipeline_fx.gsc +rawfile,maps/createfx/mp_shipment_fx.gsc +rawfile,maps/createfx/mp_showdown_fx.gsc +rawfile,maps/createfx/mp_strike_fx.gsc +rawfile,maps/createfx/mp_vacant_fx.gsc + +rawfile,maps/mp/_destructible.gsc +rawfile,maps/mp/_explosive_barrels.gsc +rawfile,maps/mp/_flashgrenades.gsc +rawfile,maps/mp/_load.gsc + +rawfile,maps/mp/gametypes/_class.gsc +rawfile,maps/mp/gametypes/_gameobjects.gsc +rawfile,maps/mp/gametypes/_globallogic.gsc +rawfile,maps/mp/gametypes/_healthoverlay.gsc +rawfile,maps/mp/gametypes/_hud.gsc +rawfile,maps/mp/gametypes/_hud_message.gsc +rawfile,maps/mp/gametypes/_killcam.gsc +rawfile,maps/mp/gametypes/_menus.gsc +rawfile,maps/mp/gametypes/_missions.gsc +rawfile,maps/mp/gametypes/_promod.gsc +rawfile,maps/mp/gametypes/_quickmessages.gsc +rawfile,maps/mp/gametypes/_rank.gsc +rawfile,maps/mp/gametypes/_scoreboard.gsc +rawfile,maps/mp/gametypes/_spawnlogic.gsc +rawfile,maps/mp/gametypes/_spectating.gsc +rawfile,maps/mp/gametypes/_teams.gsc +rawfile,maps/mp/gametypes/_weapons.gsc +rawfile,maps/mp/gametypes/dm.gsc +rawfile,maps/mp/gametypes/dom.gsc +rawfile,maps/mp/gametypes/koth.gsc +rawfile,maps/mp/gametypes/sab.gsc +rawfile,maps/mp/gametypes/sd.gsc +rawfile,maps/mp/gametypes/war.gsc + +rawfile,maps/mp/mp_backlot.gsc +rawfile,maps/mp/mp_bloc.gsc +rawfile,maps/mp/mp_bog.gsc +rawfile,maps/mp/mp_broadcast.gsc +rawfile,maps/mp/mp_carentan.gsc +rawfile,maps/mp/mp_cargoship.gsc +rawfile,maps/mp/mp_citystreets.gsc +rawfile,maps/mp/mp_convoy.gsc +rawfile,maps/mp/mp_countdown.gsc +rawfile,maps/mp/mp_crash.gsc +rawfile,maps/mp/mp_crash_snow.gsc +rawfile,maps/mp/mp_creek.gsc +rawfile,maps/mp/mp_crossfire.gsc +rawfile,maps/mp/mp_farm.gsc +rawfile,maps/mp/mp_killhouse.gsc +rawfile,maps/mp/mp_overgrown.gsc +rawfile,maps/mp/mp_pipeline.gsc +rawfile,maps/mp/mp_shipment.gsc +rawfile,maps/mp/mp_showdown.gsc +rawfile,maps/mp/mp_strike.gsc +rawfile,maps/mp/mp_vacant.gsc + +rawfile,mp/playeranim.script + +rawfile,promod/client.gsc +rawfile,promod/comp.gsc +rawfile,promod/dvarmon.gsc +rawfile,promod/messagecenter.gsc +rawfile,promod/modes.gsc +rawfile,promod/readyup.gsc +rawfile,promod/scorebot.gsc +rawfile,promod/servercheck.gsc +rawfile,promod/setvariables.gsc +rawfile,promod/shoutcast.gsc +rawfile,promod/stratmode.gsc +rawfile,promod/strattime.gsc +rawfile,promod/timeout.gsc + +rawfile,shock/damage_mp.shock + +sound,promod,,all_mp + +stringtable,promod/customStatsTable.csv +stringtable,promod/destructible.csv + +xmodel,com_floodlight_on diff --git a/mp/playeranim.script b/mp/playeranim.script index 5d1de4a..cac106c 100644 --- a/mp/playeranim.script +++ b/mp/playeranim.script @@ -1,1558 +1,1558 @@ -DEFINES - -set weaponclass autofire = mg AND smg -set movetype moving = walk AND walkcr AND walkcrbk AND walkbk AND run AND runbk AND runcr AND runcrbk AND walkprone AND walkpronebk -set movetype crouching = idlecr AND runcr AND runcrbk AND walkcr AND walkcrbk -set movetype prone = idleprone AND walkprone AND walkpronebk -set movetype backstep = walkbk AND runbk AND walkcrbk AND walkpronebk - -ANIMATIONS - -STATE COMBAT -{ - idle - { - mounted mg42, firing - { - both standSAWgunner_aim turretanim - } - mounted mg42 - { - both standSAWgunner_aim turretanim - } - perk laststand - { - both pb_laststand_idle - } - playerAnimType none - { - both pb_stand_alert - } - playerAnimType briefcase - { - both pb_stand_bombplant - } - playerAnimType hold - { - both pb_hold_idle - } - weaponclass pistol, weapon_position ads - { - both pb_stand_ads_pistol - } - weaponclass pistol - { - both pb_stand_alert_pistol - } - weaponclass rocketlauncher, weapon_position ads - { - both pb_stand_ads_RPG - } - weaponclass rocketlauncher - { - both pb_stand_alert_RPG - } - weapon_position ads - { - both pb_stand_ads - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_stand_grenade_pullpin - } - default - { - both pb_stand_alert - } - } - idlecr - { - mounted mg42, firing - { - both crouchSAWgunner_aim turretanim - } - mounted mg42 - { - both crouchSAWgunner_aim turretanim - } - perk laststand - { - both pb_laststand_idle - } - playerAnimType none - { - both pb_crouch_bombplant - } - playerAnimType briefcase - { - both pb_crouch_bombplant - } - playerAnimType hold - { - both pb_crouch_hold_idle - } - weaponclass pistol, weapon_position ads - { - both pb_crouch_ads_pistol - } - weaponclass pistol - { - both pb_crouch_alert_pistol - } - weaponclass rocketlauncher, weapon_position ads - { - both pb_crouch_ads_RPG - } - weaponclass rocketlauncher - { - both pb_crouch_alert_RPG - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_crouch_grenade_pullpin - } - weapon_position ads - { - both pb_crouch_ads - } - default - { - both pb_crouch_alert - } - } - idleprone - { - mounted mg42, firing - { - both proneSAWgunner_aim turretanim - } - mounted mg42 - { - both proneSAWgunner_aim turretanim - } - perk laststand - { - both pb_laststand_idle - } - playerAnimType briefcase - { - both pb_prone_bombplant - } - playerAnimType hold - { - both pb_prone_hold - } - playerAnimType none - { - both pb_prone_bombplant - } - weaponclass pistol - { - both pb_prone_aim_pistol - } - weaponclass rocketlauncher - { - both pb_prone_aim_RPG - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_prone_aim_grenade - } - default - { - both pb_prone_aim - } - } - flinch_forward - { - weaponclass pistol - { - } - weaponclass grenade, playerAnimType all NOT m203 - { - } - default - { - } - } - flinch_backward - { - weaponclass pistol - { - } - weaponclass grenade, playerAnimType all NOT m203 - { - } - default - { - } - } - flinch_left - { - weaponclass pistol - { - } - weaponclass grenade, playerAnimType all NOT m203 - { - } - default - { - } - } - flinch_right - { - weaponclass pistol - { - } - weaponclass grenade, playerAnimType all NOT m203 - { - } - default - { - } - } - stumble_forward - { - weaponclass pistol, strafing left - { - both pb_stumble_pistol_left - } - weaponclass pistol, strafing right - { - both pb_stumble_pistol_right - } - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_stumble_grenade_left - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_stumble_grenade_right - } - weaponclass pistol - { - both pb_stumble_pistol_forward - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_stumble_grenade_forward - } - strafing left - { - both pb_stumble_left - } - strafing right - { - both pb_stumble_right - } - default - { - both pb_stumble_forward - } - } - stumble_backward - { - weaponclass pistol, strafing left - { - both pb_stumble_pistol_left - } - weaponclass pistol, strafing right - { - both pb_stumble_pistol_right - } - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_stumble_grenade_left - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_stumble_grenade_right - } - weaponclass pistol - { - both pb_stumble_pistol_back - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_stumble_grenade_back - } - strafing left - { - both pb_stumble_left - } - strafing right - { - both pb_stumble_right - } - default - { - both pb_stumble_back - } - } - stumble_walk_forward - { - weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 - { - both pb_stumble_pistol_walk_left - } - weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 - { - both pb_stumble_pistol_walk_right - } - weaponclass pistol AND grenade, playerAnimType all NOT m203 - { - both pb_stumble_pistol_walk_forward - } - strafing left - { - both pb_stumble_walk_left - } - strafing right - { - both pb_stumble_walk_right - } - default - { - both pb_stumble_walk_forward - } - } - stumble_walk_backward - { - weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 - { - both pb_stumble_pistol_walk_left - } - weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 - { - both pb_stumble_pistol_walk_right - } - weaponclass pistol AND grenade, playerAnimType all NOT m203 - { - both pb_stumble_pistol_walk_back - } - strafing left - { - both pb_stumble_walk_left - } - strafing right - { - both pb_stumble_walk_right - } - default - { - both pb_stumble_walk_back - } - } - stumble_crouch_forward - { - weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 - { - both pb_stumble_pistol_left - } - weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 - { - both pb_stumble_pistol_right - } - weaponclass pistol AND grenade, playerAnimType all NOT m203 - { - both pb_stumble_pistol_forward - } - strafing left - { - both pb_stumble_left - } - strafing right - { - both pb_stumble_right - } - default - { - both pb_stumble_forward - } - } - stumble_crouch_backward - { - weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 - { - both pb_stumble_pistol_left - } - weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 - { - both pb_stumble_pistol_right - } - weaponclass pistol AND grenade, playerAnimType all NOT m203 - { - both pb_stumble_pistol_back - } - strafing left - { - both pb_stumble_left - } - strafing right - { - both pb_stumble_right - } - default - { - both pb_stumble_back - } - } - walk - { - playerAnimType none - { - both pb_stand_shoot_walk_forward_unarmed - } - playerAnimType hold - { - both pb_hold_run - } - weaponclass rocketlauncher, strafing left - { - both pb_walk_left_RPG_ads - } - weaponclass rocketlauncher, strafing right - { - both pb_walk_right_RPG_ads - } - weaponclass rocketlauncher - { - both pb_walk_forward_RPG_ads - } - weaponclass pistol , strafing left - { - both pb_combatwalk_left_loop_pistol - } - weaponclass pistol, strafing right - { - both pb_combatwalk_right_loop_pistol - } - weaponclass pistol - { - both pb_combatwalk_forward_loop_pistol - } - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_combatrun_left_loop_grenade - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_combatrun_right_loop_grenade - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_combatrun_forward_loop_stickgrenade - } - strafing left - { - both pb_stand_shoot_walk_left - } - strafing right - { - both pb_stand_shoot_walk_right - } - default - { - both pb_stand_shoot_walk_forward - } - } - walkbk - { - playerAnimType none - { - both pb_stand_shoot_walk_forward_unarmed - } - playerAnimType hold - { - both pb_hold_run_back - } - weaponclass rocketlauncher - { - both pb_walk_back_RPG_ads - } - weaponclass pistol, strafing left - { - both pb_combatwalk_left_loop_pistol - } - weaponclass pistol, strafing right - { - both pb_combatwalk_right_loop_pistol - } - weaponclass pistol - { - both pb_combatwalk_back_loop_pistol - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_combatrun_back_loop_grenade - } - strafing left - { - both pb_stand_shoot_walk_left - } - strafing right - { - both pb_stand_shoot_walk_right - } - default - { - both pb_stand_shoot_walk_back - } - } - walkcr - { - playerAnimType none - { - both pb_crouch_walk_forward_unarmed - } - playerAnimType hold, strafing left - { - both pb_crouch_hold_run_left - } - playerAnimType hold, strafing right - { - both pb_crouch_hold_run_right - } - playerAnimType hold - { - both pb_crouch_hold_run - } - weaponclass rocketlauncher, strafing left - { - both pb_crouch_walk_left_RPG - } - weaponclass rocketlauncher, strafing right - { - both pb_crouch_walk_right_RPG - } - weaponclass rocketlauncher - { - both pb_crouch_walk_forward_RPG - } - weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 - { - both pb_crouch_walk_left_pistol - } - weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 - { - both pb_crouch_walk_right_pistol - } - weaponclass pistol AND grenade, playerAnimType all NOT m203 - { - both pb_crouch_walk_forward_pistol - } - strafing left - { - both pb_crouch_shoot_run_left - } - strafing right - { - both pb_crouch_shoot_run_right - } - default - { - both pb_crouch_shoot_run_forward - } - } - walkcrbk - { - playerAnimType none - { - both pb_crouch_walk_forward_unarmed - } - playerAnimType hold - { - both pb_crouch_hold_run_back - } - weaponclass rocketlauncher - { - both pb_crouch_walk_back_RPG - } - weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 - { - both pb_crouch_walk_left_pistol - } - weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 - { - both pb_crouch_walk_right_pistol - } - weaponclass pistol AND grenade, playerAnimType all NOT m203 - { - both pb_crouch_walk_back_pistol - } - strafing left - { - both pb_crouch_shoot_run_left - } - strafing right - { - both pb_crouch_shoot_run_right - } - default - { - both pb_crouch_shoot_run_back - } - } - walkprone - { - weaponclass pistol, strafing left - { - both pb_prone_crawl_left - } - weaponclass pistol, strafing right - { - both pb_prone_crawl_right - } - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_prone_grenade_crawl_left - } - playerAnimType hold, strafing left - { - both pb_prone_crawl_left_hold - } - playerAnimType hold, strafing right - { - both pb_prone_crawl_right_hold - } - playerAnimType hold - { - both pb_prone_crawl_hold - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_prone_grenade_crawl_right - } - weaponclass pistol - { - both pb_prone_crawl - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_prone_grenade_crawl - } - strafing left - { - both pb_prone_crawl_left - } - strafing right - { - both pb_prone_crawl_right - } - default - { - both pb_prone_crawl - } - } - walkpronebk - { - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_prone_grenade_crawl_left - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_prone_grenade_crawl_right - } - playerAnimType hold - { - both pb_prone_crawl_back_hold - } - weaponclass pistol - { - both pb_prone_crawl_back - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_prone_grenade_crawl_back - } - default - { - both pb_prone_crawl_back - } - } - run - { - playerAnimType none - { - both pb_pistol_run_fast - } - playerAnimType hold, strafing left - { - both pb_hold_run_left - } - playerAnimType hold, strafing right - { - both pb_hold_run_right - } - playerAnimType hold - { - both pb_hold_run - } - weaponclass rocketlauncher, strafing left - { - both pb_combatrun_left_RPG - } - weaponclass rocketlauncher, strafing right - { - both pb_combatrun_right_RPG - } - weaponclass rocketlauncher - { - both pb_combatrun_forward_RPG - } - weaponclass pistol, strafing left - { - both pb_combatrun_left_loop_pistol - } - weaponclass pistol, strafing right - { - both pb_combatrun_right_loop_pistol - } - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_combatrun_left_loop_grenade - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_combatrun_right_loop_grenade - } - strafing left - { - both pb_combatrun_left_loop - } - strafing right - { - both pb_combatrun_right_loop - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_combatrun_forward_loop_stickgrenade - } - weaponclass pistol - { - both pb_pistol_run_fast - } - default - { - both pb_combatrun_forward_loop - } - } - stumble_sprint_forward - { - default - { - both pb_stumble_forward - } - } - sprint - { - playerAnimType none - { - both pb_sprint - } - playerAnimType hold - { - both pb_sprint_hold - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_sprint - } - weaponclass pistol - { - both pb_sprint_pistol - } - weaponclass rocketlauncher - { - both pb_sprint_RPG - } - default - { - both pb_sprint - } - } - runbk - { - playerAnimType none - { - both pb_combatrun_back_loop_grenade - } - playerAnimType hold - { - both pb_hold_run_back - } - weaponclass pistol, strafing left - { - both pb_combatrun_left_loop_pistol - } - weaponclass pistol, strafing right - { - both pb_combatrun_right_loop_pistol - } - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_combatrun_left_loop_grenade - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_combatrun_right_loop_grenade - } - weaponclass pistol - { - both pb_combatrun_back_loop_pistol - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_combatrun_back_loop_grenade - } - weaponclass rocketlauncher - { - both pb_combatrun_back_RPG - } - strafing left - { - both pb_combatrun_left_loop - } - strafing right - { - both pb_combatrun_right_loop - } - default - { - both pb_combatrun_back_loop - } - } - runcr - { - playerAnimType none - { - both pb_crouch_run_forward_grenade - } - weaponclass rocketlauncher, strafing left - { - both pb_crouch_run_left_RPG - } - weaponclass rocketlauncher, strafing right - { - both pb_crouch_run_right_RPG - } - weaponclass rocketlauncher - { - both pb_crouch_run_forward_RPG - } - weaponclass pistol, strafing left - { - both pb_crouch_run_left_pistol - } - weaponclass pistol, strafing right - { - both pb_crouch_run_right_pistol - } - playerAnimType hold, strafing left - { - both pb_crouch_hold_run_left - } - playerAnimType hold, strafing right - { - both pb_crouch_hold_run_right - } - playerAnimType hold - { - both pb_crouch_hold_run - } - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_crouch_run_left_grenade - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_crouch_run_right_grenade - } - weaponclass pistol - { - both pb_crouch_run_forward_pistol - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_crouch_run_forward_grenade - } - strafing left - { - both pb_crouch_run_left - } - strafing right - { - both pb_crouch_run_right - } - default - { - both pb_crouch_run_forward - } - } - runcrbk - { - playerAnimType none - { - both pb_crouch_run_back_grenade - } - weaponclass rocketlauncher - { - both pb_crouch_run_back_RPG - } - weaponclass pistol, strafing left - { - both pb_crouch_run_left_pistol - } - weaponclass pistol, strafing right - { - both pb_crouch_run_right_pistol - } - playerAnimType hold - { - both pb_crouch_hold_run_back - } - weaponclass grenade, strafing left, playerAnimType all NOT m203 - { - both pb_crouch_run_left_grenade - } - weaponclass grenade, strafing right, playerAnimType all NOT m203 - { - both pb_crouch_run_right_grenade - } - weaponclass pistol - { - both pb_crouch_run_back_pistol - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_crouch_run_back_grenade - } - strafing left - { - both pb_crouch_run_left - } - strafing right - { - both pb_crouch_run_right - } - default - { - both pb_crouch_run_back - } - } - climbup - { - default - { - both pb_climbup - } - } - climbdown - { - default - { - both pb_climbdown - } - } - turnrightcr - { - movetype idlecr AND turnrightcr - { - legs pl_crouchturn_90right - } - } - turnleftcr - { - movetype idlecr AND turnleftcr - { - legs pl_crouchturn_90left - } - } - mantle_up_57 - { - default - { - both mp_mantle_up_57 - } - } - mantle_up_51 - { - default - { - both mp_mantle_up_51 - } - } - mantle_up_45 - { - default - { - both mp_mantle_up_45 - } - } - mantle_up_39 - { - default - { - both mp_mantle_up_39 - } - } - mantle_up_33 - { - default - { - both mp_mantle_up_33 - } - } - mantle_up_27 - { - default - { - legs mp_mantle_up_27 - } - } - mantle_up_21 - { - default - { - legs mp_mantle_up_21 - } - } - mantle_over_high - { - default - { - both mp_mantle_over_high - } - } - mantle_over_mid - { - default - { - both mp_mantle_over_mid - } - } - mantle_over_low - { - default - { - legs mp_mantle_over_low - } - } -} - -EVENTS - -fireweapon -{ - mounted mg42 - { - } - perk laststand - { - torso pt_laststand_fire - } - weaponclass pistol, movetype prone - { - torso pt_prone_shoot_pistol - } - weaponclass pistol, movetype moving - { - } - weaponclass pistol, movetype crouching, weapon_position ads - { - torso pt_crouch_shoot_ads_pistol - } - weaponclass pistol, movetype crouching - { - torso pt_crouch_shoot_pistol - } - weaponclass pistol, weapon_position ads - { - torso pb_stand__shoot_ads_pistol - } - weaponclass pistol - { - torso pt_stand_shoot_pistol - } - weaponclass autofire, movetype prone - { - torso pt_prone_shoot_auto duration 150 - } - weaponclass autofire, movetype moving - { - } - weaponclass autofire, movetype crouching, weapon_position ads - { - torso pt_crouch_shoot_auto_ads duration 150 - } - weaponclass autofire, movetype crouching - { - torso pt_crouch_shoot_auto duration 150 - } - weaponclass autofire, weapon_position ads - { - torso pt_stand_shoot_auto_ads duration 150 - } - weaponclass autofire - { - torso pt_stand_shoot_auto duration 150 - } - weaponclass rocketlauncher, movetype moving - { - } - weaponclass rocketlauncher, movetype crouching - { - torso pt_crouch_shoot_ads - } - weaponclass rocketlauncher, movetype prone - { - torso pt_prone_shoot_RPG - } - weaponclass rocketlauncher - { - torso pt_stand_shoot_RPG - } - weaponclass grenade, movetype prone, playerAnimType hold - { - torso pt_hold_prone_throw - } - weaponclass grenade, movetype idlecr, playerAnimType hold - { - torso pt_hold_throw - } - weaponclass grenade, playerAnimType hold - { - torso pt_hold_throw - } - weaponclass grenade, movetype prone, playerAnimType all NOT m203 - { - torso pt_prone_grenade_throw - } - weaponclass grenade, movetype idlecr, playerAnimType all NOT m203 - { - both pb_crouch_grenade_throw - } - weaponclass grenade, movetype crouching, playerAnimType all NOT m203 - { - torso pt_crouch_grenade_throw - } - weaponclass grenade, movetype idle, playerAnimType all NOT m203 - { - both pb_stand_grenade_throw blendtime 10 - } - weaponclass grenade, playerAnimType all NOT m203 - { - torso pt_stand_grenade_throw blendtime 10 - } - playerAnimType sniper, movetype prone - { - torso pt_prone_shoot_auto - } - playerAnimType sniper, movetype moving - { - } - playerAnimType sniper, movetype crouching, weapon_position ads - { - torso pt_crouch_shoot_ads - } - playerAnimType sniper, movetype crouching - { - torso pt_crouch_shoot - } - playerAnimType sniper, weapon_position ads - { - torso pt_rifle_fire_ads - } - playerAnimType sniper - { - torso pt_rifle_fire - } - playerAnimType other, movetype prone - { - torso pt_prone_shoot_auto - } - playerAnimType other - { - torso pt_stand_shoot_shotgun - } - movetype prone - { - torso pt_prone_shoot_auto - } - movetype moving - { - } - movetype crouching, weapon_position ads - { - torso pt_crouch_shoot_ads - } - movetype crouching - { - torso pt_crouch_shoot - } - weapon_position ads - { - torso pt_stand_shoot_ads - } - default - { - torso pt_stand_shoot - } -} - -prone_to_crouch -{ - movetype moving - { - both pb_prone2crouchrun - } - default - { - both pb_prone2crouch - } -} - -crouch_to_prone -{ - default - { - both pb_crouch2prone - } -} - -meleeattack -{ - weaponclass pistol AND grenade, movetype prone, playerAnimType all NOT m203 - { - torso pt_melee_prone_pistol - } - weaponclass pistol AND grenade, playerAnimType all NOT m203 - { - torso pt_melee_prone_pistol - } - movetype prone - { - torso pt_melee_prone - } - movetype crouching - { - torso pt_melee_crouch_left2left - torso pt_melee_crouch_left2right - torso pt_melee_crouch_right2left - } - default - { - torso pt_melee_right2right_1 duration 400 - torso pt_melee_right2right_2 duration 400 - torso pt_melee_right2left duration 300 - torso pt_melee_left2left_1 duration 400 - torso pt_melee_left2right duration 300 - } -} - -knife_melee -{ - movetype prone - { - torso pt_melee_prone_pistol - } - default - { - torso pt_melee_pistol_1 - } -} - -knife_melee_charge -{ - movetype prone - { - torso pt_melee_prone_pistol - } - default - { - torso pt_melee_pistol_2 - } -} - -dropweapon -{ - movetype prone - { - torso pt_prone_pullout_pose - } - movetype crouching - { - torso pt_crouch_pullout_pose - } - default - { - torso pt_stand_pullout_pose - } -} - -raiseweapon -{ -} - -reload -{ - perk laststand - { - torso pt_laststand_reload - } - weaponclass pistol, movetype idlecr - { - torso pt_reload_crouch_pistol - } - weaponclass pistol, movetype crouching - { - torso pt_reload_crouchwalk_pistol - } - weaponclass pistol, movetype prone - { - torso pt_reload_prone_pistol - } - weaponclass rocketlauncher, movetype prone - { - torso pt_reload_prone_RPG - } - weaponclass rocketlauncher - { - torso pt_reload_stand_RPG - } - weaponclass pistol - { - torso pt_reload_stand_pistol - } - playerAnimType smg, movetype prone - { - torso pt_reload_prone_auto - } - playerAnimType smg, movetype idlecr - { - torso pt_reload_stand_auto_mp40 - } - playerAnimType smg, movetype crouching - { - torso pt_reload_crouchwalk - } - playerAnimType smg - { - torso pt_reload_stand_auto_mp40 - } - playerAnimType autorifle, movetype prone - { - torso pt_reload_prone_auto - } - playerAnimType autorifle, movetype idlecr - { - torso pt_reload_crouch_rifle - } - playerAnimType autorifle, movetype crouching - { - torso pt_reload_crouchwalk - } - playerAnimType autorifle - { - torso pt_reload_stand_auto - } - movetype idlecr - { - torso pt_reload_crouch_rifle - } - movetype crouching - { - torso pt_reload_crouch_rifle - } - movetype prone - { - torso pt_reload_prone_auto - } - default - { - torso pt_reload_stand_rifle - } -} - -jump -{ - playerAnimType none, movetype run - { - both pb_runjump_takeoff duration 5 blendtime 100 - } - playerAnimType none - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - weaponclass rocketlauncher, movetype run - { - both pb_runjump_takeoff duration 5 blendtime 100 - } - weaponclass rocketlauncher - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - movetype run - { - both pb_runjump_takeoff duration 5 blendtime 100 - } - default - { - both pb_standjump_takeoff duration 5 blendtime 100 - } -} - -jumpbk -{ - movetype crouching AND prone - { - both pb_chicken_dance_crouch duration 5 blendtime 100 - } - playerAnimType none, movetype run - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - playerAnimType none - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - weaponclass rocketlauncher, movetype run - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - weaponclass rocketlauncher - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - weaponclass grenade, movetype run, playerAnimType all NOT m203 - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - weaponclass grenade, playerAnimType all NOT m203 - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - movetype run - { - both pb_standjump_takeoff duration 5 blendtime 100 - } - default - { - both pb_standjump_takeoff duration 5 blendtime 100 - } -} - -land -{ - movetype run - { - both pb_runjump_land duration 100 blendtime 50 - } - weaponclass pistol AND grenade, playerAnimType all NOT m203 - { - both pb_standjump_land_pistol duration 5 - } - default - { - both pb_standjump_land duration 100 blendtime 50 - } -} - -shellshock -{ - movetype prone - { - } - movetype moving - { - torso pb_stand_shellshock duration 5000 blendtime 50 - } - movetype idle - { - torso pb_stand_shellshock duration 5000 blendtime 50 - } - movetype crouching - { - torso pb_stand_shellshock duration 5000 blendtime 50 - } -} - -DEATH -{ - movetype crouching, perk laststand - { - both pb_laststand_death - } - movetype prone, perk laststand - { - both pb_laststand_death - } - perk laststand - { - both pb_laststand_death - } - movetype prone - { - both pb_prone_death_quickdeath - } - movetype idlecr - { - both pb_crouch_death_headshot_front - both pb_crouch_death_clutchchest - both pb_crouch_death_flip - both pb_crouch_death_fetal - both pb_crouch_death_falltohands - } - movetype runbk - { - both pb_death_run_back - } - movetype run AND runcr, strafing left - { - both pb_death_run_left - } - movetype run AND runcr, strafing right - { - both pb_death_run_right - } - movetype runcr - { - both pb_crouchrun_death_drop - both pb_crouchrun_death_crumple - } - movetype run - { - both pb_death_run_forward_crumple - both pb_death_run_onfront - both pb_death_run_stumble - } - default - { - both pb_stand_death_neckdeath - both pb_stand_death_headchest_topple - both pb_stand_death_frontspin - both pb_stand_death_nervedeath - both pb_stand_death_legs - both pb_stand_death_lowerback - both pb_stand_death_head_collapse - both pb_stand_death_neckdeath_thrash - } -} - -pain -{ - movetype prone - { - both pb_prone_painA_holdchest - both pb_prone_painB_holdhead - } - movetype crouching - { - both pb_crouch_pain_holdStomach - } - default - { - both pb_crouch_pain_holdStomach - } -} \ No newline at end of file +DEFINES + +set weaponclass autofire = mg AND smg +set movetype moving = walk AND walkcr AND walkcrbk AND walkbk AND run AND runbk AND runcr AND runcrbk AND walkprone AND walkpronebk +set movetype crouching = idlecr AND runcr AND runcrbk AND walkcr AND walkcrbk +set movetype prone = idleprone AND walkprone AND walkpronebk +set movetype backstep = walkbk AND runbk AND walkcrbk AND walkpronebk + +ANIMATIONS + +STATE COMBAT +{ + idle + { + mounted mg42, firing + { + both standSAWgunner_aim turretanim + } + mounted mg42 + { + both standSAWgunner_aim turretanim + } + perk laststand + { + both pb_laststand_idle + } + playerAnimType none + { + both pb_stand_alert + } + playerAnimType briefcase + { + both pb_stand_bombplant + } + playerAnimType hold + { + both pb_hold_idle + } + weaponclass pistol, weapon_position ads + { + both pb_stand_ads_pistol + } + weaponclass pistol + { + both pb_stand_alert_pistol + } + weaponclass rocketlauncher, weapon_position ads + { + both pb_stand_ads_RPG + } + weaponclass rocketlauncher + { + both pb_stand_alert_RPG + } + weapon_position ads + { + both pb_stand_ads + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_stand_grenade_pullpin + } + default + { + both pb_stand_alert + } + } + idlecr + { + mounted mg42, firing + { + both crouchSAWgunner_aim turretanim + } + mounted mg42 + { + both crouchSAWgunner_aim turretanim + } + perk laststand + { + both pb_laststand_idle + } + playerAnimType none + { + both pb_crouch_bombplant + } + playerAnimType briefcase + { + both pb_crouch_bombplant + } + playerAnimType hold + { + both pb_crouch_hold_idle + } + weaponclass pistol, weapon_position ads + { + both pb_crouch_ads_pistol + } + weaponclass pistol + { + both pb_crouch_alert_pistol + } + weaponclass rocketlauncher, weapon_position ads + { + both pb_crouch_ads_RPG + } + weaponclass rocketlauncher + { + both pb_crouch_alert_RPG + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_crouch_grenade_pullpin + } + weapon_position ads + { + both pb_crouch_ads + } + default + { + both pb_crouch_alert + } + } + idleprone + { + mounted mg42, firing + { + both proneSAWgunner_aim turretanim + } + mounted mg42 + { + both proneSAWgunner_aim turretanim + } + perk laststand + { + both pb_laststand_idle + } + playerAnimType briefcase + { + both pb_prone_bombplant + } + playerAnimType hold + { + both pb_prone_hold + } + playerAnimType none + { + both pb_prone_bombplant + } + weaponclass pistol + { + both pb_prone_aim_pistol + } + weaponclass rocketlauncher + { + both pb_prone_aim_RPG + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_prone_aim_grenade + } + default + { + both pb_prone_aim + } + } + flinch_forward + { + weaponclass pistol + { + } + weaponclass grenade, playerAnimType all NOT m203 + { + } + default + { + } + } + flinch_backward + { + weaponclass pistol + { + } + weaponclass grenade, playerAnimType all NOT m203 + { + } + default + { + } + } + flinch_left + { + weaponclass pistol + { + } + weaponclass grenade, playerAnimType all NOT m203 + { + } + default + { + } + } + flinch_right + { + weaponclass pistol + { + } + weaponclass grenade, playerAnimType all NOT m203 + { + } + default + { + } + } + stumble_forward + { + weaponclass pistol, strafing left + { + both pb_stumble_pistol_left + } + weaponclass pistol, strafing right + { + both pb_stumble_pistol_right + } + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_stumble_grenade_left + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_stumble_grenade_right + } + weaponclass pistol + { + both pb_stumble_pistol_forward + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_stumble_grenade_forward + } + strafing left + { + both pb_stumble_left + } + strafing right + { + both pb_stumble_right + } + default + { + both pb_stumble_forward + } + } + stumble_backward + { + weaponclass pistol, strafing left + { + both pb_stumble_pistol_left + } + weaponclass pistol, strafing right + { + both pb_stumble_pistol_right + } + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_stumble_grenade_left + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_stumble_grenade_right + } + weaponclass pistol + { + both pb_stumble_pistol_back + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_stumble_grenade_back + } + strafing left + { + both pb_stumble_left + } + strafing right + { + both pb_stumble_right + } + default + { + both pb_stumble_back + } + } + stumble_walk_forward + { + weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 + { + both pb_stumble_pistol_walk_left + } + weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 + { + both pb_stumble_pistol_walk_right + } + weaponclass pistol AND grenade, playerAnimType all NOT m203 + { + both pb_stumble_pistol_walk_forward + } + strafing left + { + both pb_stumble_walk_left + } + strafing right + { + both pb_stumble_walk_right + } + default + { + both pb_stumble_walk_forward + } + } + stumble_walk_backward + { + weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 + { + both pb_stumble_pistol_walk_left + } + weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 + { + both pb_stumble_pistol_walk_right + } + weaponclass pistol AND grenade, playerAnimType all NOT m203 + { + both pb_stumble_pistol_walk_back + } + strafing left + { + both pb_stumble_walk_left + } + strafing right + { + both pb_stumble_walk_right + } + default + { + both pb_stumble_walk_back + } + } + stumble_crouch_forward + { + weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 + { + both pb_stumble_pistol_left + } + weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 + { + both pb_stumble_pistol_right + } + weaponclass pistol AND grenade, playerAnimType all NOT m203 + { + both pb_stumble_pistol_forward + } + strafing left + { + both pb_stumble_left + } + strafing right + { + both pb_stumble_right + } + default + { + both pb_stumble_forward + } + } + stumble_crouch_backward + { + weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 + { + both pb_stumble_pistol_left + } + weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 + { + both pb_stumble_pistol_right + } + weaponclass pistol AND grenade, playerAnimType all NOT m203 + { + both pb_stumble_pistol_back + } + strafing left + { + both pb_stumble_left + } + strafing right + { + both pb_stumble_right + } + default + { + both pb_stumble_back + } + } + walk + { + playerAnimType none + { + both pb_stand_shoot_walk_forward_unarmed + } + playerAnimType hold + { + both pb_hold_run + } + weaponclass rocketlauncher, strafing left + { + both pb_walk_left_RPG_ads + } + weaponclass rocketlauncher, strafing right + { + both pb_walk_right_RPG_ads + } + weaponclass rocketlauncher + { + both pb_walk_forward_RPG_ads + } + weaponclass pistol , strafing left + { + both pb_combatwalk_left_loop_pistol + } + weaponclass pistol, strafing right + { + both pb_combatwalk_right_loop_pistol + } + weaponclass pistol + { + both pb_combatwalk_forward_loop_pistol + } + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_combatrun_left_loop_grenade + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_combatrun_right_loop_grenade + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_combatrun_forward_loop_stickgrenade + } + strafing left + { + both pb_stand_shoot_walk_left + } + strafing right + { + both pb_stand_shoot_walk_right + } + default + { + both pb_stand_shoot_walk_forward + } + } + walkbk + { + playerAnimType none + { + both pb_stand_shoot_walk_forward_unarmed + } + playerAnimType hold + { + both pb_hold_run_back + } + weaponclass rocketlauncher + { + both pb_walk_back_RPG_ads + } + weaponclass pistol, strafing left + { + both pb_combatwalk_left_loop_pistol + } + weaponclass pistol, strafing right + { + both pb_combatwalk_right_loop_pistol + } + weaponclass pistol + { + both pb_combatwalk_back_loop_pistol + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_combatrun_back_loop_grenade + } + strafing left + { + both pb_stand_shoot_walk_left + } + strafing right + { + both pb_stand_shoot_walk_right + } + default + { + both pb_stand_shoot_walk_back + } + } + walkcr + { + playerAnimType none + { + both pb_crouch_walk_forward_unarmed + } + playerAnimType hold, strafing left + { + both pb_crouch_hold_run_left + } + playerAnimType hold, strafing right + { + both pb_crouch_hold_run_right + } + playerAnimType hold + { + both pb_crouch_hold_run + } + weaponclass rocketlauncher, strafing left + { + both pb_crouch_walk_left_RPG + } + weaponclass rocketlauncher, strafing right + { + both pb_crouch_walk_right_RPG + } + weaponclass rocketlauncher + { + both pb_crouch_walk_forward_RPG + } + weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 + { + both pb_crouch_walk_left_pistol + } + weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 + { + both pb_crouch_walk_right_pistol + } + weaponclass pistol AND grenade, playerAnimType all NOT m203 + { + both pb_crouch_walk_forward_pistol + } + strafing left + { + both pb_crouch_shoot_run_left + } + strafing right + { + both pb_crouch_shoot_run_right + } + default + { + both pb_crouch_shoot_run_forward + } + } + walkcrbk + { + playerAnimType none + { + both pb_crouch_walk_forward_unarmed + } + playerAnimType hold + { + both pb_crouch_hold_run_back + } + weaponclass rocketlauncher + { + both pb_crouch_walk_back_RPG + } + weaponclass pistol AND grenade, strafing left, playerAnimType all NOT m203 + { + both pb_crouch_walk_left_pistol + } + weaponclass pistol AND grenade, strafing right, playerAnimType all NOT m203 + { + both pb_crouch_walk_right_pistol + } + weaponclass pistol AND grenade, playerAnimType all NOT m203 + { + both pb_crouch_walk_back_pistol + } + strafing left + { + both pb_crouch_shoot_run_left + } + strafing right + { + both pb_crouch_shoot_run_right + } + default + { + both pb_crouch_shoot_run_back + } + } + walkprone + { + weaponclass pistol, strafing left + { + both pb_prone_crawl_left + } + weaponclass pistol, strafing right + { + both pb_prone_crawl_right + } + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_prone_grenade_crawl_left + } + playerAnimType hold, strafing left + { + both pb_prone_crawl_left_hold + } + playerAnimType hold, strafing right + { + both pb_prone_crawl_right_hold + } + playerAnimType hold + { + both pb_prone_crawl_hold + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_prone_grenade_crawl_right + } + weaponclass pistol + { + both pb_prone_crawl + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_prone_grenade_crawl + } + strafing left + { + both pb_prone_crawl_left + } + strafing right + { + both pb_prone_crawl_right + } + default + { + both pb_prone_crawl + } + } + walkpronebk + { + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_prone_grenade_crawl_left + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_prone_grenade_crawl_right + } + playerAnimType hold + { + both pb_prone_crawl_back_hold + } + weaponclass pistol + { + both pb_prone_crawl_back + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_prone_grenade_crawl_back + } + default + { + both pb_prone_crawl_back + } + } + run + { + playerAnimType none + { + both pb_pistol_run_fast + } + playerAnimType hold, strafing left + { + both pb_hold_run_left + } + playerAnimType hold, strafing right + { + both pb_hold_run_right + } + playerAnimType hold + { + both pb_hold_run + } + weaponclass rocketlauncher, strafing left + { + both pb_combatrun_left_RPG + } + weaponclass rocketlauncher, strafing right + { + both pb_combatrun_right_RPG + } + weaponclass rocketlauncher + { + both pb_combatrun_forward_RPG + } + weaponclass pistol, strafing left + { + both pb_combatrun_left_loop_pistol + } + weaponclass pistol, strafing right + { + both pb_combatrun_right_loop_pistol + } + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_combatrun_left_loop_grenade + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_combatrun_right_loop_grenade + } + strafing left + { + both pb_combatrun_left_loop + } + strafing right + { + both pb_combatrun_right_loop + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_combatrun_forward_loop_stickgrenade + } + weaponclass pistol + { + both pb_pistol_run_fast + } + default + { + both pb_combatrun_forward_loop + } + } + stumble_sprint_forward + { + default + { + both pb_stumble_forward + } + } + sprint + { + playerAnimType none + { + both pb_sprint + } + playerAnimType hold + { + both pb_sprint_hold + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_sprint + } + weaponclass pistol + { + both pb_sprint_pistol + } + weaponclass rocketlauncher + { + both pb_sprint_RPG + } + default + { + both pb_sprint + } + } + runbk + { + playerAnimType none + { + both pb_combatrun_back_loop_grenade + } + playerAnimType hold + { + both pb_hold_run_back + } + weaponclass pistol, strafing left + { + both pb_combatrun_left_loop_pistol + } + weaponclass pistol, strafing right + { + both pb_combatrun_right_loop_pistol + } + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_combatrun_left_loop_grenade + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_combatrun_right_loop_grenade + } + weaponclass pistol + { + both pb_combatrun_back_loop_pistol + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_combatrun_back_loop_grenade + } + weaponclass rocketlauncher + { + both pb_combatrun_back_RPG + } + strafing left + { + both pb_combatrun_left_loop + } + strafing right + { + both pb_combatrun_right_loop + } + default + { + both pb_combatrun_back_loop + } + } + runcr + { + playerAnimType none + { + both pb_crouch_run_forward_grenade + } + weaponclass rocketlauncher, strafing left + { + both pb_crouch_run_left_RPG + } + weaponclass rocketlauncher, strafing right + { + both pb_crouch_run_right_RPG + } + weaponclass rocketlauncher + { + both pb_crouch_run_forward_RPG + } + weaponclass pistol, strafing left + { + both pb_crouch_run_left_pistol + } + weaponclass pistol, strafing right + { + both pb_crouch_run_right_pistol + } + playerAnimType hold, strafing left + { + both pb_crouch_hold_run_left + } + playerAnimType hold, strafing right + { + both pb_crouch_hold_run_right + } + playerAnimType hold + { + both pb_crouch_hold_run + } + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_crouch_run_left_grenade + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_crouch_run_right_grenade + } + weaponclass pistol + { + both pb_crouch_run_forward_pistol + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_crouch_run_forward_grenade + } + strafing left + { + both pb_crouch_run_left + } + strafing right + { + both pb_crouch_run_right + } + default + { + both pb_crouch_run_forward + } + } + runcrbk + { + playerAnimType none + { + both pb_crouch_run_back_grenade + } + weaponclass rocketlauncher + { + both pb_crouch_run_back_RPG + } + weaponclass pistol, strafing left + { + both pb_crouch_run_left_pistol + } + weaponclass pistol, strafing right + { + both pb_crouch_run_right_pistol + } + playerAnimType hold + { + both pb_crouch_hold_run_back + } + weaponclass grenade, strafing left, playerAnimType all NOT m203 + { + both pb_crouch_run_left_grenade + } + weaponclass grenade, strafing right, playerAnimType all NOT m203 + { + both pb_crouch_run_right_grenade + } + weaponclass pistol + { + both pb_crouch_run_back_pistol + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_crouch_run_back_grenade + } + strafing left + { + both pb_crouch_run_left + } + strafing right + { + both pb_crouch_run_right + } + default + { + both pb_crouch_run_back + } + } + climbup + { + default + { + both pb_climbup + } + } + climbdown + { + default + { + both pb_climbdown + } + } + turnrightcr + { + movetype idlecr AND turnrightcr + { + legs pl_crouchturn_90right + } + } + turnleftcr + { + movetype idlecr AND turnleftcr + { + legs pl_crouchturn_90left + } + } + mantle_up_57 + { + default + { + both mp_mantle_up_57 + } + } + mantle_up_51 + { + default + { + both mp_mantle_up_51 + } + } + mantle_up_45 + { + default + { + both mp_mantle_up_45 + } + } + mantle_up_39 + { + default + { + both mp_mantle_up_39 + } + } + mantle_up_33 + { + default + { + both mp_mantle_up_33 + } + } + mantle_up_27 + { + default + { + legs mp_mantle_up_27 + } + } + mantle_up_21 + { + default + { + legs mp_mantle_up_21 + } + } + mantle_over_high + { + default + { + both mp_mantle_over_high + } + } + mantle_over_mid + { + default + { + both mp_mantle_over_mid + } + } + mantle_over_low + { + default + { + legs mp_mantle_over_low + } + } +} + +EVENTS + +fireweapon +{ + mounted mg42 + { + } + perk laststand + { + torso pt_laststand_fire + } + weaponclass pistol, movetype prone + { + torso pt_prone_shoot_pistol + } + weaponclass pistol, movetype moving + { + } + weaponclass pistol, movetype crouching, weapon_position ads + { + torso pt_crouch_shoot_ads_pistol + } + weaponclass pistol, movetype crouching + { + torso pt_crouch_shoot_pistol + } + weaponclass pistol, weapon_position ads + { + torso pb_stand__shoot_ads_pistol + } + weaponclass pistol + { + torso pt_stand_shoot_pistol + } + weaponclass autofire, movetype prone + { + torso pt_prone_shoot_auto duration 150 + } + weaponclass autofire, movetype moving + { + } + weaponclass autofire, movetype crouching, weapon_position ads + { + torso pt_crouch_shoot_auto_ads duration 150 + } + weaponclass autofire, movetype crouching + { + torso pt_crouch_shoot_auto duration 150 + } + weaponclass autofire, weapon_position ads + { + torso pt_stand_shoot_auto_ads duration 150 + } + weaponclass autofire + { + torso pt_stand_shoot_auto duration 150 + } + weaponclass rocketlauncher, movetype moving + { + } + weaponclass rocketlauncher, movetype crouching + { + torso pt_crouch_shoot_ads + } + weaponclass rocketlauncher, movetype prone + { + torso pt_prone_shoot_RPG + } + weaponclass rocketlauncher + { + torso pt_stand_shoot_RPG + } + weaponclass grenade, movetype prone, playerAnimType hold + { + torso pt_hold_prone_throw + } + weaponclass grenade, movetype idlecr, playerAnimType hold + { + torso pt_hold_throw + } + weaponclass grenade, playerAnimType hold + { + torso pt_hold_throw + } + weaponclass grenade, movetype prone, playerAnimType all NOT m203 + { + torso pt_prone_grenade_throw + } + weaponclass grenade, movetype idlecr, playerAnimType all NOT m203 + { + both pb_crouch_grenade_throw + } + weaponclass grenade, movetype crouching, playerAnimType all NOT m203 + { + torso pt_crouch_grenade_throw + } + weaponclass grenade, movetype idle, playerAnimType all NOT m203 + { + both pb_stand_grenade_throw blendtime 10 + } + weaponclass grenade, playerAnimType all NOT m203 + { + torso pt_stand_grenade_throw blendtime 10 + } + playerAnimType sniper, movetype prone + { + torso pt_prone_shoot_auto + } + playerAnimType sniper, movetype moving + { + } + playerAnimType sniper, movetype crouching, weapon_position ads + { + torso pt_crouch_shoot_ads + } + playerAnimType sniper, movetype crouching + { + torso pt_crouch_shoot + } + playerAnimType sniper, weapon_position ads + { + torso pt_rifle_fire_ads + } + playerAnimType sniper + { + torso pt_rifle_fire + } + playerAnimType other, movetype prone + { + torso pt_prone_shoot_auto + } + playerAnimType other + { + torso pt_stand_shoot_shotgun + } + movetype prone + { + torso pt_prone_shoot_auto + } + movetype moving + { + } + movetype crouching, weapon_position ads + { + torso pt_crouch_shoot_ads + } + movetype crouching + { + torso pt_crouch_shoot + } + weapon_position ads + { + torso pt_stand_shoot_ads + } + default + { + torso pt_stand_shoot + } +} + +prone_to_crouch +{ + movetype moving + { + both pb_prone2crouchrun + } + default + { + both pb_prone2crouch + } +} + +crouch_to_prone +{ + default + { + both pb_crouch2prone + } +} + +meleeattack +{ + weaponclass pistol AND grenade, movetype prone, playerAnimType all NOT m203 + { + torso pt_melee_prone_pistol + } + weaponclass pistol AND grenade, playerAnimType all NOT m203 + { + torso pt_melee_prone_pistol + } + movetype prone + { + torso pt_melee_prone + } + movetype crouching + { + torso pt_melee_crouch_left2left + torso pt_melee_crouch_left2right + torso pt_melee_crouch_right2left + } + default + { + torso pt_melee_right2right_1 duration 400 + torso pt_melee_right2right_2 duration 400 + torso pt_melee_right2left duration 300 + torso pt_melee_left2left_1 duration 400 + torso pt_melee_left2right duration 300 + } +} + +knife_melee +{ + movetype prone + { + torso pt_melee_prone_pistol + } + default + { + torso pt_melee_pistol_1 + } +} + +knife_melee_charge +{ + movetype prone + { + torso pt_melee_prone_pistol + } + default + { + torso pt_melee_pistol_2 + } +} + +dropweapon +{ + movetype prone + { + torso pt_prone_pullout_pose + } + movetype crouching + { + torso pt_crouch_pullout_pose + } + default + { + torso pt_stand_pullout_pose + } +} + +raiseweapon +{ +} + +reload +{ + perk laststand + { + torso pt_laststand_reload + } + weaponclass pistol, movetype idlecr + { + torso pt_reload_crouch_pistol + } + weaponclass pistol, movetype crouching + { + torso pt_reload_crouchwalk_pistol + } + weaponclass pistol, movetype prone + { + torso pt_reload_prone_pistol + } + weaponclass rocketlauncher, movetype prone + { + torso pt_reload_prone_RPG + } + weaponclass rocketlauncher + { + torso pt_reload_stand_RPG + } + weaponclass pistol + { + torso pt_reload_stand_pistol + } + playerAnimType smg, movetype prone + { + torso pt_reload_prone_auto + } + playerAnimType smg, movetype idlecr + { + torso pt_reload_stand_auto_mp40 + } + playerAnimType smg, movetype crouching + { + torso pt_reload_crouchwalk + } + playerAnimType smg + { + torso pt_reload_stand_auto_mp40 + } + playerAnimType autorifle, movetype prone + { + torso pt_reload_prone_auto + } + playerAnimType autorifle, movetype idlecr + { + torso pt_reload_crouch_rifle + } + playerAnimType autorifle, movetype crouching + { + torso pt_reload_crouchwalk + } + playerAnimType autorifle + { + torso pt_reload_stand_auto + } + movetype idlecr + { + torso pt_reload_crouch_rifle + } + movetype crouching + { + torso pt_reload_crouch_rifle + } + movetype prone + { + torso pt_reload_prone_auto + } + default + { + torso pt_reload_stand_rifle + } +} + +jump +{ + playerAnimType none, movetype run + { + both pb_runjump_takeoff duration 5 blendtime 100 + } + playerAnimType none + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + weaponclass rocketlauncher, movetype run + { + both pb_runjump_takeoff duration 5 blendtime 100 + } + weaponclass rocketlauncher + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + movetype run + { + both pb_runjump_takeoff duration 5 blendtime 100 + } + default + { + both pb_standjump_takeoff duration 5 blendtime 100 + } +} + +jumpbk +{ + movetype crouching AND prone + { + both pb_chicken_dance_crouch duration 5 blendtime 100 + } + playerAnimType none, movetype run + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + playerAnimType none + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + weaponclass rocketlauncher, movetype run + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + weaponclass rocketlauncher + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + weaponclass grenade, movetype run, playerAnimType all NOT m203 + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + weaponclass grenade, playerAnimType all NOT m203 + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + movetype run + { + both pb_standjump_takeoff duration 5 blendtime 100 + } + default + { + both pb_standjump_takeoff duration 5 blendtime 100 + } +} + +land +{ + movetype run + { + both pb_runjump_land duration 100 blendtime 50 + } + weaponclass pistol AND grenade, playerAnimType all NOT m203 + { + both pb_standjump_land_pistol duration 5 + } + default + { + both pb_standjump_land duration 100 blendtime 50 + } +} + +shellshock +{ + movetype prone + { + } + movetype moving + { + torso pb_stand_shellshock duration 5000 blendtime 50 + } + movetype idle + { + torso pb_stand_shellshock duration 5000 blendtime 50 + } + movetype crouching + { + torso pb_stand_shellshock duration 5000 blendtime 50 + } +} + +DEATH +{ + movetype crouching, perk laststand + { + both pb_laststand_death + } + movetype prone, perk laststand + { + both pb_laststand_death + } + perk laststand + { + both pb_laststand_death + } + movetype prone + { + both pb_prone_death_quickdeath + } + movetype idlecr + { + both pb_crouch_death_headshot_front + both pb_crouch_death_clutchchest + both pb_crouch_death_flip + both pb_crouch_death_fetal + both pb_crouch_death_falltohands + } + movetype runbk + { + both pb_death_run_back + } + movetype run AND runcr, strafing left + { + both pb_death_run_left + } + movetype run AND runcr, strafing right + { + both pb_death_run_right + } + movetype runcr + { + both pb_crouchrun_death_drop + both pb_crouchrun_death_crumple + } + movetype run + { + both pb_death_run_forward_crumple + both pb_death_run_onfront + both pb_death_run_stumble + } + default + { + both pb_stand_death_neckdeath + both pb_stand_death_headchest_topple + both pb_stand_death_frontspin + both pb_stand_death_nervedeath + both pb_stand_death_legs + both pb_stand_death_lowerback + both pb_stand_death_head_collapse + both pb_stand_death_neckdeath_thrash + } +} + +pain +{ + movetype prone + { + both pb_prone_painA_holdchest + both pb_prone_painB_holdhead + } + movetype crouching + { + both pb_crouch_pain_holdStomach + } + default + { + both pb_crouch_pain_holdStomach + } +} diff --git a/pb/pbsvuser.cfg b/pb/pbsvuser.cfg index 8082f63..0f828af 100644 --- a/pb/pbsvuser.cfg +++ b/pb/pbsvuser.cfg @@ -1,2 +1,2 @@ -pb_sv_load stock_iwd_md5.cfg // stock-iwd checksum control, remove the "//" to enable and put stock_iwd_md5.cfg in your pb folder -pb_sv_load promod_iwd_md5.cfg // promod-iwd-file checksum control, remove the "//" to enable and put promod_iwd_md5.cfg in your pb folder \ No newline at end of file +pb_sv_load stock_iwd_md5.cfg // stock-iwd checksum control, remove the "//" to enable and put stock_iwd_md5.cfg in your pb folder +pb_sv_load promod_iwd_md5.cfg // promod-iwd-file checksum control, remove the "//" to enable and put promod_iwd_md5.cfg in your pb folder diff --git a/pb/promod_iwd_md5.cfg b/pb/promod_iwd_md5.cfg index 9ae10d0..0b69edf 100644 --- a/pb/promod_iwd_md5.cfg +++ b/pb/promod_iwd_md5.cfg @@ -1 +1 @@ -pb_sv_md5tool a "" v pml220.iwd SZ276308 AT0 LEN2048 21D42AD2AA596B92C6AFB0B25C1BC9AB +pb_sv_md5tool a "" v pml220.iwd SZ276308 AT0 LEN2048 21D42AD2AA596B92C6AFB0B25C1BC9AB diff --git a/pb/stock_iwd_md5.cfg b/pb/stock_iwd_md5.cfg index 5637114..045c693 100644 --- a/pb/stock_iwd_md5.cfg +++ b/pb/stock_iwd_md5.cfg @@ -1,14 +1,14 @@ -pb_sv_md5tool a "" v main/iw_00.iwd SZ167780172 AT0 LEN2048 BC02FE65F2C013DB4C1480D59F1CB93F -pb_sv_md5tool a "" v main/iw_01.iwd SZ167885112 AT0 LEN2048 "55EFD479424E487756BC3EE3A7AF3799 4FDB703797393D3493E4B4BAE0B0A3CF" -pb_sv_md5tool a "" v main/iw_02.iwd SZ166957774 AT0 LEN2048 "8067C044C6A133C2F5D1B3E2B3E59CDC 1438B3EAED4FD8D654326933263C6C9F" -pb_sv_md5tool a "" v main/iw_03.iwd SZ166904484 AT0 LEN2048 "724442AC8D8E6415425C0B3E9FE6AC5A E47150F42B30F5F4F928F7AA8B6ACBEC" -pb_sv_md5tool a "" v main/iw_04.iwd SZ167682009 AT0 LEN2048 "5688EA7D04308440876DE31B84484419 70199C90F845078AE6B3EC53DAA1BDF8" -pb_sv_md5tool a "" v main/iw_05.iwd SZ167489996 AT0 LEN2048 "4865724D59BB73514DCBF557A9B21CFE A74997AFC0FE4A2BB9E9CB78DD0E1C05" -pb_sv_md5tool a "" v main/iw_06.iwd SZ167754503 AT0 LEN2048 "8CD0E80D88FD95AE3D5DF80D0AD29EB7 D74754503B511CDCA5B146DB3D9A24E8" -pb_sv_md5tool a "" v main/iw_07.iwd SZ162987361 AT0 LEN2048 E20C159359BED1E6BD9C23FC6D52631F -pb_sv_md5tool a "" v main/iw_08.iwd SZ167544651 AT0 LEN2048 F5B2959EDFED674AB47E59CFA1B2A3DA -pb_sv_md5tool a "" v main/iw_09.iwd SZ167076481 AT0 LEN2048 310374CB0F5ABF3880AEE5798FE269C9 -pb_sv_md5tool a "" v main/iw_10.iwd SZ165389824 AT0 LEN2048 9D53044FAD09B8BAF10FE4E9F08DFA59 -pb_sv_md5tool a "" v main/iw_11.iwd SZ151420446 AT0 LEN2048 3D429842C2F904EB13C5129E8A77582B -pb_sv_md5tool a "" v main/iw_12.iwd SZ5559373 AT0 LEN2048 6A0F0960BA6BCE04A8134A5B2E88D3EE -pb_sv_md5tool a "" v main/iw_13.iwd SZ28644036 AT0 LEN2048 89BD98431CD72ED0FD3E08DB87952BD5 \ No newline at end of file +pb_sv_md5tool a "" v main/iw_00.iwd SZ167780172 AT0 LEN2048 BC02FE65F2C013DB4C1480D59F1CB93F +pb_sv_md5tool a "" v main/iw_01.iwd SZ167885112 AT0 LEN2048 "55EFD479424E487756BC3EE3A7AF3799 4FDB703797393D3493E4B4BAE0B0A3CF" +pb_sv_md5tool a "" v main/iw_02.iwd SZ166957774 AT0 LEN2048 "8067C044C6A133C2F5D1B3E2B3E59CDC 1438B3EAED4FD8D654326933263C6C9F" +pb_sv_md5tool a "" v main/iw_03.iwd SZ166904484 AT0 LEN2048 "724442AC8D8E6415425C0B3E9FE6AC5A E47150F42B30F5F4F928F7AA8B6ACBEC" +pb_sv_md5tool a "" v main/iw_04.iwd SZ167682009 AT0 LEN2048 "5688EA7D04308440876DE31B84484419 70199C90F845078AE6B3EC53DAA1BDF8" +pb_sv_md5tool a "" v main/iw_05.iwd SZ167489996 AT0 LEN2048 "4865724D59BB73514DCBF557A9B21CFE A74997AFC0FE4A2BB9E9CB78DD0E1C05" +pb_sv_md5tool a "" v main/iw_06.iwd SZ167754503 AT0 LEN2048 "8CD0E80D88FD95AE3D5DF80D0AD29EB7 D74754503B511CDCA5B146DB3D9A24E8" +pb_sv_md5tool a "" v main/iw_07.iwd SZ162987361 AT0 LEN2048 E20C159359BED1E6BD9C23FC6D52631F +pb_sv_md5tool a "" v main/iw_08.iwd SZ167544651 AT0 LEN2048 F5B2959EDFED674AB47E59CFA1B2A3DA +pb_sv_md5tool a "" v main/iw_09.iwd SZ167076481 AT0 LEN2048 310374CB0F5ABF3880AEE5798FE269C9 +pb_sv_md5tool a "" v main/iw_10.iwd SZ165389824 AT0 LEN2048 9D53044FAD09B8BAF10FE4E9F08DFA59 +pb_sv_md5tool a "" v main/iw_11.iwd SZ151420446 AT0 LEN2048 3D429842C2F904EB13C5129E8A77582B +pb_sv_md5tool a "" v main/iw_12.iwd SZ5559373 AT0 LEN2048 6A0F0960BA6BCE04A8134A5B2E88D3EE +pb_sv_md5tool a "" v main/iw_13.iwd SZ28644036 AT0 LEN2048 89BD98431CD72ED0FD3E08DB87952BD5 diff --git a/promod/client.gsc b/promod/client.gsc index 704c42e..bcf3d4e 100644 --- a/promod/client.gsc +++ b/promod/client.gsc @@ -1,92 +1,92 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -get_config( dataName ) -{ - return self getStat( int( tableLookup( "promod/customStatsTable.csv", 1, dataName, 0 ) ) ); -} - -set_config( dataName, value ) -{ - self setStat( int( tableLookup( "promod/customStatsTable.csv", 1, dataName, 0 ) ), value ); - return value; -} - -toggle(name) -{ - return self set_config( name, int(!self get_config(name)) ); -} - -loopthrough(name, limit) -{ - value = self get_config(name)+1; - if(value > limit) value = 0; - return self set_config(name, value); -} - -setsunlight(n) -{ - sl = 0; - slsetting = "Off"; - if ( !n ) - { - sl = 1.2; - slsetting = 1.2; - } - else if ( n == 1 && isDefined(level.sunlight) ) - { - slsetting = "Stock"; - sl = level.sunlight; - } - self setclientdvars("r_lighttweaksunlight", sl, "sunlight", slsetting); -} - -use_config() -{ - self setsunlight(self get_config("PROMOD_SUNLIGHT")); - self setClientDvars( - "aim_automelee_enabled", 0, - "aim_automelee_range", 0, - "dynent_active", 0, - "snaps", 30, - "cg_nopredict", 0, - "cg_crosshairenemycolor", 0, - "sm_enable", 0, - "r_dlightlimit", 0, - "r_lodscalerigid", 1, - "r_lodscaleskinned", 1, - "cg_drawcrosshairnames", 0, - "cg_descriptivetext", 0, - "cg_viewzsmoothingmin", 1, - "cg_viewzsmoothingmax", 16, - "cg_viewzsmoothingtime", 0.1, - "cg_huddamageiconheight", 64, - "cg_huddamageiconwidth", 128, - "cg_huddamageiconinscope", 0, - "cg_huddamageiconoffset", 128, - "cg_huddamageicontime", 2000, - "ragdoll_enable", 0, - "r_filmtweakinvert", 0, - "r_desaturation", 0, - "r_dlightlimit", 0, - "r_fog", 0, - "r_specularcolorscale", 0, - "r_zfeather", 0, - "fx_drawclouds", 0, - "rate", 25000, - "cl_maxpackets", 100, - "developer", 0, - "phys_gravity", -800, - "r_normalmap", self get_config("PROMOD_NORMALMAP"), - "r_texfilterdisable", self get_config("PROMOD_TEXTURE"), - "r_filmusetweaks", self get_config("PROMOD_FILMTWEAK"), - "r_blur", 0.2*self get_config("PROMOD_GFXBLUR"), - "cg_fovscale", 1+int(!self get_config("PROMOD_FOVSCALE"))*0.125); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +get_config( dataName ) +{ + return self getStat( int( tableLookup( "promod/customStatsTable.csv", 1, dataName, 0 ) ) ); +} + +set_config( dataName, value ) +{ + self setStat( int( tableLookup( "promod/customStatsTable.csv", 1, dataName, 0 ) ), value ); + return value; +} + +toggle(name) +{ + return self set_config( name, int(!self get_config(name)) ); +} + +loopthrough(name, limit) +{ + value = self get_config(name)+1; + if(value > limit) value = 0; + return self set_config(name, value); +} + +setsunlight(n) +{ + sl = 0; + slsetting = "Off"; + if ( !n ) + { + sl = 1.2; + slsetting = 1.2; + } + else if ( n == 1 && isDefined(level.sunlight) ) + { + slsetting = "Stock"; + sl = level.sunlight; + } + self setclientdvars("r_lighttweaksunlight", sl, "sunlight", slsetting); +} + +use_config() +{ + self setsunlight(self get_config("PROMOD_SUNLIGHT")); + self setClientDvars( + "aim_automelee_enabled", 0, + "aim_automelee_range", 0, + "dynent_active", 0, + "snaps", 30, + "cg_nopredict", 0, + "cg_crosshairenemycolor", 0, + "sm_enable", 0, + "r_dlightlimit", 0, + "r_lodscalerigid", 1, + "r_lodscaleskinned", 1, + "cg_drawcrosshairnames", 0, + "cg_descriptivetext", 0, + "cg_viewzsmoothingmin", 1, + "cg_viewzsmoothingmax", 16, + "cg_viewzsmoothingtime", 0.1, + "cg_huddamageiconheight", 64, + "cg_huddamageiconwidth", 128, + "cg_huddamageiconinscope", 0, + "cg_huddamageiconoffset", 128, + "cg_huddamageicontime", 2000, + "ragdoll_enable", 0, + "r_filmtweakinvert", 0, + "r_desaturation", 0, + "r_dlightlimit", 0, + "r_fog", 0, + "r_specularcolorscale", 0, + "r_zfeather", 0, + "fx_drawclouds", 0, + "rate", 25000, + "cl_maxpackets", 100, + "developer", 0, + "phys_gravity", -800, + "r_normalmap", self get_config("PROMOD_NORMALMAP"), + "r_texfilterdisable", self get_config("PROMOD_TEXTURE"), + "r_filmusetweaks", self get_config("PROMOD_FILMTWEAK"), + "r_blur", 0.2*self get_config("PROMOD_GFXBLUR"), + "cg_fovscale", 1+int(!self get_config("PROMOD_FOVSCALE"))*0.125); +} diff --git a/promod/comp.gsc b/promod/comp.gsc index d4cd87c..b2adfd1 100644 --- a/promod/comp.gsc +++ b/promod/comp.gsc @@ -1,189 +1,189 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - setDvar( "scr_sd_bombtimer", 45 ); - setDvar( "scr_sd_defusetime", 7 ); - setDvar( "scr_sd_multibomb", 0 ); - setDvar( "scr_sd_numlives", 1 ); - setDvar( "scr_sd_planttime", 5 ); - setDvar( "scr_sd_playerrespawndelay", 0 ); - setDvar( "scr_sd_roundlimit", 20 ); - setDvar( "scr_sd_roundswitch", 10 ); - setDvar( "scr_sd_scorelimit", 0 ); - setDvar( "scr_sd_timelimit", 1.75 ); - setDvar( "scr_sd_waverespawndelay", 0 ); - - setDvar( "scr_dom_numlives", 0 ); - setDvar( "scr_dom_playerrespawndelay", 7 ); - setDvar( "scr_dom_roundlimit", 2 ); - setDvar( "scr_dom_roundswitch", 1 ); - setDvar( "scr_dom_scorelimit", 0 ); - setDvar( "scr_dom_timelimit", 15 ); - setDvar( "scr_dom_waverespawndelay", 0 ); - - setDvar( "koth_autodestroytime", 120 ); - setDvar( "koth_capturetime", 20 ); - setDvar( "koth_delayPlayer", 0 ); - setDvar( "koth_destroytime", 10 ); - setDvar( "koth_kothmode", 0 ); - setDvar( "koth_spawnDelay", 45 ); - setDvar( "koth_spawntime", 10 ); - setDvar( "scr_koth_numlives", 0 ); - setDvar( "scr_koth_playerrespawndelay", 0 ); - setDvar( "scr_koth_roundlimit", 2 ); - setDvar( "scr_koth_roundswitch", 1 ); - setDvar( "scr_koth_scorelimit", 0 ); - setDvar( "scr_koth_timelimit", 20 ); - setDvar( "scr_koth_waverespawndelay", 0 ); - - setDvar( "scr_sab_bombtimer", 45 ); - setDvar( "scr_sab_defusetime", 5 ); - setDvar( "scr_sab_hotpotato", 0 ); - setDvar( "scr_sab_numlives", 0 ); - setDvar( "scr_sab_planttime", 5 ); - setDvar( "scr_sab_playerrespawndelay", 7 ); - setDvar( "scr_sab_roundlimit", 4 ); - setDvar( "scr_sab_roundswitch", 2 ); - setDvar( "scr_sab_scorelimit", 0 ); - setDvar( "scr_sab_timelimit", 10 ); - setDvar( "scr_sab_waverespawndelay", 0 ); - - setDvar( "scr_war_numlives", 0 ); - setDvar( "scr_war_playerrespawndelay", 0 ); - setDvar( "scr_war_roundlimit", 2 ); - setDvar( "scr_war_scorelimit", 0 ); - setDvar( "scr_war_roundswitch", 1 ); - setDvar( "scr_war_timelimit", 15 ); - setDvar( "scr_war_waverespawndelay", 0 ); - - setDvar( "scr_dm_numlives", 0 ); - setDvar( "scr_dm_playerrespawndelay", 0 ); - setDvar( "scr_dm_roundlimit", 1 ); - setDvar( "scr_dm_scorelimit", 0 ); - setDvar( "scr_dm_timelimit", 10 ); - setDvar( "scr_dm_waverespawndelay", 0 ); - - setDvar( "class_assault_limit", 64 ); - setDvar( "class_specops_limit", 2 ); - setDvar( "class_demolitions_limit", 1 ); - setDvar( "class_sniper_limit", 1 ); - - setDvar( "class_assault_allowdrop", 1 ); - setDvar( "class_specops_allowdrop", 1 ); - setDvar( "class_demolitions_allowdrop", 0 ); - setDvar( "class_sniper_allowdrop", 0 ); - - setDvar( "weap_allow_m16", 1 ); - setDvar( "weap_allow_ak47", 1 ); - setDvar( "weap_allow_m4", 1 ); - setDvar( "weap_allow_g3", 1 ); - setDvar( "weap_allow_g36c", 1 ); - setDvar( "weap_allow_m14", 1 ); - setDvar( "weap_allow_mp44", 1 ); - - setDvar( "attach_allow_assault_none", 1 ); - setDvar( "attach_allow_assault_silencer", 1 ); - - setDvar( "weap_allow_mp5", 1 ); - setDvar( "weap_allow_uzi", 1 ); - setDvar( "weap_allow_ak74u", 1 ); - - setDvar( "attach_allow_specops_none", 1 ); - setDvar( "attach_allow_specops_silencer", 1 ); - - setDvar( "weap_allow_m1014", 1 ); - setDvar( "weap_allow_winchester1200", 1 ); - - setDvar( "weap_allow_m40a3", 1 ); - setDvar( "weap_allow_remington700", 1 ); - - setDvar( "weap_allow_beretta", 1 ); - setDvar( "weap_allow_colt45", 1 ); - setDvar( "weap_allow_usp", 1 ); - setDvar( "weap_allow_deserteagle", 1 ); - setDvar( "weap_allow_deserteaglegold", 1 ); - - setDvar( "attach_allow_pistol_none", 1 ); - setDvar( "attach_allow_pistol_silencer", 1 ); - - setDvar( "weap_allow_flash_grenade", 1 ); - setDvar( "weap_allow_frag_grenade", 1 ); - setDvar( "weap_allow_smoke_grenade", 1 ); - - setDvar( "class_assault_primary", "ak47" ); - setDvar( "class_assault_primary_attachment", "none" ); - setDvar( "class_assault_secondary", "deserteagle" ); - setDvar( "class_assault_secondary_attachment", "none" ); - setDvar( "class_assault_grenade", "smoke_grenade" ); - setDvar( "class_assault_camo", "camo_none" ); - - setDvar( "class_specops_primary", "ak74u" ); - setDvar( "class_specops_primary_attachment", "none" ); - setDvar( "class_specops_secondary", "deserteagle" ); - setDvar( "class_specops_secondary_attachment", "none" ); - setDvar( "class_specops_grenade", "smoke_grenade" ); - setDvar( "class_specops_camo", "camo_none" ); - - setDvar( "class_demolitions_primary", "winchester1200" ); - setDvar( "class_demolitions_primary_attachment", "none" ); - setDvar( "class_demolitions_secondary", "deserteagle" ); - setDvar( "class_demolitions_secondary_attachment", "none" ); - setDvar( "class_demolitions_grenade", "smoke_grenade" ); - setDvar( "class_demolitions_camo", "camo_none" ); - - setDvar( "class_sniper_primary", "m40a3" ); - setDvar( "class_sniper_primary_attachment", "none" ); - setDvar( "class_sniper_secondary", "deserteagle" ); - setDvar( "class_sniper_secondary_attachment", "none" ); - setDvar( "class_sniper_grenade", "smoke_grenade" ); - setDvar( "class_sniper_camo", "camo_none" ); - - setDvar( "scr_team_fftype", 1 ); - setDvar( "scr_team_teamkillpointloss", 5 ); - setDvar( "scr_game_deathpointloss", 0 ); - setDvar( "scr_game_suicidepointloss", 0 ); - setDvar( "scr_player_suicidespawndelay", 0 ); - setDvar( "scr_player_forcerespawn", 1 ); - - setDvar( "bg_fallDamageMinHeight", 140 ); - setDvar( "bg_fallDamageMaxHeight", 350 ); - - setDvar( "scr_game_matchstarttime", 10 ); - setDvar( "scr_enable_hiticon", 2 ); - setDvar( "scr_enable_scoretext", 1 ); - - setDvar( "logfile", 1 ); - setDvar( "g_log", "games_mp.log" ); - setDvar( "g_logSync", 0 ); - - setDvar( "g_inactivity", 0 ); - setDvar( "g_no_script_spam", 1 ); - setDvar( "g_antilag", 1 ); - setDvar( "g_smoothClients", 1 ); - setDvar( "sv_allowDownload", 1 ); - setDvar( "sv_maxPing", 0 ); - setDvar( "sv_minPing", 0 ); - setDvar( "sv_reconnectlimit", 3 ); - setDvar( "sv_timeout", 240 ); - setDvar( "sv_zombietime", 2 ); - setDvar( "sv_floodprotect", 4 ); - setDvar( "sv_kickBanTime", 0 ); - setDvar( "sv_disableClientConsole", 0 ); - setDvar( "sv_voice", 0 ); - setDvar( "sv_clientarchive", 1 ); - setDvar( "timescale", 1 ); - - setDvar( "g_allowVote", 0 ); - setDvar( "scr_game_allowkillcam", 0 ); - setDvar( "scr_game_spectatetype", 1 ); - setDvar( "scr_hardcore", 0 ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + setDvar( "scr_sd_bombtimer", 45 ); + setDvar( "scr_sd_defusetime", 7 ); + setDvar( "scr_sd_multibomb", 0 ); + setDvar( "scr_sd_numlives", 1 ); + setDvar( "scr_sd_planttime", 5 ); + setDvar( "scr_sd_playerrespawndelay", 0 ); + setDvar( "scr_sd_roundlimit", 20 ); + setDvar( "scr_sd_roundswitch", 10 ); + setDvar( "scr_sd_scorelimit", 0 ); + setDvar( "scr_sd_timelimit", 1.75 ); + setDvar( "scr_sd_waverespawndelay", 0 ); + + setDvar( "scr_dom_numlives", 0 ); + setDvar( "scr_dom_playerrespawndelay", 7 ); + setDvar( "scr_dom_roundlimit", 2 ); + setDvar( "scr_dom_roundswitch", 1 ); + setDvar( "scr_dom_scorelimit", 0 ); + setDvar( "scr_dom_timelimit", 15 ); + setDvar( "scr_dom_waverespawndelay", 0 ); + + setDvar( "koth_autodestroytime", 120 ); + setDvar( "koth_capturetime", 20 ); + setDvar( "koth_delayPlayer", 0 ); + setDvar( "koth_destroytime", 10 ); + setDvar( "koth_kothmode", 0 ); + setDvar( "koth_spawnDelay", 45 ); + setDvar( "koth_spawntime", 10 ); + setDvar( "scr_koth_numlives", 0 ); + setDvar( "scr_koth_playerrespawndelay", 0 ); + setDvar( "scr_koth_roundlimit", 2 ); + setDvar( "scr_koth_roundswitch", 1 ); + setDvar( "scr_koth_scorelimit", 0 ); + setDvar( "scr_koth_timelimit", 20 ); + setDvar( "scr_koth_waverespawndelay", 0 ); + + setDvar( "scr_sab_bombtimer", 45 ); + setDvar( "scr_sab_defusetime", 5 ); + setDvar( "scr_sab_hotpotato", 0 ); + setDvar( "scr_sab_numlives", 0 ); + setDvar( "scr_sab_planttime", 5 ); + setDvar( "scr_sab_playerrespawndelay", 7 ); + setDvar( "scr_sab_roundlimit", 4 ); + setDvar( "scr_sab_roundswitch", 2 ); + setDvar( "scr_sab_scorelimit", 0 ); + setDvar( "scr_sab_timelimit", 10 ); + setDvar( "scr_sab_waverespawndelay", 0 ); + + setDvar( "scr_war_numlives", 0 ); + setDvar( "scr_war_playerrespawndelay", 0 ); + setDvar( "scr_war_roundlimit", 2 ); + setDvar( "scr_war_scorelimit", 0 ); + setDvar( "scr_war_roundswitch", 1 ); + setDvar( "scr_war_timelimit", 15 ); + setDvar( "scr_war_waverespawndelay", 0 ); + + setDvar( "scr_dm_numlives", 0 ); + setDvar( "scr_dm_playerrespawndelay", 0 ); + setDvar( "scr_dm_roundlimit", 1 ); + setDvar( "scr_dm_scorelimit", 0 ); + setDvar( "scr_dm_timelimit", 10 ); + setDvar( "scr_dm_waverespawndelay", 0 ); + + setDvar( "class_assault_limit", 64 ); + setDvar( "class_specops_limit", 2 ); + setDvar( "class_demolitions_limit", 1 ); + setDvar( "class_sniper_limit", 1 ); + + setDvar( "class_assault_allowdrop", 1 ); + setDvar( "class_specops_allowdrop", 1 ); + setDvar( "class_demolitions_allowdrop", 0 ); + setDvar( "class_sniper_allowdrop", 0 ); + + setDvar( "weap_allow_m16", 1 ); + setDvar( "weap_allow_ak47", 1 ); + setDvar( "weap_allow_m4", 1 ); + setDvar( "weap_allow_g3", 1 ); + setDvar( "weap_allow_g36c", 1 ); + setDvar( "weap_allow_m14", 1 ); + setDvar( "weap_allow_mp44", 1 ); + + setDvar( "attach_allow_assault_none", 1 ); + setDvar( "attach_allow_assault_silencer", 1 ); + + setDvar( "weap_allow_mp5", 1 ); + setDvar( "weap_allow_uzi", 1 ); + setDvar( "weap_allow_ak74u", 1 ); + + setDvar( "attach_allow_specops_none", 1 ); + setDvar( "attach_allow_specops_silencer", 1 ); + + setDvar( "weap_allow_m1014", 1 ); + setDvar( "weap_allow_winchester1200", 1 ); + + setDvar( "weap_allow_m40a3", 1 ); + setDvar( "weap_allow_remington700", 1 ); + + setDvar( "weap_allow_beretta", 1 ); + setDvar( "weap_allow_colt45", 1 ); + setDvar( "weap_allow_usp", 1 ); + setDvar( "weap_allow_deserteagle", 1 ); + setDvar( "weap_allow_deserteaglegold", 1 ); + + setDvar( "attach_allow_pistol_none", 1 ); + setDvar( "attach_allow_pistol_silencer", 1 ); + + setDvar( "weap_allow_flash_grenade", 1 ); + setDvar( "weap_allow_frag_grenade", 1 ); + setDvar( "weap_allow_smoke_grenade", 1 ); + + setDvar( "class_assault_primary", "ak47" ); + setDvar( "class_assault_primary_attachment", "none" ); + setDvar( "class_assault_secondary", "deserteagle" ); + setDvar( "class_assault_secondary_attachment", "none" ); + setDvar( "class_assault_grenade", "smoke_grenade" ); + setDvar( "class_assault_camo", "camo_none" ); + + setDvar( "class_specops_primary", "ak74u" ); + setDvar( "class_specops_primary_attachment", "none" ); + setDvar( "class_specops_secondary", "deserteagle" ); + setDvar( "class_specops_secondary_attachment", "none" ); + setDvar( "class_specops_grenade", "smoke_grenade" ); + setDvar( "class_specops_camo", "camo_none" ); + + setDvar( "class_demolitions_primary", "winchester1200" ); + setDvar( "class_demolitions_primary_attachment", "none" ); + setDvar( "class_demolitions_secondary", "deserteagle" ); + setDvar( "class_demolitions_secondary_attachment", "none" ); + setDvar( "class_demolitions_grenade", "smoke_grenade" ); + setDvar( "class_demolitions_camo", "camo_none" ); + + setDvar( "class_sniper_primary", "m40a3" ); + setDvar( "class_sniper_primary_attachment", "none" ); + setDvar( "class_sniper_secondary", "deserteagle" ); + setDvar( "class_sniper_secondary_attachment", "none" ); + setDvar( "class_sniper_grenade", "smoke_grenade" ); + setDvar( "class_sniper_camo", "camo_none" ); + + setDvar( "scr_team_fftype", 1 ); + setDvar( "scr_team_teamkillpointloss", 5 ); + setDvar( "scr_game_deathpointloss", 0 ); + setDvar( "scr_game_suicidepointloss", 0 ); + setDvar( "scr_player_suicidespawndelay", 0 ); + setDvar( "scr_player_forcerespawn", 1 ); + + setDvar( "bg_fallDamageMinHeight", 140 ); + setDvar( "bg_fallDamageMaxHeight", 350 ); + + setDvar( "scr_game_matchstarttime", 10 ); + setDvar( "scr_enable_hiticon", 2 ); + setDvar( "scr_enable_scoretext", 1 ); + + setDvar( "logfile", 1 ); + setDvar( "g_log", "games_mp.log" ); + setDvar( "g_logSync", 0 ); + + setDvar( "g_inactivity", 0 ); + setDvar( "g_no_script_spam", 1 ); + setDvar( "g_antilag", 1 ); + setDvar( "g_smoothClients", 1 ); + setDvar( "sv_allowDownload", 1 ); + setDvar( "sv_maxPing", 0 ); + setDvar( "sv_minPing", 0 ); + setDvar( "sv_reconnectlimit", 3 ); + setDvar( "sv_timeout", 240 ); + setDvar( "sv_zombietime", 2 ); + setDvar( "sv_floodprotect", 4 ); + setDvar( "sv_kickBanTime", 0 ); + setDvar( "sv_disableClientConsole", 0 ); + setDvar( "sv_voice", 0 ); + setDvar( "sv_clientarchive", 1 ); + setDvar( "timescale", 1 ); + + setDvar( "g_allowVote", 0 ); + setDvar( "scr_game_allowkillcam", 0 ); + setDvar( "scr_game_spectatetype", 1 ); + setDvar( "scr_hardcore", 0 ); +} diff --git a/promod/customStatsTable.csv b/promod/customStatsTable.csv index 7f4d11f..3950b64 100644 --- a/promod/customStatsTable.csv +++ b/promod/customStatsTable.csv @@ -1,81 +1,81 @@ -# Copyright (c) 2009-2017 Andreas Göransson -# Copyright (c) 2009-2017 Indrek Ardel -# -# This file is part of Call of Duty 4 Promod. -# -# Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. -# Terms of license can be found in LICENSE.md document bundled with the project. - -0,PROMOD_RECORD -1,PROMOD_SUNLIGHT -2,PROMOD_TEXTURE -3,PROMOD_FILMTWEAK -4,PROMOD_FOVSCALE -5,PROMOD_NORMALMAP -6,PROMOD_GFXBLUR - -7,ASSAULT_PRIMARY -8,ASSAULT_PRIMARY_ATTACHMENT -9,ASSAULT_SECONDARY -10,ASSAULT_SECONDARY_ATTACHMENT -11,ASSAULT_GRENADE -12,ASSAULT_CAMO - -13,SPECOPS_PRIMARY -14,SPECOPS_PRIMARY_ATTACHMENT -15,SPECOPS_SECONDARY -16,SPECOPS_SECONDARY_ATTACHMENT -17,SPECOPS_GRENADE -18,SPECOPS_CAMO - -19,DEMOLITIONS_PRIMARY -20,DEMOLITIONS_PRIMARY_ATTACHMENT -21,DEMOLITIONS_SECONDARY -22,DEMOLITIONS_SECONDARY_ATTACHMENT -23,DEMOLITIONS_GRENADE -24,DEMOLITIONS_CAMO - -25,SNIPER_PRIMARY -26,SNIPER_PRIMARY_ATTACHMENT -27,SNIPER_SECONDARY -28,SNIPER_SECONDARY_ATTACHMENT -29,SNIPER_GRENADE -30,SNIPER_CAMO - -31,m16 -32,ak47 -33,m4 -34,g3 -35,g36c -36,m14 -37,mp44 - -38,mp5 -39,uzi -40,ak74u - -41,winchester1200 -42,m1014 - -43,m40a3 -44,remington700 - -45,none -46,silencer - -47,deserteaglegold -48,deserteagle -49,colt45 -50,usp -51,beretta - -52,flash_grenade -53,smoke_grenade - -54,camo_none -55,camo_brockhaurd -56,camo_bushdweller -57,camo_blackwhitemarpat -58,camo_tigerred -59,camo_stagger -60,camo_gold \ No newline at end of file +# Copyright (c) 2009-2017 Andreas Göransson +# Copyright (c) 2009-2017 Indrek Ardel +# +# This file is part of Call of Duty 4 Promod. +# +# Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. +# Terms of license can be found in LICENSE.md document bundled with the project. + +0,PROMOD_RECORD +1,PROMOD_SUNLIGHT +2,PROMOD_TEXTURE +3,PROMOD_FILMTWEAK +4,PROMOD_FOVSCALE +5,PROMOD_NORMALMAP +6,PROMOD_GFXBLUR + +7,ASSAULT_PRIMARY +8,ASSAULT_PRIMARY_ATTACHMENT +9,ASSAULT_SECONDARY +10,ASSAULT_SECONDARY_ATTACHMENT +11,ASSAULT_GRENADE +12,ASSAULT_CAMO + +13,SPECOPS_PRIMARY +14,SPECOPS_PRIMARY_ATTACHMENT +15,SPECOPS_SECONDARY +16,SPECOPS_SECONDARY_ATTACHMENT +17,SPECOPS_GRENADE +18,SPECOPS_CAMO + +19,DEMOLITIONS_PRIMARY +20,DEMOLITIONS_PRIMARY_ATTACHMENT +21,DEMOLITIONS_SECONDARY +22,DEMOLITIONS_SECONDARY_ATTACHMENT +23,DEMOLITIONS_GRENADE +24,DEMOLITIONS_CAMO + +25,SNIPER_PRIMARY +26,SNIPER_PRIMARY_ATTACHMENT +27,SNIPER_SECONDARY +28,SNIPER_SECONDARY_ATTACHMENT +29,SNIPER_GRENADE +30,SNIPER_CAMO + +31,m16 +32,ak47 +33,m4 +34,g3 +35,g36c +36,m14 +37,mp44 + +38,mp5 +39,uzi +40,ak74u + +41,winchester1200 +42,m1014 + +43,m40a3 +44,remington700 + +45,none +46,silencer + +47,deserteaglegold +48,deserteagle +49,colt45 +50,usp +51,beretta + +52,flash_grenade +53,smoke_grenade + +54,camo_none +55,camo_brockhaurd +56,camo_bushdweller +57,camo_blackwhitemarpat +58,camo_tigerred +59,camo_stagger +60,camo_gold diff --git a/promod/destructible.csv b/promod/destructible.csv index d9b72c0..125d0d3 100644 --- a/promod/destructible.csv +++ b/promod/destructible.csv @@ -1,31 +1,31 @@ -# Copyright (c) 2009-2017 Andreas Göransson -# Copyright (c) 2009-2017 Indrek Ardel -# -# This file is part of Call of Duty 4 Promod. -# -# Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. -# Terms of license can be found in LICENSE.md document bundled with the project. - -0,white_smoke,smoke/car_damage_whitesmoke -1,black_smoke,smoke/car_damage_blacksmoke -2,black_smoke_fire,smoke/car_damage_blacksmoke_fire -3,small_vehicle_explosion,explosions/small_vehicle_explosion -4,car_glass_large,props/car_glass_large -5,car_glass_medium,props/car_glass_med -6,light_front,props/car_glass_headlight -7,light_back,props/car_glass_brakelight - -8,tag_glass_left_front -9,tag_glass_right_front -10,tag_glass_left_back -11,tag_glass_right_back -12,tag_glass_front -13,tag_glass_back -14,tag_glass_left_back2 -15,tag_glass_right_back2 -16,tag_light_left_front -17,tag_light_right_front -18,tag_light_left_back -19,tag_light_right_back -20,tag_mirror_right -21,tag_mirror_left \ No newline at end of file +# Copyright (c) 2009-2017 Andreas Göransson +# Copyright (c) 2009-2017 Indrek Ardel +# +# This file is part of Call of Duty 4 Promod. +# +# Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. +# Terms of license can be found in LICENSE.md document bundled with the project. + +0,white_smoke,smoke/car_damage_whitesmoke +1,black_smoke,smoke/car_damage_blacksmoke +2,black_smoke_fire,smoke/car_damage_blacksmoke_fire +3,small_vehicle_explosion,explosions/small_vehicle_explosion +4,car_glass_large,props/car_glass_large +5,car_glass_medium,props/car_glass_med +6,light_front,props/car_glass_headlight +7,light_back,props/car_glass_brakelight + +8,tag_glass_left_front +9,tag_glass_right_front +10,tag_glass_left_back +11,tag_glass_right_back +12,tag_glass_front +13,tag_glass_back +14,tag_glass_left_back2 +15,tag_glass_right_back2 +16,tag_light_left_front +17,tag_light_right_front +18,tag_light_left_back +19,tag_light_right_back +20,tag_mirror_right +21,tag_mirror_left diff --git a/promod/dvarmon.gsc b/promod/dvarmon.gsc index 2fc8892..2e669a1 100644 --- a/promod/dvarmon.gsc +++ b/promod/dvarmon.gsc @@ -1,58 +1,58 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - level endon ( "restarting" ); - - level thread dvarHistory(); - - level.dvarmon = []; - - dvars = strTok( "class_assault_allowdrop|class_assault_limit|class_assault_primary|class_demolitions_allowdrop|class_demolitions_limit|class_demolitions_primary|class_sniper_allowdrop|class_sniper_limit|class_sniper_primary|class_specops_allowdrop|class_specops_limit|class_specops_primary|scr_game_allowkillcam|scr_game_spectatetype|scr_" + level.gametype + "_timelimit|scr_" + level.gametype + "_numlives|scr_" + level.gametype + "_playerrespawndelay|scr_" + level.gametype + "_roundswitch|scr_" + level.gametype + "_bombtimer|scr_" + level.gametype + "_defusetime|scr_" + level.gametype + "_planttime|scr_hardcore|scr_sd_multibomb|scr_sab_hotpotato|scr_team_fftype|scr_enable_hiticon|koth_autodestroytime|koth_delayplayer|koth_destroytime|koth_spawnDelay|koth_spawntime", "|" ); - - current_values = []; - for( d = 0; d < dvars.size; d++ ) - current_values[d] = getDvar(dvars[d]); - - for(;;wait 0.05) - for ( c = 0; c < dvars.size; c++ ) - if ( getDvar(dvars[c]) != current_values[c] ) - { - level.dvarmon[level.dvarmon.size] = "^1" + dvars[c] + " ^3" + current_values[c] + " ^1--> ^3" + getDvar(dvars[c]); - iprintln("^1Warning: ^3DVAR Change Detected: ^1" + dvars[c] + " ^3" + current_values[c] + " ^1--> ^3" + getDvar(dvars[c])); - current_values[c] = getDvar(dvars[c]); - - if ( isSubStr( dvars[c], "_limit" ) ) - { - thread maps\mp\gametypes\_promod::updateClassAvailability( "allies" ); - thread maps\mp\gametypes\_promod::updateClassAvailability( "axis" ); - } - } -} - -dvarHistory() -{ - level endon ( "restarting" ); - - wait 0.1; - - if ( isDefined( level.rdyup ) && level.rdyup ) - { - for(;!isDefined( game["state"] ) || game["state"] != "postgame";wait 0.5){} - if ( level.dvarmon.size ) - { - iprintln("^3DVAR Change History:"); - - for ( i = 0; i < level.dvarmon.size; i++ ) - iprintln(level.dvarmon[i]); - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + level endon ( "restarting" ); + + level thread dvarHistory(); + + level.dvarmon = []; + + dvars = strTok( "class_assault_allowdrop|class_assault_limit|class_assault_primary|class_demolitions_allowdrop|class_demolitions_limit|class_demolitions_primary|class_sniper_allowdrop|class_sniper_limit|class_sniper_primary|class_specops_allowdrop|class_specops_limit|class_specops_primary|scr_game_allowkillcam|scr_game_spectatetype|scr_" + level.gametype + "_timelimit|scr_" + level.gametype + "_numlives|scr_" + level.gametype + "_playerrespawndelay|scr_" + level.gametype + "_roundswitch|scr_" + level.gametype + "_bombtimer|scr_" + level.gametype + "_defusetime|scr_" + level.gametype + "_planttime|scr_hardcore|scr_sd_multibomb|scr_sab_hotpotato|scr_team_fftype|scr_enable_hiticon|koth_autodestroytime|koth_delayplayer|koth_destroytime|koth_spawnDelay|koth_spawntime", "|" ); + + current_values = []; + for( d = 0; d < dvars.size; d++ ) + current_values[d] = getDvar(dvars[d]); + + for(;;wait 0.05) + for ( c = 0; c < dvars.size; c++ ) + if ( getDvar(dvars[c]) != current_values[c] ) + { + level.dvarmon[level.dvarmon.size] = "^1" + dvars[c] + " ^3" + current_values[c] + " ^1--> ^3" + getDvar(dvars[c]); + iprintln("^1Warning: ^3DVAR Change Detected: ^1" + dvars[c] + " ^3" + current_values[c] + " ^1--> ^3" + getDvar(dvars[c])); + current_values[c] = getDvar(dvars[c]); + + if ( isSubStr( dvars[c], "_limit" ) ) + { + thread maps\mp\gametypes\_promod::updateClassAvailability( "allies" ); + thread maps\mp\gametypes\_promod::updateClassAvailability( "axis" ); + } + } +} + +dvarHistory() +{ + level endon ( "restarting" ); + + wait 0.1; + + if ( isDefined( level.rdyup ) && level.rdyup ) + { + for(;!isDefined( game["state"] ) || game["state"] != "postgame";wait 0.5){} + if ( level.dvarmon.size ) + { + iprintln("^3DVAR Change History:"); + + for ( i = 0; i < level.dvarmon.size; i++ ) + iprintln(level.dvarmon[i]); + } + } +} diff --git a/promod/messagecenter.gsc b/promod/messagecenter.gsc index da7a3a5..92f4610 100644 --- a/promod/messagecenter.gsc +++ b/promod/messagecenter.gsc @@ -1,199 +1,199 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - if ( (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match") || getDvar("promod_mc_enable") == "" || getDvarInt("promod_mc_enable") < 1 ) - return; - - if (getDvarInt("promod_mc_rs_every_round") ) - setDvar("mc_current_msg", "0"); - - if (getDvar("mc_current_msg") == "") - setDvar("mc_current_msg", "0"); - - Run_Messages(); -} - -Run_Messages() -{ - level endon("mc_restart"); - - if(getDvar("promod_mc_delay") == "") - setDvar("promod_mc_delay", "20"); - generic_delay = 20; - - if (getDvar("promod_mc_maxmessages") == "") - setDvar("promod_mc_maxmessages" , 20); - - for(;;) - { - max = getDvarInt("promod_mc_maxmessages") +1; - - last_message = getDvarInt("mc_current_msg"); - - for (i=last_message;i") - message = Get_Next_Map(); - - if (!isDefined(message)) - { - wait 0.05; - continue; - } - - wait delay; - - iprintln(message); - - next_msg = i+1; - setDvar("mc_current_msg", next_msg); - } - } - - setDvar("mc_current_msg", "0"); - - loopdelay = getDvarInt("promod_mc_loopdelay"); - if (loopdelay < 5) - { - setDvar("promod_mc_loopdelay" , "5"); - loopdelay = 5; - } - - wait loopdelay; - } -} - -Get_Next_Map() -{ - maprot = ""; - - maprot = strip(getDvar("sv_maprotationcurrent")); - - if(maprot == "") - maprot = strip(getDvar("sv_maprotation")); - - if(maprot == "") - return undefined; - - j=0; - temparr2[j] = ""; - for(i=0;i0) - i--; - - for(j=0;j<=i;j++) - s3 += s2[j]; - - return s3; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + if ( (isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match") || getDvar("promod_mc_enable") == "" || getDvarInt("promod_mc_enable") < 1 ) + return; + + if (getDvarInt("promod_mc_rs_every_round") ) + setDvar("mc_current_msg", "0"); + + if (getDvar("mc_current_msg") == "") + setDvar("mc_current_msg", "0"); + + Run_Messages(); +} + +Run_Messages() +{ + level endon("mc_restart"); + + if(getDvar("promod_mc_delay") == "") + setDvar("promod_mc_delay", "20"); + generic_delay = 20; + + if (getDvar("promod_mc_maxmessages") == "") + setDvar("promod_mc_maxmessages" , 20); + + for(;;) + { + max = getDvarInt("promod_mc_maxmessages") +1; + + last_message = getDvarInt("mc_current_msg"); + + for (i=last_message;i") + message = Get_Next_Map(); + + if (!isDefined(message)) + { + wait 0.05; + continue; + } + + wait delay; + + iprintln(message); + + next_msg = i+1; + setDvar("mc_current_msg", next_msg); + } + } + + setDvar("mc_current_msg", "0"); + + loopdelay = getDvarInt("promod_mc_loopdelay"); + if (loopdelay < 5) + { + setDvar("promod_mc_loopdelay" , "5"); + loopdelay = 5; + } + + wait loopdelay; + } +} + +Get_Next_Map() +{ + maprot = ""; + + maprot = strip(getDvar("sv_maprotationcurrent")); + + if(maprot == "") + maprot = strip(getDvar("sv_maprotation")); + + if(maprot == "") + return undefined; + + j=0; + temparr2[j] = ""; + for(i=0;i0) + i--; + + for(j=0;j<=i;j++) + s3 += s2[j]; + + return s3; +} diff --git a/promod/modes.gsc b/promod/modes.gsc index 53f399e..d7fcf6a 100644 --- a/promod/modes.gsc +++ b/promod/modes.gsc @@ -1,342 +1,342 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - mode = toLower( getDvar( "promod_mode" ) ); - if ( !validMode( mode ) ) - { - mode = "comp_public"; - setDvar( "promod_mode", mode ); - } - - setMode(mode); -} - -validMode( mode ) -{ - switch ( mode ) - { - case "comp_public": - case "comp_public_hc": - case "custom_public": - case "comp_public_lan": - case "comp_public_hc_lan": - case "custom_public_lan": - case "strat": - case "match": - case "knockout": - return true; - } - - keys = strtok(mode, "_"); - if(keys.size <= 1) return false; - switches = []; - switches["match_knockout"] = false; - switches["1v1_2v2"] = false; - switches["lan_pb"] = false; - switches["hc_done"] = false; - switches["knife_done"] = false; - switches["mr_done"] = false; - switches["scores_done"] = false; - - for(i=0;i 0 && !switches["mr_done"]) - switches["mr_done"] = true; - else if ( ( isSubStr( keys[i], ":" ) ) && strtok( keys[i], ":" ).size == 2 && int(strtok( keys[i], ":" )[0]) >= 0 && int(strtok( keys[i], ":" )[1]) >= 0 && !switches["scores_done"] && !switches["knife_done"] ) - switches["scores_done"] = true; - else - return false; - break; - } - } - return switches["match_knockout"]; -} - -monitorMode() -{ - o_mode = toLower( getDvar( "promod_mode" ) ); - o_cheats = getDvarInt( "sv_cheats" ); - - for(;;) - { - mode = toLower( getDvar( "promod_mode" ) ); - cheats = getDvarInt( "sv_cheats" ); - - if ( mode != o_mode ) - { - if ( isDefined( game["state"] ) && game["state"] == "postgame" ) - { - setDvar( "promod_mode", o_mode ); - continue; - } - - if ( validMode( mode ) ) - { - level notify ( "restarting" ); - - iPrintLN( "Changing To Mode: ^1" + mode + "\nPlease Wait While It Loads..." ); - setMode( mode ); - - wait 2; - - map_restart( false ); - setDvar( "promod_mode", mode ); - } - else - { - if ( isDefined( mode ) && mode != "" ) - iPrintLN( "Error Changing To Mode: ^1" + mode + "\nSyntax: match|knockout_lan|pb_hc_knife_1v1|2v2_mr#_#:#,\nNormal Modes: comp_public(_lan), comp_public_hc(_lan), custom_public(_lan), strat" ); - - setDvar( "promod_mode", o_mode ); - } - } - else if ( cheats != o_cheats ) - { - map_restart( false ); - break; - } - - wait 0.1; - } -} - -setMode( mode ) -{ - limited_mode = 0; - knockout_mode = 0; - mr_rating = 0; - - game["CUSTOM_MODE"] = 0; - game["LAN_MODE"] = 0; - game["HARDCORE_MODE"] = 0; - game["PROMOD_STRATTIME"] = 6; - game["PROMOD_MODE_HUD"] = ""; - game["PROMOD_MATCH_MODE"] = ""; - game["PROMOD_PB_OFF"] = 0; - game["PROMOD_KNIFEROUND"] = 0; - game["SCORES_ATTACK"] = 0; - game["SCORES_DEFENCE"] = 0; - - if ( mode == "comp_public" ) - { - promod\comp::main(); - game["PROMOD_MATCH_MODE"] = "pub"; - game["PROMOD_MODE_HUD"] = "^4Competitive ^3Public"; - pub(); - } - else if ( mode == "comp_public_hc" ) - { - promod\comp::main(); - game["PROMOD_MATCH_MODE"] = "pub"; - game["HARDCORE_MODE"] = 1; - game["PROMOD_MODE_HUD"] = "^4Competitive ^3Public ^6HC"; - pub(); - } - else if ( mode == "custom_public" ) - { - promod_ruleset\custom_public::main(); - game["CUSTOM_MODE"] = 1; - game["PROMOD_MATCH_MODE"] = "pub"; - game["PROMOD_MODE_HUD"] = "^4Custom ^3Public"; - game["PROMOD_KNIFEROUND"] = getDvarInt("promod_kniferound"); - } - else if ( mode == "comp_public_lan" ) - { - promod\comp::main(); - game["PROMOD_MATCH_MODE"] = "pub"; - game["PROMOD_MODE_HUD"] = "^4Competitive ^3Public"; - game["LAN_MODE"] = 1; - pub(); - } - else if ( mode == "comp_public_hc_lan" ) - { - promod\comp::main(); - game["PROMOD_MATCH_MODE"] = "pub"; - game["HARDCORE_MODE"] = 1; - game["PROMOD_MODE_HUD"] = "^4Competitive ^3Public ^6HC"; - game["LAN_MODE"] = 1; - pub(); - } - else if ( mode == "custom_public_lan" ) - { - promod_ruleset\custom_public::main(); - game["CUSTOM_MODE"] = 1; - game["PROMOD_MATCH_MODE"] = "pub"; - game["PROMOD_MODE_HUD"] = "^4Custom ^3Public"; - game["PROMOD_KNIFEROUND"] = getDvarInt("promod_kniferound"); - game["LAN_MODE"] = 1; - } - else if ( mode == "strat" ) - { - promod\comp::main(); - game["PROMOD_MODE_HUD"] = "^4Strat ^3Mode"; - game["PROMOD_MATCH_MODE"] = "strat"; - setDvar( "class_specops_limit", 64 ); - setDvar( "class_demolitions_limit", 64 ); - setDvar( "class_sniper_limit", 64 ); - } - - if ( game["PROMOD_MATCH_MODE"] == "" ) - { - exploded = StrTok( mode, "_" ); - for ( i = 0; i < exploded.size; i++ ) - { - switch(exploded[i]) - { - case "match": - game["PROMOD_MATCH_MODE"] = "match"; - break; - case "knockout": - knockout_mode = 1; - game["PROMOD_MATCH_MODE"] = "match"; - break; - case "lan": - game["LAN_MODE"] = 1; - break; - case "1v1": - case "2v2": - limited_mode = int(strtok(exploded[i],"v")[0]); - break; - case "knife": - game["PROMOD_KNIFEROUND"] = 1; - break; - case "pb": - game["PROMOD_PB_OFF"] = 1; - break; - case "hc": - game["HARDCORE_MODE"] = 1; - break; - default: - if ( isSubStr( exploded[i], "mr" ) ) - mr_rating = int(strtok(exploded[i], "mr")[0]); - else if ( isSubStr( exploded[i], ":" ) ) - { - game["SCORES_ATTACK"] = int(strtok( exploded[i], ":" )[0]); - game["SCORES_DEFENCE"] = int(strtok( exploded[i], ":" )[1]); - } - break; - } - } - } - - if ( game["PROMOD_MATCH_MODE"] == "match" ) - promod\comp::main(); - - if ( knockout_mode && !mr_rating ) - mr_rating = 10; - - if ( limited_mode ) - { - setDvar( "class_demolitions_limit", 0 ); - setDvar( "class_sniper_limit", 0 ); - game["PROMOD_MODE_HUD"] += "^2"+limited_mode+"V"+limited_mode+" "; - } - - if( knockout_mode ) - game["PROMOD_MODE_HUD"] += "^4Knockout"; - else if ( game["PROMOD_MATCH_MODE"] == "match" ) - game["PROMOD_MODE_HUD"] += "^4Match"; - - if ( game["PROMOD_KNIFEROUND"] && game["PROMOD_MATCH_MODE"] == "match" && level.gametype == "sd" ) - game["PROMOD_MODE_HUD"] += " ^5Knife"; - - if ( game["LAN_MODE"] ) - { - setDvar( "g_antilag", 0 ); - setDvar( "g_smoothClients", 0 ); - game["PROMOD_MODE_HUD"] += " ^4LAN"; - if( knockout_mode ) - game["PROMOD_STRATTIME"] = 10; - } - - if ( game["HARDCORE_MODE"] ) - { - if(game["PROMOD_MATCH_MODE"] == "match") - game["PROMOD_MODE_HUD"] += " ^6HC"; - setDvar( "scr_hardcore", 1 ); - } - - maxscore = 0; - if ( mr_rating > 0 && ( level.gametype == "sd" || level.gametype == "sab" ) ) - { - maxscore = mr_rating * ( 2 - 1 * knockout_mode ) + ( - 1 * !knockout_mode ); - - game["PROMOD_MODE_HUD"] += " " + "^3MR" + mr_rating; - - setDvar( "scr_" + level.gametype + "_roundswitch", mr_rating ); - setDvar( "scr_" + level.gametype + "_roundlimit", mr_rating * 2 ); - - if ( knockout_mode && level.gametype == "sd" ) - setDvar( "scr_sd_scorelimit", mr_rating + 1 ); - } - else if ( game["PROMOD_MATCH_MODE"] == "match" ) - { - game["PROMOD_MODE_HUD"] += " ^3Standard"; - mr_rating = 10; - maxscore = mr_rating * ( 2 - 1 * knockout_mode ) + ( - 1 * !knockout_mode ); - } - - if ( level.gametype != "sd" || !knockout_mode && game["SCORES_ATTACK"] + game["SCORES_DEFENCE"] > maxscore || knockout_mode && ( ( game["SCORES_ATTACK"] > maxscore || game["SCORES_DEFENCE"] > maxscore ) || ( game["SCORES_ATTACK"] + game["SCORES_DEFENCE"] >= int( mr_rating ) * 2 ) ) ) - { - game["SCORES_ATTACK"] = 0; - game["SCORES_DEFENCE"] = 0; - } - - if( game["PROMOD_PB_OFF"] && getDvarInt( "sv_cheats" ) && !getDvarInt( "sv_punkbuster" ) ) - game["PROMOD_MODE_HUD"] += " ^1PB: OFF & CHEATS"; - else if( game["PROMOD_PB_OFF"] && !getDvarInt( "sv_punkbuster" ) ) - game["PROMOD_MODE_HUD"] += " ^1PB: OFF"; - else if ( getDvarInt( "sv_cheats" ) ) - game["PROMOD_MODE_HUD"] += " ^1CHEATS"; - - if(level.gametype != "sd") game["PROMOD_KNIFEROUND"] = 0; -} - -pub() -{ - setDvar( "scr_team_fftype", 0 ); - setDvar( "scr_team_teamkillpointloss", 0 ); - setDvar( "scr_war_roundswitch", 0 ); - setDvar( "scr_war_roundlimit", 1 ); - setDvar( "weap_allow_flash_grenade", 0 ); - setDvar( "weap_allow_frag_grenade", 0 ); - setDvar( "weap_allow_smoke_grenade", 0 ); - setDvar( "class_specops_limit", 64 ); - setDvar( "class_assault_grenade", "none" ); - setDvar( "class_specops_grenade", "none" ); - setDvar( "class_demolitions_grenade", "none" ); - setDvar( "class_sniper_grenade", "none" ); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + mode = toLower( getDvar( "promod_mode" ) ); + if ( !validMode( mode ) ) + { + mode = "comp_public"; + setDvar( "promod_mode", mode ); + } + + setMode(mode); +} + +validMode( mode ) +{ + switch ( mode ) + { + case "comp_public": + case "comp_public_hc": + case "custom_public": + case "comp_public_lan": + case "comp_public_hc_lan": + case "custom_public_lan": + case "strat": + case "match": + case "knockout": + return true; + } + + keys = strtok(mode, "_"); + if(keys.size <= 1) return false; + switches = []; + switches["match_knockout"] = false; + switches["1v1_2v2"] = false; + switches["lan_pb"] = false; + switches["hc_done"] = false; + switches["knife_done"] = false; + switches["mr_done"] = false; + switches["scores_done"] = false; + + for(i=0;i 0 && !switches["mr_done"]) + switches["mr_done"] = true; + else if ( ( isSubStr( keys[i], ":" ) ) && strtok( keys[i], ":" ).size == 2 && int(strtok( keys[i], ":" )[0]) >= 0 && int(strtok( keys[i], ":" )[1]) >= 0 && !switches["scores_done"] && !switches["knife_done"] ) + switches["scores_done"] = true; + else + return false; + break; + } + } + return switches["match_knockout"]; +} + +monitorMode() +{ + o_mode = toLower( getDvar( "promod_mode" ) ); + o_cheats = getDvarInt( "sv_cheats" ); + + for(;;) + { + mode = toLower( getDvar( "promod_mode" ) ); + cheats = getDvarInt( "sv_cheats" ); + + if ( mode != o_mode ) + { + if ( isDefined( game["state"] ) && game["state"] == "postgame" ) + { + setDvar( "promod_mode", o_mode ); + continue; + } + + if ( validMode( mode ) ) + { + level notify ( "restarting" ); + + iPrintLN( "Changing To Mode: ^1" + mode + "\nPlease Wait While It Loads..." ); + setMode( mode ); + + wait 2; + + map_restart( false ); + setDvar( "promod_mode", mode ); + } + else + { + if ( isDefined( mode ) && mode != "" ) + iPrintLN( "Error Changing To Mode: ^1" + mode + "\nSyntax: match|knockout_lan|pb_hc_knife_1v1|2v2_mr#_#:#,\nNormal Modes: comp_public(_lan), comp_public_hc(_lan), custom_public(_lan), strat" ); + + setDvar( "promod_mode", o_mode ); + } + } + else if ( cheats != o_cheats ) + { + map_restart( false ); + break; + } + + wait 0.1; + } +} + +setMode( mode ) +{ + limited_mode = 0; + knockout_mode = 0; + mr_rating = 0; + + game["CUSTOM_MODE"] = 0; + game["LAN_MODE"] = 0; + game["HARDCORE_MODE"] = 0; + game["PROMOD_STRATTIME"] = 6; + game["PROMOD_MODE_HUD"] = ""; + game["PROMOD_MATCH_MODE"] = ""; + game["PROMOD_PB_OFF"] = 0; + game["PROMOD_KNIFEROUND"] = 0; + game["SCORES_ATTACK"] = 0; + game["SCORES_DEFENCE"] = 0; + + if ( mode == "comp_public" ) + { + promod\comp::main(); + game["PROMOD_MATCH_MODE"] = "pub"; + game["PROMOD_MODE_HUD"] = "^4Competitive ^3Public"; + pub(); + } + else if ( mode == "comp_public_hc" ) + { + promod\comp::main(); + game["PROMOD_MATCH_MODE"] = "pub"; + game["HARDCORE_MODE"] = 1; + game["PROMOD_MODE_HUD"] = "^4Competitive ^3Public ^6HC"; + pub(); + } + else if ( mode == "custom_public" ) + { + promod_ruleset\custom_public::main(); + game["CUSTOM_MODE"] = 1; + game["PROMOD_MATCH_MODE"] = "pub"; + game["PROMOD_MODE_HUD"] = "^4Custom ^3Public"; + game["PROMOD_KNIFEROUND"] = getDvarInt("promod_kniferound"); + } + else if ( mode == "comp_public_lan" ) + { + promod\comp::main(); + game["PROMOD_MATCH_MODE"] = "pub"; + game["PROMOD_MODE_HUD"] = "^4Competitive ^3Public"; + game["LAN_MODE"] = 1; + pub(); + } + else if ( mode == "comp_public_hc_lan" ) + { + promod\comp::main(); + game["PROMOD_MATCH_MODE"] = "pub"; + game["HARDCORE_MODE"] = 1; + game["PROMOD_MODE_HUD"] = "^4Competitive ^3Public ^6HC"; + game["LAN_MODE"] = 1; + pub(); + } + else if ( mode == "custom_public_lan" ) + { + promod_ruleset\custom_public::main(); + game["CUSTOM_MODE"] = 1; + game["PROMOD_MATCH_MODE"] = "pub"; + game["PROMOD_MODE_HUD"] = "^4Custom ^3Public"; + game["PROMOD_KNIFEROUND"] = getDvarInt("promod_kniferound"); + game["LAN_MODE"] = 1; + } + else if ( mode == "strat" ) + { + promod\comp::main(); + game["PROMOD_MODE_HUD"] = "^4Strat ^3Mode"; + game["PROMOD_MATCH_MODE"] = "strat"; + setDvar( "class_specops_limit", 64 ); + setDvar( "class_demolitions_limit", 64 ); + setDvar( "class_sniper_limit", 64 ); + } + + if ( game["PROMOD_MATCH_MODE"] == "" ) + { + exploded = StrTok( mode, "_" ); + for ( i = 0; i < exploded.size; i++ ) + { + switch(exploded[i]) + { + case "match": + game["PROMOD_MATCH_MODE"] = "match"; + break; + case "knockout": + knockout_mode = 1; + game["PROMOD_MATCH_MODE"] = "match"; + break; + case "lan": + game["LAN_MODE"] = 1; + break; + case "1v1": + case "2v2": + limited_mode = int(strtok(exploded[i],"v")[0]); + break; + case "knife": + game["PROMOD_KNIFEROUND"] = 1; + break; + case "pb": + game["PROMOD_PB_OFF"] = 1; + break; + case "hc": + game["HARDCORE_MODE"] = 1; + break; + default: + if ( isSubStr( exploded[i], "mr" ) ) + mr_rating = int(strtok(exploded[i], "mr")[0]); + else if ( isSubStr( exploded[i], ":" ) ) + { + game["SCORES_ATTACK"] = int(strtok( exploded[i], ":" )[0]); + game["SCORES_DEFENCE"] = int(strtok( exploded[i], ":" )[1]); + } + break; + } + } + } + + if ( game["PROMOD_MATCH_MODE"] == "match" ) + promod\comp::main(); + + if ( knockout_mode && !mr_rating ) + mr_rating = 10; + + if ( limited_mode ) + { + setDvar( "class_demolitions_limit", 0 ); + setDvar( "class_sniper_limit", 0 ); + game["PROMOD_MODE_HUD"] += "^2"+limited_mode+"V"+limited_mode+" "; + } + + if( knockout_mode ) + game["PROMOD_MODE_HUD"] += "^4Knockout"; + else if ( game["PROMOD_MATCH_MODE"] == "match" ) + game["PROMOD_MODE_HUD"] += "^4Match"; + + if ( game["PROMOD_KNIFEROUND"] && game["PROMOD_MATCH_MODE"] == "match" && level.gametype == "sd" ) + game["PROMOD_MODE_HUD"] += " ^5Knife"; + + if ( game["LAN_MODE"] ) + { + setDvar( "g_antilag", 0 ); + setDvar( "g_smoothClients", 0 ); + game["PROMOD_MODE_HUD"] += " ^4LAN"; + if( knockout_mode ) + game["PROMOD_STRATTIME"] = 10; + } + + if ( game["HARDCORE_MODE"] ) + { + if(game["PROMOD_MATCH_MODE"] == "match") + game["PROMOD_MODE_HUD"] += " ^6HC"; + setDvar( "scr_hardcore", 1 ); + } + + maxscore = 0; + if ( mr_rating > 0 && ( level.gametype == "sd" || level.gametype == "sab" ) ) + { + maxscore = mr_rating * ( 2 - 1 * knockout_mode ) + ( - 1 * !knockout_mode ); + + game["PROMOD_MODE_HUD"] += " " + "^3MR" + mr_rating; + + setDvar( "scr_" + level.gametype + "_roundswitch", mr_rating ); + setDvar( "scr_" + level.gametype + "_roundlimit", mr_rating * 2 ); + + if ( knockout_mode && level.gametype == "sd" ) + setDvar( "scr_sd_scorelimit", mr_rating + 1 ); + } + else if ( game["PROMOD_MATCH_MODE"] == "match" ) + { + game["PROMOD_MODE_HUD"] += " ^3Standard"; + mr_rating = 10; + maxscore = mr_rating * ( 2 - 1 * knockout_mode ) + ( - 1 * !knockout_mode ); + } + + if ( level.gametype != "sd" || !knockout_mode && game["SCORES_ATTACK"] + game["SCORES_DEFENCE"] > maxscore || knockout_mode && ( ( game["SCORES_ATTACK"] > maxscore || game["SCORES_DEFENCE"] > maxscore ) || ( game["SCORES_ATTACK"] + game["SCORES_DEFENCE"] >= int( mr_rating ) * 2 ) ) ) + { + game["SCORES_ATTACK"] = 0; + game["SCORES_DEFENCE"] = 0; + } + + if( game["PROMOD_PB_OFF"] && getDvarInt( "sv_cheats" ) && !getDvarInt( "sv_punkbuster" ) ) + game["PROMOD_MODE_HUD"] += " ^1PB: OFF & CHEATS"; + else if( game["PROMOD_PB_OFF"] && !getDvarInt( "sv_punkbuster" ) ) + game["PROMOD_MODE_HUD"] += " ^1PB: OFF"; + else if ( getDvarInt( "sv_cheats" ) ) + game["PROMOD_MODE_HUD"] += " ^1CHEATS"; + + if(level.gametype != "sd") game["PROMOD_KNIFEROUND"] = 0; +} + +pub() +{ + setDvar( "scr_team_fftype", 0 ); + setDvar( "scr_team_teamkillpointloss", 0 ); + setDvar( "scr_war_roundswitch", 0 ); + setDvar( "scr_war_roundlimit", 1 ); + setDvar( "weap_allow_flash_grenade", 0 ); + setDvar( "weap_allow_frag_grenade", 0 ); + setDvar( "weap_allow_smoke_grenade", 0 ); + setDvar( "class_specops_limit", 64 ); + setDvar( "class_assault_grenade", "none" ); + setDvar( "class_specops_grenade", "none" ); + setDvar( "class_demolitions_grenade", "none" ); + setDvar( "class_sniper_grenade", "none" ); +} diff --git a/promod/readyup.gsc b/promod/readyup.gsc index 9c1a431..6c65e0a 100644 --- a/promod/readyup.gsc +++ b/promod/readyup.gsc @@ -1,376 +1,376 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\gametypes\_hud_util; - -main() -{ - if ( isDefined( level.scorebot ) && level.scorebot ) - { - - if( game["promod_in_timeout"] ) - sb_text = "timeout"; - else - { - if( game["promod_first_readyup_done"] ) - sb_text = "2nd_half"; - else - sb_text = "1st_half"; - } - - game["promod_scorebot_ticker_buffer"] += "" + sb_text+"_ready_up"; - } - - level.timeLimitOverride = true; - level.rdyup = true; - level.rup_txt_fx = true; - - setDvar( "g_deadChat", 1 ); - setClientNameMode( "auto_change" ); - setGameEndTime( 0 ); - - thread periodAnnounce(); - - level.ready_up_over = false; - previous_not_ready_count = 0; - - thread updatePlayerHUDInterval(); - thread lastPlayerReady(); - - while ( !level.ready_up_over ) - { - all_players_ready = true; - level.not_ready_count = 0; - - if ( level.players.size < 1 ) - { - all_players_ready = false; - - wait 0.2; - continue; - } - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - if ( !isDefined( player.looped ) ) - { - player setclientdvar("self_ready", 0); - - player.looped = true; - player.ready = false; - player.update = false; - player.statusicon = "compassping_enemy"; - player thread selfLoop(); - } - - player.oldready = player.update; - - if ( player.ready ) - { - player.update = true; - - if ( !isDefined( player.pers["record_reminder_done"] ) && ( isAlive( player ) && isDefined( player.pers["class"] ) && !isDefined( player.inrecmenu ) && !player promod\client::get_config( "PROMOD_RECORD" ) ) ) - { - player.pers["record_reminder_done"] = true; - - player openMenu( game["menu_demo"] ); - player.inrecmenu = true; - } - } - - if ( !player.ready || isDefined( player.inrecmenu ) && player.inrecmenu && !player promod\client::get_config( "PROMOD_RECORD" ) ) - { - level.not_ready_count++; - all_players_ready = false; - player.update = false; - } - - player.newready = player.update; - - if ( player.oldready != player.newready && ( !isDefined( player.inrecmenu ) || !player.inrecmenu ) ) - { - player setclientdvar("self_ready", int(player.ready)); - player.oldready = player.newready; - - if ( player.ready ) - player.statusicon = "compassping_friendlyfiring_mp"; - else - player.statusicon = "compassping_enemy"; - } - } - - if(previous_not_ready_count != level.not_ready_count) - { - for(i=0;i 1 && maxwait <= 5 ) - { - wait 0.05; - maxwait += 0.05; - } - - if( level.not_ready_count == 1 && level.players.size > 1 ) - { - for(i=0;i player.soundplayed ) && ( !isDefined( player.timesplayed ) || player.timesplayed < 4 ) && ( !isDefined( player.inrecmenu ) || !player.inrecmenu ) ) - { - player PlayLocalSound( player maps\mp\gametypes\_quickmessages::getSoundPrefixForTeam()+"1mc_lastalive" ); - player.soundplayed = gettime(); - - if ( isDefined( player.timesplayed ) ) - player.timesplayed++; - else - player.timesplayed = 1; - } - } - } - } - - wait 0.05; - } -} - -updatePlayerHUDInterval() -{ - level endon("kill_ru_period"); - - while ( !level.ready_up_over ) - { - wait 5; - - for ( i = 0; i < level.players.size; i++ ) - { - player = level.players[i]; - - if ( isDefined( player ) ) - { - if ( isDefined( player.ready ) && !isDefined( player.inrecmenu ) ) - player setclientdvar("self_ready", int(player.ready)); - - if ( isDefined( level.not_ready_count ) ) - player setclientdvar("waiting_on", level.not_ready_count); - } - } - } -} - -selfLoop() -{ - self endon("disconnect"); - - self thread onSpawn(); - self thread clientHUD(); - - self setClientDvar( "self_kills", "" ); - - while ( !level.ready_up_over ) - { - while ( !isDefined( self.pers["team"] ) || self.pers["team"] == "none" ) - wait 0.05; - - wait 0.05; - - if ( self useButtonPressed() ) - self.ready = !self.ready; - - while ( self useButtonPressed() ) - wait 0.1; - } -} - -clientHUD() -{ - self endon("disconnect"); - - if ( !game["promod_first_readyup_done"] ) - self waittill("spawned_player"); - - text = ""; - if ( !game["promod_first_readyup_done"] ) - text = "Pre-Match"; - else if ( game["promod_in_timeout"] ) - text = "Timeout"; - else - text = "Half-Time"; - - self.periodtext = createFontString( "objective", 1.6 ); - self.periodtext setPoint( "CENTER", "CENTER", 0, -75 ); - self.periodtext.sort = 1001; - self.periodtext setText( text + " Ready-Up Period" ); - self.periodtext.foreground = false; - self.periodtext.hidewheninmenu = true; - - self.halftimetext = createFontString( "objective", 1.5 ); - self.halftimetext.alpha = 0; - self.halftimetext setPoint( "CENTER", "CENTER", 0, 200 ); - self.halftimetext.sort = 1001; - - self.halftimetext.foreground = false; - self.halftimetext.hidewheninmenu = true; - - if ( game["promod_first_readyup_done"] && game["promod_in_timeout"] && (!isDefined( game["LAN_MODE"] ) || !game["LAN_MODE"]) ) - text = "Remaining"; - else - text = "Elapsed"; - - self.halftimetext setText( "Time " + text ); - - self thread moveOver(); - - level waittill("kill_ru_period"); - - if ( isDefined( self.periodtext ) ) - self.periodtext destroy(); - - if ( isDefined( self.halftimetext ) ) - self.halftimetext destroy(); - -} - -onSpawn() -{ - self endon("disconnect"); - - while ( !level.ready_up_over ) - { - self waittill("spawned_player"); - self iprintlnbold("Press ^3[{+activate}] ^7to Ready-Up"); - } -} - -periodAnnounce() -{ - level.halftimetimer = createServerTimer( "objective", 1.4 ); - level.halftimetimer.alpha = 0; - level.halftimetimer setPoint( "CENTER", "CENTER", 0, 215 ); - - if ( !game["promod_in_timeout"] || isDefined( game["LAN_MODE"] ) && game["LAN_MODE"] ) - level.halftimetimer setTimerUp( 0 ); - else - level.halftimetimer setTimer( 300 ); - - level.halftimetimer.sort = 1001; - level.halftimetimer.foreground = false; - level.halftimetimer.hideWhenInMenu = true; - - level waittill("kill_ru_period"); - - if ( isDefined( level.halftimetimer ) ) - level.halftimetimer destroy(); -} - -moveOver() -{ - level endon("kill_ru_period"); - self endon("disconnect"); - - if( level.rup_txt_fx ) - { - wait 3; - self.periodtext MoveOverTime( 2.5 ); - } - - self.periodtext setPoint( "CENTER", "CENTER", 0, 185 ); - - if( level.rup_txt_fx ) - { - wait 2.6; - if( isDefined( level.halftimetimer ) ) - level.halftimetimer.alpha = 1; - level.rup_txt_fx = false; - } - - if( isDefined( self.halftimetext ) ) - self.halftimetext.alpha = 1; -} +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\gametypes\_hud_util; + +main() +{ + if ( isDefined( level.scorebot ) && level.scorebot ) + { + + if( game["promod_in_timeout"] ) + sb_text = "timeout"; + else + { + if( game["promod_first_readyup_done"] ) + sb_text = "2nd_half"; + else + sb_text = "1st_half"; + } + + game["promod_scorebot_ticker_buffer"] += "" + sb_text+"_ready_up"; + } + + level.timeLimitOverride = true; + level.rdyup = true; + level.rup_txt_fx = true; + + setDvar( "g_deadChat", 1 ); + setClientNameMode( "auto_change" ); + setGameEndTime( 0 ); + + thread periodAnnounce(); + + level.ready_up_over = false; + previous_not_ready_count = 0; + + thread updatePlayerHUDInterval(); + thread lastPlayerReady(); + + while ( !level.ready_up_over ) + { + all_players_ready = true; + level.not_ready_count = 0; + + if ( level.players.size < 1 ) + { + all_players_ready = false; + + wait 0.2; + continue; + } + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + if ( !isDefined( player.looped ) ) + { + player setclientdvar("self_ready", 0); + + player.looped = true; + player.ready = false; + player.update = false; + player.statusicon = "compassping_enemy"; + player thread selfLoop(); + } + + player.oldready = player.update; + + if ( player.ready ) + { + player.update = true; + + if ( !isDefined( player.pers["record_reminder_done"] ) && ( isAlive( player ) && isDefined( player.pers["class"] ) && !isDefined( player.inrecmenu ) && !player promod\client::get_config( "PROMOD_RECORD" ) ) ) + { + player.pers["record_reminder_done"] = true; + + player openMenu( game["menu_demo"] ); + player.inrecmenu = true; + } + } + + if ( !player.ready || isDefined( player.inrecmenu ) && player.inrecmenu && !player promod\client::get_config( "PROMOD_RECORD" ) ) + { + level.not_ready_count++; + all_players_ready = false; + player.update = false; + } + + player.newready = player.update; + + if ( player.oldready != player.newready && ( !isDefined( player.inrecmenu ) || !player.inrecmenu ) ) + { + player setclientdvar("self_ready", int(player.ready)); + player.oldready = player.newready; + + if ( player.ready ) + player.statusicon = "compassping_friendlyfiring_mp"; + else + player.statusicon = "compassping_enemy"; + } + } + + if(previous_not_ready_count != level.not_ready_count) + { + for(i=0;i 1 && maxwait <= 5 ) + { + wait 0.05; + maxwait += 0.05; + } + + if( level.not_ready_count == 1 && level.players.size > 1 ) + { + for(i=0;i player.soundplayed ) && ( !isDefined( player.timesplayed ) || player.timesplayed < 4 ) && ( !isDefined( player.inrecmenu ) || !player.inrecmenu ) ) + { + player PlayLocalSound( player maps\mp\gametypes\_quickmessages::getSoundPrefixForTeam()+"1mc_lastalive" ); + player.soundplayed = gettime(); + + if ( isDefined( player.timesplayed ) ) + player.timesplayed++; + else + player.timesplayed = 1; + } + } + } + } + + wait 0.05; + } +} + +updatePlayerHUDInterval() +{ + level endon("kill_ru_period"); + + while ( !level.ready_up_over ) + { + wait 5; + + for ( i = 0; i < level.players.size; i++ ) + { + player = level.players[i]; + + if ( isDefined( player ) ) + { + if ( isDefined( player.ready ) && !isDefined( player.inrecmenu ) ) + player setclientdvar("self_ready", int(player.ready)); + + if ( isDefined( level.not_ready_count ) ) + player setclientdvar("waiting_on", level.not_ready_count); + } + } + } +} + +selfLoop() +{ + self endon("disconnect"); + + self thread onSpawn(); + self thread clientHUD(); + + self setClientDvar( "self_kills", "" ); + + while ( !level.ready_up_over ) + { + while ( !isDefined( self.pers["team"] ) || self.pers["team"] == "none" ) + wait 0.05; + + wait 0.05; + + if ( self useButtonPressed() ) + self.ready = !self.ready; + + while ( self useButtonPressed() ) + wait 0.1; + } +} + +clientHUD() +{ + self endon("disconnect"); + + if ( !game["promod_first_readyup_done"] ) + self waittill("spawned_player"); + + text = ""; + if ( !game["promod_first_readyup_done"] ) + text = "Pre-Match"; + else if ( game["promod_in_timeout"] ) + text = "Timeout"; + else + text = "Half-Time"; + + self.periodtext = createFontString( "objective", 1.6 ); + self.periodtext setPoint( "CENTER", "CENTER", 0, -75 ); + self.periodtext.sort = 1001; + self.periodtext setText( text + " Ready-Up Period" ); + self.periodtext.foreground = false; + self.periodtext.hidewheninmenu = true; + + self.halftimetext = createFontString( "objective", 1.5 ); + self.halftimetext.alpha = 0; + self.halftimetext setPoint( "CENTER", "CENTER", 0, 200 ); + self.halftimetext.sort = 1001; + + self.halftimetext.foreground = false; + self.halftimetext.hidewheninmenu = true; + + if ( game["promod_first_readyup_done"] && game["promod_in_timeout"] && (!isDefined( game["LAN_MODE"] ) || !game["LAN_MODE"]) ) + text = "Remaining"; + else + text = "Elapsed"; + + self.halftimetext setText( "Time " + text ); + + self thread moveOver(); + + level waittill("kill_ru_period"); + + if ( isDefined( self.periodtext ) ) + self.periodtext destroy(); + + if ( isDefined( self.halftimetext ) ) + self.halftimetext destroy(); + +} + +onSpawn() +{ + self endon("disconnect"); + + while ( !level.ready_up_over ) + { + self waittill("spawned_player"); + self iprintlnbold("Press ^3[{+activate}] ^7to Ready-Up"); + } +} + +periodAnnounce() +{ + level.halftimetimer = createServerTimer( "objective", 1.4 ); + level.halftimetimer.alpha = 0; + level.halftimetimer setPoint( "CENTER", "CENTER", 0, 215 ); + + if ( !game["promod_in_timeout"] || isDefined( game["LAN_MODE"] ) && game["LAN_MODE"] ) + level.halftimetimer setTimerUp( 0 ); + else + level.halftimetimer setTimer( 300 ); + + level.halftimetimer.sort = 1001; + level.halftimetimer.foreground = false; + level.halftimetimer.hideWhenInMenu = true; + + level waittill("kill_ru_period"); + + if ( isDefined( level.halftimetimer ) ) + level.halftimetimer destroy(); +} + +moveOver() +{ + level endon("kill_ru_period"); + self endon("disconnect"); + + if( level.rup_txt_fx ) + { + wait 3; + self.periodtext MoveOverTime( 2.5 ); + } + + self.periodtext setPoint( "CENTER", "CENTER", 0, 185 ); + + if( level.rup_txt_fx ) + { + wait 2.6; + if( isDefined( level.halftimetimer ) ) + level.halftimetimer.alpha = 1; + level.rup_txt_fx = false; + } + + if( isDefined( self.halftimetext ) ) + self.halftimetext.alpha = 1; +} diff --git a/promod/scorebot.gsc b/promod/scorebot.gsc index fa5f85c..11321f2 100644 --- a/promod/scorebot.gsc +++ b/promod/scorebot.gsc @@ -1,73 +1,73 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - if ( getDvar( "promod_enable_scorebot" ) == "" ) - setDvar( "promod_enable_scorebot", 0 ); - - level.scorebot = getDvarInt( "promod_enable_scorebot" ) && isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" && level.teambased; - - if ( level.scorebot ) - { - thread updateTimer(); - thread actionTicker(); - } -} - -updateTimer() -{ - if ( !isDefined( game["prevtime"] ) ) - game["prevtime"] = gettime(); - - for(;;) - { - game["passedtime"] = gettime() - game["prevtime"]; - if ( game["passedtime"] >= 10000 ) - { - level notify("update_ticker"); - game["prevtime"] = gettime(); - } - - wait 0.05; - } -} - -actionTicker() -{ - while ( !isDefined( game["promod_scorebot_attack_ticker_buffer"] ) || !isDefined( game["promod_scorebot_defence_ticker_buffer"] ) ) - wait 0.05; - - setDvar( "__promod_attack_score", game["promod_scorebot_attack_ticker_buffer"], true ); - setDvar( "__promod_defence_score", game["promod_scorebot_defence_ticker_buffer"], true ); - setDvar( "__promod_mode", toLower( getDvar( "promod_mode" ) ), true ); - setDvar( "__promod_ticker", getDvar( "__promod_ticker" ), true ); - setDvar( "__promod_version", "Promod LIVE V2.20 EU", true ); - - for(;;) - { - level waittill( "update_ticker" ); - - num = getDvarInt( "promod_scorebot_ticker_num" ) + 1; - - if ( num == 10 ) - num = 0; - - setDvar( "promod_scorebot_ticker_num", num ); - - if ( isDefined( game["promod_scorebot_ticker_buffer"] ) ) - { - setDvar( "__promod_ticker", game["promod_scorebot_ticker_buffer"], true ); - setDvar( "__promod_attack_score", game["promod_scorebot_attack_ticker_buffer"], true ); - setDvar( "__promod_defence_score", game["promod_scorebot_defence_ticker_buffer"], true ); - game["promod_scorebot_ticker_buffer"] = num; - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + if ( getDvar( "promod_enable_scorebot" ) == "" ) + setDvar( "promod_enable_scorebot", 0 ); + + level.scorebot = getDvarInt( "promod_enable_scorebot" ) && isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" && level.teambased; + + if ( level.scorebot ) + { + thread updateTimer(); + thread actionTicker(); + } +} + +updateTimer() +{ + if ( !isDefined( game["prevtime"] ) ) + game["prevtime"] = gettime(); + + for(;;) + { + game["passedtime"] = gettime() - game["prevtime"]; + if ( game["passedtime"] >= 10000 ) + { + level notify("update_ticker"); + game["prevtime"] = gettime(); + } + + wait 0.05; + } +} + +actionTicker() +{ + while ( !isDefined( game["promod_scorebot_attack_ticker_buffer"] ) || !isDefined( game["promod_scorebot_defence_ticker_buffer"] ) ) + wait 0.05; + + setDvar( "__promod_attack_score", game["promod_scorebot_attack_ticker_buffer"], true ); + setDvar( "__promod_defence_score", game["promod_scorebot_defence_ticker_buffer"], true ); + setDvar( "__promod_mode", toLower( getDvar( "promod_mode" ) ), true ); + setDvar( "__promod_ticker", getDvar( "__promod_ticker" ), true ); + setDvar( "__promod_version", "Promod LIVE V2.20 EU", true ); + + for(;;) + { + level waittill( "update_ticker" ); + + num = getDvarInt( "promod_scorebot_ticker_num" ) + 1; + + if ( num == 10 ) + num = 0; + + setDvar( "promod_scorebot_ticker_num", num ); + + if ( isDefined( game["promod_scorebot_ticker_buffer"] ) ) + { + setDvar( "__promod_ticker", game["promod_scorebot_ticker_buffer"], true ); + setDvar( "__promod_attack_score", game["promod_scorebot_attack_ticker_buffer"], true ); + setDvar( "__promod_defence_score", game["promod_scorebot_defence_ticker_buffer"], true ); + game["promod_scorebot_ticker_buffer"] = num; + } + } +} diff --git a/promod/servercheck.gsc b/promod/servercheck.gsc index f1a3f46..0147401 100644 --- a/promod/servercheck.gsc +++ b/promod/servercheck.gsc @@ -1,160 +1,160 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - level endon( "restarting" ); - - thread errorMessage(); - - for(;;) - { - if ( getDvarInt( "sv_cheats" ) || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) - break; - - forceDvar( "authServerName", "cod4master.activision.com" ); - forceDvar( "sv_disableClientConsole", "0" ); - forceDvar( "sv_fps", "20" ); - forceDvar( "sv_pure", "1" ); - forceDvar( "sv_maxrate", "25000" ); - forceDvar( "g_gravity", "800" ); - forceDvar( "g_speed", "190" ); - forceDvar( "g_knockback", "1000" ); - forceDvar( "g_playercollisionejectspeed", "25" ); - forceDvar( "g_dropforwardspeed", "10" ); - forceDvar( "g_drophorzspeedrand", "100" ); - forceDvar( "g_dropupspeedbase", "10" ); - forceDvar( "g_dropupspeedrand", "5" ); - forceDvar( "g_useholdtime", "0" ); - - if( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" ) - { - forceDvar( "g_maxdroppedweapons", "16" ); - - if ( !game["LAN_MODE"] ) - forceDvar( "g_smoothclients", "1" ); - } - - wait 0.1; - } -} - -forceDvar(dvar, value) -{ - val = getDvar( dvar ); - if( val != value ) - { - setDvar( dvar, value ); - iprintln("^3"+dvar+" has been changed back to '"+value+"' (was '"+val+"')"); - } -} - -errorMessage() -{ - level endon( "restarting" ); - - for(;;) - { - if ( getDvarInt( "sv_cheats" ) || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) - break; - - if ( !getDvarInt( "sv_punkbuster" ) && !game["LAN_MODE"] && !game["PROMOD_PB_OFF"] ) - iprintlnbold("^1Server Violation^7: Punkbuster Disabled"); - - if ( getDvarInt( "scr_player_maxhealth" ) != 100 && game["HARDCORE_MODE"] != 1 && game["CUSTOM_MODE"] != 1 || getDvarInt( "scr_player_maxhealth" ) != 30 && game["HARDCORE_MODE"] == 1 && game["CUSTOM_MODE"] != 1 ) - iprintlnbold("^1Server Violation^7: Modified Player Health"); - - antilag = getDvarInt( "g_antilag" ); - dedicated = getDvar( "dedicated" ); - if ( (antilag && dedicated == "dedicated LAN server") || (!antilag && dedicated == "dedicated internet server" && !game["PROMOD_PB_OFF"])) - iprintlnbold("^1Server Violation^7: Modified Connection"); - - if( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" || toLower( getDvar( "fs_game" ) ) == "mods/pml220" ) - { - if( toLower(getDvar("fs_game")) != "mods/pml220" ) - iprintlnbold("^1Server Violation^7: Invalid fs_game value"); - - iwdnames = strToK( getDvar( "sv_iwdnames" ), " " ); - iwdsums = strToK( getDvar( "sv_iwds" ), " " ); - iwd_loaded = false; - for(i=0;i + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + level endon( "restarting" ); + + thread errorMessage(); + + for(;;) + { + if ( getDvarInt( "sv_cheats" ) || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) + break; + + forceDvar( "authServerName", "cod4master.activision.com" ); + forceDvar( "sv_disableClientConsole", "0" ); + forceDvar( "sv_fps", "20" ); + forceDvar( "sv_pure", "1" ); + forceDvar( "sv_maxrate", "25000" ); + forceDvar( "g_gravity", "800" ); + forceDvar( "g_speed", "190" ); + forceDvar( "g_knockback", "1000" ); + forceDvar( "g_playercollisionejectspeed", "25" ); + forceDvar( "g_dropforwardspeed", "10" ); + forceDvar( "g_drophorzspeedrand", "100" ); + forceDvar( "g_dropupspeedbase", "10" ); + forceDvar( "g_dropupspeedrand", "5" ); + forceDvar( "g_useholdtime", "0" ); + + if( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" ) + { + forceDvar( "g_maxdroppedweapons", "16" ); + + if ( !game["LAN_MODE"] ) + forceDvar( "g_smoothclients", "1" ); + } + + wait 0.1; + } +} + +forceDvar(dvar, value) +{ + val = getDvar( dvar ); + if( val != value ) + { + setDvar( dvar, value ); + iprintln("^3"+dvar+" has been changed back to '"+value+"' (was '"+val+"')"); + } +} + +errorMessage() +{ + level endon( "restarting" ); + + for(;;) + { + if ( getDvarInt( "sv_cheats" ) || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "strat" ) + break; + + if ( !getDvarInt( "sv_punkbuster" ) && !game["LAN_MODE"] && !game["PROMOD_PB_OFF"] ) + iprintlnbold("^1Server Violation^7: Punkbuster Disabled"); + + if ( getDvarInt( "scr_player_maxhealth" ) != 100 && game["HARDCORE_MODE"] != 1 && game["CUSTOM_MODE"] != 1 || getDvarInt( "scr_player_maxhealth" ) != 30 && game["HARDCORE_MODE"] == 1 && game["CUSTOM_MODE"] != 1 ) + iprintlnbold("^1Server Violation^7: Modified Player Health"); + + antilag = getDvarInt( "g_antilag" ); + dedicated = getDvar( "dedicated" ); + if ( (antilag && dedicated == "dedicated LAN server") || (!antilag && dedicated == "dedicated internet server" && !game["PROMOD_PB_OFF"])) + iprintlnbold("^1Server Violation^7: Modified Connection"); + + if( isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] == "match" || toLower( getDvar( "fs_game" ) ) == "mods/pml220" ) + { + if( toLower(getDvar("fs_game")) != "mods/pml220" ) + iprintlnbold("^1Server Violation^7: Invalid fs_game value"); + + iwdnames = strToK( getDvar( "sv_iwdnames" ), " " ); + iwdsums = strToK( getDvar( "sv_iwds" ), " " ); + iwd_loaded = false; + for(i=0;i - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - setDvar( "bg_bobMax", 0 ); - setDvar( "player_sustainAmmo", 0 ); - setDvar( "player_throwBackInnerRadius", 0 ); - setDvar( "player_throwBackOuterRadius", 0 ); - setDvar( "loc_warnings", 0 ); - - game["allies_assault_count"] = 0; - game["allies_specops_count"] = 0; - game["allies_demolitions_count"] = 0; - game["allies_sniper_count"] = 0; - - game["axis_assault_count"] = 0; - game["axis_specops_count"] = 0; - game["axis_demolitions_count"] = 0; - game["axis_sniper_count"] = 0; - - game["promod_timeout_called"] = false; - game["promod_in_timeout"] = 0; - game["allies_timeout_called"] = 0; - game["axis_timeout_called"] = 0; - - game["promod_first_readyup_done"] = 0; - game["PROMOD_VERSION"] = "Promod ^1LIVE ^7V2.20 EU"; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + setDvar( "bg_bobMax", 0 ); + setDvar( "player_sustainAmmo", 0 ); + setDvar( "player_throwBackInnerRadius", 0 ); + setDvar( "player_throwBackOuterRadius", 0 ); + setDvar( "loc_warnings", 0 ); + + game["allies_assault_count"] = 0; + game["allies_specops_count"] = 0; + game["allies_demolitions_count"] = 0; + game["allies_sniper_count"] = 0; + + game["axis_assault_count"] = 0; + game["axis_specops_count"] = 0; + game["axis_demolitions_count"] = 0; + game["axis_sniper_count"] = 0; + + game["promod_timeout_called"] = false; + game["promod_in_timeout"] = 0; + game["allies_timeout_called"] = 0; + game["axis_timeout_called"] = 0; + + game["promod_first_readyup_done"] = 0; + game["PROMOD_VERSION"] = "Promod ^1LIVE ^7V2.20 EU"; +} diff --git a/promod/shoutcast.gsc b/promod/shoutcast.gsc index 100ea6c..b50f391 100644 --- a/promod/shoutcast.gsc +++ b/promod/shoutcast.gsc @@ -1,147 +1,147 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -addPlayer() -{ - if(isDefined(self.pers["class"]) && !isDefined(self.pers["shoutnum"]) && (self.pers["team"] == "allies" || self.pers["team"] == "axis")) - { - offset = int(self.pers["team"] == "axis")*5; - for(i=0;i<5;i++) - if(!isDefined(level.shoutbars[i+offset])) - { - self.pers["shoutnum"] = i+offset; - level.shoutbars[self.pers["shoutnum"]] = self; - self updatePlayer(); - break; - } - } -} - -removePlayer() -{ - if(isDefined(self.pers["shoutnum"])) - { - level.shoutbars[self.pers["shoutnum"]] = undefined; - self.pers["shoutnum"] = undefined; - - // Find replacements for current slots. - for(i=0;i level.players.size) - self.specpos = 0; - - if(!isDefined(self.followclass)) - self.followclass = []; - - if(self.followclass.size > 0) - { - temp = []; - for(i=0;i 0) - { - num = self.followclass[self.followclass.size-1] getEntityNumber(); - self.followclass[self.followclass.size-1] = undefined; - - if ( num != -1 ) - { - self.spectatorclient = num; - self.spectatorlast = num; - self.freelook = false; - wait 0.05; - self.spectatorclient = -1; - } - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +addPlayer() +{ + if(isDefined(self.pers["class"]) && !isDefined(self.pers["shoutnum"]) && (self.pers["team"] == "allies" || self.pers["team"] == "axis")) + { + offset = int(self.pers["team"] == "axis")*5; + for(i=0;i<5;i++) + if(!isDefined(level.shoutbars[i+offset])) + { + self.pers["shoutnum"] = i+offset; + level.shoutbars[self.pers["shoutnum"]] = self; + self updatePlayer(); + break; + } + } +} + +removePlayer() +{ + if(isDefined(self.pers["shoutnum"])) + { + level.shoutbars[self.pers["shoutnum"]] = undefined; + self.pers["shoutnum"] = undefined; + + // Find replacements for current slots. + for(i=0;i level.players.size) + self.specpos = 0; + + if(!isDefined(self.followclass)) + self.followclass = []; + + if(self.followclass.size > 0) + { + temp = []; + for(i=0;i 0) + { + num = self.followclass[self.followclass.size-1] getEntityNumber(); + self.followclass[self.followclass.size-1] = undefined; + + if ( num != -1 ) + { + self.spectatorclient = num; + self.spectatorlast = num; + self.freelook = false; + wait 0.05; + self.spectatorclient = -1; + } + } + } +} diff --git a/promod/stratmode.gsc b/promod/stratmode.gsc index d9b7cf6..f12703f 100644 --- a/promod/stratmode.gsc +++ b/promod/stratmode.gsc @@ -1,495 +1,495 @@ -/* - Copyright (c) 2008 Matthias Lorenz - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -main() -{ - precacheItem( "radar_mp" ); - thread onPlayerConnect(); - thread createServerHUD(); -} - -onPlayerConnect() -{ - for(;;) - { - level waittill("connecting", player); - player thread nadeTraining(); - player thread createHUD(); - player thread monitorKeys(); - if(getDvar("dedicated") == "listen server" && !getDvarInt( "sv_punkbuster" )) - player thread bots(); - } -} - -spawnthing() -{ - self endon("disconnect"); - - for(;;) - { - if(!self HasWeapon("radar_mp")) - { - self SetActionSlot( 1, "weapon", "radar_mp" ); - self giveWeapon("radar_mp"); - } - - wait 0.5; - } -} - -bots() -{ - self endon("disconnect"); - - self thread spawnthing(); - lastWeapon = undefined; - - for(;;) - { - if ( self getCurrentWeapon() != "radar_mp" ) - lastWeapon = self getCurrentWeapon(); - - if ( self getCurrentWeapon() == "radar_mp" && ( ( !isDefined(self.inAction) || !self.inAction) && self isOnGround() ) ) - { - self SwitchToWeapon( lastWeapon ); - - origin = self getOrigin(); - angles = self getPlayerAngles(); - self.inAction = true; - - if(isDefined(self.bot)) - { - wait 0.55; - - if ( distanceSquared( self.origin, origin ) < 4096 ) - { - self iprintln("Move away to spawn dummy!"); - - while ( distanceSquared( self.origin, origin ) < 4096 ) - wait 0.05; - } - - self.bot setOrigin( origin ); - self.bot SetPlayerAngles( angles ); - } - else - { - newBot = addTestClient(); - - wait 0.05; - - if(isdefined(newBot)) - { - wait 0.5; - - if ( distanceSquared( self.origin, origin ) < 4096 ) - { - self iprintln("Move away to spawn dummy!"); - - while ( distanceSquared( self.origin, origin ) < 4096 ) - wait 0.05; - } - - newBot.pers["isBot"] = true; - self.bot = newBot; - while( !isDefined( newBot.pers ) || !isDefined( newBot.pers["team"] ) ) - wait 0.05; - newBot notify( "menuresponse", game["menu_team"], self.pers["team"] ); - while(newBot.pers["team"] != "axis" && newBot.pers["team"] != "allies") - wait 0.05; - newBot notify( "menuresponse", game["menu_changeclass_" + newBot.pers["team"] ], "assault" ); - while(!isDefined(newBot.pers["class"])) - wait 0.05; - newBot notify( "menuresponse", game["menu_changeclass"], "go" ); - while(!isAlive(newBot)) - wait 0.05; - - newBot SetMoveSpeedScale( 0 ); - newBot freezeControls( true ); - newBot setOrigin( origin ); - newBot SetPlayerAngles( angles ); - newBot.maxhealth = 999999999; - newBot.health = newBot.maxhealth; - self.hint6 setText( "Move: Press ^3[{+actionslot 1}]" ); - } - else - self iprintln("Couldn't add bot, server full?"); - } - self.inAction = false; - } - - wait 0.05; - } -} - -monitorKeys() -{ - self endon("disconnect"); - - for(;;) - { - wait 0.05; - - if ( self.sessionstate != "playing" ) - continue; - - if ( self useButtonPressed() && !self meleeButtonPressed() ) - { - useButtonTime = 0; - while ( self useButtonPressed() && !self meleeButtonPressed() ) - { - useButtonTime += 0.05; - wait 0.05; - } - - if ( useButtonTime > 0.5 || !useButtonTime ) - continue; - - for ( i = 0; i < 0.5; i += 0.1 ) - { - wait 0.1; - - if ( self useButtonPressed() && !self meleeButtonPressed() ) - { - loadPos(); - break; - } - } - } - - if ( self meleeButtonPressed() && !self useButtonPressed() ) - { - meleeButtonTime = 0; - while ( self meleeButtonPressed() && !self useButtonPressed() ) - { - meleeButtonTime += 0.05; - wait 0.05; - } - - if ( meleeButtonTime > 0.5 || !meleeButtonTime ) - continue; - - for ( i = 0; i < 0.5; i += 0.1 ) - { - wait 0.1; - - if ( self meleeButtonPressed() && !self useButtonPressed() ) - { - savePos(); - break; - } - } - } - - if ( self meleeButtonPressed() || self useButtonPressed() ) - { - wait 0.1; - - bothButtonTime = 0; - while ( bothButtonTime < 0.5 && self meleeButtonPressed() && self useButtonPressed() ) - { - bothButtonTime += 0.05; - wait 0.05; - } - - if ( bothButtonTime > 0.35 ) - { - if ( !isDefined( self.nofly ) ) - { - self.nofly = true; - self.hint1 setText( "Enable: Hold ^3[{+melee}] ^7+ ^3[{+activate}]" ); - self.hint2.color = (0.5, 0.5, 0.5); - self.hint3.color = (0.5, 0.5, 0.5); - } - else - { - self.nofly = undefined; - self.hint1 setText( "Disable: Hold ^3[{+melee}] ^7+ ^3[{+activate}]" ); - self.hint2.color = (0.8, 1, 1); - self.hint3.color = (0.8, 1, 1); - } - } - - while ( self meleeButtonPressed() && self useButtonPressed() ) - wait 0.05; - } - } -} - -loadPos() -{ - self endon( "disconnect" ); - - if ( !isDefined( self.savedorg ) ) - self iprintln("No Previous Position Saved"); - else - { - self freezecontrols( true ); - - wait 0.05; - - self setOrigin( self.savedorg ); - self SetPlayerAngles ( self.savedang ); - self freezecontrols( false ); - self iprintln("Position Loaded"); - } -} - -savePos() -{ - if ( !self isOnGround() ) - return; - - self.savedorg = self.origin; - self.savedang = self GetPlayerAngles(); - self iprintln("Position Saved"); -} - -nadeTraining() -{ - self endon( "disconnect" ); - - for(;;) - { - self waittill ( "grenade_fire", grenade, weaponName ); - - grenades = getentarray("grenade","classname"); - for ( i = 0; i < grenades.size; i++ ) - { - self giveWeapon( weaponName ); - self setWeaponAmmoClip( weaponName, 1 ); - - if ( isDefined( grenades[i].origin ) && !isDefined( self.flying ) && !isDefined( self.nofly ) ) - { - if ( distance( grenades[i].origin, self.origin ) < 140 ) - { - self.flying = true; - grenades[i] thread nadeFlying( self, weaponName ); - } - } - } - - wait 0.1; - } -} - -nadeFlying( player, weaponName ) -{ - player endon( "disconnect" ); - - time = 3; - - if ( weaponName == "frag_grenade_mp" ) - time = 3; - else if ( weaponName == "flash_grenade_mp" ) - time = 1.5; - else - time = 1; - - old_player_origin = player.origin; - - player.flyobject = spawn( "script_model", player.origin ); - player.flyobject linkto( self ); - - player linkto( player.flyobject ); - - stop_flying = false; - return_flying = false; - - while ( isDefined( self ) ) - { - if ( player attackButtonPressed() ) - { - stop_flying = true; - break; - } - - if ( player useButtonPressed() ) - { - return_flying = true; - break; - } - - wait 0.05; - } - - if ( stop_flying || return_flying ) - wait 0.1; - else - { - for ( i = 0; i < time - 0.5; i += 0.1 ) - { - wait 0.1; - - if ( player useButtonPressed() ) - break; - } - } - - player.flyobject unlink(); - - if ( stop_flying ) - { - for ( i = 0; i < time + 0.4; i += 0.1 ) - { - wait 0.1; - - if ( player useButtonPressed() ) - break; - } - } - - player.flyobject moveto( old_player_origin, 0.1 ); - - wait 0.2; - - player unlink(); - player.flying = undefined; - - if ( isDefined( player.flyobject ) ) - player.flyobject delete(); -} - -createHUD() -{ - self.hint1 = newClientHudElem(self); - self.hint1.x = -7; - self.hint1.y = 100; - self.hint1.horzAlign = "right"; - self.hint1.vertAlign = "top"; - self.hint1.alignX = "right"; - self.hint1.alignY = "middle"; - self.hint1.fontScale = 1.4; - self.hint1.font = "default"; - self.hint1.color = (0.8, 1, 1); - self.hint1.hidewheninmenu = true; - self.hint1 setText( "Disable: Hold ^3[{+melee}] ^7+ ^3[{+activate}]" ); - - self.hint2 = newClientHudElem(self); - self.hint2.x = -7; - self.hint2.y = 115; - self.hint2.horzAlign = "right"; - self.hint2.vertAlign = "top"; - self.hint2.alignX = "right"; - self.hint2.alignY = "middle"; - self.hint2.fontScale = 1.4; - self.hint2.font = "default"; - self.hint2.color = (0.8, 1, 1); - self.hint2.hidewheninmenu = true; - self.hint2 setText( "Stop: Press ^3[{+attack}]" ); - - self.hint3 = newClientHudElem(self); - self.hint3.x = -7; - self.hint3.y = 130; - self.hint3.horzAlign = "right"; - self.hint3.vertAlign = "top"; - self.hint3.alignX = "right"; - self.hint3.alignY = "middle"; - self.hint3.fontScale = 1.4; - self.hint3.font = "default"; - self.hint3.color = (0.8, 1, 1); - self.hint3.hidewheninmenu = true; - self.hint3 setText( "Return: Press ^3[{+activate}]" ); - - self.hint4 = newClientHudElem(self); - self.hint4.x = -7; - self.hint4.y = 175; - self.hint4.horzAlign = "right"; - self.hint4.vertAlign = "top"; - self.hint4.alignX = "right"; - self.hint4.alignY = "middle"; - self.hint4.fontScale = 1.4; - self.hint4.font = "default"; - self.hint4.color = (0.8, 1, 1); - self.hint4.hidewheninmenu = true; - self.hint4 setText( "Save: Press ^3[{+melee}] ^7twice" ); - - self.hint5 = newClientHudElem(self); - self.hint5.x = -7; - self.hint5.y = 190; - self.hint5.horzAlign = "right"; - self.hint5.vertAlign = "top"; - self.hint5.alignX = "right"; - self.hint5.alignY = "middle"; - self.hint5.fontScale = 1.4; - self.hint5.font = "default"; - self.hint5.color = (0.8, 1, 1); - self.hint5.hidewheninmenu = true; - self.hint5 setText( "Load: Press ^3[{+activate}] ^7twice" ); - - if(getDvar("dedicated") == "listen server") - { - self.hint6 = newClientHudElem(self); - self.hint6.x = -7; - self.hint6.y = 235; - self.hint6.horzAlign = "right"; - self.hint6.vertAlign = "top"; - self.hint6.alignX = "right"; - self.hint6.alignY = "middle"; - self.hint6.fontScale = 1.4; - self.hint6.font = "default"; - self.hint6.color = (0.8, 1, 1); - self.hint6.hidewheninmenu = true; - - if(!getDvarInt( "sv_punkbuster" )) - self.hint6 setText( "Spawn: Press ^3[{+actionslot 1}]" ); - else - { - self.hint6 setText( "Spawn: Disable Punkbuster" ); - self.hint6.color = (0.5, 0.5, 0.5); - } - } -} - -createServerHUD() -{ - nadetraining = newHudElem(); - nadetraining.x = -7; - nadetraining.y = 80; - nadetraining.horzAlign = "right"; - nadetraining.vertAlign = "top"; - nadetraining.alignX = "right"; - nadetraining.alignY = "middle"; - nadetraining.fontScale = 1.4; - nadetraining.font = "default"; - nadetraining.color = (0.8, 1, 1); - nadetraining.hidewheninmenu = true; - nadetraining setText( "Nadetraining" ); - - position = newHudElem(); - position.x = -7; - position.y = 155; - position.horzAlign = "right"; - position.vertAlign = "top"; - position.alignX = "right"; - position.alignY = "middle"; - position.fontScale = 1.4; - position.font = "default"; - position.color = (0.8, 1, 1); - position.hidewheninmenu = true; - position setText( "Position" ); - - if(getDvar("dedicated") == "listen server") - { - traindummy = newHudElem(); - traindummy.x = -7; - traindummy.y = 215; - traindummy.horzAlign = "right"; - traindummy.vertAlign = "top"; - traindummy.alignX = "right"; - traindummy.alignY = "middle"; - traindummy.fontScale = 1.4; - traindummy.font = "default"; - traindummy.color = (0.8, 1, 1); - traindummy.hidewheninmenu = true; - traindummy setText( "Training Dummy" ); - } -} \ No newline at end of file +/* + Copyright (c) 2008 Matthias Lorenz + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +main() +{ + precacheItem( "radar_mp" ); + thread onPlayerConnect(); + thread createServerHUD(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill("connecting", player); + player thread nadeTraining(); + player thread createHUD(); + player thread monitorKeys(); + if(getDvar("dedicated") == "listen server" && !getDvarInt( "sv_punkbuster" )) + player thread bots(); + } +} + +spawnthing() +{ + self endon("disconnect"); + + for(;;) + { + if(!self HasWeapon("radar_mp")) + { + self SetActionSlot( 1, "weapon", "radar_mp" ); + self giveWeapon("radar_mp"); + } + + wait 0.5; + } +} + +bots() +{ + self endon("disconnect"); + + self thread spawnthing(); + lastWeapon = undefined; + + for(;;) + { + if ( self getCurrentWeapon() != "radar_mp" ) + lastWeapon = self getCurrentWeapon(); + + if ( self getCurrentWeapon() == "radar_mp" && ( ( !isDefined(self.inAction) || !self.inAction) && self isOnGround() ) ) + { + self SwitchToWeapon( lastWeapon ); + + origin = self getOrigin(); + angles = self getPlayerAngles(); + self.inAction = true; + + if(isDefined(self.bot)) + { + wait 0.55; + + if ( distanceSquared( self.origin, origin ) < 4096 ) + { + self iprintln("Move away to spawn dummy!"); + + while ( distanceSquared( self.origin, origin ) < 4096 ) + wait 0.05; + } + + self.bot setOrigin( origin ); + self.bot SetPlayerAngles( angles ); + } + else + { + newBot = addTestClient(); + + wait 0.05; + + if(isdefined(newBot)) + { + wait 0.5; + + if ( distanceSquared( self.origin, origin ) < 4096 ) + { + self iprintln("Move away to spawn dummy!"); + + while ( distanceSquared( self.origin, origin ) < 4096 ) + wait 0.05; + } + + newBot.pers["isBot"] = true; + self.bot = newBot; + while( !isDefined( newBot.pers ) || !isDefined( newBot.pers["team"] ) ) + wait 0.05; + newBot notify( "menuresponse", game["menu_team"], self.pers["team"] ); + while(newBot.pers["team"] != "axis" && newBot.pers["team"] != "allies") + wait 0.05; + newBot notify( "menuresponse", game["menu_changeclass_" + newBot.pers["team"] ], "assault" ); + while(!isDefined(newBot.pers["class"])) + wait 0.05; + newBot notify( "menuresponse", game["menu_changeclass"], "go" ); + while(!isAlive(newBot)) + wait 0.05; + + newBot SetMoveSpeedScale( 0 ); + newBot freezeControls( true ); + newBot setOrigin( origin ); + newBot SetPlayerAngles( angles ); + newBot.maxhealth = 999999999; + newBot.health = newBot.maxhealth; + self.hint6 setText( "Move: Press ^3[{+actionslot 1}]" ); + } + else + self iprintln("Couldn't add bot, server full?"); + } + self.inAction = false; + } + + wait 0.05; + } +} + +monitorKeys() +{ + self endon("disconnect"); + + for(;;) + { + wait 0.05; + + if ( self.sessionstate != "playing" ) + continue; + + if ( self useButtonPressed() && !self meleeButtonPressed() ) + { + useButtonTime = 0; + while ( self useButtonPressed() && !self meleeButtonPressed() ) + { + useButtonTime += 0.05; + wait 0.05; + } + + if ( useButtonTime > 0.5 || !useButtonTime ) + continue; + + for ( i = 0; i < 0.5; i += 0.1 ) + { + wait 0.1; + + if ( self useButtonPressed() && !self meleeButtonPressed() ) + { + loadPos(); + break; + } + } + } + + if ( self meleeButtonPressed() && !self useButtonPressed() ) + { + meleeButtonTime = 0; + while ( self meleeButtonPressed() && !self useButtonPressed() ) + { + meleeButtonTime += 0.05; + wait 0.05; + } + + if ( meleeButtonTime > 0.5 || !meleeButtonTime ) + continue; + + for ( i = 0; i < 0.5; i += 0.1 ) + { + wait 0.1; + + if ( self meleeButtonPressed() && !self useButtonPressed() ) + { + savePos(); + break; + } + } + } + + if ( self meleeButtonPressed() || self useButtonPressed() ) + { + wait 0.1; + + bothButtonTime = 0; + while ( bothButtonTime < 0.5 && self meleeButtonPressed() && self useButtonPressed() ) + { + bothButtonTime += 0.05; + wait 0.05; + } + + if ( bothButtonTime > 0.35 ) + { + if ( !isDefined( self.nofly ) ) + { + self.nofly = true; + self.hint1 setText( "Enable: Hold ^3[{+melee}] ^7+ ^3[{+activate}]" ); + self.hint2.color = (0.5, 0.5, 0.5); + self.hint3.color = (0.5, 0.5, 0.5); + } + else + { + self.nofly = undefined; + self.hint1 setText( "Disable: Hold ^3[{+melee}] ^7+ ^3[{+activate}]" ); + self.hint2.color = (0.8, 1, 1); + self.hint3.color = (0.8, 1, 1); + } + } + + while ( self meleeButtonPressed() && self useButtonPressed() ) + wait 0.05; + } + } +} + +loadPos() +{ + self endon( "disconnect" ); + + if ( !isDefined( self.savedorg ) ) + self iprintln("No Previous Position Saved"); + else + { + self freezecontrols( true ); + + wait 0.05; + + self setOrigin( self.savedorg ); + self SetPlayerAngles ( self.savedang ); + self freezecontrols( false ); + self iprintln("Position Loaded"); + } +} + +savePos() +{ + if ( !self isOnGround() ) + return; + + self.savedorg = self.origin; + self.savedang = self GetPlayerAngles(); + self iprintln("Position Saved"); +} + +nadeTraining() +{ + self endon( "disconnect" ); + + for(;;) + { + self waittill ( "grenade_fire", grenade, weaponName ); + + grenades = getentarray("grenade","classname"); + for ( i = 0; i < grenades.size; i++ ) + { + self giveWeapon( weaponName ); + self setWeaponAmmoClip( weaponName, 1 ); + + if ( isDefined( grenades[i].origin ) && !isDefined( self.flying ) && !isDefined( self.nofly ) ) + { + if ( distance( grenades[i].origin, self.origin ) < 140 ) + { + self.flying = true; + grenades[i] thread nadeFlying( self, weaponName ); + } + } + } + + wait 0.1; + } +} + +nadeFlying( player, weaponName ) +{ + player endon( "disconnect" ); + + time = 3; + + if ( weaponName == "frag_grenade_mp" ) + time = 3; + else if ( weaponName == "flash_grenade_mp" ) + time = 1.5; + else + time = 1; + + old_player_origin = player.origin; + + player.flyobject = spawn( "script_model", player.origin ); + player.flyobject linkto( self ); + + player linkto( player.flyobject ); + + stop_flying = false; + return_flying = false; + + while ( isDefined( self ) ) + { + if ( player attackButtonPressed() ) + { + stop_flying = true; + break; + } + + if ( player useButtonPressed() ) + { + return_flying = true; + break; + } + + wait 0.05; + } + + if ( stop_flying || return_flying ) + wait 0.1; + else + { + for ( i = 0; i < time - 0.5; i += 0.1 ) + { + wait 0.1; + + if ( player useButtonPressed() ) + break; + } + } + + player.flyobject unlink(); + + if ( stop_flying ) + { + for ( i = 0; i < time + 0.4; i += 0.1 ) + { + wait 0.1; + + if ( player useButtonPressed() ) + break; + } + } + + player.flyobject moveto( old_player_origin, 0.1 ); + + wait 0.2; + + player unlink(); + player.flying = undefined; + + if ( isDefined( player.flyobject ) ) + player.flyobject delete(); +} + +createHUD() +{ + self.hint1 = newClientHudElem(self); + self.hint1.x = -7; + self.hint1.y = 100; + self.hint1.horzAlign = "right"; + self.hint1.vertAlign = "top"; + self.hint1.alignX = "right"; + self.hint1.alignY = "middle"; + self.hint1.fontScale = 1.4; + self.hint1.font = "default"; + self.hint1.color = (0.8, 1, 1); + self.hint1.hidewheninmenu = true; + self.hint1 setText( "Disable: Hold ^3[{+melee}] ^7+ ^3[{+activate}]" ); + + self.hint2 = newClientHudElem(self); + self.hint2.x = -7; + self.hint2.y = 115; + self.hint2.horzAlign = "right"; + self.hint2.vertAlign = "top"; + self.hint2.alignX = "right"; + self.hint2.alignY = "middle"; + self.hint2.fontScale = 1.4; + self.hint2.font = "default"; + self.hint2.color = (0.8, 1, 1); + self.hint2.hidewheninmenu = true; + self.hint2 setText( "Stop: Press ^3[{+attack}]" ); + + self.hint3 = newClientHudElem(self); + self.hint3.x = -7; + self.hint3.y = 130; + self.hint3.horzAlign = "right"; + self.hint3.vertAlign = "top"; + self.hint3.alignX = "right"; + self.hint3.alignY = "middle"; + self.hint3.fontScale = 1.4; + self.hint3.font = "default"; + self.hint3.color = (0.8, 1, 1); + self.hint3.hidewheninmenu = true; + self.hint3 setText( "Return: Press ^3[{+activate}]" ); + + self.hint4 = newClientHudElem(self); + self.hint4.x = -7; + self.hint4.y = 175; + self.hint4.horzAlign = "right"; + self.hint4.vertAlign = "top"; + self.hint4.alignX = "right"; + self.hint4.alignY = "middle"; + self.hint4.fontScale = 1.4; + self.hint4.font = "default"; + self.hint4.color = (0.8, 1, 1); + self.hint4.hidewheninmenu = true; + self.hint4 setText( "Save: Press ^3[{+melee}] ^7twice" ); + + self.hint5 = newClientHudElem(self); + self.hint5.x = -7; + self.hint5.y = 190; + self.hint5.horzAlign = "right"; + self.hint5.vertAlign = "top"; + self.hint5.alignX = "right"; + self.hint5.alignY = "middle"; + self.hint5.fontScale = 1.4; + self.hint5.font = "default"; + self.hint5.color = (0.8, 1, 1); + self.hint5.hidewheninmenu = true; + self.hint5 setText( "Load: Press ^3[{+activate}] ^7twice" ); + + if(getDvar("dedicated") == "listen server") + { + self.hint6 = newClientHudElem(self); + self.hint6.x = -7; + self.hint6.y = 235; + self.hint6.horzAlign = "right"; + self.hint6.vertAlign = "top"; + self.hint6.alignX = "right"; + self.hint6.alignY = "middle"; + self.hint6.fontScale = 1.4; + self.hint6.font = "default"; + self.hint6.color = (0.8, 1, 1); + self.hint6.hidewheninmenu = true; + + if(!getDvarInt( "sv_punkbuster" )) + self.hint6 setText( "Spawn: Press ^3[{+actionslot 1}]" ); + else + { + self.hint6 setText( "Spawn: Disable Punkbuster" ); + self.hint6.color = (0.5, 0.5, 0.5); + } + } +} + +createServerHUD() +{ + nadetraining = newHudElem(); + nadetraining.x = -7; + nadetraining.y = 80; + nadetraining.horzAlign = "right"; + nadetraining.vertAlign = "top"; + nadetraining.alignX = "right"; + nadetraining.alignY = "middle"; + nadetraining.fontScale = 1.4; + nadetraining.font = "default"; + nadetraining.color = (0.8, 1, 1); + nadetraining.hidewheninmenu = true; + nadetraining setText( "Nadetraining" ); + + position = newHudElem(); + position.x = -7; + position.y = 155; + position.horzAlign = "right"; + position.vertAlign = "top"; + position.alignX = "right"; + position.alignY = "middle"; + position.fontScale = 1.4; + position.font = "default"; + position.color = (0.8, 1, 1); + position.hidewheninmenu = true; + position setText( "Position" ); + + if(getDvar("dedicated") == "listen server") + { + traindummy = newHudElem(); + traindummy.x = -7; + traindummy.y = 215; + traindummy.horzAlign = "right"; + traindummy.vertAlign = "top"; + traindummy.alignX = "right"; + traindummy.alignY = "middle"; + traindummy.fontScale = 1.4; + traindummy.font = "default"; + traindummy.color = (0.8, 1, 1); + traindummy.hidewheninmenu = true; + traindummy setText( "Training Dummy" ); + } +} diff --git a/promod/strattime.gsc b/promod/strattime.gsc index fd9a12f..baa3ff1 100644 --- a/promod/strattime.gsc +++ b/promod/strattime.gsc @@ -1,129 +1,129 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\gametypes\_hud_util; - -main() -{ - if ( game["promod_timeout_called"] ) - { - thread promod\timeout::main(); - return; - } - - thread stratTime(); - - level waittill( "strat_over" ); - - players = getentarray("player", "classname"); - for ( i = 0; i < players.size; i++ ) - { - player = players[i]; - classType = player.pers["class"]; - - if ( ( player.pers["team"] == "allies" || player.pers["team"] == "axis" ) && player.sessionstate == "playing" && isDefined( player.pers["class"] ) ) - { - if ( isDefined( game["PROMOD_KNIFEROUND"] ) && !game["PROMOD_KNIFEROUND"] || !isDefined( game["PROMOD_KNIFEROUND"] ) ) - { - if ( level.hardcoreMode && getDvarInt("weap_allow_frag_grenade") ) - player giveWeapon( "frag_grenade_short_mp" ); - else if ( getDvarInt( "weap_allow_frag_grenade" ) ) - player giveWeapon( "frag_grenade_mp" ); - - if ( player.pers[classType]["loadout_grenade"] == "flash_grenade" && getDvarInt("weap_allow_flash_grenade") ) - { - player setOffhandSecondaryClass("flash"); - player giveWeapon( "flash_grenade_mp" ); - } - else if ( player.pers[classType]["loadout_grenade"] == "smoke_grenade" && getDvarInt("weap_allow_smoke_grenade") ) - { - player setOffhandSecondaryClass("smoke"); - player giveWeapon( "smoke_grenade_mp" ); - } - - player maps\mp\gametypes\_class::sidearmWeapon(); - player maps\mp\gametypes\_class::primaryWeapon(); - } - else - player thread maps\mp\gametypes\_globallogic::removeWeapons(); - - player allowsprint(true); - player setMoveSpeedScale( 1.0 - 0.05 * int( isDefined( player.curClass ) && player.curClass == "assault" ) * int( isDefined( game["PROMOD_KNIFEROUND"] ) && !game["PROMOD_KNIFEROUND"] || !isDefined( game["PROMOD_KNIFEROUND"] ) ) ); - player allowjump(true); - } - } - - UpdateClientNames(); - - if ( game["promod_timeout_called"] ) - { - thread promod\timeout::main(); - return; - } -} - -stratTime() -{ - thread stratTimer(); - - level.strat_over = false; - strat_time_left = game["PROMOD_STRATTIME"] + level.prematchPeriod * int( getDvarInt( "promod_allow_strattime" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] && level.gametype == "sd" ); - - while ( !level.strat_over ) - { - players = getentarray("player", "classname"); - for ( i = 0; i < players.size; i++ ) - { - player = players[i]; - - if ( ( player.pers["team"] == "allies" || player.pers["team"] == "axis" ) && !isDefined( player.pers["class"] ) ) - player.statusicon = "hud_status_dead"; - } - - wait 0.25; - - strat_time_left -= 0.25; - - if ( strat_time_left <= 0 || game["promod_timeout_called"] ) - level.strat_over = true; - } - - level notify( "strat_over" ); -} - -stratTimer() -{ - matchStartText = createServerFontString( "objective", 1.5 ); - matchStartText setPoint( "CENTER", "CENTER", 0, -60 ); - matchStartText.sort = 1001; - - if( isDefined(game["PROMOD_KNIFEROUND"]) && game["PROMOD_KNIFEROUND"] ) - matchStartText setText( "Knife Round" ); - else - matchStartText setText( "Strat Time" ); - - matchStartText.foreground = false; - matchStartText.hidewheninmenu = false; - - matchStartTimer = createServerTimer( "objective", 1.4 ); - matchStartTimer setPoint( "CENTER", "CENTER", 0, -45 ); - matchStartTimer setTimer( game["PROMOD_STRATTIME"] + level.prematchPeriod * int( getDvarInt( "promod_allow_strattime" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] && level.gametype == "sd" ) ); - matchStartTimer.sort = 1001; - matchStartTimer.foreground = false; - matchStartTimer.hideWhenInMenu = false; - - level waittill( "strat_over" ); - - if ( isDefined( matchStartText ) ) - matchStartText destroy(); - - if ( isDefined( matchStartTimer ) ) - matchStartTimer destroy(); -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\gametypes\_hud_util; + +main() +{ + if ( game["promod_timeout_called"] ) + { + thread promod\timeout::main(); + return; + } + + thread stratTime(); + + level waittill( "strat_over" ); + + players = getentarray("player", "classname"); + for ( i = 0; i < players.size; i++ ) + { + player = players[i]; + classType = player.pers["class"]; + + if ( ( player.pers["team"] == "allies" || player.pers["team"] == "axis" ) && player.sessionstate == "playing" && isDefined( player.pers["class"] ) ) + { + if ( isDefined( game["PROMOD_KNIFEROUND"] ) && !game["PROMOD_KNIFEROUND"] || !isDefined( game["PROMOD_KNIFEROUND"] ) ) + { + if ( level.hardcoreMode && getDvarInt("weap_allow_frag_grenade") ) + player giveWeapon( "frag_grenade_short_mp" ); + else if ( getDvarInt( "weap_allow_frag_grenade" ) ) + player giveWeapon( "frag_grenade_mp" ); + + if ( player.pers[classType]["loadout_grenade"] == "flash_grenade" && getDvarInt("weap_allow_flash_grenade") ) + { + player setOffhandSecondaryClass("flash"); + player giveWeapon( "flash_grenade_mp" ); + } + else if ( player.pers[classType]["loadout_grenade"] == "smoke_grenade" && getDvarInt("weap_allow_smoke_grenade") ) + { + player setOffhandSecondaryClass("smoke"); + player giveWeapon( "smoke_grenade_mp" ); + } + + player maps\mp\gametypes\_class::sidearmWeapon(); + player maps\mp\gametypes\_class::primaryWeapon(); + } + else + player thread maps\mp\gametypes\_globallogic::removeWeapons(); + + player allowsprint(true); + player setMoveSpeedScale( 1.0 - 0.05 * int( isDefined( player.curClass ) && player.curClass == "assault" ) * int( isDefined( game["PROMOD_KNIFEROUND"] ) && !game["PROMOD_KNIFEROUND"] || !isDefined( game["PROMOD_KNIFEROUND"] ) ) ); + player allowjump(true); + } + } + + UpdateClientNames(); + + if ( game["promod_timeout_called"] ) + { + thread promod\timeout::main(); + return; + } +} + +stratTime() +{ + thread stratTimer(); + + level.strat_over = false; + strat_time_left = game["PROMOD_STRATTIME"] + level.prematchPeriod * int( getDvarInt( "promod_allow_strattime" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] && level.gametype == "sd" ); + + while ( !level.strat_over ) + { + players = getentarray("player", "classname"); + for ( i = 0; i < players.size; i++ ) + { + player = players[i]; + + if ( ( player.pers["team"] == "allies" || player.pers["team"] == "axis" ) && !isDefined( player.pers["class"] ) ) + player.statusicon = "hud_status_dead"; + } + + wait 0.25; + + strat_time_left -= 0.25; + + if ( strat_time_left <= 0 || game["promod_timeout_called"] ) + level.strat_over = true; + } + + level notify( "strat_over" ); +} + +stratTimer() +{ + matchStartText = createServerFontString( "objective", 1.5 ); + matchStartText setPoint( "CENTER", "CENTER", 0, -60 ); + matchStartText.sort = 1001; + + if( isDefined(game["PROMOD_KNIFEROUND"]) && game["PROMOD_KNIFEROUND"] ) + matchStartText setText( "Knife Round" ); + else + matchStartText setText( "Strat Time" ); + + matchStartText.foreground = false; + matchStartText.hidewheninmenu = false; + + matchStartTimer = createServerTimer( "objective", 1.4 ); + matchStartTimer setPoint( "CENTER", "CENTER", 0, -45 ); + matchStartTimer setTimer( game["PROMOD_STRATTIME"] + level.prematchPeriod * int( getDvarInt( "promod_allow_strattime" ) && isDefined( game["CUSTOM_MODE"] ) && game["CUSTOM_MODE"] && level.gametype == "sd" ) ); + matchStartTimer.sort = 1001; + matchStartTimer.foreground = false; + matchStartTimer.hideWhenInMenu = false; + + level waittill( "strat_over" ); + + if ( isDefined( matchStartText ) ) + matchStartText destroy(); + + if ( isDefined( matchStartTimer ) ) + matchStartTimer destroy(); +} diff --git a/promod/timeout.gsc b/promod/timeout.gsc index 9465a09..f445fdc 100644 --- a/promod/timeout.gsc +++ b/promod/timeout.gsc @@ -1,144 +1,144 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include maps\mp\gametypes\_hud_util; - -main() -{ - game["promod_in_timeout"] = 1; - - thread maps\mp\gametypes\_globallogic::disableBombsites(); - thread promod\readyup::main(); - thread disableBombBag(); - - level.timeout_over = false; - level.timeout_time_left = 300; - - thread timeoutLoop(); -} - -disableBombBag() -{ - if ( level.gametype == "sd" ) - { - trigger = getEnt( "sd_bomb_pickup_trig", "targetname" ); - visuals = getEnt( "sd_bomb", "targetname" ); - - if ( isDefined( trigger ) ) - trigger delete(); - - if ( isDefined( visuals ) ) - visuals delete(); - - if ( isDefined( level.sdBomb ) ) - level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); - } -} - -timeoutLoop() -{ - if ( !isDefined( game["LAN_MODE"] ) || !game["LAN_MODE"] ) - thread timeoutLeft(); - - if ( !isDefined( level.ready_up_over ) ) - level.ready_up_over = false; - - while ( !level.timeout_over ) - { - wait 0.25; - - if ( level.timeout_time_left <= 0 || level.ready_up_over ) - { - level.timeout_over = true; - level.ready_up_over = 1; - - game["promod_timeout_called"] = false; - } - } -} - -timeoutLeft() -{ - while( !level.timeout_over ) - { - wait 0.25; - level.timeout_time_left -= 0.25; - } -} - -timeoutCall() -{ - if ( (isDefined( level.ready_up_over ) && !level.ready_up_over || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "match") || ( level.gametype != "sd" && level.gametype != "sab" ) ) - { - self iprintln("^3Timeout is not available right now"); - return; - } - - if ( game["promod_timeout_called"] ) - { - if ( isDefined( game["promod_timeout_called_by"] ) ) - { - if ( self == game["promod_timeout_called_by"] ) - { - iprintln("^3Timeout cancelled by " + self.name); - - if ( level.gametype == "sd" ) - game[self.pers["team"] + "_timeout_called"] = 0; - - game["promod_timeout_called"] = false; - - if ( isDefined( level.scorebot ) && level.scorebot ) - { - timeout_team = ""; - if ( self.pers["team"] == game["attackers"] ) - timeout_team = "attack"; - else if ( self.pers["team"] == game["defenders"] ) - timeout_team = "defence"; - - game["promod_scorebot_ticker_buffer"] += "timeout_cancelled" + timeout_team + "" + self.name; - } - } - else - self iprintln("^3Timeout already called by " + game["promod_timeout_called_by"].name); - } - else - self iprintln("^3Timeout already called"); - - return; - } - - if ( game[self.pers["team"] + "_timeout_called"] && (!isDefined( game["LAN_MODE"] ) || !game["LAN_MODE"]) ) - { - self iprintln("^3Only one timeout per team/half allowed"); - return; - } - - game["promod_timeout_called_by"] = self; - iprintln("^3Timeout called by " + self.name); - - if ( !isDefined( level.strat_over ) || level.strat_over ) - self iprintln("^3Call timeout again to cancel"); - - if ( isDefined( level.scorebot ) && level.scorebot ) - { - timeout_team = ""; - if ( self.pers["team"] == game["attackers"] ) - timeout_team = "attack"; - else if ( self.pers["team"] == game["defenders"] ) - timeout_team = "defence"; - - game["promod_scorebot_ticker_buffer"] += "timeout_called" + timeout_team + "" + self.name; - } - - if ( level.gametype == "sd" ) - game[self.pers["team"] + "_timeout_called"] = 1; - - game["promod_timeout_called"] = true; -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include maps\mp\gametypes\_hud_util; + +main() +{ + game["promod_in_timeout"] = 1; + + thread maps\mp\gametypes\_globallogic::disableBombsites(); + thread promod\readyup::main(); + thread disableBombBag(); + + level.timeout_over = false; + level.timeout_time_left = 300; + + thread timeoutLoop(); +} + +disableBombBag() +{ + if ( level.gametype == "sd" ) + { + trigger = getEnt( "sd_bomb_pickup_trig", "targetname" ); + visuals = getEnt( "sd_bomb", "targetname" ); + + if ( isDefined( trigger ) ) + trigger delete(); + + if ( isDefined( visuals ) ) + visuals delete(); + + if ( isDefined( level.sdBomb ) ) + level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); + } +} + +timeoutLoop() +{ + if ( !isDefined( game["LAN_MODE"] ) || !game["LAN_MODE"] ) + thread timeoutLeft(); + + if ( !isDefined( level.ready_up_over ) ) + level.ready_up_over = false; + + while ( !level.timeout_over ) + { + wait 0.25; + + if ( level.timeout_time_left <= 0 || level.ready_up_over ) + { + level.timeout_over = true; + level.ready_up_over = 1; + + game["promod_timeout_called"] = false; + } + } +} + +timeoutLeft() +{ + while( !level.timeout_over ) + { + wait 0.25; + level.timeout_time_left -= 0.25; + } +} + +timeoutCall() +{ + if ( (isDefined( level.ready_up_over ) && !level.ready_up_over || isDefined( game["PROMOD_MATCH_MODE"] ) && game["PROMOD_MATCH_MODE"] != "match") || ( level.gametype != "sd" && level.gametype != "sab" ) ) + { + self iprintln("^3Timeout is not available right now"); + return; + } + + if ( game["promod_timeout_called"] ) + { + if ( isDefined( game["promod_timeout_called_by"] ) ) + { + if ( self == game["promod_timeout_called_by"] ) + { + iprintln("^3Timeout cancelled by " + self.name); + + if ( level.gametype == "sd" ) + game[self.pers["team"] + "_timeout_called"] = 0; + + game["promod_timeout_called"] = false; + + if ( isDefined( level.scorebot ) && level.scorebot ) + { + timeout_team = ""; + if ( self.pers["team"] == game["attackers"] ) + timeout_team = "attack"; + else if ( self.pers["team"] == game["defenders"] ) + timeout_team = "defence"; + + game["promod_scorebot_ticker_buffer"] += "timeout_cancelled" + timeout_team + "" + self.name; + } + } + else + self iprintln("^3Timeout already called by " + game["promod_timeout_called_by"].name); + } + else + self iprintln("^3Timeout already called"); + + return; + } + + if ( game[self.pers["team"] + "_timeout_called"] && (!isDefined( game["LAN_MODE"] ) || !game["LAN_MODE"]) ) + { + self iprintln("^3Only one timeout per team/half allowed"); + return; + } + + game["promod_timeout_called_by"] = self; + iprintln("^3Timeout called by " + self.name); + + if ( !isDefined( level.strat_over ) || level.strat_over ) + self iprintln("^3Call timeout again to cancel"); + + if ( isDefined( level.scorebot ) && level.scorebot ) + { + timeout_team = ""; + if ( self.pers["team"] == game["attackers"] ) + timeout_team = "attack"; + else if ( self.pers["team"] == game["defenders"] ) + timeout_team = "defence"; + + game["promod_scorebot_ticker_buffer"] += "timeout_called" + timeout_team + "" + self.name; + } + + if ( level.gametype == "sd" ) + game[self.pers["team"] + "_timeout_called"] = 1; + + game["promod_timeout_called"] = true; +} diff --git a/promod_ruleset/custom_public.gsc b/promod_ruleset/custom_public.gsc index e66120a..d160b58 100644 --- a/promod_ruleset/custom_public.gsc +++ b/promod_ruleset/custom_public.gsc @@ -1,229 +1,229 @@ -main() -{ - // custom_public ruleset, promod live v2 - // boolean logic, 0 = false, 1 or higher = true - - // sd - setDvar( "scr_sd_bombtimer", 45 ); // [1->] (seconds) - setDvar( "scr_sd_defusetime", 7 ); // [1->] (seconds) - setDvar( "scr_sd_multibomb", 0 ); // [0-1] (everyone can plant) - setDvar( "scr_sd_numlives", 1 ); // [0->] (amount of lives) - setDvar( "scr_sd_planttime", 5 ); // [1->] (seconds) - setDvar( "scr_sd_playerrespawndelay", 0 ); // [0->] (seconds) - setDvar( "scr_sd_roundlimit", 20 ); // [0->] (points) - setDvar( "scr_sd_roundswitch", 10 ); // [0->] (points) - setDvar( "scr_sd_scorelimit", 0 ); // [0->] (points) - setDvar( "scr_sd_timelimit", 1.75 ); // [0->] (minutes) - setDvar( "scr_sd_waverespawndelay", 0 ); // [0->] (seconds) - - // dom - setDvar( "scr_dom_numlives", 0 ); // [0->] (amount of lives) - setDvar( "scr_dom_playerrespawndelay", 7 ); // [0->] (seconds) - setDvar( "scr_dom_roundlimit", 2 ); // [0->] (points) - setDvar( "scr_dom_roundswitch", 1 ); // [0->] (points) - setDvar( "scr_dom_scorelimit", 0 ); // [0->] (points) - setDvar( "scr_dom_timelimit", 15 ); // [0->] (minutes) - setDvar( "scr_dom_waverespawndelay", 0 ); // [0->] (seconds) - - // koth - setDvar( "koth_autodestroytime", 120 ); // [1->] (hq online time in seconds) - setDvar( "koth_capturetime", 20 ); // [1->] (time to capture hq in seconds) - setDvar( "koth_delayPlayer", 0 ); // [0-1] (override default respawn delay in seconds) - setDvar( "koth_destroytime", 10 ); // [1->] (time to destroy hq in seconds) - setDvar( "koth_kothmode", 0 ); // [0-1] (classic mode, non-classic) - setDvar( "koth_spawnDelay", 45 ); // [0->] (default respawn delay in seconds) - setDvar( "koth_spawntime", 10 ); // [0->] (hq spawn time in seconds) - setDvar( "scr_koth_numlives", 0 ); // [0->] (amount of lives) - setDvar( "scr_koth_playerrespawndelay", 0 ); // [0->] (seconds) - setDvar( "scr_koth_roundlimit", 2 ); // [0->] (points) - setDvar( "scr_koth_roundswitch", 1 ); // [0->] (points) - setDvar( "scr_koth_scorelimit", 0 ); // [0->] (points) - setDvar( "scr_koth_timelimit", 15 ); // [0->] (minutes) - setDvar( "scr_koth_waverespawndelay", 0 ); // [0->] (seconds) - - // sab - setDvar( "scr_sab_bombtimer", 45 ); // [1->] (seconds) - setDvar( "scr_sab_defusetime", 5 ); // [1->] (seconds) - setDvar( "scr_sab_hotpotato", 0 ); // [0-1] (shared bomb timer) - setDvar( "scr_sab_numlives", 0 ); // [0->] (amount of lives) - setDvar( "scr_sab_planttime", 5 ); // [1->] (seconds) - setDvar( "scr_sab_playerrespawndelay", 7 ); // [0->] (seconds) - setDvar( "scr_sab_roundlimit", 4 ); // [0->] (points) - setDvar( "scr_sab_roundswitch", 2 ); // [0->] (points) - setDvar( "scr_sab_scorelimit", 0 ); // [0->] (points) - setDvar( "scr_sab_timelimit", 10 ); // [0->] (minutes) - setDvar( "scr_sab_waverespawndelay", 0 ); // [0->] (seconds) - - // tdm - setDvar( "scr_war_numlives", 0 ); // [0->] (amount of lives) - setDvar( "scr_war_playerrespawndelay", 0 ); // [0->] (seconds) - setDvar( "scr_war_roundlimit", 2 ); // [0->] (points) - setDvar( "scr_war_scorelimit", 0 ); // [0->] (points) - setDvar( "scr_war_roundswitch", 1 ); // [0->] (points) - setDvar( "scr_war_timelimit", 15 ); // [0->] (minutes) - setDvar( "scr_war_waverespawndelay", 0 ); // [0->] (seconds) - - // dm - setDvar( "scr_dm_numlives", 0 ); // [0->] (amount of lives) - setDvar( "scr_dm_playerrespawndelay", 0 ); // [0->] (seconds) - setDvar( "scr_dm_roundlimit", 1 ); // [0->] (points) - setDvar( "scr_dm_scorelimit", 0 ); // [0->] (points) - setDvar( "scr_dm_timelimit", 10 ); // [0->] (points) - setDvar( "scr_dm_waverespawndelay", 0 ); // [0->] (seconds) - - // class limits - setDvar( "class_assault_limit", 64 ); - setDvar( "class_specops_limit", 2 ); - setDvar( "class_demolitions_limit", 1 ); - setDvar( "class_sniper_limit", 1 ); - - setDvar( "class_assault_allowdrop", 1 ); - setDvar( "class_specops_allowdrop", 1 ); - setDvar( "class_demolitions_allowdrop", 0 ); - setDvar( "class_sniper_allowdrop", 0 ); - - // assault - setDvar( "weap_allow_m16", 1 ); - setDvar( "weap_allow_ak47", 1 ); - setDvar( "weap_allow_m4", 1 ); - setDvar( "weap_allow_g3", 1 ); - setDvar( "weap_allow_g36c", 1 ); - setDvar( "weap_allow_m14", 1 ); - setDvar( "weap_allow_mp44", 1 ); - - // assault attachments - setDvar( "attach_allow_assault_none", 1 ); - setDvar( "attach_allow_assault_silencer", 1 ); - - // smg - setDvar( "weap_allow_mp5", 1 ); - setDvar( "weap_allow_uzi", 1 ); - setDvar( "weap_allow_ak74u", 1 ); - - // smg attachments - setDvar( "attach_allow_specops_none", 1 ); - setDvar( "attach_allow_specops_silencer", 1 ); - - // shotgun - setDvar( "weap_allow_m1014", 1 ); - setDvar( "weap_allow_winchester1200", 1 ); - - // sniper - setDvar( "weap_allow_m40a3", 1 ); - setDvar( "weap_allow_remington700", 1 ); - - // pistol - setDvar( "weap_allow_beretta", 1 ); - setDvar( "weap_allow_colt45", 1 ); - setDvar( "weap_allow_usp", 1 ); - setDvar( "weap_allow_deserteagle", 1 ); - setDvar( "weap_allow_deserteaglegold", 1 ); - - // pistol attachments - setDvar( "attach_allow_pistol_none", 1 ); - setDvar( "attach_allow_pistol_silencer", 1 ); - - // grenades - setDvar( "weap_allow_flash_grenade", 1 ); - setDvar( "weap_allow_frag_grenade", 1 ); - setDvar( "weap_allow_smoke_grenade", 1 ); - - // assault class default loadout (preserved) - setDvar( "class_assault_primary", "ak47" ); - setDvar( "class_assault_primary_attachment", "none" ); - setDvar( "class_assault_secondary", "deserteagle" ); - setDvar( "class_assault_secondary_attachment", "none" ); - setDvar( "class_assault_grenade", "smoke_grenade" ); - setDvar( "class_assault_camo", "camo_none" ); - - // specops class default loadout (preserved) - setDvar( "class_specops_primary", "ak74u" ); - setDvar( "class_specops_primary_attachment", "none" ); - setDvar( "class_specops_secondary", "deserteagle" ); - setDvar( "class_specops_secondary_attachment", "none" ); - setDvar( "class_specops_grenade", "smoke_grenade" ); - setDvar( "class_specops_camo", "camo_none" ); - - // demolitions class default loadout (preserved) - setDvar( "class_demolitions_primary", "winchester1200" ); - setDvar( "class_demolitions_primary_attachment", "none" ); - setDvar( "class_demolitions_secondary", "deserteagle" ); - setDvar( "class_demolitions_secondary_attachment", "none" ); - setDvar( "class_demolitions_grenade", "smoke_grenade" ); - setDvar( "class_demolitions_camo", "camo_none" ); - - // sniper class default loadout (preserved) - setDvar( "class_sniper_primary", "m40a3" ); - setDvar( "class_sniper_primary_attachment", "none" ); - setDvar( "class_sniper_secondary", "deserteagle" ); - setDvar( "class_sniper_secondary_attachment", "none" ); - setDvar( "class_sniper_grenade", "smoke_grenade" ); - setDvar( "class_sniper_camo", "camo_none" ); - - // team killing - setDvar( "scr_team_fftype", 1 ); // [0-3] (disabled, enabled, reflect, shared) - setDvar( "scr_team_teamkillpointloss", 5 ); // [0->] (points) - - // player death/respawn settings - setDvar( "scr_player_forcerespawn", 1 ); // [0-1] (require player to press use key to spawn, do not require use key to spawn) - setDvar( "scr_game_deathpointloss", 0 ); // [0->] (points) - setDvar( "scr_game_suicidepointloss", 0 ); // [0->] (points) - setDvar( "scr_player_suicidespawndelay", 0 ); // [0->] (points) - - // player fall damage - setDvar( "bg_fallDamageMinHeight", 140 ); // [1->] (min height to inflict min fall damage) - setDvar( "bg_fallDamageMaxHeight", 350 ); // [1->] (max height to inflict max fall damage) - - // logging (not likely to be changed) - setDvar( "logfile", 1 ); - setDvar( "g_log", "games_mp.log" ); - setDvar( "g_logSync", 0 ); - - // server issues (not likely to be changed) - setDvar( "g_inactivity", 0 ); - setDvar( "g_no_script_spam", 1 ); - setDvar( "g_antilag", 1 ); - setDvar( "g_smoothClients", 1 ); - setDvar( "sv_allowDownload", 1 ); - setDvar( "sv_maxPing", 0 ); - setDvar( "sv_minPing", 0 ); - setDvar( "sv_reconnectlimit", 3 ); - setDvar( "sv_timeout", 240 ); - setDvar( "sv_zombietime", 2 ); - setDvar( "sv_floodprotect", 4 ); - setDvar( "sv_kickBanTime", 0 ); - setDvar( "sv_disableClientConsole", 0 ); - setDvar( "sv_voice", 0 ); - setDvar( "sv_clientarchive", 1 ); - setDvar( "timescale", 1 ); - - // various - setDvar( "g_allowVote", 0 ); // [0-1] - setDvar( "g_deadChat", 1 ); // [0-1] - setDvar( "scr_game_allowkillcam", 0 ); // [0-1] - setDvar( "scr_game_spectatetype", 1 ); // [0-2] (disabled, team only, all) - setDvar( "scr_game_matchstarttime", 10 ); // [0->] (seconds) - setDvar( "scr_enable_hiticon", 2 ); // [0-2] (disabled, hit icon on, hit icon on but not through walls) - setDvar( "scr_enable_scoretext", 1 ); // [0-1] (exp popups, +5 etc) - setDvar( "promod_allow_strattime", 0 ); // [0-1] (sd only) - setDvar( "promod_allow_readyup", 0 ); // [0-1] - setDvar( "promod_kniferound", 0 ); // [0-1] (sd only) - setDvar( "g_maxDroppedWeapons", 16 ); // [2-32] (maximum number of dropped weapons before recycling) - setDvar( "scr_hardcore", 0 ); // [0-1] - - // website - setDvar( "promod_hud_website", "www.codpromod.com" ); // (avoid "//" here) - - // messagecenter - setDvar( "promod_mc_enable", 0 ); // [0-1] - setDvar( "promod_mc_rs_every_round", 0 ); // [0-1] (restarts messages on round-based gametypes) - setDvar( "promod_mc_delay", 45 ); // [1->] (default delay in seconds between messages) - setDvar( "promod_mc_loopdelay", 45 ); // [1->] (delay in seconds until it starting over) - setDvar( "promod_mc_maxmessages", 3 ); // [1->] (set this equivalent to number of messages) - setDvar( "promod_mc_message_1", "Message Center ON" ); - setDvar( "promod_mc_message_2", "Set Me Up Or Turn Me OFF" ); - setDvar( "promod_mc_message_3", "<*nextmap*>" ); - setDvar( "promod_mc_messagedelay_1", 0 ); // [1->] (overrides default delay in seconds between messages, e.g special messages) - setDvar( "promod_mc_messagedelay_2", 0 ); - setDvar( "promod_mc_messagedelay_3", 0 ); -} \ No newline at end of file +main() +{ + // custom_public ruleset, promod live v2 + // boolean logic, 0 = false, 1 or higher = true + + // sd + setDvar( "scr_sd_bombtimer", 45 ); // [1->] (seconds) + setDvar( "scr_sd_defusetime", 7 ); // [1->] (seconds) + setDvar( "scr_sd_multibomb", 0 ); // [0-1] (everyone can plant) + setDvar( "scr_sd_numlives", 1 ); // [0->] (amount of lives) + setDvar( "scr_sd_planttime", 5 ); // [1->] (seconds) + setDvar( "scr_sd_playerrespawndelay", 0 ); // [0->] (seconds) + setDvar( "scr_sd_roundlimit", 20 ); // [0->] (points) + setDvar( "scr_sd_roundswitch", 10 ); // [0->] (points) + setDvar( "scr_sd_scorelimit", 0 ); // [0->] (points) + setDvar( "scr_sd_timelimit", 1.75 ); // [0->] (minutes) + setDvar( "scr_sd_waverespawndelay", 0 ); // [0->] (seconds) + + // dom + setDvar( "scr_dom_numlives", 0 ); // [0->] (amount of lives) + setDvar( "scr_dom_playerrespawndelay", 7 ); // [0->] (seconds) + setDvar( "scr_dom_roundlimit", 2 ); // [0->] (points) + setDvar( "scr_dom_roundswitch", 1 ); // [0->] (points) + setDvar( "scr_dom_scorelimit", 0 ); // [0->] (points) + setDvar( "scr_dom_timelimit", 15 ); // [0->] (minutes) + setDvar( "scr_dom_waverespawndelay", 0 ); // [0->] (seconds) + + // koth + setDvar( "koth_autodestroytime", 120 ); // [1->] (hq online time in seconds) + setDvar( "koth_capturetime", 20 ); // [1->] (time to capture hq in seconds) + setDvar( "koth_delayPlayer", 0 ); // [0-1] (override default respawn delay in seconds) + setDvar( "koth_destroytime", 10 ); // [1->] (time to destroy hq in seconds) + setDvar( "koth_kothmode", 0 ); // [0-1] (classic mode, non-classic) + setDvar( "koth_spawnDelay", 45 ); // [0->] (default respawn delay in seconds) + setDvar( "koth_spawntime", 10 ); // [0->] (hq spawn time in seconds) + setDvar( "scr_koth_numlives", 0 ); // [0->] (amount of lives) + setDvar( "scr_koth_playerrespawndelay", 0 ); // [0->] (seconds) + setDvar( "scr_koth_roundlimit", 2 ); // [0->] (points) + setDvar( "scr_koth_roundswitch", 1 ); // [0->] (points) + setDvar( "scr_koth_scorelimit", 0 ); // [0->] (points) + setDvar( "scr_koth_timelimit", 15 ); // [0->] (minutes) + setDvar( "scr_koth_waverespawndelay", 0 ); // [0->] (seconds) + + // sab + setDvar( "scr_sab_bombtimer", 45 ); // [1->] (seconds) + setDvar( "scr_sab_defusetime", 5 ); // [1->] (seconds) + setDvar( "scr_sab_hotpotato", 0 ); // [0-1] (shared bomb timer) + setDvar( "scr_sab_numlives", 0 ); // [0->] (amount of lives) + setDvar( "scr_sab_planttime", 5 ); // [1->] (seconds) + setDvar( "scr_sab_playerrespawndelay", 7 ); // [0->] (seconds) + setDvar( "scr_sab_roundlimit", 4 ); // [0->] (points) + setDvar( "scr_sab_roundswitch", 2 ); // [0->] (points) + setDvar( "scr_sab_scorelimit", 0 ); // [0->] (points) + setDvar( "scr_sab_timelimit", 10 ); // [0->] (minutes) + setDvar( "scr_sab_waverespawndelay", 0 ); // [0->] (seconds) + + // tdm + setDvar( "scr_war_numlives", 0 ); // [0->] (amount of lives) + setDvar( "scr_war_playerrespawndelay", 0 ); // [0->] (seconds) + setDvar( "scr_war_roundlimit", 2 ); // [0->] (points) + setDvar( "scr_war_scorelimit", 0 ); // [0->] (points) + setDvar( "scr_war_roundswitch", 1 ); // [0->] (points) + setDvar( "scr_war_timelimit", 15 ); // [0->] (minutes) + setDvar( "scr_war_waverespawndelay", 0 ); // [0->] (seconds) + + // dm + setDvar( "scr_dm_numlives", 0 ); // [0->] (amount of lives) + setDvar( "scr_dm_playerrespawndelay", 0 ); // [0->] (seconds) + setDvar( "scr_dm_roundlimit", 1 ); // [0->] (points) + setDvar( "scr_dm_scorelimit", 0 ); // [0->] (points) + setDvar( "scr_dm_timelimit", 10 ); // [0->] (points) + setDvar( "scr_dm_waverespawndelay", 0 ); // [0->] (seconds) + + // class limits + setDvar( "class_assault_limit", 64 ); + setDvar( "class_specops_limit", 2 ); + setDvar( "class_demolitions_limit", 1 ); + setDvar( "class_sniper_limit", 1 ); + + setDvar( "class_assault_allowdrop", 1 ); + setDvar( "class_specops_allowdrop", 1 ); + setDvar( "class_demolitions_allowdrop", 0 ); + setDvar( "class_sniper_allowdrop", 0 ); + + // assault + setDvar( "weap_allow_m16", 1 ); + setDvar( "weap_allow_ak47", 1 ); + setDvar( "weap_allow_m4", 1 ); + setDvar( "weap_allow_g3", 1 ); + setDvar( "weap_allow_g36c", 1 ); + setDvar( "weap_allow_m14", 1 ); + setDvar( "weap_allow_mp44", 1 ); + + // assault attachments + setDvar( "attach_allow_assault_none", 1 ); + setDvar( "attach_allow_assault_silencer", 1 ); + + // smg + setDvar( "weap_allow_mp5", 1 ); + setDvar( "weap_allow_uzi", 1 ); + setDvar( "weap_allow_ak74u", 1 ); + + // smg attachments + setDvar( "attach_allow_specops_none", 1 ); + setDvar( "attach_allow_specops_silencer", 1 ); + + // shotgun + setDvar( "weap_allow_m1014", 1 ); + setDvar( "weap_allow_winchester1200", 1 ); + + // sniper + setDvar( "weap_allow_m40a3", 1 ); + setDvar( "weap_allow_remington700", 1 ); + + // pistol + setDvar( "weap_allow_beretta", 1 ); + setDvar( "weap_allow_colt45", 1 ); + setDvar( "weap_allow_usp", 1 ); + setDvar( "weap_allow_deserteagle", 1 ); + setDvar( "weap_allow_deserteaglegold", 1 ); + + // pistol attachments + setDvar( "attach_allow_pistol_none", 1 ); + setDvar( "attach_allow_pistol_silencer", 1 ); + + // grenades + setDvar( "weap_allow_flash_grenade", 1 ); + setDvar( "weap_allow_frag_grenade", 1 ); + setDvar( "weap_allow_smoke_grenade", 1 ); + + // assault class default loadout (preserved) + setDvar( "class_assault_primary", "ak47" ); + setDvar( "class_assault_primary_attachment", "none" ); + setDvar( "class_assault_secondary", "deserteagle" ); + setDvar( "class_assault_secondary_attachment", "none" ); + setDvar( "class_assault_grenade", "smoke_grenade" ); + setDvar( "class_assault_camo", "camo_none" ); + + // specops class default loadout (preserved) + setDvar( "class_specops_primary", "ak74u" ); + setDvar( "class_specops_primary_attachment", "none" ); + setDvar( "class_specops_secondary", "deserteagle" ); + setDvar( "class_specops_secondary_attachment", "none" ); + setDvar( "class_specops_grenade", "smoke_grenade" ); + setDvar( "class_specops_camo", "camo_none" ); + + // demolitions class default loadout (preserved) + setDvar( "class_demolitions_primary", "winchester1200" ); + setDvar( "class_demolitions_primary_attachment", "none" ); + setDvar( "class_demolitions_secondary", "deserteagle" ); + setDvar( "class_demolitions_secondary_attachment", "none" ); + setDvar( "class_demolitions_grenade", "smoke_grenade" ); + setDvar( "class_demolitions_camo", "camo_none" ); + + // sniper class default loadout (preserved) + setDvar( "class_sniper_primary", "m40a3" ); + setDvar( "class_sniper_primary_attachment", "none" ); + setDvar( "class_sniper_secondary", "deserteagle" ); + setDvar( "class_sniper_secondary_attachment", "none" ); + setDvar( "class_sniper_grenade", "smoke_grenade" ); + setDvar( "class_sniper_camo", "camo_none" ); + + // team killing + setDvar( "scr_team_fftype", 1 ); // [0-3] (disabled, enabled, reflect, shared) + setDvar( "scr_team_teamkillpointloss", 5 ); // [0->] (points) + + // player death/respawn settings + setDvar( "scr_player_forcerespawn", 1 ); // [0-1] (require player to press use key to spawn, do not require use key to spawn) + setDvar( "scr_game_deathpointloss", 0 ); // [0->] (points) + setDvar( "scr_game_suicidepointloss", 0 ); // [0->] (points) + setDvar( "scr_player_suicidespawndelay", 0 ); // [0->] (points) + + // player fall damage + setDvar( "bg_fallDamageMinHeight", 140 ); // [1->] (min height to inflict min fall damage) + setDvar( "bg_fallDamageMaxHeight", 350 ); // [1->] (max height to inflict max fall damage) + + // logging (not likely to be changed) + setDvar( "logfile", 1 ); + setDvar( "g_log", "games_mp.log" ); + setDvar( "g_logSync", 0 ); + + // server issues (not likely to be changed) + setDvar( "g_inactivity", 0 ); + setDvar( "g_no_script_spam", 1 ); + setDvar( "g_antilag", 1 ); + setDvar( "g_smoothClients", 1 ); + setDvar( "sv_allowDownload", 1 ); + setDvar( "sv_maxPing", 0 ); + setDvar( "sv_minPing", 0 ); + setDvar( "sv_reconnectlimit", 3 ); + setDvar( "sv_timeout", 240 ); + setDvar( "sv_zombietime", 2 ); + setDvar( "sv_floodprotect", 4 ); + setDvar( "sv_kickBanTime", 0 ); + setDvar( "sv_disableClientConsole", 0 ); + setDvar( "sv_voice", 0 ); + setDvar( "sv_clientarchive", 1 ); + setDvar( "timescale", 1 ); + + // various + setDvar( "g_allowVote", 0 ); // [0-1] + setDvar( "g_deadChat", 1 ); // [0-1] + setDvar( "scr_game_allowkillcam", 0 ); // [0-1] + setDvar( "scr_game_spectatetype", 1 ); // [0-2] (disabled, team only, all) + setDvar( "scr_game_matchstarttime", 10 ); // [0->] (seconds) + setDvar( "scr_enable_hiticon", 2 ); // [0-2] (disabled, hit icon on, hit icon on but not through walls) + setDvar( "scr_enable_scoretext", 1 ); // [0-1] (exp popups, +5 etc) + setDvar( "promod_allow_strattime", 0 ); // [0-1] (sd only) + setDvar( "promod_allow_readyup", 0 ); // [0-1] + setDvar( "promod_kniferound", 0 ); // [0-1] (sd only) + setDvar( "g_maxDroppedWeapons", 16 ); // [2-32] (maximum number of dropped weapons before recycling) + setDvar( "scr_hardcore", 0 ); // [0-1] + + // website + setDvar( "promod_hud_website", "www.codpromod.com" ); // (avoid "//" here) + + // messagecenter + setDvar( "promod_mc_enable", 0 ); // [0-1] + setDvar( "promod_mc_rs_every_round", 0 ); // [0-1] (restarts messages on round-based gametypes) + setDvar( "promod_mc_delay", 45 ); // [1->] (default delay in seconds between messages) + setDvar( "promod_mc_loopdelay", 45 ); // [1->] (delay in seconds until it starting over) + setDvar( "promod_mc_maxmessages", 3 ); // [1->] (set this equivalent to number of messages) + setDvar( "promod_mc_message_1", "Message Center ON" ); + setDvar( "promod_mc_message_2", "Set Me Up Or Turn Me OFF" ); + setDvar( "promod_mc_message_3", "<*nextmap*>" ); + setDvar( "promod_mc_messagedelay_1", 0 ); // [1->] (overrides default delay in seconds between messages, e.g special messages) + setDvar( "promod_mc_messagedelay_2", 0 ); + setDvar( "promod_mc_messagedelay_3", 0 ); +} diff --git a/readme.txt b/readme.txt index eb5b372..fa88f1c 100644 --- a/readme.txt +++ b/readme.txt @@ -1,366 +1,366 @@ -Promod LIVE V2.20 EU - README -http://www.codpromod.com -2014-05-13 -#codpromod @ QuakeNet - -Maintained by Ingram - -Sponsored by FragNet -http://www.fragnet.net - -Zip-package (promodlive220_eu.zip) contains: - -LICENSE -pml220\mod.ff -pml220\pml220.iwd -pml220\z_c_r.iwd -pb\stock_iwd_md5.cfg -pb\promod_iwd_md5.cfg -pb\pbsvuser.cfg -readme.txt -server_setup.txt -server.cfg - -LIVE V2.20: -- Fixed issues with vehicle damage source being different compared to previous releases - -LIVE V2.19: -- Fixed a server crash related to damage inflicted via exploding barrels -- Re-implemented vehicle handling. This fixes two known issues: - 1) Cars would keep burning and not explode after a while - 2) Throwing a grenade to one of the headlights would explode the car - -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. - -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: -- Fixed a small bug that appeared during 2.15. We're sorry about that! - -LIVE V2.15: -- Fixed a bug where players could fall silently by holding down a grenade key and not having any grenades in inventory -- Reworked damage logic, no changes in damage values, but minimal performance boost -- Included a reworked version of damage and accuracy statistics (B-4-6), counters will reset after displaying current values -- Included new log prints: - Accuracy and damage: P_A;;;;;;;;; - Bomb plants (SD & SAB): P_P;;; - Bomb defuses (SD & SAB): P_D;;; - Flag captures (DOM): P_F;;; - Headquarters captures (KOTH): P_HQC;;; - Headquarters destroys (KOTH): P_HQD;;; - -LIVE V2.14: -- Fixed boosting with modified g_knockback value -- Game will message all players if any serverside DVars are being modified -- Added comp_public_lan, comp_public_hc_lan and custom_public_lan modes -- Fixed an issue with scorebot messages being generated incorrectly - -LIVE V2.13: - -- Implemented MOTD (message of the day), can be set via dvar "scr_motd" -- Various fixes and improvements to the shoutcaster UI -- Fixed problems with loading preserved classes -- Invalid gametypes on custom maps will no longer cause server to crash -- Added possibility to set scores with promod_mode (more info in promod modes section) -- Removed flinching animation when player get shot -- Removed ability to shoot during strat time -- Improved custom maps compability -- Player is immune to flashbangs in ready up and start mode flying -- Main menu changes (not much) -- Serverside performance improvements -- Knife round fixes, weapon abuse eliminated -- Fixed ready-up messages -- Other various UI tweaks and improvements - -LIVE V2.12: - -- Protection against clientside executable modification -- Fixed knife-round to always remove the weapons and ammo, all other damage than from the knife is disabled as an extra measure -- Record-menu will no longer appear twice in knife-rounds -- Fixed choosing team menu on custom maps -- Various fixes which improve server performance - -LIVE V2.11: - -- Soften smoke edges (also known as r_zfeather) is back to being forced off -- Dead chat is no longer automatically handled in public-modes -- Promod will properly force player to reconnect to the server if "vid_restart" was called -- The "You killed..." text's Y-position can be modified in devmap for movie-makers (see below) -- Removed player head-icons from Marines and SAS (stock bug, as opposing teams don't have head-icons) -- Fixed planted/defused/destroyed announcer sounds -- Promod header will inform about the usage of knife round feature -- Specular effect on car-glasses made transparent -- Better overall handling of player status icons -- The bomb-briefcase is no longer visible in timeout or knife-round -- Ability to cancel timeouts by the caller (by calling another timeout) -- Ready-up hud will always display own status (important for shoutcasters) -- Shoutcaster will automatically follow another player when current player dies -- Shoutcasters have ability to spectate another shoutcaster when that shoutcaster is using follow-player-binds -- Full map restart is called when server admin changes game type and issues a fast restart -- Fixed a bug where a player could sprint longer after planting/defusing -- Ragdolls removed because of random behaviour -- Added an option for custom map developers to specify default sunlight (level.sunlight) in map script to correctly set with Promod "stock" sunlight option -- Strattime and knife round in public-modes are now working properly -- Scorebot improvements and fixes, see FAQ for comprehensive documentation -- Different game menu adjustments -- Dvar-monitor will now display both the old and the new value when change is detected -- Before a match starts, a list of dvar changes during ready-up mode is displayed -- Some additions to strictly forced server settings -- Fixed several issues with bomb-drop -- Added training-dummy feature for strat mode, which will only work on listen/local servers with PunkBuster turned off -- Added a record-menu which will popup once a player is ready, this menu can optionally be disabled in the quickmessage menu: B-4-5 -- Added a sound notification to the last player to ready-up - -LIVE V2.10: - -- Game code optimizations which reduce the size of mod over 50% compared to V2.04 -- Killspec mode. Commits suicide, releases current class spot and does not respawn the player before a class is selected again. Can be activated through quickmessage menu: B-4-4 or by console command openscriptmenu quickpromod killspec -- Moved game timer closer to the edge of the screen for shoutcasters -- Improved server integrity checks -- Defaulted "promod_mode" to strat when starting a new server from main menu -- Knife round. For match modes adds an extra round and ready-up mode, in public games it will be the first round of map. It can be toggled via knife keyword in promod_mode (for example match_mr10_knife) or dvar "promod_kniferound" in public games. Scorebot announces knife round via knife_round keyword -- Ready-up mode is more responsive -- Improved promod_mode, for use see below -- Increased dropped weapon disappearing time to 3 minutes -- Promod Commands and Promod Graphics menus can be accessed via openscriptmenu quickpromod controls / graphics respectively -- Added tactical timeouts for lan mode. It is possible to take unlimited amount of timeouts for unlimited time -- Improved strat mode -- Fixed public server weapons glitch -- Forced fs_game for match modes. If you don't know how to change fs_game setting, please contact your Game Server Provider -- Removed red enemy dots from large map -- Included with package: PunkBuster MD5Tool checks for main/iw_##.iwd files. This needs to be set up manually, see below -- Added echo command, which will display text only to yourself in game message box. Usage: openscriptmenu echo text_I_want_to_display - note that underscores are replaced with spaces. Works also with colors. However stacking two openscriptmenu commands to one bind will not work -- Shoutcasters can now choose who to follow using binds and even toggle players by their current class - -Plus many other visual, non-gameplay related improvements. - -LIVE V2.04: - -- Reintroduced "cl_maxpackets" enforcement to "100" -- Small fix in the scorebot -- Weapon class availability fixed on halftime - -FAQ - -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/pml220" 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"). - -Q: How do I get the scorebot running? -A: See below how to enable scorebot. - -Q: Class related binds, how do they work? -A: See below for a list of commands. - -Q: What's the difference between the EU and NE version of Promod? -A: The NE version of Promod has rate and cl_maxpackets settings unlocked and radar does not display enemy indicators while shooting. NE stands for Non-Europe. - -Q: My question is not answered here. -A: Easiest way to contact us is via mail or join #codpromod @ QuakeNet. - -Q: How do I get the training-dummy to work? -A: First put up a local home-hosted server without PB (set sv_punkbuster to "0" in your config, start game, launch Promod from the mods-menu and load a map with the console or menu). The default button for spawning a bot is the "N" button (bind X "+actionslot 1"). - -PROMOD MODES - -The promod_mode dvar follows a specific syntax. However the game accepts the bits between underscores ( _ ) in any order. - -match: standard match mode, may not be used with knockout mode. Round limit = mr#*2 -knockout: knockout match mode, may not be used with standard match mode. Score limit = mr#+1 -mr#: maxrounds - see above for use. Default is 10. Works only in Search & Destroy and Sabotage. -lan: lan mode - g_antilag 0, PunkBuster messages turned off, may not be used with pb mode. -hc: hardcore mode (disables some HUD elements and reduces health level to 30). -knife: knife round - adds a knife round and an extra ready-up mode to Search & Destroy matches. -1v1/2v2: used for 1v1 and 2v2 matches, disables Demolitions and Sniper classes. -pb: disables PunkBuster warnings for online modes, may not be used with lan mode. -#:#: will set match score in S&D using A:D format - useful in case of a restart, may not be used with knife mode. - -For example "promod_mode match_mr10_knife_pb" will enable knife round and disable PunkBuster warnings in standard maxrounds 10 mode. - -There are also some other modes, these can not be combined with the tags above. - -comp_public - the default mode for competitive public -comp_public_lan - same as above, but for LAN servers -comp_public_hc - competitive public in hardcore mode -comp_public_hc_lan - same as above, but for LAN servers -custom_public - custom public mode reading settings from z_c_r.iwd -custom_public_lan - same as above, but for LAN servers -strat - strategy mode for practicing - -SCOREBOT - -The "ticker" is updating events every 10 seconds, each event is starting with a number from 0-9. -Messages are delimited by the "SOH" character (start of header). -To enable scorebot, add this line to the server-config: - -seta promod_enable_scorebot "1" - -Static info: - -attack_score "SOH" player_name "SOH" player_alive "SOH" player_kills "SOH" player_assists "SOH" player_deaths "SOH" player_bombcarrier -defence_score "SOH" player_name "SOH" player_alive "SOH" player_kills "SOH" player_assists "SOH" player_deaths "SOH" player_bombcarrier - -Ticker events: - -"SOH" "round_winner" "SOH" winners "SOH" attack_score "SOH" defence_score -"SOH" "map_complete" "SOH" "attack" "SOH" attack_score "SOH" "defence" "SOH" defence_score -"SOH" "knife_round" -"SOH" start_text "SOH" starting_round -"SOH" "map" "SOH" mapname "SOH" gametype -"SOH" "kill" "SOH" killer_name "SOH" weapon "SOH" killed_name "SOH" headshot -"SOH" "assist_by" "SOH" player_name -"SOH" rdy_text -"SOH" "timeout_cancelled" "SOH" timeout_team "SOH" player_name -"SOH" "timeout_called" "SOH" timeout_team "SOH" player_name -"SOH" "captured" label "SOH" player_name //dom -"SOH" "hq_captured" "SOH" player_name //hq -"SOH" "hq_destroyed" "SOH" player_name //hq -"SOH" "pickup_bomb" "SOH" player_name //sab, sd -"SOH" "dropped_bomb" "SOH" player_name //sab, sd -"SOH" "defused_by" "SOH" player_name //sab, sd -"SOH" "bomb_exploded" //sab, sd -"SOH" "planted_by" "SOH" player_name // sab, sd - -Definitions: - -attack_score = score of the attacking side, integer -defence_score = score of the defending side, integer -player_name = name of the player -player_alive = if player is alive, integer -player_assists = number of assists, integer -player_deaths = number of deaths, integer -player_bombcarrier = if player is carrying bomb, integer -winners = attack, defence or tie -start_text = "1st_half_started", "2nd_half_started", "match_resumed" (from timeout), "round_start" -starting_round = the round starting, integer -mapname = the map name in "mp_" format -gametype = the gametype in short format -killer_name = the name of the killer -weapon = weapon used by the killer -killed_name = the name of the player who got killed -headshot = if it was a headshot, integer -rdy_text = 1st_half_ready_up, 2nd_half_ready_up, timeout_ready_up -timeout_team = the team of the player who made a timeout -label = A, B, C etc - -Broadcasted dvars: - -__promod_attack_score -__promod_defence_score -__promod_mode -__promod_ticker -__promod_version - -FORCED COMMANDS - -All these dvars are forced by Promod (automatically), make sure they stay untouched/within range to avoid being punished! -Note that these does not apply in Shoutcaster mode. - -dynent_active 0 -rate 25000 -cg_nopredict 0 -sm_enable 0 -r_dlightLimit 0 -r_lodscalerigid 1 -r_lodscaleskinned 1 -r_filmtweakInvert 0 -r_zfeather 0 -cg_viewzsmoothingmin 1 -cg_viewzsmoothingmax 16 -cg_viewzsmoothingtime 0.1 -cg_huddamageiconheight 64 -cg_huddamageiconwidth 128 -cg_huddamageiconinscope 0 -cg_huddamageiconoffset 128 -cg_huddamageicontime 2000 -developer 0 -phys_gravity -800 - -com_maxfps 40 - 250 -cl_maxpackets 60 - 100 -compassplayerwidth EQUAL TO compassplayerheight -compassfriendlywidth EQUAL TO compassfriendlyheight - -DEMO VIEWING - -There are some special dvars made to control hud-elements for demo/movie purposes. -They will only work in maps loaded with cheats (devmap). Don't forget the "set" prefix to add new dvars in the console. - -These include: - -promod_movie_hidescorebar // [0-1] (hides the mini-scorebar completely including timer) -promod_centermessage_position // [x+-] (overrides default Y-position of the "You killed..." text) - -CLASS BINDS - -It is possible to bind these via the in-game menu (Controls - Multiplayer Controls...). -Alternatively you can manually bind them in the console/config. - -bind [KEY] [COMMAND] - -Commands: - -openscriptmenu quickpromod assault -openscriptmenu quickpromod specops -openscriptmenu quickpromod demolitions -openscriptmenu quickpromod sniper -openscriptmenu quickpromod silencer -openscriptmenu quickpromod grenade - -SHOUTCASTER BINDS - -You can bind them via the in-game menu (Shoutcast Setup). -Alternatively you can manually bind them in the console/config. - -bind [KEY] [COMMAND] - -Commands: - -openscriptmenu shoutcast_setup number -openscriptmenu shoutcast_setup assault -openscriptmenu shoutcast_setup specops -openscriptmenu shoutcast_setup demolitions -openscriptmenu shoutcast_setup sniper - -Number being 1-10 for players, it's very easy to understand which player corresponds the correct number. -1-5 symbolizes players on Attacking side from top to bottom looking at the Shoutcaster-bars. -6-10 being on the Defending side. - -Setting a class (lowercase) instead of a number will cycle through players using that class. - -CUSTOM MAPS - -In case Promod is throwing an error while playing on custom maps, make sure the IWD-files inside "usermaps/mapname" folder have the same map name in them. -For example map "mp_dahman_b3" contains a file called "mp_dahman_b3.iwd" and therefore it is not marked as a violation. - -NOTES FOR SERVER-ADMINS AND SERVER-HOSTING COMPANIES - -The dvar fs_game "mods/pml220" 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/pml220" for example "mods/pml220_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". - -In order to be automatically-executed, the list of checks needs to be included into the automatically-executed PunkBuster configuration files on your server (pbsv.cfg or pbsvuser.cfg): - -pb_sv_load stock_iwd_md5.cfg -pb_sv_load promod_iwd_md5.cfg // match-server only - -In case your server doesn't have any pbsv.cfg file, go in-game and type: "\rcon pb_sv_writecfg". Depending on if your server is streaming to any third-party anti-cheat site(s) you may or may not already have a pbsvuser.cfg, if you don't you can just copy all three files included to your server's PB-folder, or if the file exist add above lines to it. - -We STRONGLY encourage use of these MD5-checks! (This goes for leagues as well!) - -Due to several game engine exploits, we recommend to specify the rcon-password in the command-line of your server. If this is not possible, rename the server-config to something other than server.cfg, which would make finding rcon password more difficult. - -On another note of security, the IWD-file "z_c_r.iwd" is now running integrity checks if server is running match-mode which means you have to decide whether the server should run "promod_mode custom_public" or not. -If you later want to run match-modes you will have to use the original unmodified "z_c_r.iwd" supplied in this package. Sorry for any inconvenience caused. \ No newline at end of file +Promod LIVE V2.20 EU - README +http://www.codpromod.com +2014-05-13 +#codpromod @ QuakeNet + +Maintained by Ingram + +Sponsored by FragNet +http://www.fragnet.net + +Zip-package (promodlive220_eu.zip) contains: + +LICENSE +pml220\mod.ff +pml220\pml220.iwd +pml220\z_c_r.iwd +pb\stock_iwd_md5.cfg +pb\promod_iwd_md5.cfg +pb\pbsvuser.cfg +readme.txt +server_setup.txt +server.cfg + +LIVE V2.20: +- Fixed issues with vehicle damage source being different compared to previous releases + +LIVE V2.19: +- Fixed a server crash related to damage inflicted via exploding barrels +- Re-implemented vehicle handling. This fixes two known issues: + 1) Cars would keep burning and not explode after a while + 2) Throwing a grenade to one of the headlights would explode the car + +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. + +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: +- Fixed a small bug that appeared during 2.15. We're sorry about that! + +LIVE V2.15: +- Fixed a bug where players could fall silently by holding down a grenade key and not having any grenades in inventory +- Reworked damage logic, no changes in damage values, but minimal performance boost +- Included a reworked version of damage and accuracy statistics (B-4-6), counters will reset after displaying current values +- Included new log prints: + Accuracy and damage: P_A;;;;;;;;; + Bomb plants (SD & SAB): P_P;;; + Bomb defuses (SD & SAB): P_D;;; + Flag captures (DOM): P_F;;; + Headquarters captures (KOTH): P_HQC;;; + Headquarters destroys (KOTH): P_HQD;;; + +LIVE V2.14: +- Fixed boosting with modified g_knockback value +- Game will message all players if any serverside DVars are being modified +- Added comp_public_lan, comp_public_hc_lan and custom_public_lan modes +- Fixed an issue with scorebot messages being generated incorrectly + +LIVE V2.13: + +- Implemented MOTD (message of the day), can be set via dvar "scr_motd" +- Various fixes and improvements to the shoutcaster UI +- Fixed problems with loading preserved classes +- Invalid gametypes on custom maps will no longer cause server to crash +- Added possibility to set scores with promod_mode (more info in promod modes section) +- Removed flinching animation when player get shot +- Removed ability to shoot during strat time +- Improved custom maps compability +- Player is immune to flashbangs in ready up and start mode flying +- Main menu changes (not much) +- Serverside performance improvements +- Knife round fixes, weapon abuse eliminated +- Fixed ready-up messages +- Other various UI tweaks and improvements + +LIVE V2.12: + +- Protection against clientside executable modification +- Fixed knife-round to always remove the weapons and ammo, all other damage than from the knife is disabled as an extra measure +- Record-menu will no longer appear twice in knife-rounds +- Fixed choosing team menu on custom maps +- Various fixes which improve server performance + +LIVE V2.11: + +- Soften smoke edges (also known as r_zfeather) is back to being forced off +- Dead chat is no longer automatically handled in public-modes +- Promod will properly force player to reconnect to the server if "vid_restart" was called +- The "You killed..." text's Y-position can be modified in devmap for movie-makers (see below) +- Removed player head-icons from Marines and SAS (stock bug, as opposing teams don't have head-icons) +- Fixed planted/defused/destroyed announcer sounds +- Promod header will inform about the usage of knife round feature +- Specular effect on car-glasses made transparent +- Better overall handling of player status icons +- The bomb-briefcase is no longer visible in timeout or knife-round +- Ability to cancel timeouts by the caller (by calling another timeout) +- Ready-up hud will always display own status (important for shoutcasters) +- Shoutcaster will automatically follow another player when current player dies +- Shoutcasters have ability to spectate another shoutcaster when that shoutcaster is using follow-player-binds +- Full map restart is called when server admin changes game type and issues a fast restart +- Fixed a bug where a player could sprint longer after planting/defusing +- Ragdolls removed because of random behaviour +- Added an option for custom map developers to specify default sunlight (level.sunlight) in map script to correctly set with Promod "stock" sunlight option +- Strattime and knife round in public-modes are now working properly +- Scorebot improvements and fixes, see FAQ for comprehensive documentation +- Different game menu adjustments +- Dvar-monitor will now display both the old and the new value when change is detected +- Before a match starts, a list of dvar changes during ready-up mode is displayed +- Some additions to strictly forced server settings +- Fixed several issues with bomb-drop +- Added training-dummy feature for strat mode, which will only work on listen/local servers with PunkBuster turned off +- Added a record-menu which will popup once a player is ready, this menu can optionally be disabled in the quickmessage menu: B-4-5 +- Added a sound notification to the last player to ready-up + +LIVE V2.10: + +- Game code optimizations which reduce the size of mod over 50% compared to V2.04 +- Killspec mode. Commits suicide, releases current class spot and does not respawn the player before a class is selected again. Can be activated through quickmessage menu: B-4-4 or by console command openscriptmenu quickpromod killspec +- Moved game timer closer to the edge of the screen for shoutcasters +- Improved server integrity checks +- Defaulted "promod_mode" to strat when starting a new server from main menu +- Knife round. For match modes adds an extra round and ready-up mode, in public games it will be the first round of map. It can be toggled via knife keyword in promod_mode (for example match_mr10_knife) or dvar "promod_kniferound" in public games. Scorebot announces knife round via knife_round keyword +- Ready-up mode is more responsive +- Improved promod_mode, for use see below +- Increased dropped weapon disappearing time to 3 minutes +- Promod Commands and Promod Graphics menus can be accessed via openscriptmenu quickpromod controls / graphics respectively +- Added tactical timeouts for lan mode. It is possible to take unlimited amount of timeouts for unlimited time +- Improved strat mode +- Fixed public server weapons glitch +- Forced fs_game for match modes. If you don't know how to change fs_game setting, please contact your Game Server Provider +- Removed red enemy dots from large map +- Included with package: PunkBuster MD5Tool checks for main/iw_##.iwd files. This needs to be set up manually, see below +- Added echo command, which will display text only to yourself in game message box. Usage: openscriptmenu echo text_I_want_to_display - note that underscores are replaced with spaces. Works also with colors. However stacking two openscriptmenu commands to one bind will not work +- Shoutcasters can now choose who to follow using binds and even toggle players by their current class + +Plus many other visual, non-gameplay related improvements. + +LIVE V2.04: + +- Reintroduced "cl_maxpackets" enforcement to "100" +- Small fix in the scorebot +- Weapon class availability fixed on halftime + +FAQ + +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/pml220" 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"). + +Q: How do I get the scorebot running? +A: See below how to enable scorebot. + +Q: Class related binds, how do they work? +A: See below for a list of commands. + +Q: What's the difference between the EU and NE version of Promod? +A: The NE version of Promod has rate and cl_maxpackets settings unlocked and radar does not display enemy indicators while shooting. NE stands for Non-Europe. + +Q: My question is not answered here. +A: Easiest way to contact us is via mail or join #codpromod @ QuakeNet. + +Q: How do I get the training-dummy to work? +A: First put up a local home-hosted server without PB (set sv_punkbuster to "0" in your config, start game, launch Promod from the mods-menu and load a map with the console or menu). The default button for spawning a bot is the "N" button (bind X "+actionslot 1"). + +PROMOD MODES + +The promod_mode dvar follows a specific syntax. However the game accepts the bits between underscores ( _ ) in any order. + +match: standard match mode, may not be used with knockout mode. Round limit = mr#*2 +knockout: knockout match mode, may not be used with standard match mode. Score limit = mr#+1 +mr#: maxrounds - see above for use. Default is 10. Works only in Search & Destroy and Sabotage. +lan: lan mode - g_antilag 0, PunkBuster messages turned off, may not be used with pb mode. +hc: hardcore mode (disables some HUD elements and reduces health level to 30). +knife: knife round - adds a knife round and an extra ready-up mode to Search & Destroy matches. +1v1/2v2: used for 1v1 and 2v2 matches, disables Demolitions and Sniper classes. +pb: disables PunkBuster warnings for online modes, may not be used with lan mode. +#:#: will set match score in S&D using A:D format - useful in case of a restart, may not be used with knife mode. + +For example "promod_mode match_mr10_knife_pb" will enable knife round and disable PunkBuster warnings in standard maxrounds 10 mode. + +There are also some other modes, these can not be combined with the tags above. + +comp_public - the default mode for competitive public +comp_public_lan - same as above, but for LAN servers +comp_public_hc - competitive public in hardcore mode +comp_public_hc_lan - same as above, but for LAN servers +custom_public - custom public mode reading settings from z_c_r.iwd +custom_public_lan - same as above, but for LAN servers +strat - strategy mode for practicing + +SCOREBOT + +The "ticker" is updating events every 10 seconds, each event is starting with a number from 0-9. +Messages are delimited by the "SOH" character (start of header). +To enable scorebot, add this line to the server-config: + +seta promod_enable_scorebot "1" + +Static info: + +attack_score "SOH" player_name "SOH" player_alive "SOH" player_kills "SOH" player_assists "SOH" player_deaths "SOH" player_bombcarrier +defence_score "SOH" player_name "SOH" player_alive "SOH" player_kills "SOH" player_assists "SOH" player_deaths "SOH" player_bombcarrier + +Ticker events: + +"SOH" "round_winner" "SOH" winners "SOH" attack_score "SOH" defence_score +"SOH" "map_complete" "SOH" "attack" "SOH" attack_score "SOH" "defence" "SOH" defence_score +"SOH" "knife_round" +"SOH" start_text "SOH" starting_round +"SOH" "map" "SOH" mapname "SOH" gametype +"SOH" "kill" "SOH" killer_name "SOH" weapon "SOH" killed_name "SOH" headshot +"SOH" "assist_by" "SOH" player_name +"SOH" rdy_text +"SOH" "timeout_cancelled" "SOH" timeout_team "SOH" player_name +"SOH" "timeout_called" "SOH" timeout_team "SOH" player_name +"SOH" "captured" label "SOH" player_name //dom +"SOH" "hq_captured" "SOH" player_name //hq +"SOH" "hq_destroyed" "SOH" player_name //hq +"SOH" "pickup_bomb" "SOH" player_name //sab, sd +"SOH" "dropped_bomb" "SOH" player_name //sab, sd +"SOH" "defused_by" "SOH" player_name //sab, sd +"SOH" "bomb_exploded" //sab, sd +"SOH" "planted_by" "SOH" player_name // sab, sd + +Definitions: + +attack_score = score of the attacking side, integer +defence_score = score of the defending side, integer +player_name = name of the player +player_alive = if player is alive, integer +player_assists = number of assists, integer +player_deaths = number of deaths, integer +player_bombcarrier = if player is carrying bomb, integer +winners = attack, defence or tie +start_text = "1st_half_started", "2nd_half_started", "match_resumed" (from timeout), "round_start" +starting_round = the round starting, integer +mapname = the map name in "mp_" format +gametype = the gametype in short format +killer_name = the name of the killer +weapon = weapon used by the killer +killed_name = the name of the player who got killed +headshot = if it was a headshot, integer +rdy_text = 1st_half_ready_up, 2nd_half_ready_up, timeout_ready_up +timeout_team = the team of the player who made a timeout +label = A, B, C etc + +Broadcasted dvars: + +__promod_attack_score +__promod_defence_score +__promod_mode +__promod_ticker +__promod_version + +FORCED COMMANDS + +All these dvars are forced by Promod (automatically), make sure they stay untouched/within range to avoid being punished! +Note that these does not apply in Shoutcaster mode. + +dynent_active 0 +rate 25000 +cg_nopredict 0 +sm_enable 0 +r_dlightLimit 0 +r_lodscalerigid 1 +r_lodscaleskinned 1 +r_filmtweakInvert 0 +r_zfeather 0 +cg_viewzsmoothingmin 1 +cg_viewzsmoothingmax 16 +cg_viewzsmoothingtime 0.1 +cg_huddamageiconheight 64 +cg_huddamageiconwidth 128 +cg_huddamageiconinscope 0 +cg_huddamageiconoffset 128 +cg_huddamageicontime 2000 +developer 0 +phys_gravity -800 + +com_maxfps 40 - 250 +cl_maxpackets 60 - 100 +compassplayerwidth EQUAL TO compassplayerheight +compassfriendlywidth EQUAL TO compassfriendlyheight + +DEMO VIEWING + +There are some special dvars made to control hud-elements for demo/movie purposes. +They will only work in maps loaded with cheats (devmap). Don't forget the "set" prefix to add new dvars in the console. + +These include: + +promod_movie_hidescorebar // [0-1] (hides the mini-scorebar completely including timer) +promod_centermessage_position // [x+-] (overrides default Y-position of the "You killed..." text) + +CLASS BINDS + +It is possible to bind these via the in-game menu (Controls - Multiplayer Controls...). +Alternatively you can manually bind them in the console/config. + +bind [KEY] [COMMAND] + +Commands: + +openscriptmenu quickpromod assault +openscriptmenu quickpromod specops +openscriptmenu quickpromod demolitions +openscriptmenu quickpromod sniper +openscriptmenu quickpromod silencer +openscriptmenu quickpromod grenade + +SHOUTCASTER BINDS + +You can bind them via the in-game menu (Shoutcast Setup). +Alternatively you can manually bind them in the console/config. + +bind [KEY] [COMMAND] + +Commands: + +openscriptmenu shoutcast_setup number +openscriptmenu shoutcast_setup assault +openscriptmenu shoutcast_setup specops +openscriptmenu shoutcast_setup demolitions +openscriptmenu shoutcast_setup sniper + +Number being 1-10 for players, it's very easy to understand which player corresponds the correct number. +1-5 symbolizes players on Attacking side from top to bottom looking at the Shoutcaster-bars. +6-10 being on the Defending side. + +Setting a class (lowercase) instead of a number will cycle through players using that class. + +CUSTOM MAPS + +In case Promod is throwing an error while playing on custom maps, make sure the IWD-files inside "usermaps/mapname" folder have the same map name in them. +For example map "mp_dahman_b3" contains a file called "mp_dahman_b3.iwd" and therefore it is not marked as a violation. + +NOTES FOR SERVER-ADMINS AND SERVER-HOSTING COMPANIES + +The dvar fs_game "mods/pml220" 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/pml220" for example "mods/pml220_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". + +In order to be automatically-executed, the list of checks needs to be included into the automatically-executed PunkBuster configuration files on your server (pbsv.cfg or pbsvuser.cfg): + +pb_sv_load stock_iwd_md5.cfg +pb_sv_load promod_iwd_md5.cfg // match-server only + +In case your server doesn't have any pbsv.cfg file, go in-game and type: "\rcon pb_sv_writecfg". Depending on if your server is streaming to any third-party anti-cheat site(s) you may or may not already have a pbsvuser.cfg, if you don't you can just copy all three files included to your server's PB-folder, or if the file exist add above lines to it. + +We STRONGLY encourage use of these MD5-checks! (This goes for leagues as well!) + +Due to several game engine exploits, we recommend to specify the rcon-password in the command-line of your server. If this is not possible, rename the server-config to something other than server.cfg, which would make finding rcon password more difficult. + +On another note of security, the IWD-file "z_c_r.iwd" is now running integrity checks if server is running match-mode which means you have to decide whether the server should run "promod_mode custom_public" or not. +If you later want to run match-modes you will have to use the original unmodified "z_c_r.iwd" supplied in this package. Sorry for any inconvenience caused. diff --git a/server.cfg b/server.cfg index d90ec2f..8339215 100644 --- a/server.cfg +++ b/server.cfg @@ -1,35 +1,35 @@ -// promod live v2 - sample server config v1.4 -// for public ruleset customizations, see z_c_r.iwd - -// info strings -sets _Admin "" -sets _Email "" -sets _Website "" -sets _Location "" -sets _Irc "" -sets sv_hostname "Another Promod ^1LIVE ^7V2.20 ^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" - -// password settings -//set rcon_password "" // read server_setup.txt why we don't specify rcon password here -set sv_privatePassword "" // private slots password -set g_password "" // server password - -// player slots, maxclients - privateclients = public slots -set sv_maxclients "12" // maximum number of clients -set sv_privateclients "" // number of private slots - -// client download settings -seta sv_wwwDownload "0" // enable download redirection -seta sv_wwwBaseURL "" // defines url to download from -seta sv_wwwDlDisconnected "0" // disconnect clients while downloading - -// map rotation -set sv_maprotationcurrent "" // leave empty -set sv_mapRotation "gametype war map mp_backlot gametype dom map mp_crash gametype koth map mp_crossfire gametype sab map mp_citystreets gametype sd map mp_strike gametype dm map mp_killhouse" - -// promod settings -set promod_mode "custom_public" // promod mode, for a list of promod modes see attached readme -set promod_enable_scorebot "0" // match-modes only \ No newline at end of file +// promod live v2 - sample server config v1.4 +// for public ruleset customizations, see z_c_r.iwd + +// info strings +sets _Admin "" +sets _Email "" +sets _Website "" +sets _Location "" +sets _Irc "" +sets sv_hostname "Another Promod ^1LIVE ^7V2.20 ^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" + +// password settings +//set rcon_password "" // read server_setup.txt why we don't specify rcon password here +set sv_privatePassword "" // private slots password +set g_password "" // server password + +// player slots, maxclients - privateclients = public slots +set sv_maxclients "12" // maximum number of clients +set sv_privateclients "" // number of private slots + +// client download settings +seta sv_wwwDownload "0" // enable download redirection +seta sv_wwwBaseURL "" // defines url to download from +seta sv_wwwDlDisconnected "0" // disconnect clients while downloading + +// map rotation +set sv_maprotationcurrent "" // leave empty +set sv_mapRotation "gametype war map mp_backlot gametype dom map mp_crash gametype koth map mp_crossfire gametype sab map mp_citystreets gametype sd map mp_strike gametype dm map mp_killhouse" + +// promod settings +set promod_mode "custom_public" // promod mode, for a list of promod modes see attached readme +set promod_enable_scorebot "0" // match-modes only diff --git a/server_setup.txt b/server_setup.txt index 2fa8913..2b8c188 100644 --- a/server_setup.txt +++ b/server_setup.txt @@ -1,28 +1,28 @@ -1. Create a shortcut to the COD4 executable (iw3mp.exe). -2. Right click on the shortcut and hit properties. In the target field add the command-line (sample below). -3. Click "OK" to save, click the shortcut and if you did everything right the server should now be running. - -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/pml220 +exec server.cfg +set rcon_password password +map_rotate - -dedicated [0-2] (listen, LAN, internet) -net_ip [xxx.xxx.xxx.xxx] -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/pml220" 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/pml220" for example "mods/pml220_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". - -In order to be automatically-executed, the list of checks needs to be included into the automatically-executed PunkBuster configuration files on your server (pbsv.cfg or pbsvuser.cfg): - -pb_sv_load stock_iwd_md5.cfg -pb_sv_load promod_iwd_md5.cfg // match-server only - -In case your server doesn't have any pbsv.cfg, go in-game and type: "\rcon pb_sv_writecfg". Depending on if your server is streaming to any third-party anti-cheat site(s) you may or may not already have a pbsvuser.cfg, if you don't you can just copy all three files included to your servers PB-folder, or if the file exist add above lines to it. - -We STRONGLY encourage use of these MD5-checks! (This goes for leagues as well!) \ No newline at end of file +1. Create a shortcut to the COD4 executable (iw3mp.exe). +2. Right click on the shortcut and hit properties. In the target field add the command-line (sample below). +3. Click "OK" to save, click the shortcut and if you did everything right the server should now be running. + +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/pml220 +exec server.cfg +set rcon_password password +map_rotate + +dedicated [0-2] (listen, LAN, internet) +net_ip [xxx.xxx.xxx.xxx] +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/pml220" 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/pml220" for example "mods/pml220_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". + +In order to be automatically-executed, the list of checks needs to be included into the automatically-executed PunkBuster configuration files on your server (pbsv.cfg or pbsvuser.cfg): + +pb_sv_load stock_iwd_md5.cfg +pb_sv_load promod_iwd_md5.cfg // match-server only + +In case your server doesn't have any pbsv.cfg, go in-game and type: "\rcon pb_sv_writecfg". Depending on if your server is streaming to any third-party anti-cheat site(s) you may or may not already have a pbsvuser.cfg, if you don't you can just copy all three files included to your servers PB-folder, or if the file exist add above lines to it. + +We STRONGLY encourage use of these MD5-checks! (This goes for leagues as well!) diff --git a/shock/damage_mp.shock b/shock/damage_mp.shock index d2ef7e5..5ff252b 100644 --- a/shock/damage_mp.shock +++ b/shock/damage_mp.shock @@ -1,60 +1,60 @@ -bg_shock_screenType "blurred" -bg_shock_screenBlurBlendTime "0.4" -bg_shock_screenBlurBlendFadeTime "1" -bg_shock_screenFlashWhiteFadeTime "0" -bg_shock_screenFlashShotFadeTime "0" -bg_shock_viewKickPeriod "0.001" -bg_shock_viewKickRadius "0" -bg_shock_viewKickFadeTime "0.001" -bg_shock_sound "0" -bg_shock_soundLoop "shellshock_loop" -bg_shock_soundLoopSilent "shellshock_loop_silent" -bg_shock_soundEnd "shellshock_end" -bg_shock_soundEndAbort "shellshock_end_abort" -bg_shock_soundFadeInTime "0.25" -bg_shock_soundFadeOutTime "2.5" -bg_shock_soundLoopFadeTime "2" -bg_shock_soundLoopEndDelay "-1.5" -bg_shock_soundRoomType "underwater" -bg_shock_soundDryLevel "1.0" -bg_shock_soundWetLevel "0.50" -bg_shock_soundModEndDelay "-0.75" -bg_shock_volume_physics "0.1" -bg_shock_volume_auto "0.1" -bg_shock_volume_auto2 "0.1" -bg_shock_volume_autodog "0.1" -bg_shock_volume_bulletimpact "0.1" -bg_shock_volume_bulletwhizby "0.1" -bg_shock_volume_element "0.1" -bg_shock_volume_auto2d "0.1" -bg_shock_volume_vehicle "0.1" -bg_shock_volume_vehiclelimited "0.1" -bg_shock_volume_menu "1.0" -bg_shock_volume_body "0.1" -bg_shock_volume_body2d "0.1" -bg_shock_volume_reload "0.1" -bg_shock_volume_reload2d "0.1" -bg_shock_volume_item "0.1" -bg_shock_volume_effects1 "0.1" -bg_shock_volume_effects2 "0.1" -bg_shock_volume_weapon "0.5" -bg_shock_volume_weapon2d "0.1" -bg_shock_volume_nonshock "0.5" -bg_shock_volume_voice "0.2" -bg_shock_volume_local "0.1" -bg_shock_volume_local2 "0.1" -bg_shock_volume_ambient "0.1" -bg_shock_volume_hurt "0.1" -bg_shock_volume_player1 "0.1" -bg_shock_volume_player2 "0.1" -bg_shock_volume_music "0.1" -bg_shock_volume_musicnopause "0.1" -bg_shock_volume_mission "0.2" -bg_shock_volume_announcer "1.0" -bg_shock_volume_shellshock "1.0" -bg_shock_lookControl "1" -bg_shock_lookControl_maxpitchspeed "35" -bg_shock_lookControl_maxyawspeed "35" -bg_shock_lookControl_mousesensitivityscale "0.1" -bg_shock_lookControl_fadeTime "2" -bg_shock_movement "1" \ No newline at end of file +bg_shock_screenType "blurred" +bg_shock_screenBlurBlendTime "0.4" +bg_shock_screenBlurBlendFadeTime "1" +bg_shock_screenFlashWhiteFadeTime "0" +bg_shock_screenFlashShotFadeTime "0" +bg_shock_viewKickPeriod "0.001" +bg_shock_viewKickRadius "0" +bg_shock_viewKickFadeTime "0.001" +bg_shock_sound "0" +bg_shock_soundLoop "shellshock_loop" +bg_shock_soundLoopSilent "shellshock_loop_silent" +bg_shock_soundEnd "shellshock_end" +bg_shock_soundEndAbort "shellshock_end_abort" +bg_shock_soundFadeInTime "0.25" +bg_shock_soundFadeOutTime "2.5" +bg_shock_soundLoopFadeTime "2" +bg_shock_soundLoopEndDelay "-1.5" +bg_shock_soundRoomType "underwater" +bg_shock_soundDryLevel "1.0" +bg_shock_soundWetLevel "0.50" +bg_shock_soundModEndDelay "-0.75" +bg_shock_volume_physics "0.1" +bg_shock_volume_auto "0.1" +bg_shock_volume_auto2 "0.1" +bg_shock_volume_autodog "0.1" +bg_shock_volume_bulletimpact "0.1" +bg_shock_volume_bulletwhizby "0.1" +bg_shock_volume_element "0.1" +bg_shock_volume_auto2d "0.1" +bg_shock_volume_vehicle "0.1" +bg_shock_volume_vehiclelimited "0.1" +bg_shock_volume_menu "1.0" +bg_shock_volume_body "0.1" +bg_shock_volume_body2d "0.1" +bg_shock_volume_reload "0.1" +bg_shock_volume_reload2d "0.1" +bg_shock_volume_item "0.1" +bg_shock_volume_effects1 "0.1" +bg_shock_volume_effects2 "0.1" +bg_shock_volume_weapon "0.5" +bg_shock_volume_weapon2d "0.1" +bg_shock_volume_nonshock "0.5" +bg_shock_volume_voice "0.2" +bg_shock_volume_local "0.1" +bg_shock_volume_local2 "0.1" +bg_shock_volume_ambient "0.1" +bg_shock_volume_hurt "0.1" +bg_shock_volume_player1 "0.1" +bg_shock_volume_player2 "0.1" +bg_shock_volume_music "0.1" +bg_shock_volume_musicnopause "0.1" +bg_shock_volume_mission "0.2" +bg_shock_volume_announcer "1.0" +bg_shock_volume_shellshock "1.0" +bg_shock_lookControl "1" +bg_shock_lookControl_maxpitchspeed "35" +bg_shock_lookControl_maxyawspeed "35" +bg_shock_lookControl_mousesensitivityscale "0.1" +bg_shock_lookControl_fadeTime "2" +bg_shock_movement "1" diff --git a/soundaliases/promod.csv b/soundaliases/promod.csv index 72a37c9..17b3e28 100644 --- a/soundaliases/promod.csv +++ b/soundaliases/promod.csv @@ -1,4 +1,4 @@ -name,file,type,dist_min,dist_max,channel,loadspec,startdelay,speakermap -promod_defused,promod/defused.wav,streamed,80,5000,announcer,all_mp,,announcer -promod_destroyed,promod/destroyed.wav,streamed,80,5000,announcer,all_mp,1400,announcer -promod_planted,promod/planted.wav,streamed,80,5000,announcer,all_mp,,announcer \ No newline at end of file +name,file,type,dist_min,dist_max,channel,loadspec,startdelay,speakermap +promod_defused,promod/defused.wav,streamed,80,5000,announcer,all_mp,,announcer +promod_destroyed,promod/destroyed.wav,streamed,80,5000,announcer,all_mp,1400,announcer +promod_planted,promod/planted.wav,streamed,80,5000,announcer,all_mp,,announcer diff --git a/ui_mp/cac_ingame.inc b/ui_mp/cac_ingame.inc index 4f77ce0..40dd4f4 100644 --- a/ui_mp/cac_ingame.inc +++ b/ui_mp/cac_ingame.inc @@ -1,436 +1,436 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 34 - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#undef BUTTON_BG_COLOR -#define BUTTON_BG_COLOR 0 0 0 0 - -#define ORIGIN_STATUS 390 64 -#define MENU_FONT_COLOR2 1 1 1 0.5 - -#include "ui_mp/stats_info.inc" - -menuDef { - name CAC_MENU_NAME - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - blurWorld 7 - onESC { scriptMenuResponse "back"; } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - CHOICE_MENU_TITLE( "INVENTORY" ) - - #define BACK_OPEN; - #include "ui_mp/navcontrols.inc" - - #define CAC_SETUP_ACTION1 \ - play "mouse_click"; \ - execOnDvarStringValue loadout_class assault "set selected_weapon_class assault;set ui_weapon_class_selected @MPUI_ASSAULT_RIFLES"; \ - execOnDvarStringValue loadout_class specops "set selected_weapon_class specops;set ui_weapon_class_selected @MPUI_SUB_MACHINE_GUNS"; \ - execOnDvarStringValue loadout_class demolitions "set selected_weapon_class demolitions;set ui_weapon_class_selected @MPUI_SHOTGUNS"; \ - execOnDvarStringValue loadout_class sniper "set selected_weapon_class sniper;set ui_weapon_class_selected @MPUI_SNIPER_RIFLES"; \ - uiScript openMenuOnDvar loadout_class assault "ocd_popup_cac_assault"; \ - uiScript openMenuOnDvar loadout_class specops "ocd_popup_cac_SMG"; \ - uiScript openMenuOnDvar loadout_class demolitions "ocd_popup_cac_shotgun"; \ - uiScript openMenuOnDvar loadout_class sniper "ocd_popup_cac_sniper"; - - CHOICE_BUTTON( 1, "1. Primary Weapon", CAC_SETUP_ACTION1 ) - execKey "1" { CAC_SETUP_ACTION1; } - - #define CAC_SETUP_ACTION_ATTACHMENT \ - play "mouse_click"; \ - uiScript openMenuOnDvar loadout_class assault "ocd_attachment_popup_assault"; \ - uiScript openMenuOnDvar loadout_class specops "ocd_attachment_popup_SMG"; - - CHOICE_BUTTON_VIS( 2, "2. Primary Attachment", CAC_SETUP_ACTION_ATTACHMENT, when( dvarString( loadout_primary ) != "mp44" && dvarString( loadout_class ) != "demolitions" && dvarString( loadout_class ) != "sniper" ) ) - CHOICE_DBUTTON_VIS( 2, "2. Primary Attachment", when( dvarString( loadout_primary ) == "mp44" || dvarString( loadout_class ) == "demolitions" || dvarString( loadout_class ) == "sniper" ) ) - execKey "2" { CAC_SETUP_ACTION_ATTACHMENT; } - - #define CAC_SETUP_ACTION2 \ - play "mouse_click"; \ - open "ocd_popup_cac_secondary"; - - CHOICE_BUTTON( 3, "3. Side Arm", CAC_SETUP_ACTION2 ) - execKey "3" { CAC_SETUP_ACTION2; } - - #define CAC_SETUP_ACTION3 \ - play "mouse_click"; \ - open "ocd_popup_cac_extra"; - - CHOICE_BUTTON( 4, "4. Grenade", CAC_SETUP_ACTION3 ) - execKey "4" { CAC_SETUP_ACTION3 } - - #define CAC_SETUP_CAMOX \ - open "ocd_popup_cac_camo"; - - CHOICE_BUTTON( 5, "5. Camo", CAC_SETUP_CAMOX ) - execKey "5" { CAC_SETUP_CAMOX; } - - #define CAC_SETUP_ACTIONGO \ - play "mouse_click"; \ - scriptMenuResponse "go"; - - CHOICE_BUTTON( 6, "6. Start!", CAC_SETUP_ACTIONGO ) - execKey "6" { CAC_SETUP_ACTIONGO; } - - #define STAT_CAC_PRIMARY tableLookup("mp/statstable.csv", 4, dvarString( loadout_primary ), 0) - #define STAT_CAC_PRIMARY_ATTACHMENT tableLookup("mp/attachmentTable.csv", 4, dvarString( loadout_primary_attachment ), 9) - #define STAT_CAC_SECONDARY tableLookup("mp/statstable.csv", 4, dvarString( loadout_secondary ), 0) - #define STAT_CAC_SECONDARY_ATTACHMENT tableLookup("mp/attachmentTable.csv", 4, dvarString( loadout_secondary_attachment ), 9) - #define STAT_CAC_CAMO tableLookup("mp/attachmentTable.csv", 4, dvarString( loadout_camo ), 11) - - #include "ui_mp/cac_loadout_ingame.inc" -} - -#define PREPROC_ATTACH_CLOSEALL \ -close "ocd_popup_cac_primary"; \ -close "ocd_popup_cac_secondary"; \ -close "ocd_popup_cac_assault"; \ -close "ocd_popup_cac_SMG"; \ -close "ocd_popup_cac_sniper"; \ -close "ocd_popup_cac_shotgun"; \ -close "ocd_attachment_popup_assault"; \ -close "ocd_attachment_popup_SMG"; \ -close "ocd_attachment_popup_pistol"; \ -close "ocd_popup_cac_camo"; \ - -#include "ui_mp/weaponinfo.menu" -#include "ui_mp/popupstyle.inc" -#include "ui/choices_setup_popmenu.menu" - -#undef CHOICE_SIZE_X -#define CHOICE_SIZE_X 216 - -#undef NEW_X_OFFSET -#define NEW_X_OFFSET (0-CHOICE_SIZE_X) - -#undef NEW_Y_OFFSET -#define NEW_Y_OFFSET (0-2) - -#define LOCAL_WEAPON_INFO_WINDOW( highlight_dvar ) \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT( 7 ) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" ); ) \ - LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 7 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" );, 0, 0 )\ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 30 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" ); ) \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+72) -6 180 90 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/statsTable.csv",4,dvarString(highlight_dvar),6), 1 1 1 1, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" ); ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 58 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" ); ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 80 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR ) \ - -#define LOCAL_PRIMARY_WEAPON_ACTION( suffix, weapClass, weapRef ) \ - play "mouse_click"; \ - execOnDvarStringValue loadout_primary_attachment gl ""; \ - scriptMenuResponse "loadout_primary:"weapRef;\ - setdvar loadout_primary weapRef; \ - close self; - -#define WI_FOCUS_ACTION( weaponRef ) \ - exec "set ui_primary_highlighted "weaponRef; - -#define LOCAL_WEAPON_ITEM( suffix, itemNum, weaponName, weaponClass, weaponRef )\ - CHOICE_BUTTON_FOCUS_VIS_NOHI( itemNum, "", ;, WI_FOCUS_ACTION( weaponRef ), ;, when( !dvarBool( "weap_allow_"weaponRef ) ); ) \ - CHOICE_DBUTTON_VIS( itemNum, weaponName, when( 1 ); ) \ - CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, weaponName, LOCAL_PRIMARY_WEAPON_ACTION( suffix, weaponClass, weaponRef ), \ - WI_FOCUS_ACTION( weaponRef ), ;, when( dvarBool( "weap_allow_"weaponRef ) );, \ - dvarBool( "weap_allow_"weaponRef ) ) \ - -menuDef -{ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_primary", 5, (CHOICE_X( 1 )-2), (CHOICE_Y( 1 )-4), ;, execnow "set ui_inside_popup weapon_class; set ui_show_preview 1";, 1 ) - onClose{ execnow "set ui_show_preview 0; set ui_primary_highlighted 0; set ui_attachment_highlighted 0"; } - - #define LOCAL_WEAPON_CLASS( itemNum, ptext, plabel ) \ - CHOICE_BUTTON_EX( itemNum, plabel, play "mouse_click"; execnow "set selected_weapon_class "ptext"; set ui_weapon_class_selected "plabel; open "ocd_popup_cac_"ptext;, name ptext ) - - LOCAL_WEAPON_CLASS( 1, "assault", "@MPUI_ASSAULT_RIFLES" ) - LOCAL_WEAPON_CLASS( 2, "SMG", "@MPUI_SUB_MACHINE_GUNS" ) - LOCAL_WEAPON_CLASS( 4, "shotgun", "@MPUI_SHOTGUNS" ) - LOCAL_WEAPON_CLASS( 5, "sniper", "@MPUI_SNIPER_RIFLES" ) -} - -#undef UI_FOCUSFIRST -#define UI_FOCUSFIRST "ui_primary_highlighted" - -#define LOCAL_MASTER_WEAPON_GROUP( suffix, pos, y_offset )\ -menuDef {\ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_assault"suffix, 7, (CHOICE_X( pos )-2), (CHOICE_Y( pos )-28+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_AK47"; set ui_inside_popup assault";, 0 )\ - LOCAL_WEAPON_INFO_WINDOW( "ui_primary_highlighted" )\ - LOCAL_WEAPON_ITEM( suffix, 1, "1. M16A4", "assault", REF_M16 )\ - LOCAL_WEAPON_ITEM( suffix, 2, "2. AK-47", "assault", REF_AK47 )\ - LOCAL_WEAPON_ITEM( suffix, 3, "3. M4 Carbine", "assault", REF_M4 )\ - LOCAL_WEAPON_ITEM( suffix, 4, "4. G3", "assault", REF_G3 )\ - LOCAL_WEAPON_ITEM( suffix, 5, "5. G36C", "assault", REF_G36C )\ - LOCAL_WEAPON_ITEM( suffix, 6, "6. M14", "assault", REF_M14 )\ - LOCAL_WEAPON_ITEM( suffix, 7, "7. MP44", "assault", REF_MP44 )\ - execKey "1" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_M16 ); }\ - execKey "2" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_AK47 ); }\ - execKey "3" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_M4 ); }\ - execKey "4" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_G3 ); }\ - execKey "5" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_G36C ); }\ - execKey "6" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_M14 ); }\ - execKey "7" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_MP44 ); }\ -}\ -menuDef {\ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_SMG"suffix, 7, (CHOICE_X( pos )-2), (CHOICE_Y( pos )-28+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_MP5";set ui_inside_popup smg";, 0 )\ - LOCAL_WEAPON_INFO_WINDOW( "ui_primary_highlighted" )\ - LOCAL_WEAPON_ITEM( suffix, 1, "1. MP5", "SMG", REF_MP5 )\ - LOCAL_WEAPON_ITEM( suffix, 2, "2. Mini-Uzi", "SMG", REF_UZI )\ - LOCAL_WEAPON_ITEM( suffix, 3, "3. AK-74u", "SMG", REF_AK74U )\ - execKey "1" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "SMG", REF_MP5 ); }\ - execKey "2" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "SMG", REF_UZI ); }\ - execKey "3" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "SMG", REF_AK74U ); }\ -}\ -menuDef {\ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_shotgun"suffix, 7, (CHOICE_X( pos )-2), (CHOICE_Y( pos )-28+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_WINCHESTER1200"; set ui_inside_popup shotgun";, 0 )\ - LOCAL_WEAPON_INFO_WINDOW( "ui_primary_highlighted" )\ - LOCAL_WEAPON_ITEM( suffix, 1, "1. W1200", "shotgun", REF_WINCHESTER1200 )\ - LOCAL_WEAPON_ITEM( suffix, 2, "2. M1014", "shotgun", REF_BENELLIM4 )\ - execKey "1" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "shotgun", REF_WINCHESTER1200 ); }\ - execKey "2" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "shotgun", REF_BENELLIM4 ); }\ -}\ -menuDef {\ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_sniper"suffix, 7, (CHOICE_X( pos )-2), (CHOICE_Y( pos )-28+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_M40A3"; set ui_inside_popup sniper";, 0 )\ - LOCAL_WEAPON_INFO_WINDOW( "ui_primary_highlighted" )\ - LOCAL_WEAPON_ITEM( suffix, 1, "1. M40A3", "sniper", REF_M40A3 )\ - LOCAL_WEAPON_ITEM( suffix, 2, "2. R700", "sniper", REF_REMINGTON700 )\ - execKey "1" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "sniper", REF_M40A3 ); }\ - execKey "2" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "sniper", REF_REMINGTON700 ); }\ -} - -LOCAL_MASTER_WEAPON_GROUP( "", 1, 0 ) - -#define LOCAL_ATTACHMENT_INFO_WINDOW( parentDvar ) \ - \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT( 6 ) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "camo" ); ) \ - LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 6 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN visible when( dvarString(ui_inside_popup) != "camo" );, 0, 0 ) \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 30 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "camo" ); ) \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+182) 6 64 64 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/attachmentTable.csv",4,dvarString(ui_attachment_highlighted),6), 1 1 1 1, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "camo" ); ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 58 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/attachmentTable.csv",4,dvarString(ui_attachment_highlighted),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarString(ui_inside_popup) != "camo" ); ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 80 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/attachmentTable.csv",4,dvarString(ui_attachment_highlighted),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR )\ - -#define LOCAL_ATTACHMENT_ACTION( attachmentDvar, attachmentName, paction, groupArg ) \ - setdvar loadout_primary_attachment attachmentName; \ - scriptMenuResponse "loadout_primary_attachment:"groupArg":"attachmentName;\ - PREPROC_ATTACH_CLOSEALL - -#define LOCAL_ATTACHMENT_ACTION2( attachmentDvar, attachmentName, paction, groupArg ) \ - setdvar loadout_secondary_attachment attachmentName; \ - scriptMenuResponse "loadout_secondary_attachment:"groupArg":"attachmentName;\ - PREPROC_ATTACH_CLOSEALL - -#define AI_FOCUS_ACTION( groupArg, weaponRef ) \ - exec "set ui_attachment_highlighted "weaponRef; - -#define LOCAL_ATTACHMENT_ITEM( itemNum, buttonText, p_setstat, groupArg ,p_numref, pname, paction, ptype, statDvar, bitMask)\ - CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, buttonText, LOCAL_ATTACHMENT_ACTION( statDvar, pname, paction, groupArg );, AI_FOCUS_ACTION(groupArg,pname), ;, when( ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ), ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ) \ - CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, buttonText, LOCAL_ATTACHMENT_ACTION2( statDvar, pname, paction, groupArg );, AI_FOCUS_ACTION(groupArg,pname), ;, when( ptype == "secondary" && dvarBool( "attach_allow_"groupArg"_"pname ) ), ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ) \ - CHOICE_BUTTON_FOCUS_VIS_NOHI( itemNum, "", ;, AI_FOCUS_ACTION(groupArg,pname), ;, when( !dvarBool( "attach_allow_"groupArg"_"pname ) ); ) \ - CHOICE_DBUTTON_VIS( itemNum, buttonText, when( !dvarBool( "attach_allow_"groupArg"_"pname ) ); ) - -#undef UI_FOCUSFIRST -#define UI_FOCUSFIRST "ui_attachment_highlighted" - -#define LOCAL_MASTER_ATTACHMENT_GROUP( stat_slot, suffix, pos, ptype, y_offset, statDvar )\ -menuDef { \ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_attachment_popup_assault"suffix, 6, (CHOICE_X( pos )-2), (CHOICE_Y( pos )+26+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_ATTACHMENT_NONE"; set ui_inside_popup attachment";, 0 )\ - onClose{execnow "set ui_inside_popup 0";} \ - LOCAL_ATTACHMENT_INFO_WINDOW( "loadout_"ptype )\ - LOCAL_ATTACHMENT_ITEM( 1, "1. No Attachment", stat_slot, "assault", NUM_NONE, "none", ;, ptype, statDvar, 0 )\ - LOCAL_ATTACHMENT_ITEM( 2, "2. Silencer", stat_slot, "assault", NUM_SUPPRESSOR, "silencer", ;, ptype, statDvar, SILENCER_NEW_BITMASK )\ - execKey "1" { LOCAL_ATTACHMENT_ACTION( 1, "none", 1, "assault" ); }\ - execKey "2" { LOCAL_ATTACHMENT_ACTION( 2, "silencer", 1, "assault" ); }\ -}\ -menuDef { \ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_attachment_popup_SMG"suffix, 6, (CHOICE_X( pos )-2), (CHOICE_Y( pos )+26+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_ATTACHMENT_NONE"; set ui_inside_popup attachment";, 0 )\ - onClose{execnow "set ui_inside_popup 0";} \ - LOCAL_ATTACHMENT_INFO_WINDOW( "loadout_"ptype )\ - LOCAL_ATTACHMENT_ITEM( 1, "1. No Attachment", stat_slot, "specops", NUM_NONE, "none", ;, ptype, statDvar, 0 )\ - LOCAL_ATTACHMENT_ITEM( 2, "2. Silencer", stat_slot, "specops", NUM_SUPPRESSOR, "silencer", ;, ptype, statDvar, SILENCER_NEW_BITMASK )\ - execKey "1" { LOCAL_ATTACHMENT_ACTION( 1, "none", 1, "specops" ); }\ - execKey "2" { LOCAL_ATTACHMENT_ACTION( 2, "silencer", 1, "specops" ); }\ -} -menuDef { - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_attachment_popup_pistol", 6, (CHOICE_X( 2 )-2), (CHOICE_Y( 2 )), ;, execnow "set "UI_FOCUSFIRST" "REF_ATTACHMENT_NONE"; set ui_inside_popup attachment";, 0 ) - onClose{execnow "set ui_inside_popup 0";} - LOCAL_ATTACHMENT_INFO_WINDOW( "loadout_secondary" ) - LOCAL_ATTACHMENT_ITEM( 1, "1. No Attachment", CAC_SECONDARY_ATTACHMENT, "pistol", NUM_NONE, "none", ;, "secondary", "ui_secondary_weapon", 0 ) - LOCAL_ATTACHMENT_ITEM( 2, "2. Silencer", CAC_SECONDARY_ATTACHMENT, "pistol", NUM_SUPPRESSOR, "silencer", ;, "secondary", "ui_secondary_weapon", SILENCER_NEW_BITMASK ) - execKey "1" { LOCAL_ATTACHMENT_ACTION2( 1, "none", 1, "pistol" ); } - execKey "2" { LOCAL_ATTACHMENT_ACTION2( 2, "silencer", 1, "pistol" ); } -} - -LOCAL_MASTER_ATTACHMENT_GROUP( CAC_PRIMARY_ATTACHMENT, "", 1, "primary", -30, "loadout_primary_attachment" ) - -#define LOCAL_SIDEARM_INFO_WINDOW( highlight_dvar ) \ - \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT( 6 ) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ - LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 6 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN visible when( dvarString(ui_inside_popup) != "attachment" );, 0, 0 )\ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 30 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+138) -12 90 90 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/statsTable.csv",4,dvarString(highlight_dvar),6), 1 1 1 1, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 58 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 80 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR )\ - -#define LOCAL_SIDEARM_ACTION( pstat, weaponRef ) \ - play "mouse_click"; \ - setdvar loadout_secondary weaponRef; \ - setdvar loadout_secondary_attachment none; \ - scriptMenuResponse "loadout_secondary:"weaponRef;\ - PREPROC_ATTACH_CLOSEALL - -#define LOCAL_SIDEARM_ACTION2( pstat, weaponRef ) \ - play "mouse_click"; \ - setdvar loadout_secondary weaponRef; \ - setdvar loadout_secondary_attachment none; \ - scriptMenuResponse "loadout_secondary:"weaponRef;\ - uiScript openMenuOnDvar "selected_weapon_class" pistol "ocd_attachment_popup_pistol"; - -#define SI_FOCUS_ACTION( weaponRef ) \ - exec "set ui_sidearm_highlighted "weaponRef; - -#define LOCAL_SIDEARM_ITEM( itemNum, weaponName, weaponStat, weaponRef, highlight_dvar )\ - CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, weaponName, LOCAL_SIDEARM_ACTION( weaponStat, weaponRef ), SI_FOCUS_ACTION( weaponRef ), ;, \ - when( dvarBool( "weap_allow_"weaponRef ) && ( weaponRef == REF_DESERTEAGLE || weaponRef == REF_DESERTEAGLEGOLD ) );, \ - dvarBool( "weap_allow_"weaponRef ) && ( weaponRef == REF_DESERTEAGLE || weaponRef == REF_DESERTEAGLEGOLD ) ) \ - CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, weaponName, LOCAL_SIDEARM_ACTION2( weaponStat, weaponRef ), SI_FOCUS_ACTION( weaponRef ), ;, \ - when( dvarBool( "weap_allow_"weaponRef ) && weaponRef != REF_DESERTEAGLE && weaponRef != REF_DESERTEAGLEGOLD );, \ - dvarBool( "weap_allow_"weaponRef ) && weaponRef != REF_DESERTEAGLE && weaponRef != REF_DESERTEAGLEGOLD ) \ - CHOICE_BUTTON_FOCUS_VIS_NOHI( itemNum, "", ;, SI_FOCUS_ACTION( weaponRef ), ;, when( !dvarBool( "weap_allow_"weaponRef ) ); ) \ - CHOICE_DBUTTON_VIS( itemNum, weaponName, when( !dvarBool( "weap_allow_"weaponRef ) ); ) - -#undef UI_FOCUSFIRST -#define UI_FOCUSFIRST "ui_sidearm_highlighted" - -menuDef -{ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_secondary", 6, (CHOICE_X( 2 )-2), (CHOICE_Y( 2 )), ;, execnow "set "UI_FOCUSFIRST" "REF_M9BERETTA"; set selected_weapon_class pistol; set ui_inside_popup pistol";, 0 ) - onClose{execnow "set ui_inside_popup 0";} - LOCAL_SIDEARM_INFO_WINDOW( "ui_sidearm_highlighted" ) - LOCAL_SIDEARM_ITEM( 1, "1. Gold Desert Eagle", STAT_PISTOL_DESERTEAGLEGOLD, REF_DESERTEAGLEGOLD, "ui_sidearm_highlighted" ) - LOCAL_SIDEARM_ITEM( 2, "2. Desert Eagle", STAT_PISTOL_DESERTEAGLE, REF_DESERTEAGLE, "ui_sidearm_highlighted" ) - LOCAL_SIDEARM_ITEM( 3, "3. M1911 .45", STAT_PISTOL_COLT45, REF_COLT45, "ui_sidearm_highlighted" ) - LOCAL_SIDEARM_ITEM( 4, "4. USP .45", STAT_PISTOL_USP, REF_USP, "ui_sidearm_highlighted" ) - LOCAL_SIDEARM_ITEM( 5, "5. M9", STAT_PISTOL_M9BERETTA, REF_M9BERETTA, "ui_sidearm_highlighted" ) - - execKey "1" { LOCAL_SIDEARM_ACTION(STAT_PISTOL_DESERTEAGLEGOLD,REF_DESERTEAGLEGOLD); } - execKey "2" { LOCAL_SIDEARM_ACTION(STAT_PISTOL_DESERTEAGLE,REF_DESERTEAGLE); } - execKey "3" { LOCAL_SIDEARM_ACTION2(STAT_PISTOL_COLT45,REF_COLT45); } - execKey "4" { LOCAL_SIDEARM_ACTION2(STAT_PISTOL_USP,REF_USP); } - execKey "5" { LOCAL_SIDEARM_ACTION2(STAT_PISTOL_M9BERETTA,REF_M9BERETTA); } -} - -#define LOCAL_SGRENADE_INFO_WINDOW( highlight_dvar ) \ - \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT(5) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR ) \ - LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 5 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN visible when( dvarString(ui_inside_popup) != "attachment" );, 0, 0 )\ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 6 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+178) -6 64 64 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/statsTable.csv",4,dvarString(highlight_dvar),6), 1 1 1 1, 0, 2, CHOICE_POPUP_BORDER_COLOR ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 34 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 56 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR ) - -#define LOCAL_SGRENADE_ACTION( weaponRef ) \ - play "mouse_click"; \ - setdvar loadout_grenade weaponRef; \ - scriptMenuResponse "loadout_grenade:"weaponRef;\ - close "ocd_popup_cac_extra" - -#define LOCAL_SGRENADE_ITEM( itemNum, weaponName, weaponStat, weaponRef, highlight_dvar )\ - CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, weaponName, LOCAL_SGRENADE_ACTION( weaponRef ), execnow "set "highlight_dvar" "weaponRef, ;, when( dvarBool("weap_allow_"weaponRef) );, dvarBool("weap_allow_"weaponRef) ) \ - CHOICE_DBUTTON_VIS( itemNum, weaponName, when( !dvarBool("weap_allow_"weaponRef) ); ) - -#undef UI_FOCUSFIRST -#define UI_FOCUSFIRST "ui_sgrenade_highlighted" - -menuDef -{ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_extra", 5, (CHOICE_X( 3 )-2), (CHOICE_Y( 3 )+4), ;, execnow "set "UI_FOCUSFIRST" "REF_FLASH_X1"; set ui_inside_popup sgrenade";, 0 ) - onClose{ execnow "set ui_inside_popup 0"; } - LOCAL_SGRENADE_INFO_WINDOW( "ui_sgrenade_highlighted" ) - LOCAL_SGRENADE_ITEM( 1, "1. Flash", STAT_FLASH_X1, REF_FLASH_X1, "ui_sgrenade_highlighted" ) - LOCAL_SGRENADE_ITEM( 2, "2. Smoke", STAT_SMOKE_X1, REF_SMOKE_X1, "ui_sgrenade_highlighted" ) - execKey "1" { LOCAL_SGRENADE_ACTION(REF_FLASH_X1); } - execKey "2" { LOCAL_SGRENADE_ACTION(REF_SMOKE_X1); } -} - - #define LOCAL_CAMO_INFO_WINDOW( highlight_dvar ) \ - \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT( 7 ) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR ) \ - LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 7 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0, 0 )\ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 30 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR ) \ - PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+184) 0 64 64 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/attachmentTable.csv",4,dvarString(highlight_dvar),6), 1 1 1 0.75, 1, 7, 0.2 0.2 0.225 1 ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 58 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/attachmenttable.csv",4,dvarString(highlight_dvar),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE ) \ - PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 80 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/attachmenttable.csv",4,dvarString(highlight_dvar),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR )\ - -#define LOCAL_CAMO_ACTION( camoRef ) \ - play "mouse_click"; \ - setdvar loadout_camo camoRef;\ - scriptMenuResponse "loadout_camo:" camoRef;\ - PREPROC_ATTACH_CLOSEALL - -#define LOCAL_CAMO_ITEM( itemNum, camoName, pnum, camoRef, highlight_dvar, bitMask, visArg )\ - CHOICE_BUTTON_FOCUS( itemNum, camoName, LOCAL_CAMO_ACTION( camoRef );, execnow "set "highlight_dvar" "camoRef;, ; ); - -#define LOCAL_CAMO_ITEM2( itemNum, camoName, pnum, camoRef, highlight_dvar, bitMask, visArg )\ - CHOICE_BUTTON_FOCUS_VIS( itemNum, camoName, LOCAL_CAMO_ACTION( camoRef );, execnow "set "highlight_dvar" "camoRef;, ;, when( dvarString( loadout_primary ) == "ak47" || dvarString( loadout_primary ) == "uzi" || dvarString( loadout_primary ) == "m1014" ) ) \ - CHOICE_DBUTTON_VIS( itemNum, camoName, when( dvarString( loadout_primary ) != "ak47" && dvarString( loadout_primary ) != "uzi" && dvarString( loadout_primary ) != "m1014" ) ) - -#undef UI_FOCUSFIRST -#define UI_FOCUSFIRST "ui_camo_highlighted" - -#define LOCAL_CAMO_GROUP( prefix, onLeave )\ -menuDef \ -{\ - IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_camo"prefix, 7, (CHOICE_X( 1 )-2), (CHOICE_Y( 1 )+68), ;, execnow "set "UI_FOCUSFIRST" "REF_CAMO_NONE"; set ui_inside_popup camo";, 0 )\ - onClose{onLeave;} \ - LOCAL_CAMO_INFO_WINDOW( "ui_camo_highlighted" )\ - LOCAL_CAMO_ITEM( 1, "1. None", CAMO_NONE, REF_CAMO_NONE, "ui_camo_highlighted", 0, 1 )\ - LOCAL_CAMO_ITEM( 2, "2. Desert", CAMO_BROCKHUARD, REF_BROCKHUARD, "ui_camo_highlighted", DESERT_NEW_BITMASK, 1 )\ - LOCAL_CAMO_ITEM( 3, "3. Woodland", CAMO_BUSHDWELLER, REF_BUSHDWELLER, "ui_camo_highlighted", WOODLAND_NEW_BITMASK, 1 )\ - LOCAL_CAMO_ITEM( 4, "4. Digital", CAMO_BLACKWHITEMARPAT, REF_BLACKWHITEMARPAT, "ui_camo_highlighted", DIGITAL_NEW_BITMASK, 1 )\ - LOCAL_CAMO_ITEM( 5, "5. Red Tiger", CAMO_TIGERRED, REF_TIGERRED, "ui_camo_highlighted", REDTIGER_NEW_BITMASK, 1 )\ - LOCAL_CAMO_ITEM( 6, "6. Blue Tiger", CAMO_STAGGER, REF_STAGGER, "ui_camo_highlighted", BLUETIGER_NEW_BITMASK, 1 )\ - LOCAL_CAMO_ITEM2( 7, "7. Golden", CAMO_GOLDEN, REF_GOLDEN, "ui_camo_highlighted", GOLDEN_NEW_BITMASK, 1 )\ - execKey "1" { LOCAL_CAMO_ACTION(REF_CAMO_NONE); }\ - execKey "2" { LOCAL_CAMO_ACTION(REF_BROCKHUARD); }\ - execKey "3" { LOCAL_CAMO_ACTION(REF_BUSHDWELLER); }\ - execKey "4" { LOCAL_CAMO_ACTION(REF_BLACKWHITEMARPAT); }\ - execKey "5" { LOCAL_CAMO_ACTION(REF_TIGERRED); }\ - execKey "6" { LOCAL_CAMO_ACTION(REF_STAGGER); }\ - execKey "7" { LOCAL_CAMO_ACTION(REF_GOLDEN); }\ -} - -LOCAL_CAMO_GROUP( "", execnow "set ui_inside_popup attachment" ) \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 34 + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#undef BUTTON_BG_COLOR +#define BUTTON_BG_COLOR 0 0 0 0 + +#define ORIGIN_STATUS 390 64 +#define MENU_FONT_COLOR2 1 1 1 0.5 + +#include "ui_mp/stats_info.inc" + +menuDef { + name CAC_MENU_NAME + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + blurWorld 7 + onESC { scriptMenuResponse "back"; } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + CHOICE_MENU_TITLE( "INVENTORY" ) + + #define BACK_OPEN; + #include "ui_mp/navcontrols.inc" + + #define CAC_SETUP_ACTION1 \ + play "mouse_click"; \ + execOnDvarStringValue loadout_class assault "set selected_weapon_class assault;set ui_weapon_class_selected @MPUI_ASSAULT_RIFLES"; \ + execOnDvarStringValue loadout_class specops "set selected_weapon_class specops;set ui_weapon_class_selected @MPUI_SUB_MACHINE_GUNS"; \ + execOnDvarStringValue loadout_class demolitions "set selected_weapon_class demolitions;set ui_weapon_class_selected @MPUI_SHOTGUNS"; \ + execOnDvarStringValue loadout_class sniper "set selected_weapon_class sniper;set ui_weapon_class_selected @MPUI_SNIPER_RIFLES"; \ + uiScript openMenuOnDvar loadout_class assault "ocd_popup_cac_assault"; \ + uiScript openMenuOnDvar loadout_class specops "ocd_popup_cac_SMG"; \ + uiScript openMenuOnDvar loadout_class demolitions "ocd_popup_cac_shotgun"; \ + uiScript openMenuOnDvar loadout_class sniper "ocd_popup_cac_sniper"; + + CHOICE_BUTTON( 1, "1. Primary Weapon", CAC_SETUP_ACTION1 ) + execKey "1" { CAC_SETUP_ACTION1; } + + #define CAC_SETUP_ACTION_ATTACHMENT \ + play "mouse_click"; \ + uiScript openMenuOnDvar loadout_class assault "ocd_attachment_popup_assault"; \ + uiScript openMenuOnDvar loadout_class specops "ocd_attachment_popup_SMG"; + + CHOICE_BUTTON_VIS( 2, "2. Primary Attachment", CAC_SETUP_ACTION_ATTACHMENT, when( dvarString( loadout_primary ) != "mp44" && dvarString( loadout_class ) != "demolitions" && dvarString( loadout_class ) != "sniper" ) ) + CHOICE_DBUTTON_VIS( 2, "2. Primary Attachment", when( dvarString( loadout_primary ) == "mp44" || dvarString( loadout_class ) == "demolitions" || dvarString( loadout_class ) == "sniper" ) ) + execKey "2" { CAC_SETUP_ACTION_ATTACHMENT; } + + #define CAC_SETUP_ACTION2 \ + play "mouse_click"; \ + open "ocd_popup_cac_secondary"; + + CHOICE_BUTTON( 3, "3. Side Arm", CAC_SETUP_ACTION2 ) + execKey "3" { CAC_SETUP_ACTION2; } + + #define CAC_SETUP_ACTION3 \ + play "mouse_click"; \ + open "ocd_popup_cac_extra"; + + CHOICE_BUTTON( 4, "4. Grenade", CAC_SETUP_ACTION3 ) + execKey "4" { CAC_SETUP_ACTION3 } + + #define CAC_SETUP_CAMOX \ + open "ocd_popup_cac_camo"; + + CHOICE_BUTTON( 5, "5. Camo", CAC_SETUP_CAMOX ) + execKey "5" { CAC_SETUP_CAMOX; } + + #define CAC_SETUP_ACTIONGO \ + play "mouse_click"; \ + scriptMenuResponse "go"; + + CHOICE_BUTTON( 6, "6. Start!", CAC_SETUP_ACTIONGO ) + execKey "6" { CAC_SETUP_ACTIONGO; } + + #define STAT_CAC_PRIMARY tableLookup("mp/statstable.csv", 4, dvarString( loadout_primary ), 0) + #define STAT_CAC_PRIMARY_ATTACHMENT tableLookup("mp/attachmentTable.csv", 4, dvarString( loadout_primary_attachment ), 9) + #define STAT_CAC_SECONDARY tableLookup("mp/statstable.csv", 4, dvarString( loadout_secondary ), 0) + #define STAT_CAC_SECONDARY_ATTACHMENT tableLookup("mp/attachmentTable.csv", 4, dvarString( loadout_secondary_attachment ), 9) + #define STAT_CAC_CAMO tableLookup("mp/attachmentTable.csv", 4, dvarString( loadout_camo ), 11) + + #include "ui_mp/cac_loadout_ingame.inc" +} + +#define PREPROC_ATTACH_CLOSEALL \ +close "ocd_popup_cac_primary"; \ +close "ocd_popup_cac_secondary"; \ +close "ocd_popup_cac_assault"; \ +close "ocd_popup_cac_SMG"; \ +close "ocd_popup_cac_sniper"; \ +close "ocd_popup_cac_shotgun"; \ +close "ocd_attachment_popup_assault"; \ +close "ocd_attachment_popup_SMG"; \ +close "ocd_attachment_popup_pistol"; \ +close "ocd_popup_cac_camo"; \ + +#include "ui_mp/weaponinfo.menu" +#include "ui_mp/popupstyle.inc" +#include "ui/choices_setup_popmenu.menu" + +#undef CHOICE_SIZE_X +#define CHOICE_SIZE_X 216 + +#undef NEW_X_OFFSET +#define NEW_X_OFFSET (0-CHOICE_SIZE_X) + +#undef NEW_Y_OFFSET +#define NEW_Y_OFFSET (0-2) + +#define LOCAL_WEAPON_INFO_WINDOW( highlight_dvar ) \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT( 7 ) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" ); ) \ + LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 7 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" );, 0, 0 )\ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 30 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" ); ) \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+72) -6 180 90 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/statsTable.csv",4,dvarString(highlight_dvar),6), 1 1 1 1, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" ); ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 58 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarString(ui_inside_popup) != "attachment" && dvarString(ui_inside_popup) != "camo" ); ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 80 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR ) \ + +#define LOCAL_PRIMARY_WEAPON_ACTION( suffix, weapClass, weapRef ) \ + play "mouse_click"; \ + execOnDvarStringValue loadout_primary_attachment gl ""; \ + scriptMenuResponse "loadout_primary:"weapRef;\ + setdvar loadout_primary weapRef; \ + close self; + +#define WI_FOCUS_ACTION( weaponRef ) \ + exec "set ui_primary_highlighted "weaponRef; + +#define LOCAL_WEAPON_ITEM( suffix, itemNum, weaponName, weaponClass, weaponRef )\ + CHOICE_BUTTON_FOCUS_VIS_NOHI( itemNum, "", ;, WI_FOCUS_ACTION( weaponRef ), ;, when( !dvarBool( "weap_allow_"weaponRef ) ); ) \ + CHOICE_DBUTTON_VIS( itemNum, weaponName, when( 1 ); ) \ + CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, weaponName, LOCAL_PRIMARY_WEAPON_ACTION( suffix, weaponClass, weaponRef ), \ + WI_FOCUS_ACTION( weaponRef ), ;, when( dvarBool( "weap_allow_"weaponRef ) );, \ + dvarBool( "weap_allow_"weaponRef ) ) \ + +menuDef +{ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_primary", 5, (CHOICE_X( 1 )-2), (CHOICE_Y( 1 )-4), ;, execnow "set ui_inside_popup weapon_class; set ui_show_preview 1";, 1 ) + onClose{ execnow "set ui_show_preview 0; set ui_primary_highlighted 0; set ui_attachment_highlighted 0"; } + + #define LOCAL_WEAPON_CLASS( itemNum, ptext, plabel ) \ + CHOICE_BUTTON_EX( itemNum, plabel, play "mouse_click"; execnow "set selected_weapon_class "ptext"; set ui_weapon_class_selected "plabel; open "ocd_popup_cac_"ptext;, name ptext ) + + LOCAL_WEAPON_CLASS( 1, "assault", "@MPUI_ASSAULT_RIFLES" ) + LOCAL_WEAPON_CLASS( 2, "SMG", "@MPUI_SUB_MACHINE_GUNS" ) + LOCAL_WEAPON_CLASS( 4, "shotgun", "@MPUI_SHOTGUNS" ) + LOCAL_WEAPON_CLASS( 5, "sniper", "@MPUI_SNIPER_RIFLES" ) +} + +#undef UI_FOCUSFIRST +#define UI_FOCUSFIRST "ui_primary_highlighted" + +#define LOCAL_MASTER_WEAPON_GROUP( suffix, pos, y_offset )\ +menuDef {\ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_assault"suffix, 7, (CHOICE_X( pos )-2), (CHOICE_Y( pos )-28+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_AK47"; set ui_inside_popup assault";, 0 )\ + LOCAL_WEAPON_INFO_WINDOW( "ui_primary_highlighted" )\ + LOCAL_WEAPON_ITEM( suffix, 1, "1. M16A4", "assault", REF_M16 )\ + LOCAL_WEAPON_ITEM( suffix, 2, "2. AK-47", "assault", REF_AK47 )\ + LOCAL_WEAPON_ITEM( suffix, 3, "3. M4 Carbine", "assault", REF_M4 )\ + LOCAL_WEAPON_ITEM( suffix, 4, "4. G3", "assault", REF_G3 )\ + LOCAL_WEAPON_ITEM( suffix, 5, "5. G36C", "assault", REF_G36C )\ + LOCAL_WEAPON_ITEM( suffix, 6, "6. M14", "assault", REF_M14 )\ + LOCAL_WEAPON_ITEM( suffix, 7, "7. MP44", "assault", REF_MP44 )\ + execKey "1" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_M16 ); }\ + execKey "2" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_AK47 ); }\ + execKey "3" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_M4 ); }\ + execKey "4" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_G3 ); }\ + execKey "5" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_G36C ); }\ + execKey "6" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_M14 ); }\ + execKey "7" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "assault", REF_MP44 ); }\ +}\ +menuDef {\ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_SMG"suffix, 7, (CHOICE_X( pos )-2), (CHOICE_Y( pos )-28+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_MP5";set ui_inside_popup smg";, 0 )\ + LOCAL_WEAPON_INFO_WINDOW( "ui_primary_highlighted" )\ + LOCAL_WEAPON_ITEM( suffix, 1, "1. MP5", "SMG", REF_MP5 )\ + LOCAL_WEAPON_ITEM( suffix, 2, "2. Mini-Uzi", "SMG", REF_UZI )\ + LOCAL_WEAPON_ITEM( suffix, 3, "3. AK-74u", "SMG", REF_AK74U )\ + execKey "1" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "SMG", REF_MP5 ); }\ + execKey "2" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "SMG", REF_UZI ); }\ + execKey "3" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "SMG", REF_AK74U ); }\ +}\ +menuDef {\ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_shotgun"suffix, 7, (CHOICE_X( pos )-2), (CHOICE_Y( pos )-28+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_WINCHESTER1200"; set ui_inside_popup shotgun";, 0 )\ + LOCAL_WEAPON_INFO_WINDOW( "ui_primary_highlighted" )\ + LOCAL_WEAPON_ITEM( suffix, 1, "1. W1200", "shotgun", REF_WINCHESTER1200 )\ + LOCAL_WEAPON_ITEM( suffix, 2, "2. M1014", "shotgun", REF_BENELLIM4 )\ + execKey "1" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "shotgun", REF_WINCHESTER1200 ); }\ + execKey "2" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "shotgun", REF_BENELLIM4 ); }\ +}\ +menuDef {\ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_sniper"suffix, 7, (CHOICE_X( pos )-2), (CHOICE_Y( pos )-28+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_M40A3"; set ui_inside_popup sniper";, 0 )\ + LOCAL_WEAPON_INFO_WINDOW( "ui_primary_highlighted" )\ + LOCAL_WEAPON_ITEM( suffix, 1, "1. M40A3", "sniper", REF_M40A3 )\ + LOCAL_WEAPON_ITEM( suffix, 2, "2. R700", "sniper", REF_REMINGTON700 )\ + execKey "1" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "sniper", REF_M40A3 ); }\ + execKey "2" { LOCAL_PRIMARY_WEAPON_ACTION( suffix, "sniper", REF_REMINGTON700 ); }\ +} + +LOCAL_MASTER_WEAPON_GROUP( "", 1, 0 ) + +#define LOCAL_ATTACHMENT_INFO_WINDOW( parentDvar ) \ + \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT( 6 ) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "camo" ); ) \ + LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 6 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN visible when( dvarString(ui_inside_popup) != "camo" );, 0, 0 ) \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 30 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "camo" ); ) \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+182) 6 64 64 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/attachmentTable.csv",4,dvarString(ui_attachment_highlighted),6), 1 1 1 1, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "camo" ); ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 58 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/attachmentTable.csv",4,dvarString(ui_attachment_highlighted),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarString(ui_inside_popup) != "camo" ); ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 80 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/attachmentTable.csv",4,dvarString(ui_attachment_highlighted),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR )\ + +#define LOCAL_ATTACHMENT_ACTION( attachmentDvar, attachmentName, paction, groupArg ) \ + setdvar loadout_primary_attachment attachmentName; \ + scriptMenuResponse "loadout_primary_attachment:"groupArg":"attachmentName;\ + PREPROC_ATTACH_CLOSEALL + +#define LOCAL_ATTACHMENT_ACTION2( attachmentDvar, attachmentName, paction, groupArg ) \ + setdvar loadout_secondary_attachment attachmentName; \ + scriptMenuResponse "loadout_secondary_attachment:"groupArg":"attachmentName;\ + PREPROC_ATTACH_CLOSEALL + +#define AI_FOCUS_ACTION( groupArg, weaponRef ) \ + exec "set ui_attachment_highlighted "weaponRef; + +#define LOCAL_ATTACHMENT_ITEM( itemNum, buttonText, p_setstat, groupArg ,p_numref, pname, paction, ptype, statDvar, bitMask)\ + CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, buttonText, LOCAL_ATTACHMENT_ACTION( statDvar, pname, paction, groupArg );, AI_FOCUS_ACTION(groupArg,pname), ;, when( ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ), ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ) \ + CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, buttonText, LOCAL_ATTACHMENT_ACTION2( statDvar, pname, paction, groupArg );, AI_FOCUS_ACTION(groupArg,pname), ;, when( ptype == "secondary" && dvarBool( "attach_allow_"groupArg"_"pname ) ), ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ) \ + CHOICE_BUTTON_FOCUS_VIS_NOHI( itemNum, "", ;, AI_FOCUS_ACTION(groupArg,pname), ;, when( !dvarBool( "attach_allow_"groupArg"_"pname ) ); ) \ + CHOICE_DBUTTON_VIS( itemNum, buttonText, when( !dvarBool( "attach_allow_"groupArg"_"pname ) ); ) + +#undef UI_FOCUSFIRST +#define UI_FOCUSFIRST "ui_attachment_highlighted" + +#define LOCAL_MASTER_ATTACHMENT_GROUP( stat_slot, suffix, pos, ptype, y_offset, statDvar )\ +menuDef { \ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_attachment_popup_assault"suffix, 6, (CHOICE_X( pos )-2), (CHOICE_Y( pos )+26+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_ATTACHMENT_NONE"; set ui_inside_popup attachment";, 0 )\ + onClose{execnow "set ui_inside_popup 0";} \ + LOCAL_ATTACHMENT_INFO_WINDOW( "loadout_"ptype )\ + LOCAL_ATTACHMENT_ITEM( 1, "1. No Attachment", stat_slot, "assault", NUM_NONE, "none", ;, ptype, statDvar, 0 )\ + LOCAL_ATTACHMENT_ITEM( 2, "2. Silencer", stat_slot, "assault", NUM_SUPPRESSOR, "silencer", ;, ptype, statDvar, SILENCER_NEW_BITMASK )\ + execKey "1" { LOCAL_ATTACHMENT_ACTION( 1, "none", 1, "assault" ); }\ + execKey "2" { LOCAL_ATTACHMENT_ACTION( 2, "silencer", 1, "assault" ); }\ +}\ +menuDef { \ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_attachment_popup_SMG"suffix, 6, (CHOICE_X( pos )-2), (CHOICE_Y( pos )+26+y_offset), ;, execnow "set "UI_FOCUSFIRST" "REF_ATTACHMENT_NONE"; set ui_inside_popup attachment";, 0 )\ + onClose{execnow "set ui_inside_popup 0";} \ + LOCAL_ATTACHMENT_INFO_WINDOW( "loadout_"ptype )\ + LOCAL_ATTACHMENT_ITEM( 1, "1. No Attachment", stat_slot, "specops", NUM_NONE, "none", ;, ptype, statDvar, 0 )\ + LOCAL_ATTACHMENT_ITEM( 2, "2. Silencer", stat_slot, "specops", NUM_SUPPRESSOR, "silencer", ;, ptype, statDvar, SILENCER_NEW_BITMASK )\ + execKey "1" { LOCAL_ATTACHMENT_ACTION( 1, "none", 1, "specops" ); }\ + execKey "2" { LOCAL_ATTACHMENT_ACTION( 2, "silencer", 1, "specops" ); }\ +} +menuDef { + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_attachment_popup_pistol", 6, (CHOICE_X( 2 )-2), (CHOICE_Y( 2 )), ;, execnow "set "UI_FOCUSFIRST" "REF_ATTACHMENT_NONE"; set ui_inside_popup attachment";, 0 ) + onClose{execnow "set ui_inside_popup 0";} + LOCAL_ATTACHMENT_INFO_WINDOW( "loadout_secondary" ) + LOCAL_ATTACHMENT_ITEM( 1, "1. No Attachment", CAC_SECONDARY_ATTACHMENT, "pistol", NUM_NONE, "none", ;, "secondary", "ui_secondary_weapon", 0 ) + LOCAL_ATTACHMENT_ITEM( 2, "2. Silencer", CAC_SECONDARY_ATTACHMENT, "pistol", NUM_SUPPRESSOR, "silencer", ;, "secondary", "ui_secondary_weapon", SILENCER_NEW_BITMASK ) + execKey "1" { LOCAL_ATTACHMENT_ACTION2( 1, "none", 1, "pistol" ); } + execKey "2" { LOCAL_ATTACHMENT_ACTION2( 2, "silencer", 1, "pistol" ); } +} + +LOCAL_MASTER_ATTACHMENT_GROUP( CAC_PRIMARY_ATTACHMENT, "", 1, "primary", -30, "loadout_primary_attachment" ) + +#define LOCAL_SIDEARM_INFO_WINDOW( highlight_dvar ) \ + \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT( 6 ) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ + LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 6 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN visible when( dvarString(ui_inside_popup) != "attachment" );, 0, 0 )\ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 30 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+138) -12 90 90 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/statsTable.csv",4,dvarString(highlight_dvar),6), 1 1 1 1, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 58 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 80 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR )\ + +#define LOCAL_SIDEARM_ACTION( pstat, weaponRef ) \ + play "mouse_click"; \ + setdvar loadout_secondary weaponRef; \ + setdvar loadout_secondary_attachment none; \ + scriptMenuResponse "loadout_secondary:"weaponRef;\ + PREPROC_ATTACH_CLOSEALL + +#define LOCAL_SIDEARM_ACTION2( pstat, weaponRef ) \ + play "mouse_click"; \ + setdvar loadout_secondary weaponRef; \ + setdvar loadout_secondary_attachment none; \ + scriptMenuResponse "loadout_secondary:"weaponRef;\ + uiScript openMenuOnDvar "selected_weapon_class" pistol "ocd_attachment_popup_pistol"; + +#define SI_FOCUS_ACTION( weaponRef ) \ + exec "set ui_sidearm_highlighted "weaponRef; + +#define LOCAL_SIDEARM_ITEM( itemNum, weaponName, weaponStat, weaponRef, highlight_dvar )\ + CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, weaponName, LOCAL_SIDEARM_ACTION( weaponStat, weaponRef ), SI_FOCUS_ACTION( weaponRef ), ;, \ + when( dvarBool( "weap_allow_"weaponRef ) && ( weaponRef == REF_DESERTEAGLE || weaponRef == REF_DESERTEAGLEGOLD ) );, \ + dvarBool( "weap_allow_"weaponRef ) && ( weaponRef == REF_DESERTEAGLE || weaponRef == REF_DESERTEAGLEGOLD ) ) \ + CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, weaponName, LOCAL_SIDEARM_ACTION2( weaponStat, weaponRef ), SI_FOCUS_ACTION( weaponRef ), ;, \ + when( dvarBool( "weap_allow_"weaponRef ) && weaponRef != REF_DESERTEAGLE && weaponRef != REF_DESERTEAGLEGOLD );, \ + dvarBool( "weap_allow_"weaponRef ) && weaponRef != REF_DESERTEAGLE && weaponRef != REF_DESERTEAGLEGOLD ) \ + CHOICE_BUTTON_FOCUS_VIS_NOHI( itemNum, "", ;, SI_FOCUS_ACTION( weaponRef ), ;, when( !dvarBool( "weap_allow_"weaponRef ) ); ) \ + CHOICE_DBUTTON_VIS( itemNum, weaponName, when( !dvarBool( "weap_allow_"weaponRef ) ); ) + +#undef UI_FOCUSFIRST +#define UI_FOCUSFIRST "ui_sidearm_highlighted" + +menuDef +{ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_secondary", 6, (CHOICE_X( 2 )-2), (CHOICE_Y( 2 )), ;, execnow "set "UI_FOCUSFIRST" "REF_M9BERETTA"; set selected_weapon_class pistol; set ui_inside_popup pistol";, 0 ) + onClose{execnow "set ui_inside_popup 0";} + LOCAL_SIDEARM_INFO_WINDOW( "ui_sidearm_highlighted" ) + LOCAL_SIDEARM_ITEM( 1, "1. Gold Desert Eagle", STAT_PISTOL_DESERTEAGLEGOLD, REF_DESERTEAGLEGOLD, "ui_sidearm_highlighted" ) + LOCAL_SIDEARM_ITEM( 2, "2. Desert Eagle", STAT_PISTOL_DESERTEAGLE, REF_DESERTEAGLE, "ui_sidearm_highlighted" ) + LOCAL_SIDEARM_ITEM( 3, "3. M1911 .45", STAT_PISTOL_COLT45, REF_COLT45, "ui_sidearm_highlighted" ) + LOCAL_SIDEARM_ITEM( 4, "4. USP .45", STAT_PISTOL_USP, REF_USP, "ui_sidearm_highlighted" ) + LOCAL_SIDEARM_ITEM( 5, "5. M9", STAT_PISTOL_M9BERETTA, REF_M9BERETTA, "ui_sidearm_highlighted" ) + + execKey "1" { LOCAL_SIDEARM_ACTION(STAT_PISTOL_DESERTEAGLEGOLD,REF_DESERTEAGLEGOLD); } + execKey "2" { LOCAL_SIDEARM_ACTION(STAT_PISTOL_DESERTEAGLE,REF_DESERTEAGLE); } + execKey "3" { LOCAL_SIDEARM_ACTION2(STAT_PISTOL_COLT45,REF_COLT45); } + execKey "4" { LOCAL_SIDEARM_ACTION2(STAT_PISTOL_USP,REF_USP); } + execKey "5" { LOCAL_SIDEARM_ACTION2(STAT_PISTOL_M9BERETTA,REF_M9BERETTA); } +} + +#define LOCAL_SGRENADE_INFO_WINDOW( highlight_dvar ) \ + \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT(5) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR ) \ + LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 5 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN visible when( dvarString(ui_inside_popup) != "attachment" );, 0, 0 )\ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 6 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR visible when( dvarString(ui_inside_popup) != "attachment" ); ) \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+178) -6 64 64 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/statsTable.csv",4,dvarString(highlight_dvar),6), 1 1 1 1, 0, 2, CHOICE_POPUP_BORDER_COLOR ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 34 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 56 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/statstable.csv",4,dvarString(highlight_dvar),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR ) + +#define LOCAL_SGRENADE_ACTION( weaponRef ) \ + play "mouse_click"; \ + setdvar loadout_grenade weaponRef; \ + scriptMenuResponse "loadout_grenade:"weaponRef;\ + close "ocd_popup_cac_extra" + +#define LOCAL_SGRENADE_ITEM( itemNum, weaponName, weaponStat, weaponRef, highlight_dvar )\ + CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, weaponName, LOCAL_SGRENADE_ACTION( weaponRef ), execnow "set "highlight_dvar" "weaponRef, ;, when( dvarBool("weap_allow_"weaponRef) );, dvarBool("weap_allow_"weaponRef) ) \ + CHOICE_DBUTTON_VIS( itemNum, weaponName, when( !dvarBool("weap_allow_"weaponRef) ); ) + +#undef UI_FOCUSFIRST +#define UI_FOCUSFIRST "ui_sgrenade_highlighted" + +menuDef +{ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_extra", 5, (CHOICE_X( 3 )-2), (CHOICE_Y( 3 )+4), ;, execnow "set "UI_FOCUSFIRST" "REF_FLASH_X1"; set ui_inside_popup sgrenade";, 0 ) + onClose{ execnow "set ui_inside_popup 0"; } + LOCAL_SGRENADE_INFO_WINDOW( "ui_sgrenade_highlighted" ) + LOCAL_SGRENADE_ITEM( 1, "1. Flash", STAT_FLASH_X1, REF_FLASH_X1, "ui_sgrenade_highlighted" ) + LOCAL_SGRENADE_ITEM( 2, "2. Smoke", STAT_SMOKE_X1, REF_SMOKE_X1, "ui_sgrenade_highlighted" ) + execKey "1" { LOCAL_SGRENADE_ACTION(REF_FLASH_X1); } + execKey "2" { LOCAL_SGRENADE_ACTION(REF_SMOKE_X1); } +} + + #define LOCAL_CAMO_INFO_WINDOW( highlight_dvar ) \ + \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH-6) -4 280 CHOICE_POPUP_HEIGHT( 7 ) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "white", CHOICE_POPUP_BORDER_COLOR, 1, 2, CHOICE_POPUP_BORDER_COLOR ) \ + LOADOUT_PLATING_RAW( CHOICE_POPUP_WIDTH 8, -2, 0, 280, (CHOICE_POPUP_HEIGHT( 7 )-4), CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0, 0 )\ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+6) 30 256 48 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "gradient_bottom", 1 1 1 0.3, 0, 2, CHOICE_POPUP_BORDER_COLOR ) \ + PREPROC_SHADER_DRAW_ALIGNED( (CHOICE_POPUP_WIDTH+184) 0 64 64 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, tablelookup("mp/attachmentTable.csv",4,dvarString(highlight_dvar),6), 1 1 1 0.75, 1, 7, 0.2 0.2 0.225 1 ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 58 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/attachmenttable.csv",4,dvarString(highlight_dvar),3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE ) \ + PREPROC_TEXT_DRAW_ALIGNED_EXP( (CHOICE_POPUP_WIDTH+10) 80 256 20 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, "@"+tablelookup("mp/attachmenttable.csv",4,dvarString(highlight_dvar),7), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR )\ + +#define LOCAL_CAMO_ACTION( camoRef ) \ + play "mouse_click"; \ + setdvar loadout_camo camoRef;\ + scriptMenuResponse "loadout_camo:" camoRef;\ + PREPROC_ATTACH_CLOSEALL + +#define LOCAL_CAMO_ITEM( itemNum, camoName, pnum, camoRef, highlight_dvar, bitMask, visArg )\ + CHOICE_BUTTON_FOCUS( itemNum, camoName, LOCAL_CAMO_ACTION( camoRef );, execnow "set "highlight_dvar" "camoRef;, ; ); + +#define LOCAL_CAMO_ITEM2( itemNum, camoName, pnum, camoRef, highlight_dvar, bitMask, visArg )\ + CHOICE_BUTTON_FOCUS_VIS( itemNum, camoName, LOCAL_CAMO_ACTION( camoRef );, execnow "set "highlight_dvar" "camoRef;, ;, when( dvarString( loadout_primary ) == "ak47" || dvarString( loadout_primary ) == "uzi" || dvarString( loadout_primary ) == "m1014" ) ) \ + CHOICE_DBUTTON_VIS( itemNum, camoName, when( dvarString( loadout_primary ) != "ak47" && dvarString( loadout_primary ) != "uzi" && dvarString( loadout_primary ) != "m1014" ) ) + +#undef UI_FOCUSFIRST +#define UI_FOCUSFIRST "ui_camo_highlighted" + +#define LOCAL_CAMO_GROUP( prefix, onLeave )\ +menuDef \ +{\ + IMPROVED_POPUP_SETUP_ONOPEN( "ocd_popup_cac_camo"prefix, 7, (CHOICE_X( 1 )-2), (CHOICE_Y( 1 )+68), ;, execnow "set "UI_FOCUSFIRST" "REF_CAMO_NONE"; set ui_inside_popup camo";, 0 )\ + onClose{onLeave;} \ + LOCAL_CAMO_INFO_WINDOW( "ui_camo_highlighted" )\ + LOCAL_CAMO_ITEM( 1, "1. None", CAMO_NONE, REF_CAMO_NONE, "ui_camo_highlighted", 0, 1 )\ + LOCAL_CAMO_ITEM( 2, "2. Desert", CAMO_BROCKHUARD, REF_BROCKHUARD, "ui_camo_highlighted", DESERT_NEW_BITMASK, 1 )\ + LOCAL_CAMO_ITEM( 3, "3. Woodland", CAMO_BUSHDWELLER, REF_BUSHDWELLER, "ui_camo_highlighted", WOODLAND_NEW_BITMASK, 1 )\ + LOCAL_CAMO_ITEM( 4, "4. Digital", CAMO_BLACKWHITEMARPAT, REF_BLACKWHITEMARPAT, "ui_camo_highlighted", DIGITAL_NEW_BITMASK, 1 )\ + LOCAL_CAMO_ITEM( 5, "5. Red Tiger", CAMO_TIGERRED, REF_TIGERRED, "ui_camo_highlighted", REDTIGER_NEW_BITMASK, 1 )\ + LOCAL_CAMO_ITEM( 6, "6. Blue Tiger", CAMO_STAGGER, REF_STAGGER, "ui_camo_highlighted", BLUETIGER_NEW_BITMASK, 1 )\ + LOCAL_CAMO_ITEM2( 7, "7. Golden", CAMO_GOLDEN, REF_GOLDEN, "ui_camo_highlighted", GOLDEN_NEW_BITMASK, 1 )\ + execKey "1" { LOCAL_CAMO_ACTION(REF_CAMO_NONE); }\ + execKey "2" { LOCAL_CAMO_ACTION(REF_BROCKHUARD); }\ + execKey "3" { LOCAL_CAMO_ACTION(REF_BUSHDWELLER); }\ + execKey "4" { LOCAL_CAMO_ACTION(REF_BLACKWHITEMARPAT); }\ + execKey "5" { LOCAL_CAMO_ACTION(REF_TIGERRED); }\ + execKey "6" { LOCAL_CAMO_ACTION(REF_STAGGER); }\ + execKey "7" { LOCAL_CAMO_ACTION(REF_GOLDEN); }\ +} + +LOCAL_CAMO_GROUP( "", execnow "set ui_inside_popup attachment" ) diff --git a/ui_mp/cac_loadout_ingame.inc b/ui_mp/cac_loadout_ingame.inc index 46cad0b..c070fc0 100644 --- a/ui_mp/cac_loadout_ingame.inc +++ b/ui_mp/cac_loadout_ingame.inc @@ -1,52 +1,52 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#define LOADOUT_WIDTH 270 -#define ORIGIN_LOADOUT ((-(LOADOUT_WIDTH - RIGHTITEM_OFFSET))-80) 38 -#define LOADOUT_ALIGN RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP -#define LOADOUT_PLATING( py, ph, vis_gradient_top, vis_gradient_bottom ) \ - LOADOUT_PLATING_RAW( ORIGIN_LOADOUT, 0, py, (LOADOUT_WIDTH+8), ph, LOADOUT_ALIGN, vis_gradient_top, vis_gradient_bottom ) - -PREPROC_SHADER_DRAW_ALIGNED( -4 0 (LOADOUT_WIDTH+8) 210 LOADOUT_ALIGN, ORIGIN_LOADOUT, "gradient_center", 0.3 0.3 0.325 0.6, 0, 0, 0 0 0 0 ) -PREPROC_SHADER_DRAW_ALIGNED( 274 -4 20 222 LOADOUT_ALIGN, ORIGIN_LOADOUT, "gradient", 1 1 1 0.65, 0, 0, 0 0 0 0 ) -PREPROC_SHADER_DRAW_ALIGNED( -24 -4 -20 222 LOADOUT_ALIGN, ORIGIN_LOADOUT, "gradient", 1 1 1 0.65, 0, 0, 0 0 0 0 ) - -PREPROC_SHADER_DRAW_ALIGNED( -4 4 ((LOADOUT_WIDTH+8)/4) 80 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 11, STAT_CAC_CAMO, 6 ), 1 1 1 0.5, 0, 1, 1 1 1 1) -PREPROC_SHADER_DRAW_ALIGNED( (((LOADOUT_WIDTH+8)/4)-4) 4 ((LOADOUT_WIDTH+8)/4) 80 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 11, STAT_CAC_CAMO, 6 ), 1 1 1 0.5, 0, 1, 1 1 1 1) -PREPROC_SHADER_DRAW_ALIGNED( (((LOADOUT_WIDTH+8)/2)-4) 4 ((LOADOUT_WIDTH+8)/4) 80 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 11, STAT_CAC_CAMO, 6 ), 1 1 1 0.5, 0, 1, 1 1 1 1) -PREPROC_SHADER_DRAW_ALIGNED( ((((LOADOUT_WIDTH+8)/4)*3)-4) 4 ((LOADOUT_WIDTH+8)/4) 80 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 11, STAT_CAC_CAMO, 6 ), 1 1 1 0.5, 0, 1, 1 1 1 1) - -LOADOUT_PLATING( 4, 8, 0, 1 ) -LOADOUT_PLATING( 218, 8, 1, 0 ) -LOADOUT_PLATING( 92, 8, 1, 1 ) -LOADOUT_PLATING( 180, 8, 1, 1 ) - -PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 8 (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, "@"+tablelookup("mp/statstable.csv", 0, STAT_CAC_PRIMARY, 3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE ) - -PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 62 (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, "@"+tablelookup("mp/attachmenttable.csv", 9, STAT_CAC_PRIMARY_ATTACHMENT, 3), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR ) - -PREPROC_SHADER_DRAW_ALIGNED( 74 -2 180 90 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/statstable.csv", 0, STAT_CAC_PRIMARY, 6 ), 1 1 1 1, 0, 1, 1 1 1 1) - -PREPROC_SHADER_DRAW_ALIGNED( 2 30 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 9, STAT_CAC_PRIMARY_ATTACHMENT, 6 ), 1 1 1 1, 0, 1, 1 1 1 1) - -PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 (20+76) (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, "@" + tablelookup("mp/statstable.csv", 0, STAT_CAC_SECONDARY, 3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE ) - -PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 (74+76) (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, "@"+tablelookup("mp/attachmenttable.csv", 9, STAT_CAC_SECONDARY_ATTACHMENT, 3), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR ) - -PREPROC_SHADER_DRAW_ALIGNED( 160 (6+80) 90 90 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/statstable.csv", 0, STAT_CAC_SECONDARY, 6 ), 1 1 1 1, 0, 1, 1 1 1 1 ) - -PREPROC_SHADER_DRAW_ALIGNED( 2 118 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 9, STAT_CAC_SECONDARY_ATTACHMENT, 6 ), 1 1 1 1, 0, 1, 1 1 1 1) - -PREPROC_SHADER_DRAW_ALIGNED( 3 178 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, "weapon_fraggrenade", 1 1 1 1, 0, 1, 1 1 1 1 visible when( dvarInt( weap_allow_frag_grenade ) != "0" ) ) -PREPROC_SHADER_DRAW_ALIGNED( 32 178 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, "weapon_smokegrenade", 1 1 1 1, 0, 1, 1 1 1 1 visible when( dvarInt( weap_allow_smoke_grenade ) != 0 && dvarString( loadout_grenade ) == "smoke_grenade" ) ) -PREPROC_SHADER_DRAW_ALIGNED( 32 178 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, "weapon_flashbang", 1 1 1 1, 0, 1, 1 1 1 1 visible when( dvarInt( weap_allow_flash_grenade ) != 0 && dvarString( loadout_grenade ) == "flash_grenade" ) ) - -PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 183 (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, 1, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarInt( weap_allow_frag_grenade ) != "0" ) ) -PREPROC_TEXT_DRAW_ALIGNED_EXP( 30 183 (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, 1, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarInt( weap_allow_flash_grenade ) != "0" && dvarInt( weap_allow_smoke_grenade ) != "0" ) ) \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#define LOADOUT_WIDTH 270 +#define ORIGIN_LOADOUT ((-(LOADOUT_WIDTH - RIGHTITEM_OFFSET))-80) 38 +#define LOADOUT_ALIGN RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP +#define LOADOUT_PLATING( py, ph, vis_gradient_top, vis_gradient_bottom ) \ + LOADOUT_PLATING_RAW( ORIGIN_LOADOUT, 0, py, (LOADOUT_WIDTH+8), ph, LOADOUT_ALIGN, vis_gradient_top, vis_gradient_bottom ) + +PREPROC_SHADER_DRAW_ALIGNED( -4 0 (LOADOUT_WIDTH+8) 210 LOADOUT_ALIGN, ORIGIN_LOADOUT, "gradient_center", 0.3 0.3 0.325 0.6, 0, 0, 0 0 0 0 ) +PREPROC_SHADER_DRAW_ALIGNED( 274 -4 20 222 LOADOUT_ALIGN, ORIGIN_LOADOUT, "gradient", 1 1 1 0.65, 0, 0, 0 0 0 0 ) +PREPROC_SHADER_DRAW_ALIGNED( -24 -4 -20 222 LOADOUT_ALIGN, ORIGIN_LOADOUT, "gradient", 1 1 1 0.65, 0, 0, 0 0 0 0 ) + +PREPROC_SHADER_DRAW_ALIGNED( -4 4 ((LOADOUT_WIDTH+8)/4) 80 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 11, STAT_CAC_CAMO, 6 ), 1 1 1 0.5, 0, 1, 1 1 1 1) +PREPROC_SHADER_DRAW_ALIGNED( (((LOADOUT_WIDTH+8)/4)-4) 4 ((LOADOUT_WIDTH+8)/4) 80 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 11, STAT_CAC_CAMO, 6 ), 1 1 1 0.5, 0, 1, 1 1 1 1) +PREPROC_SHADER_DRAW_ALIGNED( (((LOADOUT_WIDTH+8)/2)-4) 4 ((LOADOUT_WIDTH+8)/4) 80 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 11, STAT_CAC_CAMO, 6 ), 1 1 1 0.5, 0, 1, 1 1 1 1) +PREPROC_SHADER_DRAW_ALIGNED( ((((LOADOUT_WIDTH+8)/4)*3)-4) 4 ((LOADOUT_WIDTH+8)/4) 80 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 11, STAT_CAC_CAMO, 6 ), 1 1 1 0.5, 0, 1, 1 1 1 1) + +LOADOUT_PLATING( 4, 8, 0, 1 ) +LOADOUT_PLATING( 218, 8, 1, 0 ) +LOADOUT_PLATING( 92, 8, 1, 1 ) +LOADOUT_PLATING( 180, 8, 1, 1 ) + +PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 8 (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, "@"+tablelookup("mp/statstable.csv", 0, STAT_CAC_PRIMARY, 3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE ) + +PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 62 (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, "@"+tablelookup("mp/attachmenttable.csv", 9, STAT_CAC_PRIMARY_ATTACHMENT, 3), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR ) + +PREPROC_SHADER_DRAW_ALIGNED( 74 -2 180 90 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/statstable.csv", 0, STAT_CAC_PRIMARY, 6 ), 1 1 1 1, 0, 1, 1 1 1 1) + +PREPROC_SHADER_DRAW_ALIGNED( 2 30 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 9, STAT_CAC_PRIMARY_ATTACHMENT, 6 ), 1 1 1 1, 0, 1, 1 1 1 1) + +PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 (20+76) (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, "@" + tablelookup("mp/statstable.csv", 0, STAT_CAC_SECONDARY, 3), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE ) + +PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 (74+76) (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, "@"+tablelookup("mp/attachmenttable.csv", 9, STAT_CAC_SECONDARY_ATTACHMENT, 3), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR ) + +PREPROC_SHADER_DRAW_ALIGNED( 160 (6+80) 90 90 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/statstable.csv", 0, STAT_CAC_SECONDARY, 6 ), 1 1 1 1, 0, 1, 1 1 1 1 ) + +PREPROC_SHADER_DRAW_ALIGNED( 2 118 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 9, STAT_CAC_SECONDARY_ATTACHMENT, 6 ), 1 1 1 1, 0, 1, 1 1 1 1) + +PREPROC_SHADER_DRAW_ALIGNED( 3 178 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, "weapon_fraggrenade", 1 1 1 1, 0, 1, 1 1 1 1 visible when( dvarInt( weap_allow_frag_grenade ) != "0" ) ) +PREPROC_SHADER_DRAW_ALIGNED( 32 178 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, "weapon_smokegrenade", 1 1 1 1, 0, 1, 1 1 1 1 visible when( dvarInt( weap_allow_smoke_grenade ) != 0 && dvarString( loadout_grenade ) == "smoke_grenade" ) ) +PREPROC_SHADER_DRAW_ALIGNED( 32 178 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, "weapon_flashbang", 1 1 1 1, 0, 1, 1 1 1 1 visible when( dvarInt( weap_allow_flash_grenade ) != 0 && dvarString( loadout_grenade ) == "flash_grenade" ) ) + +PREPROC_TEXT_DRAW_ALIGNED_EXP( 0 183 (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, 1, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarInt( weap_allow_frag_grenade ) != "0" ) ) +PREPROC_TEXT_DRAW_ALIGNED_EXP( 30 183 (LOADOUT_WIDTH+8) 20 LOADOUT_ALIGN, ORIGIN_LOADOUT, 1, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, COLOR_TITLE visible when( dvarInt( weap_allow_flash_grenade ) != "0" && dvarInt( weap_allow_smoke_grenade ) != "0" ) ) diff --git a/ui_mp/connect.menu b/ui_mp/connect.menu index 9493caf..d6bd666 100644 --- a/ui_mp/connect.menu +++ b/ui_mp/connect.menu @@ -1,44 +1,44 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -{ - menuDef - { - name "connect" - style WINDOW_STYLE_FILLED - fullScreen MENU_FALSE - focusColor COLOR_FOCUSED - visible MENU_FALSE - backcolor 1 1 1 1 - background "$levelBriefing" - rect FULLSCREEN_WIDE - - itemDef - { - style WINDOW_STYLE_FILLED - rect -128 -40 260 4 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM - origin 107 0 - backcolor 0 0 0 0.8 - visible 1 - decoration - } - itemDef - { - name "loadbar" - style WINDOW_STYLE_LOADBAR - rect -127 -39 258 2 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM - origin 107 0 - background "white" - visible 1 - decoration - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +{ + menuDef + { + name "connect" + style WINDOW_STYLE_FILLED + fullScreen MENU_FALSE + focusColor COLOR_FOCUSED + visible MENU_FALSE + backcolor 1 1 1 1 + background "$levelBriefing" + rect FULLSCREEN_WIDE + + itemDef + { + style WINDOW_STYLE_FILLED + rect -128 -40 260 4 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM + origin 107 0 + backcolor 0 0 0 0.8 + visible 1 + decoration + } + itemDef + { + name "loadbar" + style WINDOW_STYLE_LOADBAR + rect -127 -39 258 2 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM + origin 107 0 + background "white" + visible 1 + decoration + } + } +} diff --git a/ui_mp/controls_multi.menu b/ui_mp/controls_multi.menu index 0b98675..7e0fcc3 100644 --- a/ui_mp/controls_multi.menu +++ b/ui_mp/controls_multi.menu @@ -1,73 +1,73 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" -#define CHOICE_SEP_1 26 -#define CHOICE_SEP_2 33 -#define OPTIONS_STYLE 1 -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -{ - menuDef - { - name "controls_multi" - fullScreen 0 - rect 0 0 640 480 - focusColor COLOR_FOCUSED - onOpen - { - setLocalVarBool ui_hideBack 1; - } - onClose - { - setLocalVarBool ui_hideBack 0; - } - onESC - { - close self; - } - - #include "ui_mp/leftside_controls.inc" - - #undef CHOICE_SIZE_Y - #define CHOICE_SIZE_Y 20 - - CHOICE_SECTION_TITLE( 21, "@MENU_MULTIPLAYER_CONTROLS" ) - - CHOICE_BIND( 22, "@MENU_VOTE_YES", "vote yes", ; ) - CHOICE_BIND( 23, "@MENU_VOTE_NO", "vote no", ; ) - CHOICE_BIND( 24, "@MENU_CHAT", "chatmodepublic", ; ) - CHOICE_BIND( 25, "@MENU_TEAM_CHAT", "chatmodeteam", ; ) - CHOICE_BIND( 26, "@MENU_QUICK_CHAT", "mp_QuickMessage", ; ) - - CHOICE_SEPARATOR( CHOICE_SEP_1 ) - - CHOICE_BIND( 27, "Assault Class", "openscriptmenu quickpromod assault", ; ) - CHOICE_BIND( 28, "Spec Ops Class", "openscriptmenu quickpromod specops", ; ) - CHOICE_BIND( 29, "Demolitions Class", "openscriptmenu quickpromod demolitions", ; ) - CHOICE_BIND( 30, "Sniper Class", "openscriptmenu quickpromod sniper", ; ) - CHOICE_BIND( 31, "Change Class Menu", "openscriptmenu quickpromod X", ; ) - CHOICE_BIND( 32, "Call Timeout", "openscriptmenu quickpromod 1", ; ) - CHOICE_BIND( 33, "Drop Bomb", "openscriptmenu quickpromod 2", ; ) - - CHOICE_SEPARATOR( CHOICE_SEP_2 ) - - CHOICE_BIND( 34, "Toggle Grenade", "openscriptmenu quickpromod grenade", ; ) - CHOICE_BIND( 35, "Toggle Silencer", "openscriptmenu quickpromod silencer", ; ) - CHOICE_BIND( 36, "Toggle Lighting", "openscriptmenu quickpromodgfx 1", ; ) - CHOICE_BIND( 37, "Toggle Film Tweaks", "openscriptmenu quickpromodgfx 2", ; ) - CHOICE_BIND( 38, "Toggle Normal Map", "openscriptmenu quickpromodgfx 4", ; ) - CHOICE_BIND( 39, "Toggle FOV Scale", "openscriptmenu quickpromodgfx 5", ; ) - - CHOICE_KEYBINDHELP - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" +#define CHOICE_SEP_1 26 +#define CHOICE_SEP_2 33 +#define OPTIONS_STYLE 1 +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +{ + menuDef + { + name "controls_multi" + fullScreen 0 + rect 0 0 640 480 + focusColor COLOR_FOCUSED + onOpen + { + setLocalVarBool ui_hideBack 1; + } + onClose + { + setLocalVarBool ui_hideBack 0; + } + onESC + { + close self; + } + + #include "ui_mp/leftside_controls.inc" + + #undef CHOICE_SIZE_Y + #define CHOICE_SIZE_Y 20 + + CHOICE_SECTION_TITLE( 21, "@MENU_MULTIPLAYER_CONTROLS" ) + + CHOICE_BIND( 22, "@MENU_VOTE_YES", "vote yes", ; ) + CHOICE_BIND( 23, "@MENU_VOTE_NO", "vote no", ; ) + CHOICE_BIND( 24, "@MENU_CHAT", "chatmodepublic", ; ) + CHOICE_BIND( 25, "@MENU_TEAM_CHAT", "chatmodeteam", ; ) + CHOICE_BIND( 26, "@MENU_QUICK_CHAT", "mp_QuickMessage", ; ) + + CHOICE_SEPARATOR( CHOICE_SEP_1 ) + + CHOICE_BIND( 27, "Assault Class", "openscriptmenu quickpromod assault", ; ) + CHOICE_BIND( 28, "Spec Ops Class", "openscriptmenu quickpromod specops", ; ) + CHOICE_BIND( 29, "Demolitions Class", "openscriptmenu quickpromod demolitions", ; ) + CHOICE_BIND( 30, "Sniper Class", "openscriptmenu quickpromod sniper", ; ) + CHOICE_BIND( 31, "Change Class Menu", "openscriptmenu quickpromod X", ; ) + CHOICE_BIND( 32, "Call Timeout", "openscriptmenu quickpromod 1", ; ) + CHOICE_BIND( 33, "Drop Bomb", "openscriptmenu quickpromod 2", ; ) + + CHOICE_SEPARATOR( CHOICE_SEP_2 ) + + CHOICE_BIND( 34, "Toggle Grenade", "openscriptmenu quickpromod grenade", ; ) + CHOICE_BIND( 35, "Toggle Silencer", "openscriptmenu quickpromod silencer", ; ) + CHOICE_BIND( 36, "Toggle Lighting", "openscriptmenu quickpromodgfx 1", ; ) + CHOICE_BIND( 37, "Toggle Film Tweaks", "openscriptmenu quickpromodgfx 2", ; ) + CHOICE_BIND( 38, "Toggle Normal Map", "openscriptmenu quickpromodgfx 4", ; ) + CHOICE_BIND( 39, "Toggle FOV Scale", "openscriptmenu quickpromodgfx 5", ; ) + + CHOICE_KEYBINDHELP + } +} diff --git a/ui_mp/hud.menu b/ui_mp/hud.menu index b097ab5..16db5a8 100644 --- a/ui_mp/hud.menu +++ b/ui_mp/hud.menu @@ -1,1216 +1,1216 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" - -#define TEAM_IS_MARINES (localVarString( ui_team ) == "marines") -#define TEAM_IS_OPFOR (localVarString( ui_team ) == "opfor") -#define NOT_SPECTATING (!spectatingClient()) -#define DVAR_ENFORCER ( !dvarint( sv_cheats ) && team( name ) != "TEAM_SPECTATOR" && ( dvarint( com_maxfps ) > 250 || dvarint( com_maxfps ) < 40 || dvarint( cl_maxpackets ) != 100 || dvarint( rate ) != 25000 || dvarint( dynent_active ) || dvarfloat( cg_hudDamageIconWidth ) != 128 || dvarfloat( cg_hudDamageIconHeight ) != 64 || dvarint( cg_huddamageiconinscope ) || dvarfloat( cg_huddamageiconoffset ) != 128 || dvarint( cg_huddamageicontime ) != 2000 || dvarfloat( cg_viewZSmoothingMin ) != 1 || dvarfloat( cg_viewZSmoothingMax ) != 16 || dvarfloat( cg_viewZSmoothingTime ) != 0.1 || dvarint( r_filmtweakInvert ) || dvarint( r_dlightlimit ) || dvarfloat( r_lodscalerigid ) != 1 || dvarfloat( r_lodscaleskinned ) != 1 || dvarint( sm_enable ) || dvarint( cg_nopredict ) || dvarint( developer ) || dvarint( r_zfeather ) || dvarfloat( phys_gravity ) != "-800" ) ) -#define DVAR_ENFORCER_NOSND ( !dvarint( sv_cheats ) && team( name ) != "TEAM_SPECTATOR" && ( dvarint( aim_automelee_enabled ) || dvarfloat( compassplayerwidth ) != dvarfloat( compassplayerheight ) || dvarfloat( compassfriendlywidth ) != dvarfloat( compassfriendlyheight ) ) ) -#define DVAR_BLANK ( dvarString( ui_showmenuonly ) == "" ) -#define HUD_ALPHA 0.65 -#define HUD_FOREGROUND_ALPHA 0.75 - -#define ENFORCE( condition, txt, position ) \ - itemDef \ - { \ - rect 0 position 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \ - origin 107 0 \ - forecolor 1 0 0 1 \ - backcolor 1 0 0 1 \ - exp text( txt ); \ - textfont UI_FONT_OBJECTIVE \ - textscale 0.5 \ - textalign ITEM_ALIGN_CENTER \ - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE \ - visible when( condition ) \ - decoration \ - } - -#define HEALTHBAR( dvarName, mat, n, num ) \ - itemDef \ - { \ - style WINDOW_STYLE_SHADER \ - origin 0 0 \ - rect 0 0 128 16 HB_RECT 1 \ - exp rect X( (-128 * int(dvarName == "allies")) + (127 * (2*int(dvarName == "allies")-1) * dvarfloat("shout_health"+num) ) ); \ - exp rect Y( 207 + n * 18 ); \ - exp material( mat ); \ - textalign SHOUT_TEXT_ALIGN \ - visible when( dvarString( "shout_name"+num ) != "" ) \ - decoration \ - } \ - itemDef \ - { \ - rect 0 0 1 1 HB_RECT 1 \ - origin 0 0 \ - exp rect X( (2*int(dvarName == "allies")-1) * 5 - 2* int(dvarName == "axis") ); \ - exp rect Y( 223 + n * 18 ); \ - forecolor 1 1 1 1 \ - exp text( dvarString( "shout_name"+num ) ); \ - textstyle ITEM_TEXTSTYLE_SHADOWED \ - textalign SHOUT_TEXT_ALIGN \ - textscale 0.36 \ - textfont UI_FONT_DEFAULT \ - visible when( dvarString( "shout_name"+num ) != "" && dvarFloat( "shout_health"+num ) != "0" ) \ - decoration \ - } \ - itemDef \ - { \ - rect 0 0 1 1 HB_RECT 1 \ - origin 0 0 \ - exp rect X( (2*int(dvarName == "allies")-1) * 5 - 2* int(dvarName == "axis") ); \ - exp rect Y( 223 + n * 18 ); \ - forecolor 0.5 0.5 0.5 1 \ - exp text( dvarString( "shout_name"+num ) ); \ - textstyle ITEM_TEXTSTYLE_SHADOWED \ - textalign SHOUT_TEXT_ALIGN \ - textscale 0.36 \ - textfont UI_FONT_DEFAULT \ - visible when( dvarString( "shout_name"+num ) != "" && dvarFloat( "shout_health"+num ) == "0" ) \ - decoration \ - } - -#define BOTTOM_RECT_X 0 -#define BOTTOM_RECT_Y 0 - -#define MINIMAP_ORIGIN 2 11 -{ - assetGlobalDef - { - fadeClamp 1 - fadeCycle 1 - fadeAmount 0.1 - } - - menuDef - { - name "Low Health" - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - fullScreen 0 - visible 1 - - itemDef - { - name "healthoverlay" - rect 0 0 640 480 - forecolor 1 1 1 1 - background "overlay_low_health" - ownerdraw CG_PLAYER_LOW_HEALTH_OVERLAY - visible 1 - decoration - } - } - - menuDef - { - name "MantleHint" - rect 0 105 40 40 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER - fullScreen 0 - visible when( !dvarInt( ui_hud_hardcore ) && NOT_SPECTATING ) - - itemDef - { - name "chRect" - rect 0 0 40 40 - textscale TEXTSIZE_SMALL - textstyle ITEM_TEXTSTYLE_SHADOWED - ownerdraw CG_MANTLE_HINT - visible 1 - decoration - } - } - - menuDef - { - name "Cursorhints" - rect 0 60 40 40 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER - fullScreen 0 - visible when( !dvarInt( ui_hud_hardcore ) && !ui_active() && NOT_SPECTATING ) - - itemDef - { - name "chRect" - rect 0 0 40 40 - textscale TEXTSIZE_SMALL - textstyle ITEM_TEXTSTYLE_SHADOWED - ownerdraw CG_CURSORHINT - visible 1 - decoration - } - } - - menuDef - { - name "InvalidCmdHint" - rect 0 -150 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER - fullScreen 0 - visible when( NOT_SPECTATING ) - - itemDef - { - name "chRect" - rect 0 0 0 0 - textscale TEXTSIZE_SMALL - textstyle ITEM_TEXTSTYLE_SHADOWED - ownerdraw CG_INVALID_CMD_HINT - textfont UI_FONT_NORMAL - visible 1 - decoration - } - } - - menuDef - { - name "stance" - rect -1000 -1000 48 48 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - fullScreen 0 - visible when( !flashbanged() && !ui_active() && NOT_SPECTATING ); - - itemDef - { - name "chRect" - rect 0 0 80 80 - ownerdraw CG_PLAYER_STANCE - textfont UI_FONT_OBJECTIVE - visible when( !inkillcam() && !dvarint( ui_hud_hardcore ) ); - textscale TEXTSIZE_SMALL - textstyle ITEM_TEXTSTYLE_SHADOWED - forecolor 1 1 1 HUD_ALPHA - decoration - } - } - - #define RECT_COMPASS 0 0 COMPASS_SIZE_MP COMPASS_SIZE_MP HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - #undef MINIMAP_ORIGIN - #define MINIMAP_ORIGIN 6 6 - - menuDef - { - name "Compass_old" - rect RECT_COMPASS - fullScreen 0 - visible when ( !inkillcam() && !flashbanged() && !ui_active() && !scoped() && DVAR_BLANK && (!dvarint( ui_hud_hardcore ) || dvarInt( g_compassShowEnemies ) ) ); - - itemDef - { - name "minimapBG" - rect (MINIMAP_X_MP - 14) (MINIMAP_Y_MP - 6) COMPASS_SIZE_MP COMPASS_SIZE_MP - origin MINIMAP_ORIGIN - forecolor 1 1 1 1 - background "minimap_background" - ownerdraw CG_PLAYER_COMPASS_BACK - visible 1 - decoration - } - itemDef - { - name "minimapTickerBorder" - rect MINIMAP_X_MP (MINIMAP_Y_MP - 15) MINIMAP_W_MP 14 - origin MINIMAP_ORIGIN - forecolor 1 1 1 1 - background "minimap_tickertape_background" - ownerdraw CG_PLAYER_COMPASS_BACK - visible 1 - decoration - } - itemDef - { - name "minimapTicker" - rect MINIMAP_X_MP (MINIMAP_Y_MP - 12) MINIMAP_W_MP 9 - origin MINIMAP_ORIGIN - forecolor 1 1 1 1 - background "minimap_tickertape_mp" - ownerdraw CG_PLAYER_COMPASS_TICKERTAPE_NO_OBJ - visible 1 - decoration - } - itemDef - { - name "mini_map" - rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP - origin MINIMAP_ORIGIN - forecolor 1 1 1 1 - background "compass_map_default" - ownerdraw CG_PLAYER_COMPASS_MAP - visible 1 - decoration - } - itemDef - { - name "compasspointers" - rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP - origin MINIMAP_ORIGIN - forecolor 1 1 1 1 - background "objective_line" - ownerdraw CG_PLAYER_COMPASS_POINTERS - visible when ( dvarint( ui_hud_showobjicons ) > 0 ); - decoration - } - itemDef - { - name "compassfriendlies" - rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP - origin MINIMAP_ORIGIN - forecolor 1 1 1 1 - ownerdraw CG_PLAYER_COMPASS_FRIENDS - visible 1 - } - itemDef - { - name "compassenemies" - rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP - origin MINIMAP_ORIGIN - forecolor 1 1 1 1 - ownerdraw CG_PLAYER_COMPASS_ENEMIES - visible 1 - } - itemDef - { - name "compassplayer" - rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP - origin MINIMAP_ORIGIN - forecolor 1 1 1 1 - background "compassping_player" - ownerdraw CG_PLAYER_COMPASS_PLAYER - visible 1 - } - } - - menuDef - { - name "DPad" - backcolor 1 1 1 1 - background "$levelBriefing" - rect FULLSCREEN_WIDE - style WINDOW_STYLE_FILLED - fullScreen MENU_FALSE - visible when( team( name ) == "TEAM_FREE" && dvarString( g_gametype ) != "dm" ) - } - - menuDef - { - name "xpbar" - fullScreen 0 - visible when( DVAR_ENFORCER ); - soundloop "weap_ak47_fire_plr" - } - - menuDef - { - name "FullScreenMap" - fullScreen 0 - visible when( dvarString( self_ready ) != "" && !ui_active() ); - - itemDef - { - rect -37 88 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Waiting On" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 0.8 1 1 1 - visible 1 - decoration - } - itemDef - { - rect -37 108 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - exp text(dvarint(waiting_on)) - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 0.98 0.98 0.6 1 - visible 1 - decoration - } - itemDef - { - rect -37 128 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Players" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 0.8 1 1 1 - visible when( dvarInt( waiting_on ) > 1 ) - decoration - } - itemDef - { - rect -37 128 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Player" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 0.8 1 1 1 - visible when( dvarInt( waiting_on ) < 2 ) - decoration - } - itemDef - { - rect -37 153 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Status" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 0.8 1 1 1 - visible 1 - decoration - } - itemDef - { - rect -37 168 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Ready" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 0.73 0.99 0.73 1 - visible when ( dvarInt( self_ready ) ) - decoration - } - itemDef - { - rect -37 168 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Not Ready" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 1 0.66 0.66 1 - visible when ( !dvarInt( self_ready ) ) - decoration - } - itemDef - { - rect -37 318 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Killing" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 0.8 1 1 1 - visible when ( dvarString( self_kills ) == "" && team( name ) != "TEAM_SPECTATOR" ) - decoration - } - itemDef - { - rect -37 333 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Disabled" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 1 0.66 0.66 1 - visible when ( dvarString( self_kills ) == "" && team( name ) != "TEAM_SPECTATOR" ) - decoration - } - itemDef - { - rect -37 318 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - text "Kills" - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 0.8 1 1 1 - visible when ( dvarString( self_kills ) != "" && team( name ) != "TEAM_SPECTATOR" ) - decoration - } - itemDef - { - rect -37 333 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - exp text(dvarint(self_kills)) - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale 0.35 - textfont UI_FONT_DEFAULT - forecolor 1 0.66 0.66 1 - visible when ( dvarString( self_kills ) != "" && team( name ) != "TEAM_SPECTATOR" ) - decoration - } - } - - #define SCORE_OFFSET_X 4 - #define SCORE_OFFSET_Y 2 - - #define TEAM_IS_LOSING (team(score) < otherteam(score)) - #define PLAYER_IS_LOSING (player(score) < scoreatrank(1)) - - #define SHOULD_DISPLAY_SCOREBAR ( team( name ) != "TEAM_SPECTATOR" ) - #define PROMOD_SB ( dvarBool( cg_voiceIconSize ) ) - - menuDef - { - name "scorebars" - rect (BOTTOM_RECT_X+SCORE_OFFSET_X) (BOTTOM_RECT_Y+SCORE_OFFSET_Y) 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - exp rect Y( BOTTOM_RECT_Y - 10 ); - fullScreen 0 - visible when( !inkillcam() && !ui_active() && !dvarint( ui_hud_hardcore ) && (!dvarint( sv_cheats ) || dvarint( sv_cheats ) && !dvarint( promod_movie_hidescorebar ) ) ); - - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -45 128 64 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -45 + (TEAM_IS_LOSING*20) ); - exp rect H( 64 - (TEAM_IS_LOSING*128) ); - forecolor 1 1 1 HUD_ALPHA - background "scorebar_backdrop" - visible when( team( name ) != "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -45 128 64 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -45 + (PLAYER_IS_LOSING*20) ); - exp rect H( 64 - (PLAYER_IS_LOSING*128) ); - forecolor 1 1 1 HUD_ALPHA - background "scorebar_backdrop" - visible when( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 5 -5 - exp material( dvarString( "g_TeamIcon_Allies" ) ); - visible when ( team( name ) == "TEAM_ALLIES" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 5 -5 - exp material( dvarString( "g_TeamIcon_Allies" ) ); - visible when ( team( name ) == "TEAM_SPECTATOR" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 5 -5 - exp material( dvarString( "g_TeamIcon_Axis" ) ); - visible when ( team( name ) == "TEAM_AXIS" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 5 -5 - exp material( dvarString( "g_TeamIcon_Allies" ) ); - visible when ( team( name ) == "TEAM_FREE" && TEAM_IS_MARINES && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 5 -5 - exp material( dvarString( "g_TeamIcon_Axis" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( team( name ) == "TEAM_FREE" && TEAM_IS_OPFOR && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 46 -41 80 12 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -41 + 0-(TEAM_IS_LOSING*24) ); - background "white" - forecolor 1 1 1 0.25 - visible when ( team( name ) != "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 46 -41 80 12 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -41 + 0-(PLAYER_IS_LOSING*24) ); - background "white" - forecolor 1 1 1 0.25 - visible when ( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 128 -47 24 24 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -47 + 0-(TEAM_IS_LOSING*24) ); - background "hud_arrow_left" - forecolor 1 1 1 HUD_ALPHA - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 128 -47 24 24 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -47 + 0-(PLAYER_IS_LOSING*24) ); - background "hud_arrow_left" - forecolor 1 1 1 HUD_ALPHA - visible when ( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 48 -39 76 8 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -39 + 0-(TEAM_IS_LOSING*24) ); - exp rect W( 76 * (team( score ) / dvarInt( "ui_scorelimit" ) ) ); - exp material( "scorebar_" + dvarString( "scr_allies" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_SPECTATOR") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 48 -39 76 8 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -39 + 0-(TEAM_IS_LOSING*24) ); - exp rect W( 76 * (team( score ) / dvarInt( "ui_scorelimit" ) ) ); - exp material( "scorebar_" + dvarString( "scr_axis" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( team( name ) == "TEAM_AXIS" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 48 -39 76 8 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -39 + 0-(PLAYER_IS_LOSING*24) ); - exp rect W( 76 * (player( score ) / dvarInt( "ui_scorelimit" ) ) ); - exp material( "scorebar_" + dvarString( "scr_axis" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( (team( name ) == "TEAM_FREE") && TEAM_IS_OPFOR && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 48 -39 76 8 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -39 + 0-(PLAYER_IS_LOSING*24) ); - exp rect W( 76 * (player( score ) / dvarInt( "ui_scorelimit" ) ) ); - exp material( "scorebar_" + dvarString( "scr_allies" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( (team( name ) == "TEAM_FREE") && TEAM_IS_MARINES && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - rect 50 -27 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -27 + 0-(TEAM_IS_LOSING*24) ); - exp text( team( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - rect 50 -27 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -27 + 0-(PLAYER_IS_LOSING*24) ); - exp text( player( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 46 -22 80 10 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -22 + (TEAM_IS_LOSING*12) ); - background "white" - forecolor 1 1 1 0.25 - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 46 -22 80 10 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -22 + (PLAYER_IS_LOSING*12) ); - background "white" - forecolor 1 1 1 0.25 - visible when ( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 48 -20 76 6 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -20 + (TEAM_IS_LOSING*12) ); - exp rect W( 76 * (otherteam( score ) / dvarInt( "ui_scorelimit" ) ) ); - exp material( "scorebar_" + dvarString( "scr_allies" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( team( name ) == "TEAM_AXIS" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 48 -20 76 6 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -20 + (TEAM_IS_LOSING*12) ); - exp rect W( 76 * (otherteam( score ) / dvarInt( "ui_scorelimit" ) ) ); - exp material( "scorebar_" + dvarString( "scr_axis" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_SPECTATOR") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 48 -20 76 6 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -20 + (PLAYER_IS_LOSING*12) ); - exp rect W( 76 * (scoreatrank( 2 ) / dvarInt( "ui_scorelimit" ) ) ); - exp material( "scorebar_" + dvarString( "scr_allies" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( (team( name ) == "TEAM_FREE") && TEAM_IS_OPFOR && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 48 -20 76 6 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -20 + (PLAYER_IS_LOSING*12) ); - exp rect W( 76 * (scoreatrank( 2 ) / dvarInt( "ui_scorelimit" ) ) ); - exp material( "scorebar_" + dvarString( "scr_axis" ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( (team( name ) == "TEAM_FREE") && TEAM_IS_MARINES && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - rect 50 -8 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -8 + (TEAM_IS_LOSING*12) ); - exp text( otherteam( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - rect 50 -8 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -8 + (PLAYER_IS_LOSING*12) ); - exp text( scoreatrank( 2 ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( team( name ) == "TEAM_FREE" && player( score ) == scoreatrank( 1 ) && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - rect 50 -8 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp rect Y( -8 + (PLAYER_IS_LOSING*12) ); - exp text( scoreatrank( 1 ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - visible when ( team( name ) == "TEAM_FREE" && player( score ) != scoreatrank( 1 ) && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 134 -53 48 48 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 5 6 - exp material( "hud_suitcase_bomb" ); - visible when ( dvarBool( ui_bomb_timer ) && PROMOD_SB && SHOULD_DISPLAY_SCOREBAR ); - forecolor 1 1 1 0.25 - decoration - } - itemDef - { - rect 134 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 6 0 - exp text( secondsAsCountdown( timeLeft() ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( timeLeft() >= 60 && !dvarBool( ui_bomb_timer ) && PROMOD_SB && SHOULD_DISPLAY_SCOREBAR ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - decoration - } - itemDef - { - rect 134 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 6 0 - exp text( secondsAsCountdown( timeLeft() ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 0.75 0 HUD_FOREGROUND_ALPHA - visible when ( timeLeft() >= 30 && timeLeft() < 60 && !dvarBool( ui_bomb_timer ) && PROMOD_SB && SHOULD_DISPLAY_SCOREBAR ); - decoration - } - itemDef - { - rect 134 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 6 0 - exp text( secondsAsCountdown( timeLeft() ) + "." + (9 - int( (milliseconds() / 100)%10 )) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 0.5 0 1 - visible when ( PROMOD_SB && SHOULD_DISPLAY_SCOREBAR && ( (timeLeft() >= 0 && timeLeft() < 30) || dvarBool( ui_bomb_timer ) ) ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -53 48 48 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 5 6 - exp material( "hud_suitcase_bomb" ); - visible when ( dvarBool( ui_bomb_timer ) && ( !PROMOD_SB || SHOULD_DISPLAY_SCOREBAR == false ) ); - forecolor 1 1 1 0.25 - decoration - } - itemDef - { - rect 0 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 6 0 - exp text( secondsAsCountdown( timeLeft() ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( timeLeft() >= 60 && !dvarBool( ui_bomb_timer ) && ( !PROMOD_SB || SHOULD_DISPLAY_SCOREBAR == false ) ); - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - decoration - } - itemDef - { - rect 0 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 6 0 - exp text( secondsAsCountdown( timeLeft() ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 0.75 0 HUD_FOREGROUND_ALPHA - visible when ( timeLeft() >= 30 && timeLeft() < 60 && !dvarBool( ui_bomb_timer ) && ( !PROMOD_SB || SHOULD_DISPLAY_SCOREBAR == false ) ); - decoration - } - itemDef - { - rect 0 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - origin 6 0 - exp text ( secondsAsCountdown( timeLeft() ) + "." + (9 - int( (milliseconds() / 100)%10 )) ); - textfont UI_FONT_OBJECTIVE - textscale 0.35 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 0.5 0 1 - visible when ( ((timeLeft() >= 0 && timeLeft() < 30) || dvarBool( ui_bomb_timer )) && ( !PROMOD_SB || SHOULD_DISPLAY_SCOREBAR == false ) ); - decoration - } - itemDef - { - rect 0 0 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - exp text( dvarString( "promod_hud_website" ) ); - exp rect X( 3 + 65 * !PROMOD_SB ) - exp rect Y( -4 -43 * PROMOD_SB ) - textscale 0.35 - forecolor 0.99 0.99 0.75 1 - textstyle ITEM_TEXTSTYLE_SHADOWED - visible when ( dvarString( "promod_hud_website" ) != "" ) - } - } - - #define WEAPINFO_X -4 - #define WEAPINFO_Y -36 - - menuDef - { - name "weaponinfo" - rect BOTTOM_RECT_X (BOTTOM_RECT_Y - 10) 0 0 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM - fullScreen 0 - visible when( !inkillcam() && !dvarBool( ammoCounterHide ) && !flashbanged() && !ui_active() && !dvarint( ui_hud_hardcore ) && DVAR_BLANK && team( name ) != "TEAM_SPECTATOR" && NOT_SPECTATING ); - - itemDef - { - name "ammotext" - rect (WEAPINFO_X - 65) (WEAPINFO_Y + 33) 57 0 - textscale TEXTSIZE_SMALL - textstyle ITEM_TEXTSTYLE_SHADOWED - textfont UI_FONT_OBJECTIVE - forecolor 1 1 1 1 - ownerdraw CG_PLAYER_AMMO_VALUE - visible when ( dvarint( cg_drawBreathHint ) ) - decoration - } - itemDef - { - name "clipGraphic" - rect (WEAPINFO_X - 33) (WEAPINFO_Y + 26) 1 1 - forecolor 1 1 1 HUD_ALPHA - ownerdraw CG_PLAYER_WEAPON_AMMO_CLIP_GRAPHIC - visible when ( !dvarint( cg_drawBreathHint ) ) - decoration - } - itemDef - { - name "ammoStock" - rect (WEAPINFO_X - 31) (WEAPINFO_Y + 34) 1 1 - textscale TEXTSIZE_SMALL - textstyle ITEM_TEXTSTYLE_SHADOWED - textfont UI_FONT_OBJECTIVE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - ownerdraw CG_PLAYER_WEAPON_AMMO_STOCK - visible when ( !dvarint( cg_drawBreathHint ) ) - decoration - } - itemDef - { - name "offhandFragIcon" - rect (WEAPINFO_X -36) (WEAPINFO_Y -11) 24 24 - forecolor 1 1 1 HUD_ALPHA - ownerdraw CG_OFFHAND_WEAPON_ICON_FRAG - background "hud_us_grenade" - visible 1 - decoration - } - itemDef - { - name "offhandSmokeIcon" - rect (WEAPINFO_X -66) (WEAPINFO_Y -11) 24 24 - forecolor 1 1 1 HUD_ALPHA - ownerdraw CG_OFFHAND_WEAPON_ICON_SMOKEFLASH - background "hud_us_smokegrenade" - visible 1 - decoration - } - itemDef - { - name "offHandSmokeAmmo" - rect (WEAPINFO_X -45) (WEAPINFO_Y +14) 25 25 - textscale TEXTSIZE_SMALL - textstyle ITEM_TEXTSTYLE_SHADOWED - textfont UI_FONT_OBJECTIVE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - ownerdraw CG_OFFHAND_WEAPON_AMMO_SMOKEFLASH - visible 1 - decoration - } - itemDef - { - name "offHandFragAmmo" - rect (WEAPINFO_X -14) (WEAPINFO_Y +14) 25 25 - textscale TEXTSIZE_SMALL - textstyle ITEM_TEXTSTYLE_SHADOWED - textfont UI_FONT_OBJECTIVE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - ownerdraw CG_OFFHAND_WEAPON_AMMO_FRAG - visible 1 - decoration - } - itemDef - { - name "weapname" - rect (WEAPINFO_X - 40) (WEAPINFO_Y + 14) 1 1 - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textfont UI_FONT_OBJECTIVE - forecolor 1 1 1 HUD_FOREGROUND_ALPHA - ownerdraw CG_PLAYER_WEAPON_NAME - visible 1 - decoration - } - } - - menuDef - { - name "amitalking" - rect 0 45 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM - fullScreen 0 - visible when ( dvarint( hud_enable ) && !dvarint( ui_hud_hardcore ) && !ui_active() && DVAR_BLANK && ( team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS" ) ) - - itemDef - { - rect -60 -107 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM - origin 0 0 - forecolor 0.73 0.99 0.73 1 - exp text( dvarint(self_alive) ); - textfont TEXTSIZE_SMALL - textscale 0.48 - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - visible 1 - decoration - } - itemDef - { - rect -29 -107 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM - origin 0 0 - forecolor 1 0.66 0.66 1 - exp text( dvarint(opposing_alive) ); - textfont TEXTSIZE_SMALL - textscale 0.48 - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWED - visible 1 - decoration - } - } - - menuDef - { - name "talkers" - backcolor 1 1 1 1 - background "$levelBriefing" - rect FULLSCREEN_WIDE - style WINDOW_STYLE_FILLED - fullScreen MENU_FALSE - visible when( DVAR_ENFORCER || DVAR_ENFORCER_NOSND ) - - ENFORCE( dvarint( cl_maxpackets ) != 100, "SET CL_MAXPACKETS TO 100", -210 ); - ENFORCE( dvarint( r_dlightlimit ), "SET R_DLIGHTLIMIT TO 0", -190 ); - ENFORCE( dvarint( com_maxfps ) < 40 || dvarint( com_maxfps ) > 250, "SET COM_MAXFPS WITHIN 40-250", -170 ); - ENFORCE( dvarfloat( r_lodscaleskinned ) != 1, "SET R_LODSCALESKINNED TO 1", -150 ); - ENFORCE( dvarfloat( r_lodscalerigid ) != 1, "SET R_LODSCALERIGID TO 1", -130 ); - ENFORCE( dvarint( rate ) != 25000, "SET RATE TO 25000", -110 ); - ENFORCE( dvarint( dynent_active ), "SET DYNENT_ACTIVE TO 0", -90 ); - ENFORCE( dvarfloat( cg_hudDamageIconHeight ) != 64, "SET CG_HUDDAMAGEICONHEIGHT TO 64", -70 ); - ENFORCE( dvarfloat( cg_hudDamageIconWidth ) != 128, "SET CG_HUDDAMAGEICONWIDTH TO 128", -50 ); - ENFORCE( dvarint( cg_huddamageiconinscope ), "SET CG_HUDDAMAGEICONINSCOPE TO 0", -30 ); - ENFORCE( dvarfloat( cg_huddamageiconoffset ) != 128, "SET CG_HUDDAMAGEICONOFFSET TO 128", -10 ); - ENFORCE( dvarint( cg_huddamageicontime ) != 2000, "SET CG_HUDDAMAGEICONTIME TO 2000", 10 ); - ENFORCE( dvarfloat( cg_viewZSmoothingMin ) != 1 || dvarfloat( cg_viewZSmoothingMax ) != 16 || dvarfloat( cg_viewZSmoothingTime ) != 0.1, "SET CG_VIEWZSMOOTHING VALUES TO STOCK", 30 ); - ENFORCE( dvarint( r_filmtweakInvert ), "SET R_FILMTWEAKINVERT TO 0", 50 ); - ENFORCE( dvarint( sm_enable ), "SET SM_ENABLE TO 0", 70 ); - ENFORCE( dvarint( cg_nopredict ), "SET CG_NOPREDICT TO 0", 90 ); - ENFORCE( dvarfloat( compassplayerwidth ) != dvarfloat( compassplayerheight ), "SET COMPASSPLAYERHEIGHT/WIDTH EQUAL", 110 ); - ENFORCE( dvarfloat( compassfriendlywidth ) != dvarfloat( compassfriendlyheight ), "SET COMPASSFRIENDLYHEIGHT/WIDTH EQUAL", 130 ); - ENFORCE( dvarint( developer ), "SET DEVELOPER TO 0", 150 ); - ENFORCE( dvarint( r_zfeather ), "SET R_ZFEATHER TO 0", 170 ); - ENFORCE( dvarfloat( phys_gravity ) != "-800", "SET PHYS_GRAVITY TO -800", 190 ); - ENFORCE( dvarint( aim_automelee_enabled ), "PLEASE RECONNECT TO THE SERVER", 210 ); - } - - menuDef - { - name "killcam" - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - fullScreen 0 - visible when ( inkillcam() ); - - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 640 112 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - background "white" - forecolor 0.49 0.05 0.03 0.5 - visible 1 - decoration - } - - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 368 640 112 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - background "white" - forecolor 0.49 0.05 0.03 0.5 - visible 1 - decoration - } - - itemDef - { - rect 0 45 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP - origin 0 0 - exp text( "KILLCAM" ); - textfont UI_FONT_OBJECTIVE - textscale 0.9 - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible 1 - decoration - } - } - - menuDef - { - name "CenterObituary" - rect 0 0 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER - fullScreen 0 - visible 1 - exp rect Y(180 + dvarInt(sv_cheats) * dvarint(promod_centermessage_position)); - - itemDef - { - name "chRect" - rect 0 0 0 0 - textscale TEXTSIZE_DEFAULT - textstyle ITEM_TEXTSTYLE_SHADOWED - ownerdraw CG_CENTER_MESSAGE - visible 1 - decoration - } - } - - menuDef - { - name "scorebar" - fullscreen 0 - visible when ( team( name ) == "TEAM_SPECTATOR" && !ui_active() ) - rect 0 0 640 480 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP - - itemDef - { - origin 0 0 - exp rect X( -125 ) - exp rect Y( 20 ) - forecolor 0.99 0.99 0.75 1 - exp text( "Attack: " + dvarString( shout_scores_attack ) ); - textstyle ITEM_TEXTSTYLE_SHADOWED - textalign ITEM_ALIGN_CENTER - textscale 0.45 - textfont UI_FONT_DEFAULT - visible 1 - decoration - } - itemDef - { - origin 0 0 - exp rect X( 125 ) - exp rect Y( 20 ) - forecolor 0.99 0.99 0.75 1 - exp text( "Defence: " + dvarString( shout_scores_defence ) ); - textstyle ITEM_TEXTSTYLE_SHADOWED - textalign ITEM_ALIGN_CENTER - textscale 0.45 - textfont UI_FONT_DEFAULT - visible 1 - decoration - } - } - - menuDef - { - name "HoldBreathHint" - fullScreen 0 - visible when ( team( name ) == "TEAM_SPECTATOR" && !ui_active() ) - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - - #define SHOUT_TEXT_ALIGN 0 - #define HB_RECT 1 - HEALTHBAR( "allies", "rank_sgt1", 0, 0 ); - HEALTHBAR( "allies", "rank_sgt1", 1, 1 ); - HEALTHBAR( "allies", "rank_sgt1", 2, 2 ); - HEALTHBAR( "allies", "rank_sgt1", 3, 3 ); - HEALTHBAR( "allies", "rank_sgt1", 4, 4 ); - - #undef SHOUT_TEXT_ALIGN - #define SHOUT_TEXT_ALIGN 2 - #undef HB_RECT - #define HB_RECT 3 - HEALTHBAR( "axis", "rank_rec1", 0, 5 ); - HEALTHBAR( "axis", "rank_rec1", 1, 6 ); - HEALTHBAR( "axis", "rank_rec1", 2, 7 ); - HEALTHBAR( "axis", "rank_rec1", 3, 8 ); - HEALTHBAR( "axis", "rank_rec1", 4, 9 ); - } - - menuDef - { - name "gamemessages" - rect 6 -65 10 10 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM - fullScreen 0 - visible when( !inkillcam() && dvarint( ui_hud_obituaries ) && !ui_active() ); - - itemDef - { - origin 0 0 - type ITEM_TYPE_GAME_MESSAGE_WINDOW - gamemsgwindowindex 0 - gamemsgwindowmode MODE_BOTTOMUP_ALIGN_BOTTOM - textfont UI_FONT_DEFAULT - textstyle ITEM_TEXTSTYLE_SHADOWED - textalign ITEM_ALIGN_LEFT - textscale (TEXTSIZE_SMALL*0.75) - visible 1 - } - } - - menuDef - { - name "boldgamemessages" - rect 0 -60 10 10 HORIZONTAL_ALIGN_CENTER_SAFEAREA VERTICAL_ALIGN_CENTER_SAFEAREA - fullScreen 0 - visible when( !inkillcam() && dvarint( ui_hud_obituaries ) && !ui_active() ); - - itemDef - { - origin 0 0 - type ITEM_TYPE_GAME_MESSAGE_WINDOW - gamemsgwindowindex 1 - gamemsgwindowmode MODE_BOTTOMUP_ALIGN_BOTTOM - textfont UI_FONT_OBJECTIVE - textstyle ITEM_TEXTSTYLE_SHADOWED - textalign ITEM_ALIGN_CENTER - textscale 0.417 - visible 1 - } - } - - menuDef - { - name "subtitles" - rect 200 400 10 10 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - fullScreen 0 - visible when( !inkillcam() && dvarint( ui_hud_obituaries ) && !ui_active() && !dvarint( ui_hud_hardcore ) ); - - itemDef - { - origin 0 0 - type ITEM_TYPE_GAME_MESSAGE_WINDOW - gamemsgwindowindex 2 - gamemsgwindowmode MODE_BOTTOMUP_ALIGN_BOTTOM - textfont UI_FONT_DEFAULT - textstyle ITEM_TEXTSTYLE_SHADOWED - textalign ITEM_ALIGN_LEFT - textscale TEXTSIZE_SMALL - visible 1 - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" + +#define TEAM_IS_MARINES (localVarString( ui_team ) == "marines") +#define TEAM_IS_OPFOR (localVarString( ui_team ) == "opfor") +#define NOT_SPECTATING (!spectatingClient()) +#define DVAR_ENFORCER ( !dvarint( sv_cheats ) && team( name ) != "TEAM_SPECTATOR" && ( dvarint( com_maxfps ) > 250 || dvarint( com_maxfps ) < 40 || dvarint( cl_maxpackets ) != 100 || dvarint( rate ) != 25000 || dvarint( dynent_active ) || dvarfloat( cg_hudDamageIconWidth ) != 128 || dvarfloat( cg_hudDamageIconHeight ) != 64 || dvarint( cg_huddamageiconinscope ) || dvarfloat( cg_huddamageiconoffset ) != 128 || dvarint( cg_huddamageicontime ) != 2000 || dvarfloat( cg_viewZSmoothingMin ) != 1 || dvarfloat( cg_viewZSmoothingMax ) != 16 || dvarfloat( cg_viewZSmoothingTime ) != 0.1 || dvarint( r_filmtweakInvert ) || dvarint( r_dlightlimit ) || dvarfloat( r_lodscalerigid ) != 1 || dvarfloat( r_lodscaleskinned ) != 1 || dvarint( sm_enable ) || dvarint( cg_nopredict ) || dvarint( developer ) || dvarint( r_zfeather ) || dvarfloat( phys_gravity ) != "-800" ) ) +#define DVAR_ENFORCER_NOSND ( !dvarint( sv_cheats ) && team( name ) != "TEAM_SPECTATOR" && ( dvarint( aim_automelee_enabled ) || dvarfloat( compassplayerwidth ) != dvarfloat( compassplayerheight ) || dvarfloat( compassfriendlywidth ) != dvarfloat( compassfriendlyheight ) ) ) +#define DVAR_BLANK ( dvarString( ui_showmenuonly ) == "" ) +#define HUD_ALPHA 0.65 +#define HUD_FOREGROUND_ALPHA 0.75 + +#define ENFORCE( condition, txt, position ) \ + itemDef \ + { \ + rect 0 position 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \ + origin 107 0 \ + forecolor 1 0 0 1 \ + backcolor 1 0 0 1 \ + exp text( txt ); \ + textfont UI_FONT_OBJECTIVE \ + textscale 0.5 \ + textalign ITEM_ALIGN_CENTER \ + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE \ + visible when( condition ) \ + decoration \ + } + +#define HEALTHBAR( dvarName, mat, n, num ) \ + itemDef \ + { \ + style WINDOW_STYLE_SHADER \ + origin 0 0 \ + rect 0 0 128 16 HB_RECT 1 \ + exp rect X( (-128 * int(dvarName == "allies")) + (127 * (2*int(dvarName == "allies")-1) * dvarfloat("shout_health"+num) ) ); \ + exp rect Y( 207 + n * 18 ); \ + exp material( mat ); \ + textalign SHOUT_TEXT_ALIGN \ + visible when( dvarString( "shout_name"+num ) != "" ) \ + decoration \ + } \ + itemDef \ + { \ + rect 0 0 1 1 HB_RECT 1 \ + origin 0 0 \ + exp rect X( (2*int(dvarName == "allies")-1) * 5 - 2* int(dvarName == "axis") ); \ + exp rect Y( 223 + n * 18 ); \ + forecolor 1 1 1 1 \ + exp text( dvarString( "shout_name"+num ) ); \ + textstyle ITEM_TEXTSTYLE_SHADOWED \ + textalign SHOUT_TEXT_ALIGN \ + textscale 0.36 \ + textfont UI_FONT_DEFAULT \ + visible when( dvarString( "shout_name"+num ) != "" && dvarFloat( "shout_health"+num ) != "0" ) \ + decoration \ + } \ + itemDef \ + { \ + rect 0 0 1 1 HB_RECT 1 \ + origin 0 0 \ + exp rect X( (2*int(dvarName == "allies")-1) * 5 - 2* int(dvarName == "axis") ); \ + exp rect Y( 223 + n * 18 ); \ + forecolor 0.5 0.5 0.5 1 \ + exp text( dvarString( "shout_name"+num ) ); \ + textstyle ITEM_TEXTSTYLE_SHADOWED \ + textalign SHOUT_TEXT_ALIGN \ + textscale 0.36 \ + textfont UI_FONT_DEFAULT \ + visible when( dvarString( "shout_name"+num ) != "" && dvarFloat( "shout_health"+num ) == "0" ) \ + decoration \ + } + +#define BOTTOM_RECT_X 0 +#define BOTTOM_RECT_Y 0 + +#define MINIMAP_ORIGIN 2 11 +{ + assetGlobalDef + { + fadeClamp 1 + fadeCycle 1 + fadeAmount 0.1 + } + + menuDef + { + name "Low Health" + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + fullScreen 0 + visible 1 + + itemDef + { + name "healthoverlay" + rect 0 0 640 480 + forecolor 1 1 1 1 + background "overlay_low_health" + ownerdraw CG_PLAYER_LOW_HEALTH_OVERLAY + visible 1 + decoration + } + } + + menuDef + { + name "MantleHint" + rect 0 105 40 40 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER + fullScreen 0 + visible when( !dvarInt( ui_hud_hardcore ) && NOT_SPECTATING ) + + itemDef + { + name "chRect" + rect 0 0 40 40 + textscale TEXTSIZE_SMALL + textstyle ITEM_TEXTSTYLE_SHADOWED + ownerdraw CG_MANTLE_HINT + visible 1 + decoration + } + } + + menuDef + { + name "Cursorhints" + rect 0 60 40 40 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER + fullScreen 0 + visible when( !dvarInt( ui_hud_hardcore ) && !ui_active() && NOT_SPECTATING ) + + itemDef + { + name "chRect" + rect 0 0 40 40 + textscale TEXTSIZE_SMALL + textstyle ITEM_TEXTSTYLE_SHADOWED + ownerdraw CG_CURSORHINT + visible 1 + decoration + } + } + + menuDef + { + name "InvalidCmdHint" + rect 0 -150 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER + fullScreen 0 + visible when( NOT_SPECTATING ) + + itemDef + { + name "chRect" + rect 0 0 0 0 + textscale TEXTSIZE_SMALL + textstyle ITEM_TEXTSTYLE_SHADOWED + ownerdraw CG_INVALID_CMD_HINT + textfont UI_FONT_NORMAL + visible 1 + decoration + } + } + + menuDef + { + name "stance" + rect -1000 -1000 48 48 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + fullScreen 0 + visible when( !flashbanged() && !ui_active() && NOT_SPECTATING ); + + itemDef + { + name "chRect" + rect 0 0 80 80 + ownerdraw CG_PLAYER_STANCE + textfont UI_FONT_OBJECTIVE + visible when( !inkillcam() && !dvarint( ui_hud_hardcore ) ); + textscale TEXTSIZE_SMALL + textstyle ITEM_TEXTSTYLE_SHADOWED + forecolor 1 1 1 HUD_ALPHA + decoration + } + } + + #define RECT_COMPASS 0 0 COMPASS_SIZE_MP COMPASS_SIZE_MP HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + #undef MINIMAP_ORIGIN + #define MINIMAP_ORIGIN 6 6 + + menuDef + { + name "Compass_old" + rect RECT_COMPASS + fullScreen 0 + visible when ( !inkillcam() && !flashbanged() && !ui_active() && !scoped() && DVAR_BLANK && (!dvarint( ui_hud_hardcore ) || dvarInt( g_compassShowEnemies ) ) ); + + itemDef + { + name "minimapBG" + rect (MINIMAP_X_MP - 14) (MINIMAP_Y_MP - 6) COMPASS_SIZE_MP COMPASS_SIZE_MP + origin MINIMAP_ORIGIN + forecolor 1 1 1 1 + background "minimap_background" + ownerdraw CG_PLAYER_COMPASS_BACK + visible 1 + decoration + } + itemDef + { + name "minimapTickerBorder" + rect MINIMAP_X_MP (MINIMAP_Y_MP - 15) MINIMAP_W_MP 14 + origin MINIMAP_ORIGIN + forecolor 1 1 1 1 + background "minimap_tickertape_background" + ownerdraw CG_PLAYER_COMPASS_BACK + visible 1 + decoration + } + itemDef + { + name "minimapTicker" + rect MINIMAP_X_MP (MINIMAP_Y_MP - 12) MINIMAP_W_MP 9 + origin MINIMAP_ORIGIN + forecolor 1 1 1 1 + background "minimap_tickertape_mp" + ownerdraw CG_PLAYER_COMPASS_TICKERTAPE_NO_OBJ + visible 1 + decoration + } + itemDef + { + name "mini_map" + rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP + origin MINIMAP_ORIGIN + forecolor 1 1 1 1 + background "compass_map_default" + ownerdraw CG_PLAYER_COMPASS_MAP + visible 1 + decoration + } + itemDef + { + name "compasspointers" + rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP + origin MINIMAP_ORIGIN + forecolor 1 1 1 1 + background "objective_line" + ownerdraw CG_PLAYER_COMPASS_POINTERS + visible when ( dvarint( ui_hud_showobjicons ) > 0 ); + decoration + } + itemDef + { + name "compassfriendlies" + rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP + origin MINIMAP_ORIGIN + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_COMPASS_FRIENDS + visible 1 + } + itemDef + { + name "compassenemies" + rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP + origin MINIMAP_ORIGIN + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_COMPASS_ENEMIES + visible 1 + } + itemDef + { + name "compassplayer" + rect MINIMAP_X_MP MINIMAP_Y_MP MINIMAP_W_MP MINIMAP_H_MP + origin MINIMAP_ORIGIN + forecolor 1 1 1 1 + background "compassping_player" + ownerdraw CG_PLAYER_COMPASS_PLAYER + visible 1 + } + } + + menuDef + { + name "DPad" + backcolor 1 1 1 1 + background "$levelBriefing" + rect FULLSCREEN_WIDE + style WINDOW_STYLE_FILLED + fullScreen MENU_FALSE + visible when( team( name ) == "TEAM_FREE" && dvarString( g_gametype ) != "dm" ) + } + + menuDef + { + name "xpbar" + fullScreen 0 + visible when( DVAR_ENFORCER ); + soundloop "weap_ak47_fire_plr" + } + + menuDef + { + name "FullScreenMap" + fullScreen 0 + visible when( dvarString( self_ready ) != "" && !ui_active() ); + + itemDef + { + rect -37 88 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Waiting On" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 0.8 1 1 1 + visible 1 + decoration + } + itemDef + { + rect -37 108 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + exp text(dvarint(waiting_on)) + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 0.98 0.98 0.6 1 + visible 1 + decoration + } + itemDef + { + rect -37 128 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Players" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 0.8 1 1 1 + visible when( dvarInt( waiting_on ) > 1 ) + decoration + } + itemDef + { + rect -37 128 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Player" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 0.8 1 1 1 + visible when( dvarInt( waiting_on ) < 2 ) + decoration + } + itemDef + { + rect -37 153 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Status" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 0.8 1 1 1 + visible 1 + decoration + } + itemDef + { + rect -37 168 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Ready" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 0.73 0.99 0.73 1 + visible when ( dvarInt( self_ready ) ) + decoration + } + itemDef + { + rect -37 168 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Not Ready" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 1 0.66 0.66 1 + visible when ( !dvarInt( self_ready ) ) + decoration + } + itemDef + { + rect -37 318 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Killing" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 0.8 1 1 1 + visible when ( dvarString( self_kills ) == "" && team( name ) != "TEAM_SPECTATOR" ) + decoration + } + itemDef + { + rect -37 333 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Disabled" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 1 0.66 0.66 1 + visible when ( dvarString( self_kills ) == "" && team( name ) != "TEAM_SPECTATOR" ) + decoration + } + itemDef + { + rect -37 318 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + text "Kills" + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 0.8 1 1 1 + visible when ( dvarString( self_kills ) != "" && team( name ) != "TEAM_SPECTATOR" ) + decoration + } + itemDef + { + rect -37 333 2 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + exp text(dvarint(self_kills)) + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale 0.35 + textfont UI_FONT_DEFAULT + forecolor 1 0.66 0.66 1 + visible when ( dvarString( self_kills ) != "" && team( name ) != "TEAM_SPECTATOR" ) + decoration + } + } + + #define SCORE_OFFSET_X 4 + #define SCORE_OFFSET_Y 2 + + #define TEAM_IS_LOSING (team(score) < otherteam(score)) + #define PLAYER_IS_LOSING (player(score) < scoreatrank(1)) + + #define SHOULD_DISPLAY_SCOREBAR ( team( name ) != "TEAM_SPECTATOR" ) + #define PROMOD_SB ( dvarBool( cg_voiceIconSize ) ) + + menuDef + { + name "scorebars" + rect (BOTTOM_RECT_X+SCORE_OFFSET_X) (BOTTOM_RECT_Y+SCORE_OFFSET_Y) 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + exp rect Y( BOTTOM_RECT_Y - 10 ); + fullScreen 0 + visible when( !inkillcam() && !ui_active() && !dvarint( ui_hud_hardcore ) && (!dvarint( sv_cheats ) || dvarint( sv_cheats ) && !dvarint( promod_movie_hidescorebar ) ) ); + + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -45 128 64 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -45 + (TEAM_IS_LOSING*20) ); + exp rect H( 64 - (TEAM_IS_LOSING*128) ); + forecolor 1 1 1 HUD_ALPHA + background "scorebar_backdrop" + visible when( team( name ) != "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -45 128 64 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -45 + (PLAYER_IS_LOSING*20) ); + exp rect H( 64 - (PLAYER_IS_LOSING*128) ); + forecolor 1 1 1 HUD_ALPHA + background "scorebar_backdrop" + visible when( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 5 -5 + exp material( dvarString( "g_TeamIcon_Allies" ) ); + visible when ( team( name ) == "TEAM_ALLIES" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 5 -5 + exp material( dvarString( "g_TeamIcon_Allies" ) ); + visible when ( team( name ) == "TEAM_SPECTATOR" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 5 -5 + exp material( dvarString( "g_TeamIcon_Axis" ) ); + visible when ( team( name ) == "TEAM_AXIS" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 5 -5 + exp material( dvarString( "g_TeamIcon_Allies" ) ); + visible when ( team( name ) == "TEAM_FREE" && TEAM_IS_MARINES && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -36 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 5 -5 + exp material( dvarString( "g_TeamIcon_Axis" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( team( name ) == "TEAM_FREE" && TEAM_IS_OPFOR && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 46 -41 80 12 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -41 + 0-(TEAM_IS_LOSING*24) ); + background "white" + forecolor 1 1 1 0.25 + visible when ( team( name ) != "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 46 -41 80 12 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -41 + 0-(PLAYER_IS_LOSING*24) ); + background "white" + forecolor 1 1 1 0.25 + visible when ( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 128 -47 24 24 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -47 + 0-(TEAM_IS_LOSING*24) ); + background "hud_arrow_left" + forecolor 1 1 1 HUD_ALPHA + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 128 -47 24 24 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -47 + 0-(PLAYER_IS_LOSING*24) ); + background "hud_arrow_left" + forecolor 1 1 1 HUD_ALPHA + visible when ( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 48 -39 76 8 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -39 + 0-(TEAM_IS_LOSING*24) ); + exp rect W( 76 * (team( score ) / dvarInt( "ui_scorelimit" ) ) ); + exp material( "scorebar_" + dvarString( "scr_allies" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_SPECTATOR") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 48 -39 76 8 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -39 + 0-(TEAM_IS_LOSING*24) ); + exp rect W( 76 * (team( score ) / dvarInt( "ui_scorelimit" ) ) ); + exp material( "scorebar_" + dvarString( "scr_axis" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( team( name ) == "TEAM_AXIS" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 48 -39 76 8 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -39 + 0-(PLAYER_IS_LOSING*24) ); + exp rect W( 76 * (player( score ) / dvarInt( "ui_scorelimit" ) ) ); + exp material( "scorebar_" + dvarString( "scr_axis" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( (team( name ) == "TEAM_FREE") && TEAM_IS_OPFOR && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 48 -39 76 8 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -39 + 0-(PLAYER_IS_LOSING*24) ); + exp rect W( 76 * (player( score ) / dvarInt( "ui_scorelimit" ) ) ); + exp material( "scorebar_" + dvarString( "scr_allies" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( (team( name ) == "TEAM_FREE") && TEAM_IS_MARINES && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + rect 50 -27 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -27 + 0-(TEAM_IS_LOSING*24) ); + exp text( team( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + rect 50 -27 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -27 + 0-(PLAYER_IS_LOSING*24) ); + exp text( player( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 46 -22 80 10 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -22 + (TEAM_IS_LOSING*12) ); + background "white" + forecolor 1 1 1 0.25 + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 46 -22 80 10 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -22 + (PLAYER_IS_LOSING*12) ); + background "white" + forecolor 1 1 1 0.25 + visible when ( team( name ) == "TEAM_FREE" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 48 -20 76 6 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -20 + (TEAM_IS_LOSING*12) ); + exp rect W( 76 * (otherteam( score ) / dvarInt( "ui_scorelimit" ) ) ); + exp material( "scorebar_" + dvarString( "scr_allies" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( team( name ) == "TEAM_AXIS" && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 48 -20 76 6 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -20 + (TEAM_IS_LOSING*12) ); + exp rect W( 76 * (otherteam( score ) / dvarInt( "ui_scorelimit" ) ) ); + exp material( "scorebar_" + dvarString( "scr_axis" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_SPECTATOR") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 48 -20 76 6 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -20 + (PLAYER_IS_LOSING*12) ); + exp rect W( 76 * (scoreatrank( 2 ) / dvarInt( "ui_scorelimit" ) ) ); + exp material( "scorebar_" + dvarString( "scr_allies" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( (team( name ) == "TEAM_FREE") && TEAM_IS_OPFOR && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 48 -20 76 6 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -20 + (PLAYER_IS_LOSING*12) ); + exp rect W( 76 * (scoreatrank( 2 ) / dvarInt( "ui_scorelimit" ) ) ); + exp material( "scorebar_" + dvarString( "scr_axis" ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( (team( name ) == "TEAM_FREE") && TEAM_IS_MARINES && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + rect 50 -8 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -8 + (TEAM_IS_LOSING*12) ); + exp text( otherteam( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + rect 50 -8 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -8 + (PLAYER_IS_LOSING*12) ); + exp text( scoreatrank( 2 ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( team( name ) == "TEAM_FREE" && player( score ) == scoreatrank( 1 ) && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + rect 50 -8 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp rect Y( -8 + (PLAYER_IS_LOSING*12) ); + exp text( scoreatrank( 1 ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + visible when ( team( name ) == "TEAM_FREE" && player( score ) != scoreatrank( 1 ) && SHOULD_DISPLAY_SCOREBAR && PROMOD_SB ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 134 -53 48 48 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 5 6 + exp material( "hud_suitcase_bomb" ); + visible when ( dvarBool( ui_bomb_timer ) && PROMOD_SB && SHOULD_DISPLAY_SCOREBAR ); + forecolor 1 1 1 0.25 + decoration + } + itemDef + { + rect 134 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 6 0 + exp text( secondsAsCountdown( timeLeft() ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( timeLeft() >= 60 && !dvarBool( ui_bomb_timer ) && PROMOD_SB && SHOULD_DISPLAY_SCOREBAR ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + decoration + } + itemDef + { + rect 134 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 6 0 + exp text( secondsAsCountdown( timeLeft() ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 0.75 0 HUD_FOREGROUND_ALPHA + visible when ( timeLeft() >= 30 && timeLeft() < 60 && !dvarBool( ui_bomb_timer ) && PROMOD_SB && SHOULD_DISPLAY_SCOREBAR ); + decoration + } + itemDef + { + rect 134 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 6 0 + exp text( secondsAsCountdown( timeLeft() ) + "." + (9 - int( (milliseconds() / 100)%10 )) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 0.5 0 1 + visible when ( PROMOD_SB && SHOULD_DISPLAY_SCOREBAR && ( (timeLeft() >= 0 && timeLeft() < 30) || dvarBool( ui_bomb_timer ) ) ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -53 48 48 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 5 6 + exp material( "hud_suitcase_bomb" ); + visible when ( dvarBool( ui_bomb_timer ) && ( !PROMOD_SB || SHOULD_DISPLAY_SCOREBAR == false ) ); + forecolor 1 1 1 0.25 + decoration + } + itemDef + { + rect 0 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 6 0 + exp text( secondsAsCountdown( timeLeft() ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( timeLeft() >= 60 && !dvarBool( ui_bomb_timer ) && ( !PROMOD_SB || SHOULD_DISPLAY_SCOREBAR == false ) ); + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + decoration + } + itemDef + { + rect 0 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 6 0 + exp text( secondsAsCountdown( timeLeft() ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 0.75 0 HUD_FOREGROUND_ALPHA + visible when ( timeLeft() >= 30 && timeLeft() < 60 && !dvarBool( ui_bomb_timer ) && ( !PROMOD_SB || SHOULD_DISPLAY_SCOREBAR == false ) ); + decoration + } + itemDef + { + rect 0 -3 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + origin 6 0 + exp text ( secondsAsCountdown( timeLeft() ) + "." + (9 - int( (milliseconds() / 100)%10 )) ); + textfont UI_FONT_OBJECTIVE + textscale 0.35 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 0.5 0 1 + visible when ( ((timeLeft() >= 0 && timeLeft() < 30) || dvarBool( ui_bomb_timer )) && ( !PROMOD_SB || SHOULD_DISPLAY_SCOREBAR == false ) ); + decoration + } + itemDef + { + rect 0 0 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + exp text( dvarString( "promod_hud_website" ) ); + exp rect X( 3 + 65 * !PROMOD_SB ) + exp rect Y( -4 -43 * PROMOD_SB ) + textscale 0.35 + forecolor 0.99 0.99 0.75 1 + textstyle ITEM_TEXTSTYLE_SHADOWED + visible when ( dvarString( "promod_hud_website" ) != "" ) + } + } + + #define WEAPINFO_X -4 + #define WEAPINFO_Y -36 + + menuDef + { + name "weaponinfo" + rect BOTTOM_RECT_X (BOTTOM_RECT_Y - 10) 0 0 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM + fullScreen 0 + visible when( !inkillcam() && !dvarBool( ammoCounterHide ) && !flashbanged() && !ui_active() && !dvarint( ui_hud_hardcore ) && DVAR_BLANK && team( name ) != "TEAM_SPECTATOR" && NOT_SPECTATING ); + + itemDef + { + name "ammotext" + rect (WEAPINFO_X - 65) (WEAPINFO_Y + 33) 57 0 + textscale TEXTSIZE_SMALL + textstyle ITEM_TEXTSTYLE_SHADOWED + textfont UI_FONT_OBJECTIVE + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + visible when ( dvarint( cg_drawBreathHint ) ) + decoration + } + itemDef + { + name "clipGraphic" + rect (WEAPINFO_X - 33) (WEAPINFO_Y + 26) 1 1 + forecolor 1 1 1 HUD_ALPHA + ownerdraw CG_PLAYER_WEAPON_AMMO_CLIP_GRAPHIC + visible when ( !dvarint( cg_drawBreathHint ) ) + decoration + } + itemDef + { + name "ammoStock" + rect (WEAPINFO_X - 31) (WEAPINFO_Y + 34) 1 1 + textscale TEXTSIZE_SMALL + textstyle ITEM_TEXTSTYLE_SHADOWED + textfont UI_FONT_OBJECTIVE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + ownerdraw CG_PLAYER_WEAPON_AMMO_STOCK + visible when ( !dvarint( cg_drawBreathHint ) ) + decoration + } + itemDef + { + name "offhandFragIcon" + rect (WEAPINFO_X -36) (WEAPINFO_Y -11) 24 24 + forecolor 1 1 1 HUD_ALPHA + ownerdraw CG_OFFHAND_WEAPON_ICON_FRAG + background "hud_us_grenade" + visible 1 + decoration + } + itemDef + { + name "offhandSmokeIcon" + rect (WEAPINFO_X -66) (WEAPINFO_Y -11) 24 24 + forecolor 1 1 1 HUD_ALPHA + ownerdraw CG_OFFHAND_WEAPON_ICON_SMOKEFLASH + background "hud_us_smokegrenade" + visible 1 + decoration + } + itemDef + { + name "offHandSmokeAmmo" + rect (WEAPINFO_X -45) (WEAPINFO_Y +14) 25 25 + textscale TEXTSIZE_SMALL + textstyle ITEM_TEXTSTYLE_SHADOWED + textfont UI_FONT_OBJECTIVE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + ownerdraw CG_OFFHAND_WEAPON_AMMO_SMOKEFLASH + visible 1 + decoration + } + itemDef + { + name "offHandFragAmmo" + rect (WEAPINFO_X -14) (WEAPINFO_Y +14) 25 25 + textscale TEXTSIZE_SMALL + textstyle ITEM_TEXTSTYLE_SHADOWED + textfont UI_FONT_OBJECTIVE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + ownerdraw CG_OFFHAND_WEAPON_AMMO_FRAG + visible 1 + decoration + } + itemDef + { + name "weapname" + rect (WEAPINFO_X - 40) (WEAPINFO_Y + 14) 1 1 + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textfont UI_FONT_OBJECTIVE + forecolor 1 1 1 HUD_FOREGROUND_ALPHA + ownerdraw CG_PLAYER_WEAPON_NAME + visible 1 + decoration + } + } + + menuDef + { + name "amitalking" + rect 0 45 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM + fullScreen 0 + visible when ( dvarint( hud_enable ) && !dvarint( ui_hud_hardcore ) && !ui_active() && DVAR_BLANK && ( team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS" ) ) + + itemDef + { + rect -60 -107 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM + origin 0 0 + forecolor 0.73 0.99 0.73 1 + exp text( dvarint(self_alive) ); + textfont TEXTSIZE_SMALL + textscale 0.48 + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + visible 1 + decoration + } + itemDef + { + rect -29 -107 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM + origin 0 0 + forecolor 1 0.66 0.66 1 + exp text( dvarint(opposing_alive) ); + textfont TEXTSIZE_SMALL + textscale 0.48 + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + visible 1 + decoration + } + } + + menuDef + { + name "talkers" + backcolor 1 1 1 1 + background "$levelBriefing" + rect FULLSCREEN_WIDE + style WINDOW_STYLE_FILLED + fullScreen MENU_FALSE + visible when( DVAR_ENFORCER || DVAR_ENFORCER_NOSND ) + + ENFORCE( dvarint( cl_maxpackets ) != 100, "SET CL_MAXPACKETS TO 100", -210 ); + ENFORCE( dvarint( r_dlightlimit ), "SET R_DLIGHTLIMIT TO 0", -190 ); + ENFORCE( dvarint( com_maxfps ) < 40 || dvarint( com_maxfps ) > 250, "SET COM_MAXFPS WITHIN 40-250", -170 ); + ENFORCE( dvarfloat( r_lodscaleskinned ) != 1, "SET R_LODSCALESKINNED TO 1", -150 ); + ENFORCE( dvarfloat( r_lodscalerigid ) != 1, "SET R_LODSCALERIGID TO 1", -130 ); + ENFORCE( dvarint( rate ) != 25000, "SET RATE TO 25000", -110 ); + ENFORCE( dvarint( dynent_active ), "SET DYNENT_ACTIVE TO 0", -90 ); + ENFORCE( dvarfloat( cg_hudDamageIconHeight ) != 64, "SET CG_HUDDAMAGEICONHEIGHT TO 64", -70 ); + ENFORCE( dvarfloat( cg_hudDamageIconWidth ) != 128, "SET CG_HUDDAMAGEICONWIDTH TO 128", -50 ); + ENFORCE( dvarint( cg_huddamageiconinscope ), "SET CG_HUDDAMAGEICONINSCOPE TO 0", -30 ); + ENFORCE( dvarfloat( cg_huddamageiconoffset ) != 128, "SET CG_HUDDAMAGEICONOFFSET TO 128", -10 ); + ENFORCE( dvarint( cg_huddamageicontime ) != 2000, "SET CG_HUDDAMAGEICONTIME TO 2000", 10 ); + ENFORCE( dvarfloat( cg_viewZSmoothingMin ) != 1 || dvarfloat( cg_viewZSmoothingMax ) != 16 || dvarfloat( cg_viewZSmoothingTime ) != 0.1, "SET CG_VIEWZSMOOTHING VALUES TO STOCK", 30 ); + ENFORCE( dvarint( r_filmtweakInvert ), "SET R_FILMTWEAKINVERT TO 0", 50 ); + ENFORCE( dvarint( sm_enable ), "SET SM_ENABLE TO 0", 70 ); + ENFORCE( dvarint( cg_nopredict ), "SET CG_NOPREDICT TO 0", 90 ); + ENFORCE( dvarfloat( compassplayerwidth ) != dvarfloat( compassplayerheight ), "SET COMPASSPLAYERHEIGHT/WIDTH EQUAL", 110 ); + ENFORCE( dvarfloat( compassfriendlywidth ) != dvarfloat( compassfriendlyheight ), "SET COMPASSFRIENDLYHEIGHT/WIDTH EQUAL", 130 ); + ENFORCE( dvarint( developer ), "SET DEVELOPER TO 0", 150 ); + ENFORCE( dvarint( r_zfeather ), "SET R_ZFEATHER TO 0", 170 ); + ENFORCE( dvarfloat( phys_gravity ) != "-800", "SET PHYS_GRAVITY TO -800", 190 ); + ENFORCE( dvarint( aim_automelee_enabled ), "PLEASE RECONNECT TO THE SERVER", 210 ); + } + + menuDef + { + name "killcam" + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + fullScreen 0 + visible when ( inkillcam() ); + + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 640 112 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + background "white" + forecolor 0.49 0.05 0.03 0.5 + visible 1 + decoration + } + + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 368 640 112 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + background "white" + forecolor 0.49 0.05 0.03 0.5 + visible 1 + decoration + } + + itemDef + { + rect 0 45 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP + origin 0 0 + exp text( "KILLCAM" ); + textfont UI_FONT_OBJECTIVE + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible 1 + decoration + } + } + + menuDef + { + name "CenterObituary" + rect 0 0 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER + fullScreen 0 + visible 1 + exp rect Y(180 + dvarInt(sv_cheats) * dvarint(promod_centermessage_position)); + + itemDef + { + name "chRect" + rect 0 0 0 0 + textscale TEXTSIZE_DEFAULT + textstyle ITEM_TEXTSTYLE_SHADOWED + ownerdraw CG_CENTER_MESSAGE + visible 1 + decoration + } + } + + menuDef + { + name "scorebar" + fullscreen 0 + visible when ( team( name ) == "TEAM_SPECTATOR" && !ui_active() ) + rect 0 0 640 480 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP + + itemDef + { + origin 0 0 + exp rect X( -125 ) + exp rect Y( 20 ) + forecolor 0.99 0.99 0.75 1 + exp text( "Attack: " + dvarString( shout_scores_attack ) ); + textstyle ITEM_TEXTSTYLE_SHADOWED + textalign ITEM_ALIGN_CENTER + textscale 0.45 + textfont UI_FONT_DEFAULT + visible 1 + decoration + } + itemDef + { + origin 0 0 + exp rect X( 125 ) + exp rect Y( 20 ) + forecolor 0.99 0.99 0.75 1 + exp text( "Defence: " + dvarString( shout_scores_defence ) ); + textstyle ITEM_TEXTSTYLE_SHADOWED + textalign ITEM_ALIGN_CENTER + textscale 0.45 + textfont UI_FONT_DEFAULT + visible 1 + decoration + } + } + + menuDef + { + name "HoldBreathHint" + fullScreen 0 + visible when ( team( name ) == "TEAM_SPECTATOR" && !ui_active() ) + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + + #define SHOUT_TEXT_ALIGN 0 + #define HB_RECT 1 + HEALTHBAR( "allies", "rank_sgt1", 0, 0 ); + HEALTHBAR( "allies", "rank_sgt1", 1, 1 ); + HEALTHBAR( "allies", "rank_sgt1", 2, 2 ); + HEALTHBAR( "allies", "rank_sgt1", 3, 3 ); + HEALTHBAR( "allies", "rank_sgt1", 4, 4 ); + + #undef SHOUT_TEXT_ALIGN + #define SHOUT_TEXT_ALIGN 2 + #undef HB_RECT + #define HB_RECT 3 + HEALTHBAR( "axis", "rank_rec1", 0, 5 ); + HEALTHBAR( "axis", "rank_rec1", 1, 6 ); + HEALTHBAR( "axis", "rank_rec1", 2, 7 ); + HEALTHBAR( "axis", "rank_rec1", 3, 8 ); + HEALTHBAR( "axis", "rank_rec1", 4, 9 ); + } + + menuDef + { + name "gamemessages" + rect 6 -65 10 10 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM + fullScreen 0 + visible when( !inkillcam() && dvarint( ui_hud_obituaries ) && !ui_active() ); + + itemDef + { + origin 0 0 + type ITEM_TYPE_GAME_MESSAGE_WINDOW + gamemsgwindowindex 0 + gamemsgwindowmode MODE_BOTTOMUP_ALIGN_BOTTOM + textfont UI_FONT_DEFAULT + textstyle ITEM_TEXTSTYLE_SHADOWED + textalign ITEM_ALIGN_LEFT + textscale (TEXTSIZE_SMALL*0.75) + visible 1 + } + } + + menuDef + { + name "boldgamemessages" + rect 0 -60 10 10 HORIZONTAL_ALIGN_CENTER_SAFEAREA VERTICAL_ALIGN_CENTER_SAFEAREA + fullScreen 0 + visible when( !inkillcam() && dvarint( ui_hud_obituaries ) && !ui_active() ); + + itemDef + { + origin 0 0 + type ITEM_TYPE_GAME_MESSAGE_WINDOW + gamemsgwindowindex 1 + gamemsgwindowmode MODE_BOTTOMUP_ALIGN_BOTTOM + textfont UI_FONT_OBJECTIVE + textstyle ITEM_TEXTSTYLE_SHADOWED + textalign ITEM_ALIGN_CENTER + textscale 0.417 + visible 1 + } + } + + menuDef + { + name "subtitles" + rect 200 400 10 10 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + fullScreen 0 + visible when( !inkillcam() && dvarint( ui_hud_obituaries ) && !ui_active() && !dvarint( ui_hud_hardcore ) ); + + itemDef + { + origin 0 0 + type ITEM_TYPE_GAME_MESSAGE_WINDOW + gamemsgwindowindex 2 + gamemsgwindowmode MODE_BOTTOMUP_ALIGN_BOTTOM + textfont UI_FONT_DEFAULT + textstyle ITEM_TEXTSTYLE_SHADOWED + textalign ITEM_ALIGN_LEFT + textscale TEXTSIZE_SMALL + visible 1 + } + } +} diff --git a/ui_mp/main.menu b/ui_mp/main.menu index bb58516..5a9ed0b 100644 --- a/ui_mp/main.menu +++ b/ui_mp/main.menu @@ -1,243 +1,243 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 168 - -#define CHOICE_GROUP "main" -#define CHOICE_SEP_1 2 -#define CHOICE_SEP_2 4 -#define CHOICE_SEP_3 8 - -#define STYLE_PC 1 -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -{ - menuDef - { - name "cdkey_menu" - } - - assetGlobalDef - { - fadeClamp 1 - fadeCycle 1 - fadeAmount 0.1 - } - menuDef - { - name "main" - fullScreen 1 - rect 0 0 640 480 - focusColor COLOR_FOCUSED - onOpen - { - open main_text; - uiScript addPlayerProfiles; - uiScript openMenuOnDvar com_playerProfile "" player_profile; - uiScript openMenuOnDvarNot ui_playerProfileCount 1 player_profile; - uiScript stopRefresh; - setdvar ui_showEndOfGame "0"; - setdvar sv_cheats "1"; - setdvar promod_mode "strat"; - } - } - - menuDef - { - name "main_text" - fullScreen 1 - rect 0 0 640 480 - focusColor COLOR_FOCUSED - - itemDef - { - style WINDOW_STYLE_SHADER - rect FULLSCREEN_WIDE - background "animbg_back" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect FULLSCREEN_WIDE - background "animbg_front" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect FULLSCREEN_WIDE - background "animbg_front2" - visible 1 - decoration - } - itemDef - { - visible 1 - rect 324 56 278 68 - forecolor 1 1 1 1 - style WINDOW_STYLE_SHADER - background "logo_cod2" - visible when( !localvarBool( ui_hideBack ) ); - decoration - } - - CHOICE_BUTTON_VIS( 1, "@MENU_AUTO_UPDATE", open auconfirm;, when( dvarbool( cl_updateAvailable ) && !localvarBool( ui_hideBack ) ) ) - - itemDef - { - group grpControlbutton - rect 220 173 212 95 - style WINDOW_STYLE_FILLED - border 1 - bordercolor 0.5 0.5 0.5 0.5 - forecolor 1 1 1 1 - backcolor 0 0 0 0.85 - visible when( localvarBool( ui_about ) ); - decoration - } - itemDef - { - text "Call of Duty 4 Promod" - style 0 - textscale 0.3 - textstyle 3 - rect 325 191 110 20 - textalign ITEM_ALIGN_CENTER - textalignx -55 - textaligny 0 - textfont UI_FONT_NORMAL - forecolor 1 1 1 1 - visible when( localvarBool( ui_about ) ); - decoration - } - itemDef - { - text "www.codpromod.com" - style 0 - textscale 0.2 - textstyle 3 - rect 325 199 110 20 - textalign ITEM_ALIGN_CENTER - textalignx -55 - textaligny 0 - textfont UI_FONT_NORMAL - forecolor 1 1 1 1 - visible when( localvarBool( ui_about ) ); - decoration - } - itemDef - { - text "Current Promod Version: LIVE V2.20 EU" - style 0 - textscale 0.25 - textstyle 3 - rect 239 216 95 20 - textalign ITEM_ALIGN_LEFT - textalignx 0 - textaligny 0 - textfont UI_FONT_NORMAL - forecolor 1 1 1 1 - visible when( localvarBool( ui_about ) ); - decoration - } - itemDef - { - text "Maintained by Ingram" - style 0 - textscale 0.25 - textstyle 3 - rect 239 227 95 20 - textalign ITEM_ALIGN_LEFT - textalignx 0 - textaligny 0 - textfont UI_FONT_NORMAL - forecolor 1 1 1 1 - visible when( localvarBool( ui_about ) ); - decoration - } - itemDef - { - text "Former developers: raf1, MavLP, bulletworm, Trivve" - style 0 - textscale 0.25 - textstyle 3 - rect 230 246 95 20 - textalign ITEM_ALIGN_LEFT - textalignx 0 - textaligny 0 - textfont UI_FONT_NORMAL - forecolor 1 1 1 1 - visible when( localvarBool( ui_about ) ); - decoration - } - itemDef - { - text "Also thanks to everyone else involved in Promod!" - style 0 - textscale 0.25 - textstyle 3 - rect 325 264 110 20 - textalign ITEM_ALIGN_CENTER - textalignx -55 - textaligny 0 - textfont UI_FONT_NORMAL - forecolor 1 1 1 1 - visible when( localvarBool( ui_about ) ); - decoration - } - - CHOICE_BUTTON_BG( 2, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_HIGHLIGHT( 2, 2 ) - itemDef - { - type ITEM_TYPE_BUTTON - rect CHOICE_RECT( 2 ) - exp text( "About Promod" ); - textfont CHOICE_TEXTFONT - textscale CHOICE_TEXTSIZE - textstyle CHOICE_TEXTSTYLE - textAlign CHOICE_TEXTALIGN - textAlignX CHOICE_TEXT_OFFSET_X - forecolor CHOICE_TEXTCOLOR - visible when( !localvarBool( ui_hideBack ) ) - onFocus - { - play CHOICE_FOCUS_SOUND; - setLocalVarInt ui_highlight 2; - setLocalVarString ui_choicegroup CHOICE_GROUP; - setLocalvarBool ui_about 1; - } - leaveFocus - { - setLocalVarInt ui_highlight 0; - setLocalvarBool ui_about 0; - } - } - CHOICE_SEPARATOR_VIS( CHOICE_SEP_1, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_BUTTON_VIS( 3, "@MENU_JOIN_GAME", open pc_join_unranked;, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_BUTTON_VIS( 4, "@MENU_START_NEW_SERVER", close self; open createserver;, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_SEPARATOR_VIS( CHOICE_SEP_2, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_BUTTON_VIS( 5, "@MENU_SELECT_PROFILE", setdvar ui_playerProfileAlreadyChosen 0; open player_profile;, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_BUTTON_VIS( 6, "@MENU_CONTROLS", open main_controls;, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_BUTTON_VIS( 7, "@MENU_OPTIONS", open main_options;, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_BUTTON_VIS( 8, "@MENU_MODS", close self; open mods_menu;, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_SEPARATOR_VIS( CHOICE_SEP_3, when( !localvarBool( ui_hideBack ) ) ) - CHOICE_BUTTON_VIS( 9, "@MENU_QUIT", open quit_popmenu, when( !localvarBool( ui_hideBack ) ) ) - } - - #include "ui/choices_setup_popmenu.menu" -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 168 + +#define CHOICE_GROUP "main" +#define CHOICE_SEP_1 2 +#define CHOICE_SEP_2 4 +#define CHOICE_SEP_3 8 + +#define STYLE_PC 1 +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +{ + menuDef + { + name "cdkey_menu" + } + + assetGlobalDef + { + fadeClamp 1 + fadeCycle 1 + fadeAmount 0.1 + } + menuDef + { + name "main" + fullScreen 1 + rect 0 0 640 480 + focusColor COLOR_FOCUSED + onOpen + { + open main_text; + uiScript addPlayerProfiles; + uiScript openMenuOnDvar com_playerProfile "" player_profile; + uiScript openMenuOnDvarNot ui_playerProfileCount 1 player_profile; + uiScript stopRefresh; + setdvar ui_showEndOfGame "0"; + setdvar sv_cheats "1"; + setdvar promod_mode "strat"; + } + } + + menuDef + { + name "main_text" + fullScreen 1 + rect 0 0 640 480 + focusColor COLOR_FOCUSED + + itemDef + { + style WINDOW_STYLE_SHADER + rect FULLSCREEN_WIDE + background "animbg_back" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect FULLSCREEN_WIDE + background "animbg_front" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect FULLSCREEN_WIDE + background "animbg_front2" + visible 1 + decoration + } + itemDef + { + visible 1 + rect 324 56 278 68 + forecolor 1 1 1 1 + style WINDOW_STYLE_SHADER + background "logo_cod2" + visible when( !localvarBool( ui_hideBack ) ); + decoration + } + + CHOICE_BUTTON_VIS( 1, "@MENU_AUTO_UPDATE", open auconfirm;, when( dvarbool( cl_updateAvailable ) && !localvarBool( ui_hideBack ) ) ) + + itemDef + { + group grpControlbutton + rect 220 173 212 95 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0 0 0 0.85 + visible when( localvarBool( ui_about ) ); + decoration + } + itemDef + { + text "Call of Duty 4 Promod" + style 0 + textscale 0.3 + textstyle 3 + rect 325 191 110 20 + textalign ITEM_ALIGN_CENTER + textalignx -55 + textaligny 0 + textfont UI_FONT_NORMAL + forecolor 1 1 1 1 + visible when( localvarBool( ui_about ) ); + decoration + } + itemDef + { + text "www.codpromod.com" + style 0 + textscale 0.2 + textstyle 3 + rect 325 199 110 20 + textalign ITEM_ALIGN_CENTER + textalignx -55 + textaligny 0 + textfont UI_FONT_NORMAL + forecolor 1 1 1 1 + visible when( localvarBool( ui_about ) ); + decoration + } + itemDef + { + text "Current Promod Version: LIVE V2.20 EU" + style 0 + textscale 0.25 + textstyle 3 + rect 239 216 95 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 0 + textfont UI_FONT_NORMAL + forecolor 1 1 1 1 + visible when( localvarBool( ui_about ) ); + decoration + } + itemDef + { + text "Maintained by Ingram" + style 0 + textscale 0.25 + textstyle 3 + rect 239 227 95 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 0 + textfont UI_FONT_NORMAL + forecolor 1 1 1 1 + visible when( localvarBool( ui_about ) ); + decoration + } + itemDef + { + text "Former developers: raf1, MavLP, bulletworm, Trivve" + style 0 + textscale 0.25 + textstyle 3 + rect 230 246 95 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 0 + textfont UI_FONT_NORMAL + forecolor 1 1 1 1 + visible when( localvarBool( ui_about ) ); + decoration + } + itemDef + { + text "Also thanks to everyone else involved in Promod!" + style 0 + textscale 0.25 + textstyle 3 + rect 325 264 110 20 + textalign ITEM_ALIGN_CENTER + textalignx -55 + textaligny 0 + textfont UI_FONT_NORMAL + forecolor 1 1 1 1 + visible when( localvarBool( ui_about ) ); + decoration + } + + CHOICE_BUTTON_BG( 2, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_HIGHLIGHT( 2, 2 ) + itemDef + { + type ITEM_TYPE_BUTTON + rect CHOICE_RECT( 2 ) + exp text( "About Promod" ); + textfont CHOICE_TEXTFONT + textscale CHOICE_TEXTSIZE + textstyle CHOICE_TEXTSTYLE + textAlign CHOICE_TEXTALIGN + textAlignX CHOICE_TEXT_OFFSET_X + forecolor CHOICE_TEXTCOLOR + visible when( !localvarBool( ui_hideBack ) ) + onFocus + { + play CHOICE_FOCUS_SOUND; + setLocalVarInt ui_highlight 2; + setLocalVarString ui_choicegroup CHOICE_GROUP; + setLocalvarBool ui_about 1; + } + leaveFocus + { + setLocalVarInt ui_highlight 0; + setLocalvarBool ui_about 0; + } + } + CHOICE_SEPARATOR_VIS( CHOICE_SEP_1, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_BUTTON_VIS( 3, "@MENU_JOIN_GAME", open pc_join_unranked;, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_BUTTON_VIS( 4, "@MENU_START_NEW_SERVER", close self; open createserver;, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_SEPARATOR_VIS( CHOICE_SEP_2, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_BUTTON_VIS( 5, "@MENU_SELECT_PROFILE", setdvar ui_playerProfileAlreadyChosen 0; open player_profile;, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_BUTTON_VIS( 6, "@MENU_CONTROLS", open main_controls;, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_BUTTON_VIS( 7, "@MENU_OPTIONS", open main_options;, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_BUTTON_VIS( 8, "@MENU_MODS", close self; open mods_menu;, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_SEPARATOR_VIS( CHOICE_SEP_3, when( !localvarBool( ui_hideBack ) ) ) + CHOICE_BUTTON_VIS( 9, "@MENU_QUIT", open quit_popmenu, when( !localvarBool( ui_hideBack ) ) ) + } + + #include "ui/choices_setup_popmenu.menu" +} diff --git a/ui_mp/options_multi.menu b/ui_mp/options_multi.menu index c41356f..fb563dc 100644 --- a/ui_mp/options_multi.menu +++ b/ui_mp/options_multi.menu @@ -1,67 +1,67 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" -#define OPTIONS_STYLE 1 -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -{ - menuDef - { - name "options_multi" - fullScreen 0 - rect 0 0 640 480 - focusColor COLOR_FOCUSED - onOpen - { - setLocalVarBool ui_hideBack 1; - exec "setfromdvar ui_name name"; - exec "setfromdvar ui_sensitivity sensitivity"; - } - onClose - { - setLocalVarBool ui_hideBack 0; - exec "setfromdvar name ui_name"; - exec "setfromdvar sensitivity ui_sensitivity"; - } - onESC - { - close self; - } - - #include "ui_mp/leftside_options.inc" - - CHOICE_SECTION_TITLE( 21, "@MENU_MULTIPLAYER_OPTIONS" ) - - CHOICE_DVARYESNO( 22, "@MPUI_PUNKBUSTER", cl_punkbuster, ; ) - CHOICE_DVARYESNO( 23, "@MENU_ALLOW_DOWNLOAD", cl_allowdownload, ; ) - CHOICE_DVAREDIT( 24, "@MENU_PLAYER_NAME", ui_name, ; ) - - CHOICE_SECTION_TITLE( 25, "Performance Settings" ) - CHOICE_DVARYESNO( 26, "Draw Decals", r_drawDecals, ; ) - CHOICE_DVARYESNO( 27, "Draw Sun", r_drawSun, ; ) - CHOICE_DVARYESNO( 28, "Explosion Distortion", r_distortion, ; ) - CHOICE_DVARYESNO( 29, "Eject Brass", cg_brass, ; ) - - CHOICE_SECTION_TITLE( 30, "Network Settings" ) - CHOICE_DVARYESNO( 31, "Draw Lagometer", cg_drawLagometer, ; ) - CHOICE_DVARSTRINGLIST( 32, "FPS Counter", cg_drawFPS, { "Off" Off "Simple" Simple "Simple+Ranges" SimpleRanges "Verbose" Verbose }, ; ) - CHOICE_DVARFLOATLIST( 33, "Duplicate Packets", cl_packetdup, { "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 }, ; ) - - CHOICE_SECTION_TITLE( 34, "Visual Settings" ) - CHOICE_DVARYESNO( 35, "Numerical Ammo Counter", cg_drawBreathHint, ; ) - CHOICE_DVARFLOATLIST( 36, "Field Of View", cg_fov, { "65" 65 "71.1111" 71.1111 "80" 80 }, ;) - CHOICE_DVARFLOATLIST( 37, "Max FPS", com_maxfps, { "100 FPS" 100 "125 FPS" 125 "200 FPS" 200 "250 FPS" 250 }, ;) - CHOICE_DVARYESNO( 38, "Draw Mini-Scorebar", cg_voiceIconSize, ; ) - CHOICE_DVAREDIT( 39, "Mouse Sensitivity", ui_sensitivity, ; ) - } -} +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" +#define OPTIONS_STYLE 1 +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +{ + menuDef + { + name "options_multi" + fullScreen 0 + rect 0 0 640 480 + focusColor COLOR_FOCUSED + onOpen + { + setLocalVarBool ui_hideBack 1; + exec "setfromdvar ui_name name"; + exec "setfromdvar ui_sensitivity sensitivity"; + } + onClose + { + setLocalVarBool ui_hideBack 0; + exec "setfromdvar name ui_name"; + exec "setfromdvar sensitivity ui_sensitivity"; + } + onESC + { + close self; + } + + #include "ui_mp/leftside_options.inc" + + CHOICE_SECTION_TITLE( 21, "@MENU_MULTIPLAYER_OPTIONS" ) + + CHOICE_DVARYESNO( 22, "@MPUI_PUNKBUSTER", cl_punkbuster, ; ) + CHOICE_DVARYESNO( 23, "@MENU_ALLOW_DOWNLOAD", cl_allowdownload, ; ) + CHOICE_DVAREDIT( 24, "@MENU_PLAYER_NAME", ui_name, ; ) + + CHOICE_SECTION_TITLE( 25, "Performance Settings" ) + CHOICE_DVARYESNO( 26, "Draw Decals", r_drawDecals, ; ) + CHOICE_DVARYESNO( 27, "Draw Sun", r_drawSun, ; ) + CHOICE_DVARYESNO( 28, "Explosion Distortion", r_distortion, ; ) + CHOICE_DVARYESNO( 29, "Eject Brass", cg_brass, ; ) + + CHOICE_SECTION_TITLE( 30, "Network Settings" ) + CHOICE_DVARYESNO( 31, "Draw Lagometer", cg_drawLagometer, ; ) + CHOICE_DVARSTRINGLIST( 32, "FPS Counter", cg_drawFPS, { "Off" Off "Simple" Simple "Simple+Ranges" SimpleRanges "Verbose" Verbose }, ; ) + CHOICE_DVARFLOATLIST( 33, "Duplicate Packets", cl_packetdup, { "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 }, ; ) + + CHOICE_SECTION_TITLE( 34, "Visual Settings" ) + CHOICE_DVARYESNO( 35, "Numerical Ammo Counter", cg_drawBreathHint, ; ) + CHOICE_DVARFLOATLIST( 36, "Field Of View", cg_fov, { "65" 65 "71.1111" 71.1111 "80" 80 }, ;) + CHOICE_DVARFLOATLIST( 37, "Max FPS", com_maxfps, { "100 FPS" 100 "125 FPS" 125 "200 FPS" 200 "250 FPS" 250 }, ;) + CHOICE_DVARYESNO( 38, "Draw Mini-Scorebar", cg_voiceIconSize, ; ) + CHOICE_DVAREDIT( 39, "Mouse Sensitivity", ui_sensitivity, ; ) + } +} diff --git a/ui_mp/promod.txt b/ui_mp/promod.txt index a23e4f0..91b1a36 100644 --- a/ui_mp/promod.txt +++ b/ui_mp/promod.txt @@ -1,18 +1,18 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -{ - loadMenu { "ui_mp/connect.menu" } - loadMenu { "ui_mp/controls_multi.menu" } - loadMenu { "ui_mp/hud.menu" } - loadMenu { "ui_mp/main.menu" } - loadMenu { "ui_mp/options_multi.menu" } - loadMenu { "ui_mp/wm_quickmessage.menu" } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +{ + loadMenu { "ui_mp/connect.menu" } + loadMenu { "ui_mp/controls_multi.menu" } + loadMenu { "ui_mp/hud.menu" } + loadMenu { "ui_mp/main.menu" } + loadMenu { "ui_mp/options_multi.menu" } + loadMenu { "ui_mp/wm_quickmessage.menu" } +} diff --git a/ui_mp/scoreboard.inc b/ui_mp/scoreboard.inc index 07fe219..8d63e0a 100644 --- a/ui_mp/scoreboard.inc +++ b/ui_mp/scoreboard.inc @@ -1,76 +1,76 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#undef CHOICE_Y_SPACING -#define CHOICE_Y_SPACING 20 - -#define SCOREBOARD_MENU( itemIndex, textArg, colorArg, visArg ) \ -itemDef \ -{ \ - type ITEM_TYPE_BUTTON \ - rect CHOICE_RECT( itemIndex ) \ - exp text( textArg ); \ - textfont CHOICE_TEXTFONT \ - textscale TEXTSIZE_SMALL \ - textstyle CHOICE_TEXTSTYLE \ - textAlign CHOICE_TEXTALIGN \ - textAlignX CHOICE_TEXT_OFFSET_X \ - forecolor colorArg \ - visible when( team( name ) == "TEAM_FREE" && visArg ) \ - decoration \ -} \ - -#define SCOREBOARD_TITLE( itemIndex, titleArg ) \ -itemDef \ -{ \ - style WINDOW_STYLE_SHADER \ - rect (SECTION_X_OFFSET+40) 7 180 0.5 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ - origin CHOICE_ORIGIN( itemIndex ) \ - background "line_horizontal" \ - forecolor 1 1 1 0.85 \ - visible when( team( name ) == "TEAM_FREE" ) \ - decoration \ -} \ -itemDef \ -{ \ - style WINDOW_STYLE_SHADER \ - rect (SECTION_X_OFFSET+40) 8 180 10 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ - origin CHOICE_ORIGIN( itemIndex ) \ - background "line_horizontal" \ - forecolor 0.5 0.5 0.5 0.8 \ - visible when( team( name ) == "TEAM_FREE" ) \ - decoration \ -} \ -itemDef \ -{ \ - style WINDOW_STYLE_SHADER \ - rect (SECTION_X_OFFSET+40) 19 180 0.5 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ - origin CHOICE_ORIGIN( itemIndex ) \ - background "line_horizontal" \ - forecolor 1 1 1 0.85 \ - visible when( team( name ) == "TEAM_FREE" ) \ - decoration \ -} \ -itemDef \ -{ \ - type ITEM_TYPE_TEXT \ - rect (SECTION_X_OFFSET+150) -1 240 24 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ - origin CHOICE_ORIGIN( itemIndex ) \ - forecolor 1 1 1 0.8 \ - exp text( titleArg );\ - textstyle ITEM_TEXTSTYLE_SHADOWED \ - textfont UI_FONT_NORMAL \ - textscale TEXTSIZE_SMALL \ - textstyle CHOICE_TEXTSTYLE \ - textAlign ITEM_ALIGN_MIDDLE_LEFT \ - textAlignX SECTION_TEXT_OFFSET_X \ - visible when( team( name ) == "TEAM_FREE" ) \ - decoration \ -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#undef CHOICE_Y_SPACING +#define CHOICE_Y_SPACING 20 + +#define SCOREBOARD_MENU( itemIndex, textArg, colorArg, visArg ) \ +itemDef \ +{ \ + type ITEM_TYPE_BUTTON \ + rect CHOICE_RECT( itemIndex ) \ + exp text( textArg ); \ + textfont CHOICE_TEXTFONT \ + textscale TEXTSIZE_SMALL \ + textstyle CHOICE_TEXTSTYLE \ + textAlign CHOICE_TEXTALIGN \ + textAlignX CHOICE_TEXT_OFFSET_X \ + forecolor colorArg \ + visible when( team( name ) == "TEAM_FREE" && visArg ) \ + decoration \ +} \ + +#define SCOREBOARD_TITLE( itemIndex, titleArg ) \ +itemDef \ +{ \ + style WINDOW_STYLE_SHADER \ + rect (SECTION_X_OFFSET+40) 7 180 0.5 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ + origin CHOICE_ORIGIN( itemIndex ) \ + background "line_horizontal" \ + forecolor 1 1 1 0.85 \ + visible when( team( name ) == "TEAM_FREE" ) \ + decoration \ +} \ +itemDef \ +{ \ + style WINDOW_STYLE_SHADER \ + rect (SECTION_X_OFFSET+40) 8 180 10 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ + origin CHOICE_ORIGIN( itemIndex ) \ + background "line_horizontal" \ + forecolor 0.5 0.5 0.5 0.8 \ + visible when( team( name ) == "TEAM_FREE" ) \ + decoration \ +} \ +itemDef \ +{ \ + style WINDOW_STYLE_SHADER \ + rect (SECTION_X_OFFSET+40) 19 180 0.5 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ + origin CHOICE_ORIGIN( itemIndex ) \ + background "line_horizontal" \ + forecolor 1 1 1 0.85 \ + visible when( team( name ) == "TEAM_FREE" ) \ + decoration \ +} \ +itemDef \ +{ \ + type ITEM_TYPE_TEXT \ + rect (SECTION_X_OFFSET+150) -1 240 24 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \ + origin CHOICE_ORIGIN( itemIndex ) \ + forecolor 1 1 1 0.8 \ + exp text( titleArg );\ + textstyle ITEM_TEXTSTYLE_SHADOWED \ + textfont UI_FONT_NORMAL \ + textscale TEXTSIZE_SMALL \ + textstyle CHOICE_TEXTSTYLE \ + textAlign ITEM_ALIGN_MIDDLE_LEFT \ + textAlignX SECTION_TEXT_OFFSET_X \ + visible when( team( name ) == "TEAM_FREE" ) \ + decoration \ +} diff --git a/ui_mp/scriptmenus/changeclass_marines_mw.menu b/ui_mp/scriptmenus/changeclass_marines_mw.menu index bd36939..bb73aba 100644 --- a/ui_mp/scriptmenus/changeclass_marines_mw.menu +++ b/ui_mp/scriptmenus/changeclass_marines_mw.menu @@ -1,105 +1,105 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" - -#define CHOICE_SIZE_X -#define CHOICE_SIZE_Y 22 - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 34 - -#define CHOICE_SEP_OFFSET_Y -2 - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#undef BUTTON_BG_COLOR -#define BUTTON_BG_COLOR 0 0 0 0 - -#define MENU_LOCKED_COLOR 0.25 0.25 0.25 1 - -#define ORIGIN_BUTTON_BACK 52 438 -#define ORIGIN_MENU_TREE 54 64 -#define ORIGIN_MENU_TITLE_MARINES 178 64 -#define ORIGIN_MENU_TITLE_OPFOR 170 64 -#define TREE_COLOR 1 1 1 0.5 -#define LABEL_TEXT_COLOR 0.7 0.75 0.75 1 - -{ - menuDef - { - name "changeclass_marines_mw" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - blurWorld 7 - onOpen - { - setLocalVarInt ui_highlight ""; - setLocalVarString ui_team "marines" - } - onEsc - { - close self; - } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - CHOICE_MENU_TITLE( "@MPUI_CHOOSE_CLASS_CAP" ) - - #define BACK_OPEN; - #include "ui_mp/navcontrols.inc" - #include "ui_mp/teamicon.inc" - - CHOICE_BUTTON_VIS( 1, "1. Assault", scriptMenuResponse "assault";, when( dvarBool( allies_allow_assault ) || dvarString( loadout_curclass ) == "assault" ) ) - CHOICE_DBUTTON_VIS( 1, "1. Assault", when( !dvarBool( allies_allow_assault ) && dvarString( loadout_curclass ) != "assault" ) ) - - CHOICE_BUTTON_VIS( 2, "2. Spec Ops", scriptMenuResponse "specops";, when( dvarBool( allies_allow_specops ) || dvarString( loadout_curclass ) == "specops" ) ) - CHOICE_DBUTTON_VIS( 2, "2. Spec Ops", when( !dvarBool( allies_allow_specops ) && dvarString( loadout_curclass ) != "specops" ) ) - - CHOICE_BUTTON_VIS( 3, "3. Demolitions", scriptMenuResponse "demolitions";, when( dvarBool( allies_allow_demolitions ) || dvarString( loadout_curclass ) == "demolitions" ) ) - CHOICE_DBUTTON_VIS( 3, "3. Demolitions", when( !dvarBool( allies_allow_demolitions ) && dvarString( loadout_curclass ) != "demolitions" ) ) - - CHOICE_BUTTON_VIS( 4, "4. Sniper", scriptMenuResponse "sniper";, when( dvarBool( allies_allow_sniper ) || dvarString( loadout_curclass ) == "sniper" ) ) - CHOICE_DBUTTON_VIS( 4, "4. Sniper", when( !dvarBool( allies_allow_sniper ) && dvarString( loadout_curclass ) != "sniper" ) ) - - CHOICE_BUTTON( 6, "5. Spectate Team", scriptMenuResponse "killspec"; ) - - execKey "1" { scriptMenuResponse "assault"; } - execKey "2" { scriptMenuResponse "specops"; } - execKey "3" { scriptMenuResponse "demolitions"; } - execKey "4" { scriptMenuResponse "sniper"; } - execKey "5" { scriptMenuResponse "killspec"; } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" + +#define CHOICE_SIZE_X +#define CHOICE_SIZE_Y 22 + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 34 + +#define CHOICE_SEP_OFFSET_Y -2 + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#undef BUTTON_BG_COLOR +#define BUTTON_BG_COLOR 0 0 0 0 + +#define MENU_LOCKED_COLOR 0.25 0.25 0.25 1 + +#define ORIGIN_BUTTON_BACK 52 438 +#define ORIGIN_MENU_TREE 54 64 +#define ORIGIN_MENU_TITLE_MARINES 178 64 +#define ORIGIN_MENU_TITLE_OPFOR 170 64 +#define TREE_COLOR 1 1 1 0.5 +#define LABEL_TEXT_COLOR 0.7 0.75 0.75 1 + +{ + menuDef + { + name "changeclass_marines_mw" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + blurWorld 7 + onOpen + { + setLocalVarInt ui_highlight ""; + setLocalVarString ui_team "marines" + } + onEsc + { + close self; + } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + CHOICE_MENU_TITLE( "@MPUI_CHOOSE_CLASS_CAP" ) + + #define BACK_OPEN; + #include "ui_mp/navcontrols.inc" + #include "ui_mp/teamicon.inc" + + CHOICE_BUTTON_VIS( 1, "1. Assault", scriptMenuResponse "assault";, when( dvarBool( allies_allow_assault ) || dvarString( loadout_curclass ) == "assault" ) ) + CHOICE_DBUTTON_VIS( 1, "1. Assault", when( !dvarBool( allies_allow_assault ) && dvarString( loadout_curclass ) != "assault" ) ) + + CHOICE_BUTTON_VIS( 2, "2. Spec Ops", scriptMenuResponse "specops";, when( dvarBool( allies_allow_specops ) || dvarString( loadout_curclass ) == "specops" ) ) + CHOICE_DBUTTON_VIS( 2, "2. Spec Ops", when( !dvarBool( allies_allow_specops ) && dvarString( loadout_curclass ) != "specops" ) ) + + CHOICE_BUTTON_VIS( 3, "3. Demolitions", scriptMenuResponse "demolitions";, when( dvarBool( allies_allow_demolitions ) || dvarString( loadout_curclass ) == "demolitions" ) ) + CHOICE_DBUTTON_VIS( 3, "3. Demolitions", when( !dvarBool( allies_allow_demolitions ) && dvarString( loadout_curclass ) != "demolitions" ) ) + + CHOICE_BUTTON_VIS( 4, "4. Sniper", scriptMenuResponse "sniper";, when( dvarBool( allies_allow_sniper ) || dvarString( loadout_curclass ) == "sniper" ) ) + CHOICE_DBUTTON_VIS( 4, "4. Sniper", when( !dvarBool( allies_allow_sniper ) && dvarString( loadout_curclass ) != "sniper" ) ) + + CHOICE_BUTTON( 6, "5. Spectate Team", scriptMenuResponse "killspec"; ) + + execKey "1" { scriptMenuResponse "assault"; } + execKey "2" { scriptMenuResponse "specops"; } + execKey "3" { scriptMenuResponse "demolitions"; } + execKey "4" { scriptMenuResponse "sniper"; } + execKey "5" { scriptMenuResponse "killspec"; } + } +} diff --git a/ui_mp/scriptmenus/changeclass_mw.menu b/ui_mp/scriptmenus/changeclass_mw.menu index 665116d..e9d75ec 100644 --- a/ui_mp/scriptmenus/changeclass_mw.menu +++ b/ui_mp/scriptmenus/changeclass_mw.menu @@ -1,42 +1,42 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" - -#define CAC_CLASS 200 -#define CAC_PRIMARY 201 -#define CAC_PRIMARY_ATTACHMENT 202 -#define CAC_SECONDARY 203 -#define CAC_SECONDARY_ATTACHMENT 204 -#define CAC_SPECIALTY_EQUIPMENT 205 -#define CAC_SPECIALTY_WEAPON 206 -#define CAC_SPECIALTY_ABILITY 207 -#define CAC_SPECIAL_GRENADE 208 -#define CAC_CAMO 209 - -#define CAC_S_CLASS "200" -#define CAC_S_PRIMARY "201" -#define CAC_S_PRIMARY_ATTACHMENT "202" -#define CAC_S_SECONDARY "203" -#define CAC_S_SECONDARY_ATTACHMENT "204" -#define CAC_S_SPECIALTY_EQUIPMENT "205" -#define CAC_S_SPECIALTY_WEAPON "206" -#define CAC_S_SPECIALTY_ABILITY "207" -#define CAC_S_SPECIAL_GRENADE "208" -#define CAC_S_CAMO "209" - -#define CAC_MENU_NAME "changeclass_mw" -#define CAC_PREFIX "mw_" -#define CAC_CUSTOM_NAME "customclass1" - -{ - #include "ui_mp/cac_ingame.inc" -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" + +#define CAC_CLASS 200 +#define CAC_PRIMARY 201 +#define CAC_PRIMARY_ATTACHMENT 202 +#define CAC_SECONDARY 203 +#define CAC_SECONDARY_ATTACHMENT 204 +#define CAC_SPECIALTY_EQUIPMENT 205 +#define CAC_SPECIALTY_WEAPON 206 +#define CAC_SPECIALTY_ABILITY 207 +#define CAC_SPECIAL_GRENADE 208 +#define CAC_CAMO 209 + +#define CAC_S_CLASS "200" +#define CAC_S_PRIMARY "201" +#define CAC_S_PRIMARY_ATTACHMENT "202" +#define CAC_S_SECONDARY "203" +#define CAC_S_SECONDARY_ATTACHMENT "204" +#define CAC_S_SPECIALTY_EQUIPMENT "205" +#define CAC_S_SPECIALTY_WEAPON "206" +#define CAC_S_SPECIALTY_ABILITY "207" +#define CAC_S_SPECIAL_GRENADE "208" +#define CAC_S_CAMO "209" + +#define CAC_MENU_NAME "changeclass_mw" +#define CAC_PREFIX "mw_" +#define CAC_CUSTOM_NAME "customclass1" + +{ + #include "ui_mp/cac_ingame.inc" +} diff --git a/ui_mp/scriptmenus/changeclass_opfor_mw.menu b/ui_mp/scriptmenus/changeclass_opfor_mw.menu index 00a99f8..748d9b5 100644 --- a/ui_mp/scriptmenus/changeclass_opfor_mw.menu +++ b/ui_mp/scriptmenus/changeclass_opfor_mw.menu @@ -1,105 +1,105 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" - -#define CHOICE_SIZE_X -#define CHOICE_SIZE_Y 22 - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 34 - -#define CHOICE_SEP_OFFSET_Y -2 - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#undef BUTTON_BG_COLOR -#define BUTTON_BG_COLOR 0 0 0 0 - -#define MENU_LOCKED_COLOR 0.25 0.25 0.25 1 - -#define ORIGIN_BUTTON_BACK 52 438 -#define ORIGIN_MENU_TREE 54 64 -#define ORIGIN_MENU_TITLE_MARINES 178 64 -#define ORIGIN_MENU_TITLE_OPFOR 170 64 -#define TREE_COLOR 1 1 1 0.5 -#define LABEL_TEXT_COLOR 0.7 0.75 0.75 1 - -{ - menuDef - { - name "changeclass_opfor_mw" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - blurWorld 7 - onOpen - { - setLocalVarInt ui_highlight ""; - setLocalVarString ui_team "opfor" - } - onEsc - { - close self; - } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - CHOICE_MENU_TITLE( "@MPUI_CHOOSE_CLASS_CAP" ) - - #define BACK_OPEN; - #include "ui_mp/navcontrols.inc" - #include "ui_mp/teamicon.inc" - - CHOICE_BUTTON_VIS( 1, "1. Assault", scriptMenuResponse "assault";, when( dvarBool( axis_allow_assault ) || dvarString( loadout_curclass ) == "assault" ) ) - CHOICE_DBUTTON_VIS( 1, "1. Assault", when( !dvarBool( axis_allow_assault ) && dvarString( loadout_curclass ) != "assault" ) ) - - CHOICE_BUTTON_VIS( 2, "2. Spec Ops", scriptMenuResponse "specops";, when( dvarBool( axis_allow_specops ) || dvarString( loadout_curclass ) == "specops" ) ) - CHOICE_DBUTTON_VIS( 2, "2. Spec Ops", when( !dvarBool( axis_allow_specops ) && dvarString( loadout_curclass ) != "specops" ) ) - - CHOICE_BUTTON_VIS( 3, "3. Demolitions", scriptMenuResponse "demolitions";, when( dvarBool( axis_allow_demolitions ) || dvarString( loadout_curclass ) == "demolitions" ) ) - CHOICE_DBUTTON_VIS( 3, "3. Demolitions", when( !dvarBool( axis_allow_demolitions ) && dvarString( loadout_curclass ) != "demolitions" ) ) - - CHOICE_BUTTON_VIS( 4, "4. Sniper", scriptMenuResponse "sniper";, when( dvarBool( axis_allow_sniper ) || dvarString( loadout_curclass ) == "sniper" ) ) - CHOICE_DBUTTON_VIS( 4, "4. Sniper", when( !dvarBool( axis_allow_sniper ) && dvarString( loadout_curclass ) != "sniper" ) ) - - CHOICE_BUTTON( 6, "5. Spectate Team", scriptMenuResponse "killspec"; ) - - execKey "1" { scriptMenuResponse "assault"; } - execKey "2" { scriptMenuResponse "specops"; } - execKey "3" { scriptMenuResponse "demolitions"; } - execKey "4" { scriptMenuResponse "sniper"; } - execKey "5" { scriptMenuResponse "killspec"; } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" + +#define CHOICE_SIZE_X +#define CHOICE_SIZE_Y 22 + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 34 + +#define CHOICE_SEP_OFFSET_Y -2 + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#undef BUTTON_BG_COLOR +#define BUTTON_BG_COLOR 0 0 0 0 + +#define MENU_LOCKED_COLOR 0.25 0.25 0.25 1 + +#define ORIGIN_BUTTON_BACK 52 438 +#define ORIGIN_MENU_TREE 54 64 +#define ORIGIN_MENU_TITLE_MARINES 178 64 +#define ORIGIN_MENU_TITLE_OPFOR 170 64 +#define TREE_COLOR 1 1 1 0.5 +#define LABEL_TEXT_COLOR 0.7 0.75 0.75 1 + +{ + menuDef + { + name "changeclass_opfor_mw" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + blurWorld 7 + onOpen + { + setLocalVarInt ui_highlight ""; + setLocalVarString ui_team "opfor" + } + onEsc + { + close self; + } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + CHOICE_MENU_TITLE( "@MPUI_CHOOSE_CLASS_CAP" ) + + #define BACK_OPEN; + #include "ui_mp/navcontrols.inc" + #include "ui_mp/teamicon.inc" + + CHOICE_BUTTON_VIS( 1, "1. Assault", scriptMenuResponse "assault";, when( dvarBool( axis_allow_assault ) || dvarString( loadout_curclass ) == "assault" ) ) + CHOICE_DBUTTON_VIS( 1, "1. Assault", when( !dvarBool( axis_allow_assault ) && dvarString( loadout_curclass ) != "assault" ) ) + + CHOICE_BUTTON_VIS( 2, "2. Spec Ops", scriptMenuResponse "specops";, when( dvarBool( axis_allow_specops ) || dvarString( loadout_curclass ) == "specops" ) ) + CHOICE_DBUTTON_VIS( 2, "2. Spec Ops", when( !dvarBool( axis_allow_specops ) && dvarString( loadout_curclass ) != "specops" ) ) + + CHOICE_BUTTON_VIS( 3, "3. Demolitions", scriptMenuResponse "demolitions";, when( dvarBool( axis_allow_demolitions ) || dvarString( loadout_curclass ) == "demolitions" ) ) + CHOICE_DBUTTON_VIS( 3, "3. Demolitions", when( !dvarBool( axis_allow_demolitions ) && dvarString( loadout_curclass ) != "demolitions" ) ) + + CHOICE_BUTTON_VIS( 4, "4. Sniper", scriptMenuResponse "sniper";, when( dvarBool( axis_allow_sniper ) || dvarString( loadout_curclass ) == "sniper" ) ) + CHOICE_DBUTTON_VIS( 4, "4. Sniper", when( !dvarBool( axis_allow_sniper ) && dvarString( loadout_curclass ) != "sniper" ) ) + + CHOICE_BUTTON( 6, "5. Spectate Team", scriptMenuResponse "killspec"; ) + + execKey "1" { scriptMenuResponse "assault"; } + execKey "2" { scriptMenuResponse "specops"; } + execKey "3" { scriptMenuResponse "demolitions"; } + execKey "4" { scriptMenuResponse "sniper"; } + execKey "5" { scriptMenuResponse "killspec"; } + } +} diff --git a/ui_mp/scriptmenus/class.menu b/ui_mp/scriptmenus/class.menu index c41ceee..babc64b 100644 --- a/ui_mp/scriptmenus/class.menu +++ b/ui_mp/scriptmenus/class.menu @@ -1,149 +1,149 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" - -#define CHOICE_SIZE_X 150 -#define CHOICE_SIZE_Y 22 - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 204 - -#define CHOICE_GROUP "class" -#define CHOICE_SEP_1 4 - -#include "ui_mp/menustyle.inc" -#include "ui_mp/choices_setup_teams.menu" - -#undef BUTTON_BG_COLOR -#define BUTTON_BG_COLOR 0 0 0 0 - -#define ORIGIN_DESCRIPTION (CHOICE_X_START + 15) 190 - -{ - menuDef - { - name "class" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - blurWorld 7 - onOpen - { - focusFirst; - } - onEsc - { - close self; - } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - #include "ui_mp/tactical_map.inc"; - #define ORIGIN_BANNER 108 48 - - itemDef { - style WINDOW_STYLE_SHADER - rect ORIGIN_BANNER 400 0.5 - background "line_horizontal" - forecolor 1 1 1 0.85 - visible 1 decoration } - itemDef { - style WINDOW_STYLE_SHADER - rect ORIGIN_BANNER 340 10 - origin 30 1 - background "line_horizontal" - forecolor OBJECTIVE_COLOR_MARINES - visible 1 - decoration } - itemDef { - style WINDOW_STYLE_SHADER - rect ORIGIN_BANNER 400 0.5 - origin 0 12 - background "line_horizontal" - forecolor 1 1 1 0.85 - visible 1 decoration } - - itemDef { - rect -400 64 800 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_TITLE - textalign ITEM_ALIGN_CENTER - forecolor 1 1 1 0.85 - exp text ( gametypename() ); - visible 1 decoration } - itemDef { - rect -250 84 500 60 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textalign ITEM_ALIGN_CENTER - forecolor 1 1 1 0.75 - exp text( gametypedescription() ); - autowrapped - visible 1 decoration } - - CHOICE_MENU_TITLE( "@MENU_OPTIONS_UPPER_CASE" ) - - #define BACK_OPEN; - #include "ui_mp/navcontrols.inc" - #include "ui_mp/teamicon.inc" - - #undef CHOICE_X_START - #define CHOICE_X_START -320 - - #undef CHOICE_HORIZONTAL_ALIGN - #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER - - CHOICE_BUTTON_BG( 1, when( (TEAM_IS_MARINES || TEAM_IS_OPFOR) && MAY_CHOOSE_CLASS ) ) - CHOICE_HIGHLIGHT( 1, (TEAM_IS_MARINES || TEAM_IS_OPFOR) && MAY_CHOOSE_CLASS ) - CHOICE_BUTTON_VIS_NOHI( 1, "@MPUI_CHOOSE_CLASS", scriptMenuResponse "changeclass_marines", when( TEAM_IS_MARINES && MAY_CHOOSE_CLASS ) ) - CHOICE_BUTTON_VIS_NOHI( 1, "@MPUI_CHOOSE_CLASS", scriptMenuResponse "changeclass_opfor", when( TEAM_IS_OPFOR && MAY_CHOOSE_CLASS ) ) - - CHOICE_BUTTON( 2, "@MPUI_CHANGE_TEAM", scriptMenuResponse "changeteam"; ) - - CHOICE_SEPARATOR( CHOICE_SEP_1 ) - - CHOICE_BUTTON( 3, "@MENU_CONTROLS", close self; open main_controls ) - CHOICE_BUTTON( 4, "@MENU_OPTIONS", close self; open main_options; execnow "set ui_allow_graphic_change 0"; ) - - CHOICE_BUTTON_VIS( 5, "@MPUI_CALL_VOTE", open callvote; close self;, when( dvarbool( ui_allowvote ) ); ) - CHOICE_DBUTTON_VIS( 5, "@MPUI_CALL_VOTE", when( !dvarbool( ui_allowvote ) ); ) - - CHOICE_BUTTON( 6, "@MPUI_MUTE_PLAYERS", open muteplayer; close self; ) - - CHOICE_BUTTON( 7, "@MENU_LEAVE_GAME", open popup_leavegame; ) - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" + +#define CHOICE_SIZE_X 150 +#define CHOICE_SIZE_Y 22 + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 204 + +#define CHOICE_GROUP "class" +#define CHOICE_SEP_1 4 + +#include "ui_mp/menustyle.inc" +#include "ui_mp/choices_setup_teams.menu" + +#undef BUTTON_BG_COLOR +#define BUTTON_BG_COLOR 0 0 0 0 + +#define ORIGIN_DESCRIPTION (CHOICE_X_START + 15) 190 + +{ + menuDef + { + name "class" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + blurWorld 7 + onOpen + { + focusFirst; + } + onEsc + { + close self; + } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + #include "ui_mp/tactical_map.inc"; + #define ORIGIN_BANNER 108 48 + + itemDef { + style WINDOW_STYLE_SHADER + rect ORIGIN_BANNER 400 0.5 + background "line_horizontal" + forecolor 1 1 1 0.85 + visible 1 decoration } + itemDef { + style WINDOW_STYLE_SHADER + rect ORIGIN_BANNER 340 10 + origin 30 1 + background "line_horizontal" + forecolor OBJECTIVE_COLOR_MARINES + visible 1 + decoration } + itemDef { + style WINDOW_STYLE_SHADER + rect ORIGIN_BANNER 400 0.5 + origin 0 12 + background "line_horizontal" + forecolor 1 1 1 0.85 + visible 1 decoration } + + itemDef { + rect -400 64 800 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_TITLE + textalign ITEM_ALIGN_CENTER + forecolor 1 1 1 0.85 + exp text ( gametypename() ); + visible 1 decoration } + itemDef { + rect -250 84 500 60 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textalign ITEM_ALIGN_CENTER + forecolor 1 1 1 0.75 + exp text( gametypedescription() ); + autowrapped + visible 1 decoration } + + CHOICE_MENU_TITLE( "@MENU_OPTIONS_UPPER_CASE" ) + + #define BACK_OPEN; + #include "ui_mp/navcontrols.inc" + #include "ui_mp/teamicon.inc" + + #undef CHOICE_X_START + #define CHOICE_X_START -320 + + #undef CHOICE_HORIZONTAL_ALIGN + #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER + + CHOICE_BUTTON_BG( 1, when( (TEAM_IS_MARINES || TEAM_IS_OPFOR) && MAY_CHOOSE_CLASS ) ) + CHOICE_HIGHLIGHT( 1, (TEAM_IS_MARINES || TEAM_IS_OPFOR) && MAY_CHOOSE_CLASS ) + CHOICE_BUTTON_VIS_NOHI( 1, "@MPUI_CHOOSE_CLASS", scriptMenuResponse "changeclass_marines", when( TEAM_IS_MARINES && MAY_CHOOSE_CLASS ) ) + CHOICE_BUTTON_VIS_NOHI( 1, "@MPUI_CHOOSE_CLASS", scriptMenuResponse "changeclass_opfor", when( TEAM_IS_OPFOR && MAY_CHOOSE_CLASS ) ) + + CHOICE_BUTTON( 2, "@MPUI_CHANGE_TEAM", scriptMenuResponse "changeteam"; ) + + CHOICE_SEPARATOR( CHOICE_SEP_1 ) + + CHOICE_BUTTON( 3, "@MENU_CONTROLS", close self; open main_controls ) + CHOICE_BUTTON( 4, "@MENU_OPTIONS", close self; open main_options; execnow "set ui_allow_graphic_change 0"; ) + + CHOICE_BUTTON_VIS( 5, "@MPUI_CALL_VOTE", open callvote; close self;, when( dvarbool( ui_allowvote ) ); ) + CHOICE_DBUTTON_VIS( 5, "@MPUI_CALL_VOTE", when( !dvarbool( ui_allowvote ) ); ) + + CHOICE_BUTTON( 6, "@MPUI_MUTE_PLAYERS", open muteplayer; close self; ) + + CHOICE_BUTTON( 7, "@MENU_LEAVE_GAME", open popup_leavegame; ) + } +} diff --git a/ui_mp/scriptmenus/demo.menu b/ui_mp/scriptmenus/demo.menu index 809b6c9..d8f56b7 100644 --- a/ui_mp/scriptmenus/demo.menu +++ b/ui_mp/scriptmenus/demo.menu @@ -1,72 +1,72 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#include "ui_mp/popupstyle.inc" -#include "ui/choices_setup_popmenu.menu" - -#undef CHOICE_HORIZONTAL_ALIGN -#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER -#undef CHOICE_VERTICAL_ALIGN -#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER - -#undef CHOICE_SIZE_X -#define CHOICE_SIZE_X 325 - -#undef CHOICE_SIZE_Y -#define CHOICE_SIZE_Y 18 - -#undef CHOICE_POPUP_TITLE_HEIGHT -#define CHOICE_POPUP_TITLE_HEIGHT 20 - -{ - menuDef - { - CENTER_POPUP_SETUP_ONOPEN( demo, 5, ;, setDvar ui_demo "record "; setfocus demo;, 1 ) - - CHOICE_POPMENU_TITLE( "Record Demo" ) - CHOICE_POPMENU_SUBTITLE( " Note: Don't remove 'record' in front of the demo name" ) - - name "demo" - - onClose - { - scriptMenuResponse "demo"; - } - - itemDef - { - name demo - type ITEM_TYPE_EDITFIELD - text "Demo Name:" - dvar "ui_demo" - rect CHOICE_ORIGIN( 3 ) (CHOICE_SIZE_X) 20 - origin 0 -12 - textaligny 0 - textalignx 1 - maxpaintchars 30 - textalign ITEM_ALIGN_MIDDLE_LEFT - textfont UI_FONT_NORMAL - textscale TEXTSIZE_SMALL - forecolor .9 .9 .9 1 - style WINDOW_STYLE_FILLED - backcolor 0 0 0 .3 - visible 1 - accept { exec "stoprecord"; exec "vstr ui_demo"; close self } - } - - CHOICE_BUTTON( 4, "Start Recording", exec "stoprecord"; exec "vstr ui_demo"; close self ) - CHOICE_BUTTON( 5, "Cancel", close self; ) - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#include "ui_mp/popupstyle.inc" +#include "ui/choices_setup_popmenu.menu" + +#undef CHOICE_HORIZONTAL_ALIGN +#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER +#undef CHOICE_VERTICAL_ALIGN +#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER + +#undef CHOICE_SIZE_X +#define CHOICE_SIZE_X 325 + +#undef CHOICE_SIZE_Y +#define CHOICE_SIZE_Y 18 + +#undef CHOICE_POPUP_TITLE_HEIGHT +#define CHOICE_POPUP_TITLE_HEIGHT 20 + +{ + menuDef + { + CENTER_POPUP_SETUP_ONOPEN( demo, 5, ;, setDvar ui_demo "record "; setfocus demo;, 1 ) + + CHOICE_POPMENU_TITLE( "Record Demo" ) + CHOICE_POPMENU_SUBTITLE( " Note: Don't remove 'record' in front of the demo name" ) + + name "demo" + + onClose + { + scriptMenuResponse "demo"; + } + + itemDef + { + name demo + type ITEM_TYPE_EDITFIELD + text "Demo Name:" + dvar "ui_demo" + rect CHOICE_ORIGIN( 3 ) (CHOICE_SIZE_X) 20 + origin 0 -12 + textaligny 0 + textalignx 1 + maxpaintchars 30 + textalign ITEM_ALIGN_MIDDLE_LEFT + textfont UI_FONT_NORMAL + textscale TEXTSIZE_SMALL + forecolor .9 .9 .9 1 + style WINDOW_STYLE_FILLED + backcolor 0 0 0 .3 + visible 1 + accept { exec "stoprecord"; exec "vstr ui_demo"; close self } + } + + CHOICE_BUTTON( 4, "Start Recording", exec "stoprecord"; exec "vstr ui_demo"; close self ) + CHOICE_BUTTON( 5, "Cancel", close self; ) + } +} diff --git a/ui_mp/scriptmenus/quickpromod.menu b/ui_mp/scriptmenus/quickpromod.menu index 6bdebbb..91209d0 100644 --- a/ui_mp/scriptmenus/quickpromod.menu +++ b/ui_mp/scriptmenus/quickpromod.menu @@ -1,155 +1,154 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#include "ui_mp/popupstyle.inc" -#include "ui/choices_setup_popmenu.menu" - -#undef CHOICE_SIZE_X -#define CHOICE_SIZE_X 186 - -#undef CHOICE_POPUP_BACKCOLOR -#define CHOICE_POPUP_BACKCOLOR 0.2 0.2 0.22 0.65 - -#define ORIGIN_QUICKMESSAGEWINDOW 0 16 - -{ - menuDef - { - IMPROVED_POPUP_SETUP_ONOPEN( quickpromod, 10, 4, 210, ;, setDvar cl_bypassMouseInput "1";, 0 ) - onClose{ setDvar cl_bypassMouseInput "0" } - - CHOICE_POPMENU_TITLE( "Promod Controls" ) - - itemDef - { - name "window" - group ingamebox - rect 16 20 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "1. Timeout" - visible 1 - decoration - } - execKey "1" { scriptMenuResponse "1"; close quickpromod } - - itemDef - { - name "window" - group ingamebox - rect 16 36 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "2. Drop Bomb" - visible 1 - decoration - } - execKey "2" { scriptMenuResponse "2"; close quickpromod } - - itemDef - { - name "window" - group ingamebox - rect 16 52 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "3. Suicide" - visible 1 - decoration - } - execKey "3" { scriptMenuResponse "3"; close quickpromod } - - itemDef - { - name "window" - group ingamebox - rect 16 68 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "4. Spectate Team" - visible 1 - decoration - } - execKey "4" { scriptMenuResponse "killspec"; close quickpromod } - - - itemDef - { - name "window" - group ingamebox - rect 16 84 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "5. Record Reminder" - visible 1 - decoration - } - execKey "5" { scriptMenuResponse "4"; close quickpromod } - - itemDef - { - name "window" - group ingamebox - rect 16 100 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "6. Statistics" - visible 1 - decoration - } - execKey "6" { scriptMenuResponse "5"; close quickpromod } - - itemDef - { - name "window" - group ingamebox - rect 16 164 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "Esc. Exit" - visible 1 - decoration - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#include "ui_mp/popupstyle.inc" +#include "ui/choices_setup_popmenu.menu" + +#undef CHOICE_SIZE_X +#define CHOICE_SIZE_X 186 + +#undef CHOICE_POPUP_BACKCOLOR +#define CHOICE_POPUP_BACKCOLOR 0.2 0.2 0.22 0.65 + +#define ORIGIN_QUICKMESSAGEWINDOW 0 16 + +{ + menuDef + { + IMPROVED_POPUP_SETUP_ONOPEN( quickpromod, 10, 4, 210, ;, setDvar cl_bypassMouseInput "1";, 0 ) + onClose{ setDvar cl_bypassMouseInput "0" } + + CHOICE_POPMENU_TITLE( "Promod Controls" ) + + itemDef + { + name "window" + group ingamebox + rect 16 20 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "1. Timeout" + visible 1 + decoration + } + execKey "1" { scriptMenuResponse "1"; close quickpromod } + + itemDef + { + name "window" + group ingamebox + rect 16 36 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "2. Drop Bomb" + visible 1 + decoration + } + execKey "2" { scriptMenuResponse "2"; close quickpromod } + + itemDef + { + name "window" + group ingamebox + rect 16 52 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "3. Suicide" + visible 1 + decoration + } + execKey "3" { scriptMenuResponse "3"; close quickpromod } + + itemDef + { + name "window" + group ingamebox + rect 16 68 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "4. Spectate Team" + visible 1 + decoration + } + execKey "4" { scriptMenuResponse "killspec"; close quickpromod } + + itemDef + { + name "window" + group ingamebox + rect 16 84 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "5. Record Reminder" + visible 1 + decoration + } + execKey "5" { scriptMenuResponse "4"; close quickpromod } + + itemDef + { + name "window" + group ingamebox + rect 16 100 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "6. Statistics" + visible 1 + decoration + } + execKey "6" { scriptMenuResponse "5"; close quickpromod } + + itemDef + { + name "window" + group ingamebox + rect 16 164 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "Esc. Exit" + visible 1 + decoration + } + } +} diff --git a/ui_mp/scriptmenus/quickpromodgfx.menu b/ui_mp/scriptmenus/quickpromodgfx.menu index dcc44f4..f68b5c3 100644 --- a/ui_mp/scriptmenus/quickpromodgfx.menu +++ b/ui_mp/scriptmenus/quickpromodgfx.menu @@ -1,229 +1,229 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#include "ui_mp/popupstyle.inc" -#include "ui/choices_setup_popmenu.menu" - -#undef CHOICE_SIZE_X -#define CHOICE_SIZE_X 186 - -#undef CHOICE_POPUP_BACKCOLOR -#define CHOICE_POPUP_BACKCOLOR 0.2 0.2 0.22 0.65 - -#define ORIGIN_QUICKMESSAGEWINDOW 0 16 - -{ - menuDef - { - IMPROVED_POPUP_SETUP_ONOPEN( quickpromodgfx, 11.5, 4, 180, ;, setDvar cl_bypassMouseInput "1";, 0 ) - onClose{ setDvar cl_bypassMouseInput "0" } - - CHOICE_POPMENU_TITLE( "Promod Graphics" ) - - itemDef - { - name "window" - group ingamebox - rect 16 20 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 0.7 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "Visibility:" - visible 1 - decoration - } - itemDef - { - name "window" - group ingamebox - rect 16 38 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - exp text "1. Lighting: " + dvarString( sunlight ) - visible 1 - decoration - } - execKey "1" { scriptMenuResponse "1"; close quickpromodgfx } - - itemDef - { - name "window" - group ingamebox - rect 16 54 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "2. Film Tweaks: Off" - visible when ( !dvarInt( r_filmusetweaks ) ) - decoration - } - itemDef - { - name "window" - group ingamebox - rect 16 54 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "2. Film Tweaks: On" - visible when ( dvarInt( r_filmusetweaks ) ) - decoration - } - execKey "2" { scriptMenuResponse "2"; close quickpromodgfx } - - itemDef - { - name "window" - group ingamebox - rect 16 74 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 0.7 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "Textures:" - visible 1 - decoration - } - itemDef - { - name "window" - group ingamebox - rect 16 92 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "3. Texture Filtering: On" - visible when ( !dvarInt( r_texfilterdisable ) ) - decoration - } - itemDef - { - name "window" - group ingamebox - rect 16 92 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "3. Texture Filtering: Off" - visible when ( dvarInt( r_texfilterdisable) ) - decoration - } - execKey "3" { scriptMenuResponse "3"; close quickpromodgfx } - - itemDef - { - name "window" - group ingamebox - rect 16 108 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - exp text "4. Normal Map: " + dvarString( r_normalmap ) - visible 1 - decoration - } - execKey "4" { scriptMenuResponse "4"; close quickpromodgfx } - - itemDef - { - name "window" - group ingamebox - rect 16 128 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 0.7 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "Miscellaneous:" - visible 1 - decoration - } - itemDef - { - name "window" - group ingamebox - rect 16 146 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - exp text ( "5. FOV Scale: " + dvarString( cg_fovscale ) + " (" + int( dvarFloat( cg_fov ) * dvarFloat( cg_fovscale ) ) + ")" ) - visible 1 - decoration - } - execKey "5" { scriptMenuResponse "5"; close quickpromodgfx } - - itemDef - { - name "window" - group ingamebox - rect 16 162 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - exp text ( "6. Screen Blur: " + dvarString( r_blur ) ) - visible 1 - decoration - } - execKey "6" { scriptMenuResponse "6"; close quickpromodgfx } - - itemDef - { - name "window" - group ingamebox - rect 16 194 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "Esc. Exit" - visible 1 - decoration - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#include "ui_mp/popupstyle.inc" +#include "ui/choices_setup_popmenu.menu" + +#undef CHOICE_SIZE_X +#define CHOICE_SIZE_X 186 + +#undef CHOICE_POPUP_BACKCOLOR +#define CHOICE_POPUP_BACKCOLOR 0.2 0.2 0.22 0.65 + +#define ORIGIN_QUICKMESSAGEWINDOW 0 16 + +{ + menuDef + { + IMPROVED_POPUP_SETUP_ONOPEN( quickpromodgfx, 11.5, 4, 180, ;, setDvar cl_bypassMouseInput "1";, 0 ) + onClose{ setDvar cl_bypassMouseInput "0" } + + CHOICE_POPMENU_TITLE( "Promod Graphics" ) + + itemDef + { + name "window" + group ingamebox + rect 16 20 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 0.7 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "Visibility:" + visible 1 + decoration + } + itemDef + { + name "window" + group ingamebox + rect 16 38 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + exp text "1. Lighting: " + dvarString( sunlight ) + visible 1 + decoration + } + execKey "1" { scriptMenuResponse "1"; close quickpromodgfx } + + itemDef + { + name "window" + group ingamebox + rect 16 54 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "2. Film Tweaks: Off" + visible when ( !dvarInt( r_filmusetweaks ) ) + decoration + } + itemDef + { + name "window" + group ingamebox + rect 16 54 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "2. Film Tweaks: On" + visible when ( dvarInt( r_filmusetweaks ) ) + decoration + } + execKey "2" { scriptMenuResponse "2"; close quickpromodgfx } + + itemDef + { + name "window" + group ingamebox + rect 16 74 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 0.7 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "Textures:" + visible 1 + decoration + } + itemDef + { + name "window" + group ingamebox + rect 16 92 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "3. Texture Filtering: On" + visible when ( !dvarInt( r_texfilterdisable ) ) + decoration + } + itemDef + { + name "window" + group ingamebox + rect 16 92 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "3. Texture Filtering: Off" + visible when ( dvarInt( r_texfilterdisable) ) + decoration + } + execKey "3" { scriptMenuResponse "3"; close quickpromodgfx } + + itemDef + { + name "window" + group ingamebox + rect 16 108 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + exp text "4. Normal Map: " + dvarString( r_normalmap ) + visible 1 + decoration + } + execKey "4" { scriptMenuResponse "4"; close quickpromodgfx } + + itemDef + { + name "window" + group ingamebox + rect 16 128 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 0.7 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "Miscellaneous:" + visible 1 + decoration + } + itemDef + { + name "window" + group ingamebox + rect 16 146 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + exp text ( "5. FOV Scale: " + dvarString( cg_fovscale ) + " (" + int( dvarFloat( cg_fov ) * dvarFloat( cg_fovscale ) ) + ")" ) + visible 1 + decoration + } + execKey "5" { scriptMenuResponse "5"; close quickpromodgfx } + + itemDef + { + name "window" + group ingamebox + rect 16 162 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + exp text ( "6. Screen Blur: " + dvarString( r_blur ) ) + visible 1 + decoration + } + execKey "6" { scriptMenuResponse "6"; close quickpromodgfx } + + itemDef + { + name "window" + group ingamebox + rect 16 194 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "Esc. Exit" + visible 1 + decoration + } + } +} diff --git a/ui_mp/scriptmenus/scoreboard.menu b/ui_mp/scriptmenus/scoreboard.menu index 5eed463..3d4251c 100644 --- a/ui_mp/scriptmenus/scoreboard.menu +++ b/ui_mp/scriptmenus/scoreboard.menu @@ -1,322 +1,322 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" - -{ - menuDef - { - name "scoreboard" - rect 0 0 640 480 - - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 640 2 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 1 1 1 1 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 2 640 1 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 0 0 0 0.5 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 0 0 0 1 - visible when( team( name ) == "TEAM_ALLIES" && dvarString( "scr_allies" ) == "sas" && !isIntermission() ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 0.6 0.64 0.69 1 - visible when( team( name ) == "TEAM_ALLIES" && dvarString( "scr_allies" ) == "usmc" && !isIntermission() ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 0.52 0.28 0.28 1 - visible when( team( name ) == "TEAM_AXIS" && dvarString( "scr_axis" ) == "ussr" && !isIntermission() ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 0.65 0.57 0.41 1 - visible when( team( name ) == "TEAM_AXIS" && dvarString( "scr_axis" ) == "arab" && !isIntermission() ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 0.1 0.1 0.1 1 - visible when( isIntermission() ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 21 640 1 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 0 0 0 0.5 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 22 640 2 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP - origin 0 4 - background "line_horizontal_scorebar" - forecolor 1 1 1 1 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp material( dvarString( "g_TeamIcon_Allies" ) ); - visible when ( team( name ) == "TEAM_ALLIES" ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp material( dvarString( "g_TeamIcon_Allies" ) ); - visible when ( team( name ) == "TEAM_SPECTATOR" ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp material( dvarString( "g_TeamIcon_Axis" ) ); - visible when ( team( name ) == "TEAM_AXIS" ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp material( dvarString( "g_TeamIcon_Allies" ) ); - visible when ( team( name ) == "TEAM_FREE" ); - decoration - } - itemDef - { - rect 36 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp text ( team( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") ) - decoration - } - itemDef - { - rect 36 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp text ( team( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") ) - decoration - } - itemDef - { - rect 36 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp text ( player( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( team( name ) == "TEAM_FREE" ) - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 95 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp material( dvarString( "g_TeamIcon_Allies" ) ); - visible when ( team( name ) == "TEAM_AXIS" ); - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 95 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp material( dvarString( "g_TeamIcon_Axis" ) ); - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_SPECTATOR") ); - decoration - } - itemDef - { - rect 134 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp text ( otherteam( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") ) - decoration - } - itemDef - { - rect 0 22 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP - origin 0 4 - exp text( locString( "@MENU_SCORE_WINNING_WITH", team( score ), dvarint( "ui_scorelimit" ) ) ); - textfont UI_FONT_NORMAL - textscale TEXTSIZE_SMALL - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && team( score ) > otherteam( score ) && timeLeft() % 8 > 3 && !isIntermission() ) - decoration - } - itemDef - { - rect 0 22 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP - origin 0 4 - exp text( locString( "@MENU_SCORE_LOSING_WITH", team( score ), dvarint( "ui_scorelimit" ) ) ); - textfont UI_FONT_NORMAL - textscale TEXTSIZE_SMALL - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && team( score ) < otherteam( score ) && timeLeft() % 8 > 3 && !isIntermission() ) - decoration - } - itemDef - { - rect 0 22 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP - origin 0 4 - exp text( locString( "@MENU_SCORE_TIED_WITH", team( score ), dvarint( "ui_scorelimit" ) ) ); - textfont UI_FONT_NORMAL - textscale TEXTSIZE_SMALL - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && team( score ) == otherteam( score ) && timeLeft() % 8 > 3 && !isIntermission() ) - decoration - } - itemDef - { - rect 0 22 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP - origin 0 4 - exp text ( gameTypeName() ); - textfont UI_FONT_NORMAL - textscale TEXTSIZE_SMALL - textalign ITEM_ALIGN_CENTER - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when( (timeLeft() % 8 < 4 || timeLeft() < 0) && !isIntermission() ) - decoration - } - itemDef - { - rect 36 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp text ( marinesfield( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( team( name ) == "TEAM_SPECTATOR" ) - decoration - } - itemDef - { - rect 134 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP - origin 0 4 - exp text ( opforfield( score ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_LEFT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( team( name ) == "TEAM_SPECTATOR" ) - decoration - } - itemDef - { - rect -3 4 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - origin 0 22 - exp text ( secondsAsCountdown( timeLeft() ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_RIGHT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - visible when ( timeLeft() >= 60 ); - decoration - } - itemDef - { - rect -3 4 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - origin 0 22 - exp text ( secondsAsCountdown( timeLeft() ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_RIGHT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 0.75 0 1 - visible when ( timeLeft() >= 10 && timeLeft() < 60 ); - decoration - } - itemDef - { - rect -3 4 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP - origin 0 22 - exp text ( secondsAsCountdown( timeLeft() ) ); - textfont UI_FONT_OBJECTIVE - textscale 0.4 - textalign ITEM_ALIGN_RIGHT - textstyle ITEM_TEXTSTYLE_SHADOWEDMORE - forecolor 1 0.5 0 1 - visible when ( timeLeft() >= 0 && timeLeft() < 10 ); - decoration - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" + +{ + menuDef + { + name "scoreboard" + rect 0 0 640 480 + + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 640 2 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 2 640 1 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 0 0 0 0.5 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 0 0 0 1 + visible when( team( name ) == "TEAM_ALLIES" && dvarString( "scr_allies" ) == "sas" && !isIntermission() ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 0.6 0.64 0.69 1 + visible when( team( name ) == "TEAM_ALLIES" && dvarString( "scr_allies" ) == "usmc" && !isIntermission() ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 0.52 0.28 0.28 1 + visible when( team( name ) == "TEAM_AXIS" && dvarString( "scr_axis" ) == "ussr" && !isIntermission() ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 0.65 0.57 0.41 1 + visible when( team( name ) == "TEAM_AXIS" && dvarString( "scr_axis" ) == "arab" && !isIntermission() ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 3 640 18 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 0.1 0.1 0.1 1 + visible when( isIntermission() ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 21 640 1 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 0 0 0 0.5 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 22 640 2 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_TOP + origin 0 4 + background "line_horizontal_scorebar" + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp material( dvarString( "g_TeamIcon_Allies" ) ); + visible when ( team( name ) == "TEAM_ALLIES" ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp material( dvarString( "g_TeamIcon_Allies" ) ); + visible when ( team( name ) == "TEAM_SPECTATOR" ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp material( dvarString( "g_TeamIcon_Axis" ) ); + visible when ( team( name ) == "TEAM_AXIS" ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp material( dvarString( "g_TeamIcon_Allies" ) ); + visible when ( team( name ) == "TEAM_FREE" ); + decoration + } + itemDef + { + rect 36 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp text ( team( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") ) + decoration + } + itemDef + { + rect 36 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp text ( team( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") ) + decoration + } + itemDef + { + rect 36 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp text ( player( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( team( name ) == "TEAM_FREE" ) + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 95 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp material( dvarString( "g_TeamIcon_Allies" ) ); + visible when ( team( name ) == "TEAM_AXIS" ); + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 95 -4 36 36 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp material( dvarString( "g_TeamIcon_Axis" ) ); + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_SPECTATOR") ); + decoration + } + itemDef + { + rect 134 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp text ( otherteam( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") ) + decoration + } + itemDef + { + rect 0 22 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP + origin 0 4 + exp text( locString( "@MENU_SCORE_WINNING_WITH", team( score ), dvarint( "ui_scorelimit" ) ) ); + textfont UI_FONT_NORMAL + textscale TEXTSIZE_SMALL + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && team( score ) > otherteam( score ) && timeLeft() % 8 > 3 && !isIntermission() ) + decoration + } + itemDef + { + rect 0 22 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP + origin 0 4 + exp text( locString( "@MENU_SCORE_LOSING_WITH", team( score ), dvarint( "ui_scorelimit" ) ) ); + textfont UI_FONT_NORMAL + textscale TEXTSIZE_SMALL + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && team( score ) < otherteam( score ) && timeLeft() % 8 > 3 && !isIntermission() ) + decoration + } + itemDef + { + rect 0 22 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP + origin 0 4 + exp text( locString( "@MENU_SCORE_TIED_WITH", team( score ), dvarint( "ui_scorelimit" ) ) ); + textfont UI_FONT_NORMAL + textscale TEXTSIZE_SMALL + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") && team( score ) == otherteam( score ) && timeLeft() % 8 > 3 && !isIntermission() ) + decoration + } + itemDef + { + rect 0 22 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_TOP + origin 0 4 + exp text ( gameTypeName() ); + textfont UI_FONT_NORMAL + textscale TEXTSIZE_SMALL + textalign ITEM_ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when( (timeLeft() % 8 < 4 || timeLeft() < 0) && !isIntermission() ) + decoration + } + itemDef + { + rect 36 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp text ( marinesfield( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( team( name ) == "TEAM_SPECTATOR" ) + decoration + } + itemDef + { + rect 134 22 1 1 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP + origin 0 4 + exp text ( opforfield( score ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_LEFT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( team( name ) == "TEAM_SPECTATOR" ) + decoration + } + itemDef + { + rect -3 4 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + origin 0 22 + exp text ( secondsAsCountdown( timeLeft() ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_RIGHT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + visible when ( timeLeft() >= 60 ); + decoration + } + itemDef + { + rect -3 4 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + origin 0 22 + exp text ( secondsAsCountdown( timeLeft() ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_RIGHT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 0.75 0 1 + visible when ( timeLeft() >= 10 && timeLeft() < 60 ); + decoration + } + itemDef + { + rect -3 4 1 1 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP + origin 0 22 + exp text ( secondsAsCountdown( timeLeft() ) ); + textfont UI_FONT_OBJECTIVE + textscale 0.4 + textalign ITEM_ALIGN_RIGHT + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + forecolor 1 0.5 0 1 + visible when ( timeLeft() >= 0 && timeLeft() < 10 ); + decoration + } + } +} diff --git a/ui_mp/scriptmenus/shoutcast.menu b/ui_mp/scriptmenus/shoutcast.menu index 32c06a0..56953f8 100644 --- a/ui_mp/scriptmenus/shoutcast.menu +++ b/ui_mp/scriptmenus/shoutcast.menu @@ -1,83 +1,83 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" - -#define CHOICE_SIZE_X 150 -#define CHOICE_SIZE_Y 22 - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 204 - -#define CHOICE_SEP_OFFSET_Y -2 - -#define CHOICE_SEP_1 3 - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#undef BUTTON_BG_COLOR -#define BUTTON_BG_COLOR 0 0 0 0 - -{ - menuDef - { - name "shoutcast" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - blurWorld 0 - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - CHOICE_MENU_TITLE( "Shoutcast" ) - - #define BACK_OPEN; - #include "ui_mp/navcontrols.inc"; - - #undef CHOICE_X_START - #define CHOICE_X_START -320 - - #undef CHOICE_HORIZONTAL_ALIGN - #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER - - CHOICE_BUTTON( 1, "Spectate", close self; ) - CHOICE_BUTTON( 2, "Shoutcast Setup", scriptMenuResponse "shoutcast_setup"; ) - CHOICE_BUTTON( 3, "Overview Map", close self; open shoutcast_map; setDvar cl_bypassMouseInput "1"; ) - CHOICE_BUTTON( 4, "Promod Graphics", open quickpromodgfx; ) - CHOICE_BUTTON( 5, "@MPUI_CHANGE_TEAM", scriptMenuResponse "changeteam"; ) - CHOICE_BUTTON( 6, "@MENU_CONTROLS", close self; open main_controls; ) - CHOICE_BUTTON( 7, "@MENU_OPTIONS", close self; open main_options; execnow "set ui_allow_graphic_change 0"; ) - CHOICE_BUTTON( 8, "@MPUI_LEAVE_GAME", open popup_endgame; ) - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" + +#define CHOICE_SIZE_X 150 +#define CHOICE_SIZE_Y 22 + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 204 + +#define CHOICE_SEP_OFFSET_Y -2 + +#define CHOICE_SEP_1 3 + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#undef BUTTON_BG_COLOR +#define BUTTON_BG_COLOR 0 0 0 0 + +{ + menuDef + { + name "shoutcast" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + blurWorld 0 + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + CHOICE_MENU_TITLE( "Shoutcast" ) + + #define BACK_OPEN; + #include "ui_mp/navcontrols.inc"; + + #undef CHOICE_X_START + #define CHOICE_X_START -320 + + #undef CHOICE_HORIZONTAL_ALIGN + #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER + + CHOICE_BUTTON( 1, "Spectate", close self; ) + CHOICE_BUTTON( 2, "Shoutcast Setup", scriptMenuResponse "shoutcast_setup"; ) + CHOICE_BUTTON( 3, "Overview Map", close self; open shoutcast_map; setDvar cl_bypassMouseInput "1"; ) + CHOICE_BUTTON( 4, "Promod Graphics", open quickpromodgfx; ) + CHOICE_BUTTON( 5, "@MPUI_CHANGE_TEAM", scriptMenuResponse "changeteam"; ) + CHOICE_BUTTON( 6, "@MENU_CONTROLS", close self; open main_controls; ) + CHOICE_BUTTON( 7, "@MENU_OPTIONS", close self; open main_options; execnow "set ui_allow_graphic_change 0"; ) + CHOICE_BUTTON( 8, "@MPUI_LEAVE_GAME", open popup_endgame; ) + } +} diff --git a/ui_mp/scriptmenus/shoutcast_map.menu b/ui_mp/scriptmenus/shoutcast_map.menu index 6cfffd8..495ab23 100644 --- a/ui_mp/scriptmenus/shoutcast_map.menu +++ b/ui_mp/scriptmenus/shoutcast_map.menu @@ -1,65 +1,65 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#define BACK_ENABLE 0 -#define UI_MAP_NAME "@"+tablelookup("mp/mapsTable.csv",0,dvarString(mapname),3) - -{ - menuDef - { - name "shoutcast_map" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - blurWorld 7 - onEsc - { - close self; - } - onClose - { - setDvar cl_bypassMouseInput "0"; - } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - CHOICE_MENU_TITLE (UI_MAP_NAME) - - #include "ui_mp/tactical_map_s.inc"; - #include "ui_mp/navcontrols.inc"; - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#define BACK_ENABLE 0 +#define UI_MAP_NAME "@"+tablelookup("mp/mapsTable.csv",0,dvarString(mapname),3) + +{ + menuDef + { + name "shoutcast_map" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + blurWorld 7 + onEsc + { + close self; + } + onClose + { + setDvar cl_bypassMouseInput "0"; + } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + CHOICE_MENU_TITLE (UI_MAP_NAME) + + #include "ui_mp/tactical_map_s.inc"; + #include "ui_mp/navcontrols.inc"; + } +} diff --git a/ui_mp/scriptmenus/shoutcast_setup.inc b/ui_mp/scriptmenus/shoutcast_setup.inc index 6140a0f..0c70a07 100644 --- a/ui_mp/scriptmenus/shoutcast_setup.inc +++ b/ui_mp/scriptmenus/shoutcast_setup.inc @@ -1,23 +1,23 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#define BACK_OPEN; -#include "ui_mp/navcontrols.inc" - -CHOICE_MENU_TITLE( "Shoutcast Setup" ) - -#undef CHOICE_X_START -#define CHOICE_X_START -247 - -#undef CHOICE_HORIZONTAL_ALIGN -#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER - -CHOICE_BUTTON( 14, "Players...", close self; open shoutcast_setup ) -CHOICE_BUTTON( 15, "Binds...", close self; open shoutcast_setup_binds ) \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#define BACK_OPEN; +#include "ui_mp/navcontrols.inc" + +CHOICE_MENU_TITLE( "Shoutcast Setup" ) + +#undef CHOICE_X_START +#define CHOICE_X_START -247 + +#undef CHOICE_HORIZONTAL_ALIGN +#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER + +CHOICE_BUTTON( 14, "Players...", close self; open shoutcast_setup ) +CHOICE_BUTTON( 15, "Binds...", close self; open shoutcast_setup_binds ) diff --git a/ui_mp/scriptmenus/shoutcast_setup.menu b/ui_mp/scriptmenus/shoutcast_setup.menu index 395d6ad..7239ad1 100644 --- a/ui_mp/scriptmenus/shoutcast_setup.menu +++ b/ui_mp/scriptmenus/shoutcast_setup.menu @@ -1,115 +1,115 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 31 - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -{ - menuDef - { - name "shoutcast_setup" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - onOpen - { - setLocalVarInt ui_highlight ""; - scriptMenuResponse "getdetails"; - } - onEsc - { - close self; - } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - #include "ui_mp/scriptmenus/shoutcast_setup.inc" - - CHOICE_SECTION_TITLE( 1, dvarString("shout_attack_name") ) - - CHOICE_BUTTON_VIS( 2, "1. " + dvarString("shout_name0") + " (" + dvarString("shout_class0") + ")", scriptMenuResponse "1", when( dvarString("shout_name0") != "" && dvarString("shout_health0") != "0" ) ) - CHOICE_BUTTON_VIS( 3, "2. " + dvarString("shout_name1") + " (" + dvarString("shout_class1") + ")", scriptMenuResponse "2", when( dvarString("shout_name1") != "" && dvarString("shout_health1") != "0" ) ) - CHOICE_BUTTON_VIS( 4, "3. " + dvarString("shout_name2") + " (" + dvarString("shout_class2") + ")", scriptMenuResponse "3", when( dvarString("shout_name2") != "" && dvarString("shout_health2") != "0" ) ) - CHOICE_BUTTON_VIS( 5, "4. " + dvarString("shout_name3") + " (" + dvarString("shout_class3") + ")", scriptMenuResponse "4", when( dvarString("shout_name3") != "" && dvarString("shout_health3") != "0" ) ) - CHOICE_BUTTON_VIS( 6, "5. " + dvarString("shout_name4") + " (" + dvarString("shout_class4") + ")", scriptMenuResponse "5", when( dvarString("shout_name4") != "" && dvarString("shout_health4") != "0" ) ) - - CHOICE_DBUTTON_VIS( 2, "1. " + dvarString("shout_name0") + " (" + dvarString("shout_class0") + ")", when( dvarString("shout_name0") != "" && dvarString("shout_health0") == "0" ) ) - CHOICE_DBUTTON_VIS( 3, "2. " + dvarString("shout_name1") + " (" + dvarString("shout_class1") + ")", when( dvarString("shout_name1") != "" && dvarString("shout_health1") == "0" ) ) - CHOICE_DBUTTON_VIS( 4, "3. " + dvarString("shout_name2") + " (" + dvarString("shout_class2") + ")", when( dvarString("shout_name2") != "" && dvarString("shout_health2") == "0" ) ) - CHOICE_DBUTTON_VIS( 5, "4. " + dvarString("shout_name3") + " (" + dvarString("shout_class3") + ")", when( dvarString("shout_name3") != "" && dvarString("shout_health3") == "0" ) ) - CHOICE_DBUTTON_VIS( 6, "5. " + dvarString("shout_name4") + " (" + dvarString("shout_class4") + ")", when( dvarString("shout_name4") != "" && dvarString("shout_health4") == "0" ) ) - - CHOICE_DBUTTON_VIS( 2, "1. No Player", when( dvarString("shout_name0") == "" ) ) - CHOICE_DBUTTON_VIS( 3, "2. No Player", when( dvarString("shout_name1") == "" ) ) - CHOICE_DBUTTON_VIS( 4, "3. No Player", when( dvarString("shout_name2") == "" ) ) - CHOICE_DBUTTON_VIS( 5, "4. No Player", when( dvarString("shout_name3") == "" ) ) - CHOICE_DBUTTON_VIS( 6, "5. No Player", when( dvarString("shout_name4") == "" ) ) - - CHOICE_SECTION_TITLE( 7, dvarString("shout_defence_name") ) - - CHOICE_BUTTON_VIS( 8, "6. " + dvarString("shout_name5") + " (" + dvarString("shout_class5") + ")", scriptMenuResponse "6", when( dvarString("shout_name5") != "" && dvarString("shout_health5") != "0" ) ) - CHOICE_BUTTON_VIS( 9, "7. " + dvarString("shout_name6") + " (" + dvarString("shout_class6") + ")", scriptMenuResponse "7", when( dvarString("shout_name6") != "" && dvarString("shout_health6") != "0" ) ) - CHOICE_BUTTON_VIS( 10, "8. " + dvarString("shout_name7") + " (" + dvarString("shout_class7") + ")", scriptMenuResponse "8", when( dvarString("shout_name7") != "" && dvarString("shout_health7") != "0" ) ) - CHOICE_BUTTON_VIS( 11, "9. " + dvarString("shout_name8") + " (" + dvarString("shout_class8") + ")", scriptMenuResponse "9", when( dvarString("shout_name8") != "" && dvarString("shout_health8") != "0" ) ) - CHOICE_BUTTON_VIS( 12, "0. " + dvarString("shout_name9") + " (" + dvarString("shout_class9") + ")", scriptMenuResponse "10", when( dvarString("shout_name9") != "" && dvarString("shout_health9") != "0" ) ) - - CHOICE_DBUTTON_VIS( 8, "6. " + dvarString("shout_name5") + " (" + dvarString("shout_class5") + ")", when( dvarString("shout_name5") != "" && dvarString("shout_health5") == "0" ) ) - CHOICE_DBUTTON_VIS( 9, "7. " + dvarString("shout_name6") + " (" + dvarString("shout_class6") + ")", when( dvarString("shout_name6") != "" && dvarString("shout_health6") == "0" ) ) - CHOICE_DBUTTON_VIS( 10, "8. " + dvarString("shout_name7") + " (" + dvarString("shout_class7") + ")", when( dvarString("shout_name7") != "" && dvarString("shout_health7") == "0" ) ) - CHOICE_DBUTTON_VIS( 11, "9. " + dvarString("shout_name8") + " (" + dvarString("shout_class8") + ")", when( dvarString("shout_name8") != "" && dvarString("shout_health8") == "0" ) ) - CHOICE_DBUTTON_VIS( 12, "0. " + dvarString("shout_name9") + " (" + dvarString("shout_class9") + ")", when( dvarString("shout_name9") != "" && dvarString("shout_health9") == "0" ) ) - - CHOICE_DBUTTON_VIS( 8, "6. No Player", when( dvarString("shout_name5") == "" ) ) - CHOICE_DBUTTON_VIS( 9, "7. No Player", when( dvarString("shout_name6") == "" ) ) - CHOICE_DBUTTON_VIS( 10, "8. No Player", when( dvarString("shout_name7") == "" ) ) - CHOICE_DBUTTON_VIS( 11, "9. No Player", when( dvarString("shout_name8") == "" ) ) - CHOICE_DBUTTON_VIS( 12, "0. No Player", when( dvarString("shout_name9") == "" ) ) - - CHOICE_SECTION_TITLE( 21, "Class" ) - - CHOICE_BUTTON_VIS( 22, "Cycle Assault Players", scriptMenuResponse "assault", when( dvarInt("shout_class_assault") > 0 ) ) - CHOICE_BUTTON_VIS( 23, "Cycle Spec Ops Players", scriptMenuResponse "specops", when( dvarInt("shout_class_specops") > 0 ) ) - CHOICE_BUTTON_VIS( 24, "Cycle Demolitions Players", scriptMenuResponse "demolitions", when( dvarInt("shout_class_demolitions") > 0 ) ) - CHOICE_BUTTON_VIS( 25, "Cycle Sniper Players", scriptMenuResponse "sniper", when( dvarInt("shout_class_sniper") > 0 ) ) - - CHOICE_DBUTTON_VIS( 22, "Cycle Assault Players", when( dvarInt("shout_class_assault") == 0 ) ) - CHOICE_DBUTTON_VIS( 23, "Cycle Spec Ops Players", when( dvarInt("shout_class_specops") == 0 ) ) - CHOICE_DBUTTON_VIS( 24, "Cycle Demolitions Players", when( dvarInt("shout_class_demolitions") == 0 ) ) - CHOICE_DBUTTON_VIS( 25, "Cycle Sniper Players", when( dvarInt("shout_class_sniper") == 0 ) ) - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 31 + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +{ + menuDef + { + name "shoutcast_setup" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + onOpen + { + setLocalVarInt ui_highlight ""; + scriptMenuResponse "getdetails"; + } + onEsc + { + close self; + } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + #include "ui_mp/scriptmenus/shoutcast_setup.inc" + + CHOICE_SECTION_TITLE( 1, dvarString("shout_attack_name") ) + + CHOICE_BUTTON_VIS( 2, "1. " + dvarString("shout_name0") + " (" + dvarString("shout_class0") + ")", scriptMenuResponse "1", when( dvarString("shout_name0") != "" && dvarString("shout_health0") != "0" ) ) + CHOICE_BUTTON_VIS( 3, "2. " + dvarString("shout_name1") + " (" + dvarString("shout_class1") + ")", scriptMenuResponse "2", when( dvarString("shout_name1") != "" && dvarString("shout_health1") != "0" ) ) + CHOICE_BUTTON_VIS( 4, "3. " + dvarString("shout_name2") + " (" + dvarString("shout_class2") + ")", scriptMenuResponse "3", when( dvarString("shout_name2") != "" && dvarString("shout_health2") != "0" ) ) + CHOICE_BUTTON_VIS( 5, "4. " + dvarString("shout_name3") + " (" + dvarString("shout_class3") + ")", scriptMenuResponse "4", when( dvarString("shout_name3") != "" && dvarString("shout_health3") != "0" ) ) + CHOICE_BUTTON_VIS( 6, "5. " + dvarString("shout_name4") + " (" + dvarString("shout_class4") + ")", scriptMenuResponse "5", when( dvarString("shout_name4") != "" && dvarString("shout_health4") != "0" ) ) + + CHOICE_DBUTTON_VIS( 2, "1. " + dvarString("shout_name0") + " (" + dvarString("shout_class0") + ")", when( dvarString("shout_name0") != "" && dvarString("shout_health0") == "0" ) ) + CHOICE_DBUTTON_VIS( 3, "2. " + dvarString("shout_name1") + " (" + dvarString("shout_class1") + ")", when( dvarString("shout_name1") != "" && dvarString("shout_health1") == "0" ) ) + CHOICE_DBUTTON_VIS( 4, "3. " + dvarString("shout_name2") + " (" + dvarString("shout_class2") + ")", when( dvarString("shout_name2") != "" && dvarString("shout_health2") == "0" ) ) + CHOICE_DBUTTON_VIS( 5, "4. " + dvarString("shout_name3") + " (" + dvarString("shout_class3") + ")", when( dvarString("shout_name3") != "" && dvarString("shout_health3") == "0" ) ) + CHOICE_DBUTTON_VIS( 6, "5. " + dvarString("shout_name4") + " (" + dvarString("shout_class4") + ")", when( dvarString("shout_name4") != "" && dvarString("shout_health4") == "0" ) ) + + CHOICE_DBUTTON_VIS( 2, "1. No Player", when( dvarString("shout_name0") == "" ) ) + CHOICE_DBUTTON_VIS( 3, "2. No Player", when( dvarString("shout_name1") == "" ) ) + CHOICE_DBUTTON_VIS( 4, "3. No Player", when( dvarString("shout_name2") == "" ) ) + CHOICE_DBUTTON_VIS( 5, "4. No Player", when( dvarString("shout_name3") == "" ) ) + CHOICE_DBUTTON_VIS( 6, "5. No Player", when( dvarString("shout_name4") == "" ) ) + + CHOICE_SECTION_TITLE( 7, dvarString("shout_defence_name") ) + + CHOICE_BUTTON_VIS( 8, "6. " + dvarString("shout_name5") + " (" + dvarString("shout_class5") + ")", scriptMenuResponse "6", when( dvarString("shout_name5") != "" && dvarString("shout_health5") != "0" ) ) + CHOICE_BUTTON_VIS( 9, "7. " + dvarString("shout_name6") + " (" + dvarString("shout_class6") + ")", scriptMenuResponse "7", when( dvarString("shout_name6") != "" && dvarString("shout_health6") != "0" ) ) + CHOICE_BUTTON_VIS( 10, "8. " + dvarString("shout_name7") + " (" + dvarString("shout_class7") + ")", scriptMenuResponse "8", when( dvarString("shout_name7") != "" && dvarString("shout_health7") != "0" ) ) + CHOICE_BUTTON_VIS( 11, "9. " + dvarString("shout_name8") + " (" + dvarString("shout_class8") + ")", scriptMenuResponse "9", when( dvarString("shout_name8") != "" && dvarString("shout_health8") != "0" ) ) + CHOICE_BUTTON_VIS( 12, "0. " + dvarString("shout_name9") + " (" + dvarString("shout_class9") + ")", scriptMenuResponse "10", when( dvarString("shout_name9") != "" && dvarString("shout_health9") != "0" ) ) + + CHOICE_DBUTTON_VIS( 8, "6. " + dvarString("shout_name5") + " (" + dvarString("shout_class5") + ")", when( dvarString("shout_name5") != "" && dvarString("shout_health5") == "0" ) ) + CHOICE_DBUTTON_VIS( 9, "7. " + dvarString("shout_name6") + " (" + dvarString("shout_class6") + ")", when( dvarString("shout_name6") != "" && dvarString("shout_health6") == "0" ) ) + CHOICE_DBUTTON_VIS( 10, "8. " + dvarString("shout_name7") + " (" + dvarString("shout_class7") + ")", when( dvarString("shout_name7") != "" && dvarString("shout_health7") == "0" ) ) + CHOICE_DBUTTON_VIS( 11, "9. " + dvarString("shout_name8") + " (" + dvarString("shout_class8") + ")", when( dvarString("shout_name8") != "" && dvarString("shout_health8") == "0" ) ) + CHOICE_DBUTTON_VIS( 12, "0. " + dvarString("shout_name9") + " (" + dvarString("shout_class9") + ")", when( dvarString("shout_name9") != "" && dvarString("shout_health9") == "0" ) ) + + CHOICE_DBUTTON_VIS( 8, "6. No Player", when( dvarString("shout_name5") == "" ) ) + CHOICE_DBUTTON_VIS( 9, "7. No Player", when( dvarString("shout_name6") == "" ) ) + CHOICE_DBUTTON_VIS( 10, "8. No Player", when( dvarString("shout_name7") == "" ) ) + CHOICE_DBUTTON_VIS( 11, "9. No Player", when( dvarString("shout_name8") == "" ) ) + CHOICE_DBUTTON_VIS( 12, "0. No Player", when( dvarString("shout_name9") == "" ) ) + + CHOICE_SECTION_TITLE( 21, "Class" ) + + CHOICE_BUTTON_VIS( 22, "Cycle Assault Players", scriptMenuResponse "assault", when( dvarInt("shout_class_assault") > 0 ) ) + CHOICE_BUTTON_VIS( 23, "Cycle Spec Ops Players", scriptMenuResponse "specops", when( dvarInt("shout_class_specops") > 0 ) ) + CHOICE_BUTTON_VIS( 24, "Cycle Demolitions Players", scriptMenuResponse "demolitions", when( dvarInt("shout_class_demolitions") > 0 ) ) + CHOICE_BUTTON_VIS( 25, "Cycle Sniper Players", scriptMenuResponse "sniper", when( dvarInt("shout_class_sniper") > 0 ) ) + + CHOICE_DBUTTON_VIS( 22, "Cycle Assault Players", when( dvarInt("shout_class_assault") == 0 ) ) + CHOICE_DBUTTON_VIS( 23, "Cycle Spec Ops Players", when( dvarInt("shout_class_specops") == 0 ) ) + CHOICE_DBUTTON_VIS( 24, "Cycle Demolitions Players", when( dvarInt("shout_class_demolitions") == 0 ) ) + CHOICE_DBUTTON_VIS( 25, "Cycle Sniper Players", when( dvarInt("shout_class_sniper") == 0 ) ) + } +} diff --git a/ui_mp/scriptmenus/shoutcast_setup_binds.menu b/ui_mp/scriptmenus/shoutcast_setup_binds.menu index c2d41f0..ee9800b 100644 --- a/ui_mp/scriptmenus/shoutcast_setup_binds.menu +++ b/ui_mp/scriptmenus/shoutcast_setup_binds.menu @@ -1,91 +1,91 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" - -#define CHOICE_SEP_1 25 - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 31 - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -{ - menuDef - { - name "shoutcast_setup_binds" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - onEsc - { - close self; - } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - #include "ui_mp/scriptmenus/shoutcast_setup.inc" - - CHOICE_SECTION_TITLE( 1, dvarString("shout_attack_name") ) - - CHOICE_BIND( 2, "Player 1", "openscriptmenu shoutcast_setup 1", ; ) - CHOICE_BIND( 3, "Player 2", "openscriptmenu shoutcast_setup 2", ; ) - CHOICE_BIND( 4, "Player 3", "openscriptmenu shoutcast_setup 3", ; ) - CHOICE_BIND( 5, "Player 4", "openscriptmenu shoutcast_setup 4", ; ) - CHOICE_BIND( 6, "Player 5", "openscriptmenu shoutcast_setup 5", ; ) - - CHOICE_SECTION_TITLE( 7, dvarString("shout_defence_name") ) - - CHOICE_BIND( 8, "Player 1", "openscriptmenu shoutcast_setup 6", ; ) - CHOICE_BIND( 9, "Player 2", "openscriptmenu shoutcast_setup 7", ; ) - CHOICE_BIND( 10, "Player 3", "openscriptmenu shoutcast_setup 8", ; ) - CHOICE_BIND( 11, "Player 4", "openscriptmenu shoutcast_setup 9", ; ) - CHOICE_BIND( 12, "Player 5", "openscriptmenu shoutcast_setup 10", ; ) - - CHOICE_SECTION_TITLE( 21, "Class" ) - - CHOICE_BIND( 22, "Assault", "openscriptmenu shoutcast_setup assault", ; ) - CHOICE_BIND( 23, "Spec Ops", "openscriptmenu shoutcast_setup specops", ; ) - CHOICE_BIND( 24, "Demolitions", "openscriptmenu shoutcast_setup demolitions", ; ) - CHOICE_BIND( 25, "Sniper", "openscriptmenu shoutcast_setup sniper", ; ) - - CHOICE_SEPARATOR( CHOICE_SEP_1 ) - - CHOICE_BIND( 26, "Shoutcaster Menu", "openscriptmenu quickpromod shoutcaster", ; ) - CHOICE_BIND( 27, "Overview Map", "openscriptmenu quickpromod overview", ; ) - - CHOICE_KEYBINDHELP - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" + +#define CHOICE_SEP_1 25 + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 31 + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +{ + menuDef + { + name "shoutcast_setup_binds" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + onEsc + { + close self; + } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + #include "ui_mp/scriptmenus/shoutcast_setup.inc" + + CHOICE_SECTION_TITLE( 1, dvarString("shout_attack_name") ) + + CHOICE_BIND( 2, "Player 1", "openscriptmenu shoutcast_setup 1", ; ) + CHOICE_BIND( 3, "Player 2", "openscriptmenu shoutcast_setup 2", ; ) + CHOICE_BIND( 4, "Player 3", "openscriptmenu shoutcast_setup 3", ; ) + CHOICE_BIND( 5, "Player 4", "openscriptmenu shoutcast_setup 4", ; ) + CHOICE_BIND( 6, "Player 5", "openscriptmenu shoutcast_setup 5", ; ) + + CHOICE_SECTION_TITLE( 7, dvarString("shout_defence_name") ) + + CHOICE_BIND( 8, "Player 1", "openscriptmenu shoutcast_setup 6", ; ) + CHOICE_BIND( 9, "Player 2", "openscriptmenu shoutcast_setup 7", ; ) + CHOICE_BIND( 10, "Player 3", "openscriptmenu shoutcast_setup 8", ; ) + CHOICE_BIND( 11, "Player 4", "openscriptmenu shoutcast_setup 9", ; ) + CHOICE_BIND( 12, "Player 5", "openscriptmenu shoutcast_setup 10", ; ) + + CHOICE_SECTION_TITLE( 21, "Class" ) + + CHOICE_BIND( 22, "Assault", "openscriptmenu shoutcast_setup assault", ; ) + CHOICE_BIND( 23, "Spec Ops", "openscriptmenu shoutcast_setup specops", ; ) + CHOICE_BIND( 24, "Demolitions", "openscriptmenu shoutcast_setup demolitions", ; ) + CHOICE_BIND( 25, "Sniper", "openscriptmenu shoutcast_setup sniper", ; ) + + CHOICE_SEPARATOR( CHOICE_SEP_1 ) + + CHOICE_BIND( 26, "Shoutcaster Menu", "openscriptmenu quickpromod shoutcaster", ; ) + CHOICE_BIND( 27, "Overview Map", "openscriptmenu quickpromod overview", ; ) + + CHOICE_KEYBINDHELP + } +} diff --git a/ui_mp/scriptmenus/team_marinesopfor.menu b/ui_mp/scriptmenus/team_marinesopfor.menu index 55a85ff..2bb62a0 100644 --- a/ui_mp/scriptmenus/team_marinesopfor.menu +++ b/ui_mp/scriptmenus/team_marinesopfor.menu @@ -1,150 +1,150 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" - -#define CHOICE_SIZE_X 150 -#define CHOICE_SIZE_Y 22 - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 204 - -#define CHOICE_SEP_OFFSET_Y -2 - -#define CHOICE_SEP_1 3 - -#include "ui_mp/menustyle.inc" -#include "ui_mp/choices_setup_teams.menu" - -#undef BUTTON_BG_COLOR -#define BUTTON_BG_COLOR 0 0 0 0 - -{ - menuDef - { - name "team_marinesopfor" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - blurWorld 7 - legacySplitScreenScale - onOpen - { - setLocalVarInt ui_highlight ""; - } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - CHOICE_MENU_TITLE( "@MPUI_CHOOSE_TEAM" ) - - itemDef - { - style WINDOW_STYLE_FILLED - rect 48 72 285 117 - backcolor 0 0 0 .5 - visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) - decoration - } - itemDef - { - rect 50 92 270 117 - type ITEM_TYPE_BUTTON - textfont UI_FONT_DEFAULT - dvar "ui_motd" - textalign ITEM_ALIGN_LEFT - textscale TEXTSIZE_SMALL - forecolor 1 1 1 1 - backcolor 0 0 0 0 - textalignx 5 - textaligny 0 - visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) - decoration - autowrapped - } - itemDef - { - type ITEM_TYPE_TEXT - visible 1 - rect 55 72 0 0 - forecolor 1 0.8 0.4 1 - text "Message of the Day" - textfont UI_FONT_DEFAULT - textscale TEXTSIZE_DEFAULT - visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) - decoration - } - itemDef - { - - style WINDOW_STYLE_SHADER - rect 48 72 283 115 - background "white" - forecolor .5 .5 .5 0.15 - border 1 - bordersize 1 - bordercolor 0.5 0.5 0.5 0.7 - visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) - decoration - } - - #include "ui_mp/navcontrols.inc"; - #include "ui_mp/tactical_map.inc"; - - #undef CHOICE_X_START - #define CHOICE_X_START -320 - - #undef CHOICE_HORIZONTAL_ALIGN - #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER - - CHOICE_BUTTON_VIS( 1, "1. Attack", scriptMenuResponse "allies";, when( team( name ) == "TEAM_AXIS" || team(name) == "TEAM_FREE" || team(name) == "TEAM_SPECTATOR" ) ) - CHOICE_DBUTTON_VIS( 1, "1. Attack", when( team( name ) == "TEAM_ALLIES" ) ) - - CHOICE_BUTTON_VIS( 2, "2. Defence", scriptMenuResponse "axis";, when( team( name ) == "TEAM_ALLIES" || team(name) == "TEAM_FREE" || team(name) == "TEAM_SPECTATOR" ) ) - CHOICE_DBUTTON_VIS( 2, "2. Defence", when( team( name ) == "TEAM_AXIS" ) ) - - CHOICE_BUTTON( 3, "3. Auto-Assign", scriptMenuResponse "autoassign"; ) - - CHOICE_SEPARATOR( CHOICE_SEP_1 ) - - CHOICE_BUTTON_VIS( 4, "4. Shoutcaster", scriptMenuResponse "shoutcast";, when( team( name ) != "TEAM_SPECTATOR" ) ) - CHOICE_DBUTTON_VIS( 4, "4. Shoutcaster", when( team( name ) == "TEAM_SPECTATOR" ) ) - - CHOICE_BUTTON_VIS( 5, "@MPUI_LEAVE_GAME", open popup_endgame, when( team( name ) == "TEAM_FREE" ) ) - - execKey "1" { scriptMenuResponse "allies"; } - execKey "2" { scriptMenuResponse "axis"; } - execKey "3" { scriptMenuResponse "autoassign"; } - execKey "4" { scriptMenuResponse "shoutcast"; } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" + +#define CHOICE_SIZE_X 150 +#define CHOICE_SIZE_Y 22 + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 204 + +#define CHOICE_SEP_OFFSET_Y -2 + +#define CHOICE_SEP_1 3 + +#include "ui_mp/menustyle.inc" +#include "ui_mp/choices_setup_teams.menu" + +#undef BUTTON_BG_COLOR +#define BUTTON_BG_COLOR 0 0 0 0 + +{ + menuDef + { + name "team_marinesopfor" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + blurWorld 7 + legacySplitScreenScale + onOpen + { + setLocalVarInt ui_highlight ""; + } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + CHOICE_MENU_TITLE( "@MPUI_CHOOSE_TEAM" ) + + itemDef + { + style WINDOW_STYLE_FILLED + rect 48 72 285 117 + backcolor 0 0 0 .5 + visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) + decoration + } + itemDef + { + rect 50 92 270 117 + type ITEM_TYPE_BUTTON + textfont UI_FONT_DEFAULT + dvar "ui_motd" + textalign ITEM_ALIGN_LEFT + textscale TEXTSIZE_SMALL + forecolor 1 1 1 1 + backcolor 0 0 0 0 + textalignx 5 + textaligny 0 + visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) + decoration + autowrapped + } + itemDef + { + type ITEM_TYPE_TEXT + visible 1 + rect 55 72 0 0 + forecolor 1 0.8 0.4 1 + text "Message of the Day" + textfont UI_FONT_DEFAULT + textscale TEXTSIZE_DEFAULT + visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) + decoration + } + itemDef + { + + style WINDOW_STYLE_SHADER + rect 48 72 283 115 + background "white" + forecolor .5 .5 .5 0.15 + border 1 + bordersize 1 + bordercolor 0.5 0.5 0.5 0.7 + visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) + decoration + } + + #include "ui_mp/navcontrols.inc"; + #include "ui_mp/tactical_map.inc"; + + #undef CHOICE_X_START + #define CHOICE_X_START -320 + + #undef CHOICE_HORIZONTAL_ALIGN + #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER + + CHOICE_BUTTON_VIS( 1, "1. Attack", scriptMenuResponse "allies";, when( team( name ) == "TEAM_AXIS" || team(name) == "TEAM_FREE" || team(name) == "TEAM_SPECTATOR" ) ) + CHOICE_DBUTTON_VIS( 1, "1. Attack", when( team( name ) == "TEAM_ALLIES" ) ) + + CHOICE_BUTTON_VIS( 2, "2. Defence", scriptMenuResponse "axis";, when( team( name ) == "TEAM_ALLIES" || team(name) == "TEAM_FREE" || team(name) == "TEAM_SPECTATOR" ) ) + CHOICE_DBUTTON_VIS( 2, "2. Defence", when( team( name ) == "TEAM_AXIS" ) ) + + CHOICE_BUTTON( 3, "3. Auto-Assign", scriptMenuResponse "autoassign"; ) + + CHOICE_SEPARATOR( CHOICE_SEP_1 ) + + CHOICE_BUTTON_VIS( 4, "4. Shoutcaster", scriptMenuResponse "shoutcast";, when( team( name ) != "TEAM_SPECTATOR" ) ) + CHOICE_DBUTTON_VIS( 4, "4. Shoutcaster", when( team( name ) == "TEAM_SPECTATOR" ) ) + + CHOICE_BUTTON_VIS( 5, "@MPUI_LEAVE_GAME", open popup_endgame, when( team( name ) == "TEAM_FREE" ) ) + + execKey "1" { scriptMenuResponse "allies"; } + execKey "2" { scriptMenuResponse "axis"; } + execKey "3" { scriptMenuResponse "autoassign"; } + execKey "4" { scriptMenuResponse "shoutcast"; } + } +} diff --git a/ui_mp/scriptmenus/team_marinesopfor_flipped.menu b/ui_mp/scriptmenus/team_marinesopfor_flipped.menu index 2bfef41..da9da7c 100644 --- a/ui_mp/scriptmenus/team_marinesopfor_flipped.menu +++ b/ui_mp/scriptmenus/team_marinesopfor_flipped.menu @@ -1,150 +1,150 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" - -#define CHOICE_SIZE_X 150 -#define CHOICE_SIZE_Y 22 - -#define CHOICE_X_START 0 -#define CHOICE_Y_START 204 - -#define CHOICE_SEP_OFFSET_Y -2 - -#define CHOICE_SEP_1 3 - -#include "ui_mp/menustyle.inc" -#include "ui_mp/choices_setup_teams.menu" - -#undef BUTTON_BG_COLOR -#define BUTTON_BG_COLOR 0 0 0 0 - -{ - menuDef - { - name "team_marinesopfor_flipped" - rect 0 0 640 480 - focuscolor COLOR_FOCUSED - style WINDOW_STYLE_EMPTY - blurWorld 7 - legacySplitScreenScale - onOpen - { - setLocalVarInt ui_highlight ""; - } - - itemDef - { - style WINDOW_STYLE_FILLED - rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN - backcolor 0 0 0 0.75 - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_top" - visible 1 - decoration - } - itemDef - { - style WINDOW_STYLE_SHADER - rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 - background "gradient_bottom" - visible 1 - decoration - } - - CHOICE_MENU_TITLE( "@MPUI_CHOOSE_TEAM" ) - - itemDef - { - style WINDOW_STYLE_FILLED - rect 48 72 285 117 - backcolor 0 0 0 .5 - visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) - decoration - } - itemDef - { - rect 50 92 270 117 - type ITEM_TYPE_BUTTON - textfont UI_FONT_DEFAULT - dvar "ui_motd" - textalign ITEM_ALIGN_LEFT - textscale TEXTSIZE_SMALL - forecolor 1 1 1 1 - backcolor 0 0 0 0 - textalignx 5 - textaligny 0 - visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) - decoration - autowrapped - } - itemDef - { - type ITEM_TYPE_TEXT - visible 1 - rect 55 72 0 0 - forecolor 1 0.8 0.4 1 - text "Message of the Day" - textfont UI_FONT_DEFAULT - textscale TEXTSIZE_DEFAULT - visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) - decoration - } - itemDef - { - - style WINDOW_STYLE_SHADER - rect 48 72 283 115 - background "white" - forecolor .5 .5 .5 0.15 - border 1 - bordersize 1 - bordercolor 0.5 0.5 0.5 0.7 - visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) - decoration - } - - #include "ui_mp/navcontrols.inc"; - #include "ui_mp/tactical_map.inc"; - - #undef CHOICE_X_START - #define CHOICE_X_START -320 - - #undef CHOICE_HORIZONTAL_ALIGN - #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER - - CHOICE_BUTTON_VIS( 1, "1. Attack", scriptMenuResponse "axis";, when( team( name ) == "TEAM_ALLIES" || team(name) == "TEAM_FREE" || team(name) == "TEAM_SPECTATOR" ) ) - CHOICE_DBUTTON_VIS( 1, "1. Attack", when( team( name ) == "TEAM_AXIS" ) ) - - CHOICE_BUTTON_VIS( 2, "2. Defence", scriptMenuResponse "allies";, when( team( name ) == "TEAM_AXIS" || team(name) == "TEAM_FREE" || team(name) == "TEAM_SPECTATOR" ) ) - CHOICE_DBUTTON_VIS( 2, "2. Defence", when( team( name ) == "TEAM_ALLIES" ) ) - - CHOICE_BUTTON( 3, "3. Auto-Assign", scriptMenuResponse "autoassign"; ) - - CHOICE_SEPARATOR( CHOICE_SEP_1 ) - - CHOICE_BUTTON_VIS( 4, "4. Shoutcaster", scriptMenuResponse "shoutcast";, when( team( name ) != "TEAM_SPECTATOR" ) ) - CHOICE_DBUTTON_VIS( 4, "4. Shoutcaster", when( team( name ) == "TEAM_SPECTATOR" ) ) - - CHOICE_BUTTON_VIS( 5, "@MPUI_LEAVE_GAME", open popup_endgame, when( team( name ) == "TEAM_FREE" ) ) - - execKey "1" { scriptMenuResponse "axis"; } - execKey "2" { scriptMenuResponse "allies"; } - execKey "3" { scriptMenuResponse "autoassign"; } - execKey "4" { scriptMenuResponse "shoutcast"; } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" + +#define CHOICE_SIZE_X 150 +#define CHOICE_SIZE_Y 22 + +#define CHOICE_X_START 0 +#define CHOICE_Y_START 204 + +#define CHOICE_SEP_OFFSET_Y -2 + +#define CHOICE_SEP_1 3 + +#include "ui_mp/menustyle.inc" +#include "ui_mp/choices_setup_teams.menu" + +#undef BUTTON_BG_COLOR +#define BUTTON_BG_COLOR 0 0 0 0 + +{ + menuDef + { + name "team_marinesopfor_flipped" + rect 0 0 640 480 + focuscolor COLOR_FOCUSED + style WINDOW_STYLE_EMPTY + blurWorld 7 + legacySplitScreenScale + onOpen + { + setLocalVarInt ui_highlight ""; + } + + itemDef + { + style WINDOW_STYLE_FILLED + rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN + backcolor 0 0 0 0.75 + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 0 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_top" + visible 1 + decoration + } + itemDef + { + style WINDOW_STYLE_SHADER + rect 0 405 854 75 HORIZONTAL_ALIGN_FULLSCREEN 0 + background "gradient_bottom" + visible 1 + decoration + } + + CHOICE_MENU_TITLE( "@MPUI_CHOOSE_TEAM" ) + + itemDef + { + style WINDOW_STYLE_FILLED + rect 48 72 285 117 + backcolor 0 0 0 .5 + visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) + decoration + } + itemDef + { + rect 50 92 270 117 + type ITEM_TYPE_BUTTON + textfont UI_FONT_DEFAULT + dvar "ui_motd" + textalign ITEM_ALIGN_LEFT + textscale TEXTSIZE_SMALL + forecolor 1 1 1 1 + backcolor 0 0 0 0 + textalignx 5 + textaligny 0 + visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) + decoration + autowrapped + } + itemDef + { + type ITEM_TYPE_TEXT + visible 1 + rect 55 72 0 0 + forecolor 1 0.8 0.4 1 + text "Message of the Day" + textfont UI_FONT_DEFAULT + textscale TEXTSIZE_DEFAULT + visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) + decoration + } + itemDef + { + + style WINDOW_STYLE_SHADER + rect 48 72 283 115 + background "white" + forecolor .5 .5 .5 0.15 + border 1 + bordersize 1 + bordercolor 0.5 0.5 0.5 0.7 + visible when( team( name ) == "TEAM_FREE" && dvarString("ui_motd") != "" ) + decoration + } + + #include "ui_mp/navcontrols.inc"; + #include "ui_mp/tactical_map.inc"; + + #undef CHOICE_X_START + #define CHOICE_X_START -320 + + #undef CHOICE_HORIZONTAL_ALIGN + #define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER + + CHOICE_BUTTON_VIS( 1, "1. Attack", scriptMenuResponse "axis";, when( team( name ) == "TEAM_ALLIES" || team(name) == "TEAM_FREE" || team(name) == "TEAM_SPECTATOR" ) ) + CHOICE_DBUTTON_VIS( 1, "1. Attack", when( team( name ) == "TEAM_AXIS" ) ) + + CHOICE_BUTTON_VIS( 2, "2. Defence", scriptMenuResponse "allies";, when( team( name ) == "TEAM_AXIS" || team(name) == "TEAM_FREE" || team(name) == "TEAM_SPECTATOR" ) ) + CHOICE_DBUTTON_VIS( 2, "2. Defence", when( team( name ) == "TEAM_ALLIES" ) ) + + CHOICE_BUTTON( 3, "3. Auto-Assign", scriptMenuResponse "autoassign"; ) + + CHOICE_SEPARATOR( CHOICE_SEP_1 ) + + CHOICE_BUTTON_VIS( 4, "4. Shoutcaster", scriptMenuResponse "shoutcast";, when( team( name ) != "TEAM_SPECTATOR" ) ) + CHOICE_DBUTTON_VIS( 4, "4. Shoutcaster", when( team( name ) == "TEAM_SPECTATOR" ) ) + + CHOICE_BUTTON_VIS( 5, "@MPUI_LEAVE_GAME", open popup_endgame, when( team( name ) == "TEAM_FREE" ) ) + + execKey "1" { scriptMenuResponse "axis"; } + execKey "2" { scriptMenuResponse "allies"; } + execKey "3" { scriptMenuResponse "autoassign"; } + execKey "4" { scriptMenuResponse "shoutcast"; } + } +} diff --git a/ui_mp/tactical_map.inc b/ui_mp/tactical_map.inc index 539e0c3..11fddc3 100644 --- a/ui_mp/tactical_map.inc +++ b/ui_mp/tactical_map.inc @@ -1,98 +1,98 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#define MAP_X (- (MAP_WIDTH - RIGHTITEM_OFFSET + 20 )) -#define MAP_Y 114 -#define MAP_WIDTH 240 -#define MAP_HEIGHT 268 -#define ORIGIN_MAP_FRAME MAP_X MAP_Y -#define MAP_WIDTH2 (MAP_WIDTH+5) - -#define UI_MAP_NAME "@"+tablelookup("mp/mapsTable.csv",0,dvarString(mapname),3) -#define MAP_OFFSET 0 21 - -itemDef -{ - name "mini_map2" - rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP - origin MAP_OFFSET - forecolor 1 1 1 1 - background "compass_map_default" - ownerdraw CG_PLAYER_FULLMAP_MAP - visible 1 - decoration -} - -itemDef -{ - style WINDOW_STYLE_SHADER - name "mini_map2_overlay" - rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP - origin MAP_OFFSET - forecolor 1 1 1 1 - exp material( tableLookup( "mp/mapsTable.csv", 0, dvarString( mapname ), 7 ) ) - visible 1 - decoration -} - -itemDef -{ - name "compasspointers2" - rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP - origin MAP_OFFSET - forecolor 1 1 1 1 - background "objective_line" - ownerdraw CG_PLAYER_FULLMAP_POINTERS - visible 1 - decoration -} -itemDef -{ - name "compassfriendlies2" - rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP - origin MAP_OFFSET - forecolor 1 1 1 1 - background "compassping_friendly" - ownerdraw CG_PLAYER_FULLMAP_FRIENDS - visible 1 - decoration -} -itemDef -{ - name "compassenemies2" - rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP - origin MAP_OFFSET - forecolor 1 1 1 1 - background "compassping_enemy" - ownerdraw CG_PLAYER_FULLMAP_ENEMIES - visible when( dvarInt( g_compassShowEnemies ) ); - decoration -} -itemDef -{ - name "compassplayer2" - rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP - origin MAP_OFFSET - forecolor 1 1 1 1 - background "compassping_player" - ownerdraw CG_PLAYER_FULLMAP_PLAYER - visible when( team( name ) != "TEAM_FREE" ) - decoration -} - -PREPROC_SHADER_DRAW_ALIGNED( ORIGIN_MAP_FRAME (-(MAP_WIDTH)) 20 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 5 0, "white", 0 0 0 0.3, 0, 0, 0 0 0 0 ) -PREPROC_SHADER_DRAW_ALIGNED( ORIGIN_MAP_FRAME (-(MAP_WIDTH)) 20 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 5 0, "gradient_fadein", 0.9 0.95 1 0.4, 0, 0, 0 0 0 0 ) - -UI_EDGE_REVERSE( ORIGIN_MAP_FRAME, RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 0, 0, 0 0 0 0.3 ) -UI_EDGE_REVERSE( ORIGIN_MAP_FRAME, RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 0, 0, 0.9 0.95 1 0.4 ) - -PREPROC_SHADER_DRAW_ALIGNED( ORIGIN_MAP_FRAME (-(MAP_WIDTH2)) 6 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 0 (MAP_HEIGHT-6), "gradient_fadein",0.9 0.95 1 0.35, 0, 0, 0 0 0 0 ) -PREPROC_SHADER_DRAW_ALIGNED( ORIGIN_MAP_FRAME -80 20 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, (MAP_WIDTH-78) 0, "ui_perforation", 1 1 1 1, 0, 0, 0 0 0 0 ) -PREPROC_TEXT_DRAW_ALIGNED_EXP( ORIGIN_MAP_FRAME MAP_WIDTH 0 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 5 20, UI_MAP_NAME, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_LEFT, 1 1 1 0.7 ) \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#define MAP_X (- (MAP_WIDTH - RIGHTITEM_OFFSET + 20 )) +#define MAP_Y 114 +#define MAP_WIDTH 240 +#define MAP_HEIGHT 268 +#define ORIGIN_MAP_FRAME MAP_X MAP_Y +#define MAP_WIDTH2 (MAP_WIDTH+5) + +#define UI_MAP_NAME "@"+tablelookup("mp/mapsTable.csv",0,dvarString(mapname),3) +#define MAP_OFFSET 0 21 + +itemDef +{ + name "mini_map2" + rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP + origin MAP_OFFSET + forecolor 1 1 1 1 + background "compass_map_default" + ownerdraw CG_PLAYER_FULLMAP_MAP + visible 1 + decoration +} + +itemDef +{ + style WINDOW_STYLE_SHADER + name "mini_map2_overlay" + rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP + origin MAP_OFFSET + forecolor 1 1 1 1 + exp material( tableLookup( "mp/mapsTable.csv", 0, dvarString( mapname ), 7 ) ) + visible 1 + decoration +} + +itemDef +{ + name "compasspointers2" + rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP + origin MAP_OFFSET + forecolor 1 1 1 1 + background "objective_line" + ownerdraw CG_PLAYER_FULLMAP_POINTERS + visible 1 + decoration +} +itemDef +{ + name "compassfriendlies2" + rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP + origin MAP_OFFSET + forecolor 1 1 1 1 + background "compassping_friendly" + ownerdraw CG_PLAYER_FULLMAP_FRIENDS + visible 1 + decoration +} +itemDef +{ + name "compassenemies2" + rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP + origin MAP_OFFSET + forecolor 1 1 1 1 + background "compassping_enemy" + ownerdraw CG_PLAYER_FULLMAP_ENEMIES + visible when( dvarInt( g_compassShowEnemies ) ); + decoration +} +itemDef +{ + name "compassplayer2" + rect ORIGIN_MAP_FRAME MAP_WIDTH MAP_WIDTH RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP + origin MAP_OFFSET + forecolor 1 1 1 1 + background "compassping_player" + ownerdraw CG_PLAYER_FULLMAP_PLAYER + visible when( team( name ) != "TEAM_FREE" ) + decoration +} + +PREPROC_SHADER_DRAW_ALIGNED( ORIGIN_MAP_FRAME (-(MAP_WIDTH)) 20 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 5 0, "white", 0 0 0 0.3, 0, 0, 0 0 0 0 ) +PREPROC_SHADER_DRAW_ALIGNED( ORIGIN_MAP_FRAME (-(MAP_WIDTH)) 20 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 5 0, "gradient_fadein", 0.9 0.95 1 0.4, 0, 0, 0 0 0 0 ) + +UI_EDGE_REVERSE( ORIGIN_MAP_FRAME, RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 0, 0, 0 0 0 0.3 ) +UI_EDGE_REVERSE( ORIGIN_MAP_FRAME, RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 0, 0, 0.9 0.95 1 0.4 ) + +PREPROC_SHADER_DRAW_ALIGNED( ORIGIN_MAP_FRAME (-(MAP_WIDTH2)) 6 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 0 (MAP_HEIGHT-6), "gradient_fadein",0.9 0.95 1 0.35, 0, 0, 0 0 0 0 ) +PREPROC_SHADER_DRAW_ALIGNED( ORIGIN_MAP_FRAME -80 20 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, (MAP_WIDTH-78) 0, "ui_perforation", 1 1 1 1, 0, 0, 0 0 0 0 ) +PREPROC_TEXT_DRAW_ALIGNED_EXP( ORIGIN_MAP_FRAME MAP_WIDTH 0 RIGHTITEM_ALIGN VERTICAL_ALIGN_TOP, 5 20, UI_MAP_NAME, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_LEFT, 1 1 1 0.7 ) diff --git a/ui_mp/tactical_map_s.inc b/ui_mp/tactical_map_s.inc index 9dbf093..599a6c5 100644 --- a/ui_mp/tactical_map_s.inc +++ b/ui_mp/tactical_map_s.inc @@ -1,79 +1,79 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#define MAP_OFFSET 0 0 -#define FULL_SCREEN 0 30 640 420 - -itemDef -{ - name "mini_map2" - rect FULL_SCREEN - origin MAP_OFFSET - forecolor 1 1 1 1 - background "compass_map_default" - ownerdraw CG_PLAYER_FULLMAP_MAP - visible 1 - decoration -} -itemDef -{ - style WINDOW_STYLE_SHADER - name "mini_map2_overlay" - rect FULL_SCREEN - origin MAP_OFFSET - forecolor 1 1 1 1 - exp material( tableLookup( "mp/mapsTable.csv", 0, dvarString( mapname ), 7 ) ) - visible 1 - decoration -} -itemDef -{ - name "compasspointers2" - rect FULL_SCREEN - origin MAP_OFFSET - forecolor 1 1 1 1 - background "objective_line" - ownerdraw CG_PLAYER_FULLMAP_POINTERS - visible 1 - decoration -} -itemDef -{ - name "compassfriendlies2" - rect FULL_SCREEN - origin MAP_OFFSET - forecolor 1 1 1 1 - background "compassping_friendly" - ownerdraw CG_PLAYER_FULLMAP_FRIENDS - visible 1 - decoration -} -itemDef -{ - name "compassenemies2" - rect FULL_SCREEN - origin MAP_OFFSET - forecolor 1 1 1 1 - background "compassping_enemy" - ownerdraw CG_PLAYER_FULLMAP_ENEMIES - visible 1 - decoration -} -itemDef -{ - name "compassplayer2" - rect FULL_SCREEN - origin MAP_OFFSET - forecolor 1 1 1 1 - background "compassping_player" - ownerdraw CG_PLAYER_FULLMAP_PLAYER - visible 1 - decoration -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#define MAP_OFFSET 0 0 +#define FULL_SCREEN 0 30 640 420 + +itemDef +{ + name "mini_map2" + rect FULL_SCREEN + origin MAP_OFFSET + forecolor 1 1 1 1 + background "compass_map_default" + ownerdraw CG_PLAYER_FULLMAP_MAP + visible 1 + decoration +} +itemDef +{ + style WINDOW_STYLE_SHADER + name "mini_map2_overlay" + rect FULL_SCREEN + origin MAP_OFFSET + forecolor 1 1 1 1 + exp material( tableLookup( "mp/mapsTable.csv", 0, dvarString( mapname ), 7 ) ) + visible 1 + decoration +} +itemDef +{ + name "compasspointers2" + rect FULL_SCREEN + origin MAP_OFFSET + forecolor 1 1 1 1 + background "objective_line" + ownerdraw CG_PLAYER_FULLMAP_POINTERS + visible 1 + decoration +} +itemDef +{ + name "compassfriendlies2" + rect FULL_SCREEN + origin MAP_OFFSET + forecolor 1 1 1 1 + background "compassping_friendly" + ownerdraw CG_PLAYER_FULLMAP_FRIENDS + visible 1 + decoration +} +itemDef +{ + name "compassenemies2" + rect FULL_SCREEN + origin MAP_OFFSET + forecolor 1 1 1 1 + background "compassping_enemy" + ownerdraw CG_PLAYER_FULLMAP_ENEMIES + visible 1 + decoration +} +itemDef +{ + name "compassplayer2" + rect FULL_SCREEN + origin MAP_OFFSET + forecolor 1 1 1 1 + background "compassping_player" + ownerdraw CG_PLAYER_FULLMAP_PLAYER + visible 1 + decoration +} diff --git a/ui_mp/wm_quickmessage.menu b/ui_mp/wm_quickmessage.menu index a4a4119..df088bb 100644 --- a/ui_mp/wm_quickmessage.menu +++ b/ui_mp/wm_quickmessage.menu @@ -1,131 +1,131 @@ -/* - Copyright (c) 2009-2017 Andreas Göransson - Copyright (c) 2009-2017 Indrek Ardel - - This file is part of Call of Duty 4 Promod. - - Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. - Terms of license can be found in LICENSE.md document bundled with the project. -*/ - -#include "ui/menudef.h" -#include "ui_mp/common_macro.inc" - -#include "ui_mp/menustyle.inc" -#include "ui/choices_setup_common.menu" - -#include "ui_mp/popupstyle.inc" -#include "ui/choices_setup_popmenu.menu" - -#undef CHOICE_SIZE_X -#define CHOICE_SIZE_X 186 - -#undef CHOICE_POPUP_BACKCOLOR -#define CHOICE_POPUP_BACKCOLOR 0.2 0.2 0.22 0.65 - -#define ORIGIN_QUICKMESSAGEWINDOW 0 16 - -{ - menuDef - { - IMPROVED_POPUP_SETUP_ONOPEN( quickmessage, 7.6, 4, 258, ;, setDvar cl_bypassMouseInput "1";, 0 ) - onClose{ setDvar cl_bypassMouseInput "0" } - - CHOICE_POPMENU_TITLE( "@QUICKMESSAGE_QUICK_MESSAGE" ) - - itemDef - { - name "window" - visible 1 - rect 16 20 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "@QUICKMESSAGE_1_COMMANDS" - decoration - } - execKey "1" { close quickmessage; open quickcommands } - - itemDef - { - name "window" - visible 1 - rect 16 36 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "@QUICKMESSAGE_2_STATEMENTS" - decoration - } - execKey "2" { close quickmessage; open quickstatements } - - itemDef - { - name "window" - visible 1 - rect 16 52 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "@QUICKMESSAGE_3_RESPONSES" - decoration - } - execKey "3" { close quickmessage; open quickresponses } - - itemDef - { - name "window" - visible 1 - rect 16 68 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "4. Promod Controls" - decoration - } - execKey "4" { close quickmessage; open quickpromod } - - itemDef - { - name "window" - visible 1 - rect 16 84 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "5. Promod Graphics" - decoration - } - execKey "5" { close quickmessage; open quickpromodgfx } - - itemDef - { - name "window" - visible 1 - rect 16 116 0 0 - origin ORIGIN_QUICKMESSAGEWINDOW - forecolor 1 1 1 1 - textfont UI_FONT_NORMAL - textstyle ITEM_TEXTSTYLE_SHADOWED - textscale TEXTSIZE_SMALL - textaligny 8 - text "Esc. Exit" - decoration - } - } -} \ No newline at end of file +/* + Copyright (c) 2009-2017 Andreas Göransson + Copyright (c) 2009-2017 Indrek Ardel + + This file is part of Call of Duty 4 Promod. + + Call of Duty 4 Promod is licensed under Promod Modder Ethical Public License. + Terms of license can be found in LICENSE.md document bundled with the project. +*/ + +#include "ui/menudef.h" +#include "ui_mp/common_macro.inc" + +#include "ui_mp/menustyle.inc" +#include "ui/choices_setup_common.menu" + +#include "ui_mp/popupstyle.inc" +#include "ui/choices_setup_popmenu.menu" + +#undef CHOICE_SIZE_X +#define CHOICE_SIZE_X 186 + +#undef CHOICE_POPUP_BACKCOLOR +#define CHOICE_POPUP_BACKCOLOR 0.2 0.2 0.22 0.65 + +#define ORIGIN_QUICKMESSAGEWINDOW 0 16 + +{ + menuDef + { + IMPROVED_POPUP_SETUP_ONOPEN( quickmessage, 7.6, 4, 258, ;, setDvar cl_bypassMouseInput "1";, 0 ) + onClose{ setDvar cl_bypassMouseInput "0" } + + CHOICE_POPMENU_TITLE( "@QUICKMESSAGE_QUICK_MESSAGE" ) + + itemDef + { + name "window" + visible 1 + rect 16 20 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "@QUICKMESSAGE_1_COMMANDS" + decoration + } + execKey "1" { close quickmessage; open quickcommands } + + itemDef + { + name "window" + visible 1 + rect 16 36 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "@QUICKMESSAGE_2_STATEMENTS" + decoration + } + execKey "2" { close quickmessage; open quickstatements } + + itemDef + { + name "window" + visible 1 + rect 16 52 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "@QUICKMESSAGE_3_RESPONSES" + decoration + } + execKey "3" { close quickmessage; open quickresponses } + + itemDef + { + name "window" + visible 1 + rect 16 68 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "4. Promod Controls" + decoration + } + execKey "4" { close quickmessage; open quickpromod } + + itemDef + { + name "window" + visible 1 + rect 16 84 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "5. Promod Graphics" + decoration + } + execKey "5" { close quickmessage; open quickpromodgfx } + + itemDef + { + name "window" + visible 1 + rect 16 116 0 0 + origin ORIGIN_QUICKMESSAGEWINDOW + forecolor 1 1 1 1 + textfont UI_FONT_NORMAL + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale TEXTSIZE_SMALL + textaligny 8 + text "Esc. Exit" + decoration + } + } +} diff --git a/weapons/mp/ak47_mp b/weapons/mp/ak47_mp index c081919..10884e8 100644 --- a/weapons/mp/ak47_mp +++ b/weapons/mp/ak47_mp @@ -1,7 +1,7 @@ -WEAPONFILE\displayName\WEAPON_AK47\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 39 mm\maxAmmo\180\startAmmo\90\clipName\ak47_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.085\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.25\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\1\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\60\hipViewKickYawMax\-60\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\60\adsViewKickYawMax\-60\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_ak47_mp\gunModel2\viewmodel_ak47_mp_brock\gunModel3\viewmodel_ak47_mp_bshdwl\gunModel4\viewmodel_ak47_mp_bwmrpt\gunModel5\viewmodel_ak47_mp_cmdtgr\gunModel6\viewmodel_ak47_mp_stagger\gunModel7\viewmodel_ak47_gold_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_ak47\worldModel2\weapon_ak47_mp_brock\worldModel3\weapon_ak47_mp_bshdwl\worldModel4\weapon_ak47_mp_bwmrpt\worldModel5\weapon_ak47_mp_cmdtgr\worldModel6\weapon_ak47_mp_stagger\worldModel7\weapon_ak47_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_ak47_idle\emptyIdleAnim\\fireAnim\viewmodel_ak47_fire\lastShotAnim\viewmodel_ak47_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_ak47_reload\reloadEmptyAnim\viewmodel_ak47_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_ak47_pullout\dropAnim\viewmodel_ak47_putaway\firstRaiseAnim\viewmodel_ak47_first_time_pullout\altRaiseAnim\viewmodel_ak47_pullout\altDropAnim\viewmodel_ak47_putaway\quickRaiseAnim\viewmodel_ak47_pullout_quick\quickDropAnim\viewmodel_ak47_putaway_quick\emptyRaiseAnim\viewmodel_ak47_pullout\emptyDropAnim\viewmodel_ak47_putaway\sprintInAnim\viewmodel_ak47_sprint_in\sprintLoopAnim\viewmodel_ak47_sprint_loop\sprintOutAnim\viewmodel_ak47_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_ak47_fire_ads\adsLastShotAnim\viewmodel_ak47_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_ak47_ADS_up\adsDownAnim\viewmodel_ak47_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_ak47_fire_npc\fireSoundPlayer\weap_ak47_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_swing_large\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_ak47_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_ak47_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_ak47\killIcon\hud_icon_ak47\dpadIcon\\ammoCounterIcon\hud_icon_ak47\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\15\hideTags\tag_reflex_sight -tag_acog -tag_ak47_mount\notetrackSoundMap\weap_ak47_lift_plr weap_ak47_lift_plr -weap_ak47_clipout_plr weap_ak47_clipout_plr -weap_ak47_clipin_plr weap_ak47_clipin_plr -weap_ak47_chamber_plr weap_ak47_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_AK47\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 39 mm\maxAmmo\180\startAmmo\90\clipName\ak47_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.085\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.25\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\1\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\60\hipViewKickYawMax\-60\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\60\adsViewKickYawMax\-60\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_ak47_mp\gunModel2\viewmodel_ak47_mp_brock\gunModel3\viewmodel_ak47_mp_bshdwl\gunModel4\viewmodel_ak47_mp_bwmrpt\gunModel5\viewmodel_ak47_mp_cmdtgr\gunModel6\viewmodel_ak47_mp_stagger\gunModel7\viewmodel_ak47_gold_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_ak47\worldModel2\weapon_ak47_mp_brock\worldModel3\weapon_ak47_mp_bshdwl\worldModel4\weapon_ak47_mp_bwmrpt\worldModel5\weapon_ak47_mp_cmdtgr\worldModel6\weapon_ak47_mp_stagger\worldModel7\weapon_ak47_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_ak47_idle\emptyIdleAnim\\fireAnim\viewmodel_ak47_fire\lastShotAnim\viewmodel_ak47_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_ak47_reload\reloadEmptyAnim\viewmodel_ak47_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_ak47_pullout\dropAnim\viewmodel_ak47_putaway\firstRaiseAnim\viewmodel_ak47_first_time_pullout\altRaiseAnim\viewmodel_ak47_pullout\altDropAnim\viewmodel_ak47_putaway\quickRaiseAnim\viewmodel_ak47_pullout_quick\quickDropAnim\viewmodel_ak47_putaway_quick\emptyRaiseAnim\viewmodel_ak47_pullout\emptyDropAnim\viewmodel_ak47_putaway\sprintInAnim\viewmodel_ak47_sprint_in\sprintLoopAnim\viewmodel_ak47_sprint_loop\sprintOutAnim\viewmodel_ak47_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_ak47_fire_ads\adsLastShotAnim\viewmodel_ak47_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_ak47_ADS_up\adsDownAnim\viewmodel_ak47_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_ak47_fire_npc\fireSoundPlayer\weap_ak47_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_swing_large\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_ak47_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_ak47_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_ak47\killIcon\hud_icon_ak47\dpadIcon\\ammoCounterIcon\hud_icon_ak47\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\15\hideTags\tag_reflex_sight +tag_acog +tag_ak47_mount\notetrackSoundMap\weap_ak47_lift_plr weap_ak47_lift_plr +weap_ak47_clipout_plr weap_ak47_clipout_plr +weap_ak47_clipin_plr weap_ak47_clipin_plr +weap_ak47_chamber_plr weap_ak47_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/ak47_silencer_mp b/weapons/mp/ak47_silencer_mp index 05de1b1..d951b93 100644 --- a/weapons/mp/ak47_silencer_mp +++ b/weapons/mp/ak47_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_AK47\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 39 mm\maxAmmo\180\startAmmo\90\clipName\ak47_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.085\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.25\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\1\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\60\hipViewKickYawMax\-6\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\60\adsViewKickYawMax\-60\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_ak47_and_silencer_mp\gunModel2\viewmodel_ak47_and_silencer_mp_brock\gunModel3\viewmodel_ak47_and_silencer_mp_bshdwl\gunModel4\viewmodel_ak47_and_silencer_mp_bwmrpt\gunModel5\viewmodel_ak47_and_silencer_mp_cmdtgr\gunModel6\viewmodel_ak47_and_silencer_mp_stagger\gunModel7\viewmodel_ak47_gold_and_silencer_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_ak47_silencer\worldModel2\weapon_ak47SD_mp_brock\worldModel3\weapon_ak47sd_mp_bwmrpt\worldModel4\weapon_ak47sd_mp_bwmrpt\worldModel5\weapon_ak47sd_mp_cmdtgr\worldModel6\weapon_ak47sd_mp_stagger\worldModel7\weapon_ak47_silencer_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_ak47_idle\emptyIdleAnim\\fireAnim\viewmodel_ak47_fire\lastShotAnim\viewmodel_ak47_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_ak47_reload\reloadEmptyAnim\viewmodel_ak47_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_ak47_pullout\dropAnim\viewmodel_ak47_putaway\firstRaiseAnim\viewmodel_ak47_first_time_pullout\altRaiseAnim\viewmodel_ak47_pullout\altDropAnim\viewmodel_ak47_putaway\quickRaiseAnim\viewmodel_ak47_pullout_quick\quickDropAnim\viewmodel_ak47_putaway_quick\emptyRaiseAnim\viewmodel_ak47_pullout\emptyDropAnim\viewmodel_ak47_putaway\sprintInAnim\viewmodel_ak47_sprint_in\sprintLoopAnim\viewmodel_ak47_sprint_loop\sprintOutAnim\viewmodel_ak47_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_ak47_fire_ads\adsLastShotAnim\viewmodel_ak47_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_ak47_ADS_up\adsDownAnim\viewmodel_ak47_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_swing_large\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_ak47_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_ak47_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_ak47\killIcon\hud_icon_ak47\dpadIcon\\ammoCounterIcon\hud_icon_ak47\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\15\hideTags\\notetrackSoundMap\weap_ak47_lift_plr weap_ak47_lift_plr -weap_ak47_clipout_plr weap_ak47_clipout_plr -weap_ak47_clipin_plr weap_ak47_clipin_plr -weap_ak47_chamber_plr weap_ak47_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_AK47\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 39 mm\maxAmmo\180\startAmmo\90\clipName\ak47_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.085\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.25\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\1\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\60\hipViewKickYawMax\-6\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\60\adsViewKickYawMax\-60\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_ak47_and_silencer_mp\gunModel2\viewmodel_ak47_and_silencer_mp_brock\gunModel3\viewmodel_ak47_and_silencer_mp_bshdwl\gunModel4\viewmodel_ak47_and_silencer_mp_bwmrpt\gunModel5\viewmodel_ak47_and_silencer_mp_cmdtgr\gunModel6\viewmodel_ak47_and_silencer_mp_stagger\gunModel7\viewmodel_ak47_gold_and_silencer_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_ak47_silencer\worldModel2\weapon_ak47SD_mp_brock\worldModel3\weapon_ak47sd_mp_bwmrpt\worldModel4\weapon_ak47sd_mp_bwmrpt\worldModel5\weapon_ak47sd_mp_cmdtgr\worldModel6\weapon_ak47sd_mp_stagger\worldModel7\weapon_ak47_silencer_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_ak47_idle\emptyIdleAnim\\fireAnim\viewmodel_ak47_fire\lastShotAnim\viewmodel_ak47_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_ak47_reload\reloadEmptyAnim\viewmodel_ak47_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_ak47_pullout\dropAnim\viewmodel_ak47_putaway\firstRaiseAnim\viewmodel_ak47_first_time_pullout\altRaiseAnim\viewmodel_ak47_pullout\altDropAnim\viewmodel_ak47_putaway\quickRaiseAnim\viewmodel_ak47_pullout_quick\quickDropAnim\viewmodel_ak47_putaway_quick\emptyRaiseAnim\viewmodel_ak47_pullout\emptyDropAnim\viewmodel_ak47_putaway\sprintInAnim\viewmodel_ak47_sprint_in\sprintLoopAnim\viewmodel_ak47_sprint_loop\sprintOutAnim\viewmodel_ak47_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_ak47_fire_ads\adsLastShotAnim\viewmodel_ak47_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_ak47_ADS_up\adsDownAnim\viewmodel_ak47_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_swing_large\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_ak47_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_ak47_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_ak47\killIcon\hud_icon_ak47\dpadIcon\\ammoCounterIcon\hud_icon_ak47\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\15\hideTags\\notetrackSoundMap\weap_ak47_lift_plr weap_ak47_lift_plr +weap_ak47_clipout_plr weap_ak47_clipout_plr +weap_ak47_clipin_plr weap_ak47_clipin_plr +weap_ak47_chamber_plr weap_ak47_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/ak74u_mp b/weapons/mp/ak74u_mp index 21db188..7b3576a 100644 --- a/weapons/mp/ak74u_mp +++ b/weapons/mp/ak74u_mp @@ -1,7 +1,7 @@ -WEAPONFILE\displayName\WEAPON_AK74U\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.45 × 39 mm\maxAmmo\180\startAmmo\90\clipName\ak74u_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\50\minDamage\5\meleeDamage\135\maxDamageRange\1\minDamageRange\1500\playerDamage\50\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1.4\locTorsoUpper\1.4\locTorsoLower\1.2\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.078\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.25\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\1\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-20\hipViewKickPitchMax\65\hipViewKickYawMin\65\hipViewKickYawMax\-65\hipViewKickCenterSpeed\1600\adsViewKickPitchMin\-20\adsViewKickPitchMax\65\adsViewKickYawMin\65\adsViewKickYawMax\-65\adsViewKickCenterSpeed\1600\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.25\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_ak74u_mp\gunModel2\viewmodel_ak74u_mp_brock\gunModel3\viewmodel_ak74u_mp_bshdwl\gunModel4\viewmodel_ak74u_mp_bwmrpt\gunModel5\viewmodel_ak74u_mp_cmdtgr\gunModel6\viewmodel_ak74u_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_ak74u\worldModel2\weapon_ak74u_mp_brock\worldModel3\weapon_ak74u_mp_bshdwl\worldModel4\weapon_ak74u_mp_bwmrpt\worldModel5\weapon_ak74u_mp_cmdtgr\worldModel6\weapon_ak74u_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_ak74u_idle\emptyIdleAnim\\fireAnim\viewmodel_ak74u_fire\lastShotAnim\viewmodel_ak74u_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_ak74u_reload\reloadEmptyAnim\viewmodel_ak74u_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_ak74u_pullout\dropAnim\viewmodel_ak74u_putaway\firstRaiseAnim\viewmodel_ak74u_pullout_first\altRaiseAnim\viewmodel_ak74u_pullout\altDropAnim\viewmodel_ak74u_putaway\quickRaiseAnim\viewmodel_ak74u_pullout_quick\quickDropAnim\viewmodel_ak74u_putaway_quick\emptyRaiseAnim\viewmodel_ak74u_pullout\emptyDropAnim\viewmodel_ak74u_putaway\sprintInAnim\viewmodel_ak74u_sprint_in\sprintLoopAnim\viewmodel_ak74u_sprint_loop\sprintOutAnim\viewmodel_ak74u_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_ak74u_fire_ads\adsLastShotAnim\viewmodel_ak74u_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_ak74u_ADS_up\adsDownAnim\viewmodel_ak74u_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_ak74_fire_npc\fireSoundPlayer\weap_ak74_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_ak74_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_ak74_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_ak74_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_ak74u\killIcon\hud_icon_ak74u\dpadIcon\\ammoCounterIcon\hud_icon_ak74u\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\smg_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\12\hideTags\tag_reflex_sight -tag_acog -tag_ak47_mount\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_ak47_lift_plr weap_ak47_lift_plr -weap_ak47_clipout_plr weap_ak47_clipout_plr -weap_ak47_clipin_plr weap_ak47_clipin_plr -weap_ak47_chamber_plr weap_ak47_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_AK74U\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.45 × 39 mm\maxAmmo\180\startAmmo\90\clipName\ak74u_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\50\minDamage\5\meleeDamage\135\maxDamageRange\1\minDamageRange\1500\playerDamage\50\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1.4\locTorsoUpper\1.4\locTorsoLower\1.2\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.078\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.25\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\1\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-20\hipViewKickPitchMax\65\hipViewKickYawMin\65\hipViewKickYawMax\-65\hipViewKickCenterSpeed\1600\adsViewKickPitchMin\-20\adsViewKickPitchMax\65\adsViewKickYawMin\65\adsViewKickYawMax\-65\adsViewKickCenterSpeed\1600\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.25\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_ak74u_mp\gunModel2\viewmodel_ak74u_mp_brock\gunModel3\viewmodel_ak74u_mp_bshdwl\gunModel4\viewmodel_ak74u_mp_bwmrpt\gunModel5\viewmodel_ak74u_mp_cmdtgr\gunModel6\viewmodel_ak74u_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_ak74u\worldModel2\weapon_ak74u_mp_brock\worldModel3\weapon_ak74u_mp_bshdwl\worldModel4\weapon_ak74u_mp_bwmrpt\worldModel5\weapon_ak74u_mp_cmdtgr\worldModel6\weapon_ak74u_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_ak74u_idle\emptyIdleAnim\\fireAnim\viewmodel_ak74u_fire\lastShotAnim\viewmodel_ak74u_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_ak74u_reload\reloadEmptyAnim\viewmodel_ak74u_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_ak74u_pullout\dropAnim\viewmodel_ak74u_putaway\firstRaiseAnim\viewmodel_ak74u_pullout_first\altRaiseAnim\viewmodel_ak74u_pullout\altDropAnim\viewmodel_ak74u_putaway\quickRaiseAnim\viewmodel_ak74u_pullout_quick\quickDropAnim\viewmodel_ak74u_putaway_quick\emptyRaiseAnim\viewmodel_ak74u_pullout\emptyDropAnim\viewmodel_ak74u_putaway\sprintInAnim\viewmodel_ak74u_sprint_in\sprintLoopAnim\viewmodel_ak74u_sprint_loop\sprintOutAnim\viewmodel_ak74u_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_ak74u_fire_ads\adsLastShotAnim\viewmodel_ak74u_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_ak74u_ADS_up\adsDownAnim\viewmodel_ak74u_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_ak74_fire_npc\fireSoundPlayer\weap_ak74_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_ak74_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_ak74_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_ak74_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_ak74u\killIcon\hud_icon_ak74u\dpadIcon\\ammoCounterIcon\hud_icon_ak74u\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\smg_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\12\hideTags\tag_reflex_sight +tag_acog +tag_ak47_mount\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_ak47_lift_plr weap_ak47_lift_plr +weap_ak47_clipout_plr weap_ak47_clipout_plr +weap_ak47_clipin_plr weap_ak47_clipin_plr +weap_ak47_chamber_plr weap_ak47_chamber_plr diff --git a/weapons/mp/ak74u_silencer_mp b/weapons/mp/ak74u_silencer_mp index 306db0f..867f0b1 100644 --- a/weapons/mp/ak74u_silencer_mp +++ b/weapons/mp/ak74u_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_AK74U\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.45 × 39 mm\maxAmmo\180\startAmmo\90\clipName\ak74u_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\5\meleeDamage\135\maxDamageRange\1\minDamageRange\700\playerDamage\50\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1.4\locTorsoUpper\1.4\locTorsoLower\1.2\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.075\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.25\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\1\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-20\hipViewKickPitchMax\65\hipViewKickYawMin\65\hipViewKickYawMax\-65\hipViewKickCenterSpeed\1600\adsViewKickPitchMin\-20\adsViewKickPitchMax\65\adsViewKickYawMin\65\adsViewKickYawMax\-65\adsViewKickCenterSpeed\1600\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.25\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_ak74u_silencer\gunModel2\viewmodel_ak74usd_mp_brock\gunModel3\viewmodel_ak74usd_mp_bshdwl\gunModel4\viewmodel_ak74usd_mp_bwmrpt\gunModel5\viewmodel_ak74usd_mp_cmdtgr\gunModel6\viewmodel_ak74usd_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_ak74u_supressed\worldModel2\weapon_ak74usd_mp_brock\worldModel3\weapon_ak74usd_mp_bshdwl\worldModel4\weapon_ak74usd_mp_bwmrpt\worldModel5\weapon_ak74usd_mp_cmdtgr\worldModel6\weapon_ak74usd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_ak74u_idle\emptyIdleAnim\\fireAnim\viewmodel_ak74u_fire\lastShotAnim\viewmodel_ak74u_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_ak74u_reload\reloadEmptyAnim\viewmodel_ak74u_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_ak74u_pullout\dropAnim\viewmodel_ak74u_putaway\firstRaiseAnim\viewmodel_ak74u_pullout_first\altRaiseAnim\viewmodel_ak74u_pullout\altDropAnim\viewmodel_ak74u_putaway\quickRaiseAnim\viewmodel_ak74u_pullout_quick\quickDropAnim\viewmodel_ak74u_putaway_quick\emptyRaiseAnim\viewmodel_ak74u_pullout\emptyDropAnim\viewmodel_ak74u_putaway\sprintInAnim\viewmodel_ak74u_sprint_in\sprintLoopAnim\viewmodel_ak74u_sprint_loop\sprintOutAnim\viewmodel_ak74u_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_ak74u_fire_ads\adsLastShotAnim\viewmodel_ak74u_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_ak74u_ADS_up\adsDownAnim\viewmodel_ak74u_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_ak74_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_ak74_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_ak74_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_ak74u\killIcon\hud_icon_ak74u\dpadIcon\\ammoCounterIcon\hud_icon_ak74u\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_ak47_lift_plr weap_ak47_lift_plr -weap_ak47_clipout_plr weap_ak47_clipout_plr -weap_ak47_clipin_plr weap_ak47_clipin_plr -weap_ak47_chamber_plr weap_ak47_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_AK74U\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.45 × 39 mm\maxAmmo\180\startAmmo\90\clipName\ak74u_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\5\meleeDamage\135\maxDamageRange\1\minDamageRange\700\playerDamage\50\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1.4\locTorsoUpper\1.4\locTorsoLower\1.2\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.075\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.25\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\1\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-20\hipViewKickPitchMax\65\hipViewKickYawMin\65\hipViewKickYawMax\-65\hipViewKickCenterSpeed\1600\adsViewKickPitchMin\-20\adsViewKickPitchMax\65\adsViewKickYawMin\65\adsViewKickYawMax\-65\adsViewKickCenterSpeed\1600\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.25\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_ak74u_silencer\gunModel2\viewmodel_ak74usd_mp_brock\gunModel3\viewmodel_ak74usd_mp_bshdwl\gunModel4\viewmodel_ak74usd_mp_bwmrpt\gunModel5\viewmodel_ak74usd_mp_cmdtgr\gunModel6\viewmodel_ak74usd_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_ak74u_supressed\worldModel2\weapon_ak74usd_mp_brock\worldModel3\weapon_ak74usd_mp_bshdwl\worldModel4\weapon_ak74usd_mp_bwmrpt\worldModel5\weapon_ak74usd_mp_cmdtgr\worldModel6\weapon_ak74usd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_ak74u_idle\emptyIdleAnim\\fireAnim\viewmodel_ak74u_fire\lastShotAnim\viewmodel_ak74u_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_ak74u_reload\reloadEmptyAnim\viewmodel_ak74u_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_ak74u_pullout\dropAnim\viewmodel_ak74u_putaway\firstRaiseAnim\viewmodel_ak74u_pullout_first\altRaiseAnim\viewmodel_ak74u_pullout\altDropAnim\viewmodel_ak74u_putaway\quickRaiseAnim\viewmodel_ak74u_pullout_quick\quickDropAnim\viewmodel_ak74u_putaway_quick\emptyRaiseAnim\viewmodel_ak74u_pullout\emptyDropAnim\viewmodel_ak74u_putaway\sprintInAnim\viewmodel_ak74u_sprint_in\sprintLoopAnim\viewmodel_ak74u_sprint_loop\sprintOutAnim\viewmodel_ak74u_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_ak74u_fire_ads\adsLastShotAnim\viewmodel_ak74u_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_ak74u_ADS_up\adsDownAnim\viewmodel_ak74u_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_ak74_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_ak74_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_ak74_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_ak74u\killIcon\hud_icon_ak74u\dpadIcon\\ammoCounterIcon\hud_icon_ak74u\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_ak47_lift_plr weap_ak47_lift_plr +weap_ak47_clipout_plr weap_ak47_clipout_plr +weap_ak47_clipin_plr weap_ak47_clipin_plr +weap_ak47_chamber_plr weap_ak47_chamber_plr diff --git a/weapons/mp/beretta_mp b/weapons/mp/beretta_mp index d93efc8..d9ba0d9 100644 --- a/weapons/mp/beretta_mp +++ b/weapons/mp/beretta_mp @@ -1,4 +1,4 @@ -WEAPONFILE\displayName\WEAPON_BERETTA\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm\maxAmmo\90\startAmmo\45\clipName\beretta_mp\clipSize\15\shotCount\1\dropAmmoMin\1\dropAmmoMax\15\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\250\minDamageRange\500\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.63\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.5\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.1\adsTransOutTime\0.1\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\6\hipSpreadDuckedMax\5\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\100\hipGunKickPitchMin\-30\hipGunKickPitchMax\-35\hipGunKickYawMin\-2\hipGunKickYawMax\18\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\15\hipViewKickPitchMax\35\hipViewKickYawMin\25\hipViewKickYawMax\-25\hipViewKickCenterSpeed\750\adsViewKickPitchMin\15\adsViewKickPitchMax\35\adsViewKickYawMin\25\adsViewKickYawMax\-25\adsViewKickCenterSpeed\750\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.25\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_beretta_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_beretta\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_beretta_idle\emptyIdleAnim\viewmodel_beretta_idle\fireAnim\viewmodel_beretta_fire\lastShotAnim\viewmodel_beretta_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_beretta_reload\reloadEmptyAnim\viewmodel_beretta_reload_empty2\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_beretta_pullout\dropAnim\viewmodel_beretta_putaway\firstRaiseAnim\viewmodel_beretta_pullout\altRaiseAnim\viewmodel_beretta_pullout\altDropAnim\viewmodel_beretta_putaway\quickRaiseAnim\viewmodel_beretta_pullout\quickDropAnim\viewmodel_beretta_putaway\emptyRaiseAnim\viewmodel_beretta_pullout_empty\emptyDropAnim\viewmodel_beretta_putaway_empty\sprintInAnim\viewmodel_beretta_sprint_in\sprintLoopAnim\viewmodel_beretta_sprint_loop\sprintOutAnim\viewmodel_beretta_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_beretta_fire_ads\adsLastShotAnim\viewmodel_beretta_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_beretta_ADS_up\adsDownAnim\viewmodel_beretta_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m9_fire_npc\fireSoundPlayer\weap_m9_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_m9_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m9_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m9_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m9beretta\killIcon\hud_icon_m9beretta\dpadIcon\\ammoCounterIcon\hud_icon_m9beretta\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\weap_m9_clipout_plr weap_m9_clipout_plr -weap_m9_clipin_plr weap_m9_clipin_plr -weap_m9_chamber_plr weap_m9_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_BERETTA\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm\maxAmmo\90\startAmmo\45\clipName\beretta_mp\clipSize\15\shotCount\1\dropAmmoMin\1\dropAmmoMax\15\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\250\minDamageRange\500\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.63\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.5\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.1\adsTransOutTime\0.1\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\6\hipSpreadDuckedMax\5\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\100\hipGunKickPitchMin\-30\hipGunKickPitchMax\-35\hipGunKickYawMin\-2\hipGunKickYawMax\18\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\15\hipViewKickPitchMax\35\hipViewKickYawMin\25\hipViewKickYawMax\-25\hipViewKickCenterSpeed\750\adsViewKickPitchMin\15\adsViewKickPitchMax\35\adsViewKickYawMin\25\adsViewKickYawMax\-25\adsViewKickCenterSpeed\750\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.25\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_beretta_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_beretta\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_beretta_idle\emptyIdleAnim\viewmodel_beretta_idle\fireAnim\viewmodel_beretta_fire\lastShotAnim\viewmodel_beretta_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_beretta_reload\reloadEmptyAnim\viewmodel_beretta_reload_empty2\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_beretta_pullout\dropAnim\viewmodel_beretta_putaway\firstRaiseAnim\viewmodel_beretta_pullout\altRaiseAnim\viewmodel_beretta_pullout\altDropAnim\viewmodel_beretta_putaway\quickRaiseAnim\viewmodel_beretta_pullout\quickDropAnim\viewmodel_beretta_putaway\emptyRaiseAnim\viewmodel_beretta_pullout_empty\emptyDropAnim\viewmodel_beretta_putaway_empty\sprintInAnim\viewmodel_beretta_sprint_in\sprintLoopAnim\viewmodel_beretta_sprint_loop\sprintOutAnim\viewmodel_beretta_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_beretta_fire_ads\adsLastShotAnim\viewmodel_beretta_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_beretta_ADS_up\adsDownAnim\viewmodel_beretta_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m9_fire_npc\fireSoundPlayer\weap_m9_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_m9_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m9_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m9_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m9beretta\killIcon\hud_icon_m9beretta\dpadIcon\\ammoCounterIcon\hud_icon_m9beretta\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\weap_m9_clipout_plr weap_m9_clipout_plr +weap_m9_clipin_plr weap_m9_clipin_plr +weap_m9_chamber_plr weap_m9_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/beretta_silencer_mp b/weapons/mp/beretta_silencer_mp index 4b0fab5..8aba64c 100644 --- a/weapons/mp/beretta_silencer_mp +++ b/weapons/mp/beretta_silencer_mp @@ -1,4 +1,4 @@ -WEAPONFILE\displayName\WEAPON_BERETTA\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm \maxAmmo\90\startAmmo\45\clipName\beretta_silencer_mp\clipSize\15\shotCount\1\dropAmmoMin\1\dropAmmoMax\15\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\150\minDamageRange\350\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.63\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.5\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.1\adsTransOutTime\0.1\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\6\hipSpreadDuckedMax\5\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\100\hipGunKickPitchMin\-30\hipGunKickPitchMax\-35\hipGunKickYawMin\-2\hipGunKickYawMax\18\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\15\hipViewKickPitchMax\35\hipViewKickYawMin\25\hipViewKickYawMax\-25\hipViewKickCenterSpeed\750\adsViewKickPitchMin\15\adsViewKickPitchMax\35\adsViewKickYawMin\25\adsViewKickYawMax\-25\adsViewKickCenterSpeed\750\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.25\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_beretta_and_silencer_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_beretta_silencer\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_beretta_idle\emptyIdleAnim\viewmodel_beretta_idle\fireAnim\viewmodel_beretta_fire\lastShotAnim\viewmodel_beretta_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_beretta_reload\reloadEmptyAnim\viewmodel_beretta_reload_empty2\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_beretta_pullout\dropAnim\viewmodel_beretta_putaway\firstRaiseAnim\viewmodel_beretta_pullout\altRaiseAnim\viewmodel_beretta_pullout\altDropAnim\viewmodel_beretta_putaway\quickRaiseAnim\viewmodel_beretta_pullout\quickDropAnim\viewmodel_beretta_putaway\emptyRaiseAnim\viewmodel_beretta_pullout_empty\emptyDropAnim\viewmodel_beretta_putaway_empty\sprintInAnim\viewmodel_beretta_sprint_in\sprintLoopAnim\viewmodel_beretta_sprint_loop\sprintOutAnim\viewmodel_beretta_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_beretta_fire_ads\adsLastShotAnim\viewmodel_beretta_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_beretta_ADS_up\adsDownAnim\viewmodel_beretta_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_usp45sd_fire_npc\fireSoundPlayer\weap_usp45sd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_m9_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m9_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m9_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m9beretta\killIcon\hud_icon_m9beretta\dpadIcon\\ammoCounterIcon\hud_icon_m9beretta\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\weap_m9_clipout_plr weap_m9_clipout_plr -weap_m9_clipin_plr weap_m9_clipin_plr -weap_m9_chamber_plr weap_m9_chamber_plr -melee_knife_stab melee_knife_stab +WEAPONFILE\displayName\WEAPON_BERETTA\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm \maxAmmo\90\startAmmo\45\clipName\beretta_silencer_mp\clipSize\15\shotCount\1\dropAmmoMin\1\dropAmmoMax\15\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\150\minDamageRange\350\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.63\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.5\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.1\adsTransOutTime\0.1\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\6\hipSpreadDuckedMax\5\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\100\hipGunKickPitchMin\-30\hipGunKickPitchMax\-35\hipGunKickYawMin\-2\hipGunKickYawMax\18\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\15\hipViewKickPitchMax\35\hipViewKickYawMin\25\hipViewKickYawMax\-25\hipViewKickCenterSpeed\750\adsViewKickPitchMin\15\adsViewKickPitchMax\35\adsViewKickYawMin\25\adsViewKickYawMax\-25\adsViewKickCenterSpeed\750\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.25\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_beretta_and_silencer_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_beretta_silencer\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_beretta_idle\emptyIdleAnim\viewmodel_beretta_idle\fireAnim\viewmodel_beretta_fire\lastShotAnim\viewmodel_beretta_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_beretta_reload\reloadEmptyAnim\viewmodel_beretta_reload_empty2\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_beretta_pullout\dropAnim\viewmodel_beretta_putaway\firstRaiseAnim\viewmodel_beretta_pullout\altRaiseAnim\viewmodel_beretta_pullout\altDropAnim\viewmodel_beretta_putaway\quickRaiseAnim\viewmodel_beretta_pullout\quickDropAnim\viewmodel_beretta_putaway\emptyRaiseAnim\viewmodel_beretta_pullout_empty\emptyDropAnim\viewmodel_beretta_putaway_empty\sprintInAnim\viewmodel_beretta_sprint_in\sprintLoopAnim\viewmodel_beretta_sprint_loop\sprintOutAnim\viewmodel_beretta_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_beretta_fire_ads\adsLastShotAnim\viewmodel_beretta_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_beretta_ADS_up\adsDownAnim\viewmodel_beretta_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_usp45sd_fire_npc\fireSoundPlayer\weap_usp45sd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_m9_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m9_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m9_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m9beretta\killIcon\hud_icon_m9beretta\dpadIcon\\ammoCounterIcon\hud_icon_m9beretta\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\weap_m9_clipout_plr weap_m9_clipout_plr +weap_m9_clipin_plr weap_m9_clipin_plr +weap_m9_chamber_plr weap_m9_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/colt45_mp b/weapons/mp/colt45_mp index 362e176..c115afd 100644 --- a/weapons/mp/colt45_mp +++ b/weapons/mp/colt45_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_COLT45\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.45 ACP\maxAmmo\64\startAmmo\32\clipName\colt45_mp\clipSize\8\shotCount\1\dropAmmoMin\1\dropAmmoMax\8\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\350\minDamageRange\900\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.63\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.6\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.15\adsTransOutTime\0.15\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\6\hipSpreadDuckedMax\5\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\0\hipGunKickPitchMax\0\hipGunKickYawMin\0\hipGunKickYawMax\0\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\25\hipViewKickPitchMax\45\hipViewKickYawMin\35\hipViewKickYawMax\-35\hipViewKickCenterSpeed\1100\adsViewKickPitchMin\25\adsViewKickPitchMax\45\adsViewKickYawMin\35\adsViewKickYawMax\-35\adsViewKickCenterSpeed\1100\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.2\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_colt45_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_colt1911_black\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_colt45_idle\emptyIdleAnim\viewmodel_colt45_idle\fireAnim\viewmodel_colt45_fire\lastShotAnim\viewmodel_colt45_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_colt45_reload\reloadEmptyAnim\viewmodel_colt45_reload_empty2\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_colt45_pullout2\dropAnim\viewmodel_colt45_putaway\firstRaiseAnim\viewmodel_colt45_pullout2\altRaiseAnim\viewmodel_colt45_pullout2\altDropAnim\viewmodel_colt45_putaway\quickRaiseAnim\viewmodel_colt45_pullout2\quickDropAnim\viewmodel_colt45_putaway\emptyRaiseAnim\viewmodel_colt45_pullout2\emptyDropAnim\viewmodel_colt45_putaway\sprintInAnim\viewmodel_colt45_sprint_in\sprintLoopAnim\viewmodel_colt45_sprint_loop\sprintOutAnim\viewmodel_colt45_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_colt45_fire_ads\adsLastShotAnim\viewmodel_colt45_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_colt45_ADS_up\adsDownAnim\viewmodel_colt45_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m1911colt45_fire_npc\fireSoundPlayer\weap_m1911colt45_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_m1911colt45_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m1911colt_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m1911colt_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_colt_45\killIcon\hud_icon_colt_45\dpadIcon\\ammoCounterIcon\hud_icon_colt_45\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\1:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_m1911colt_clift_plr weap_m1911colt_clift_plr -weap_m1911colt_clipout_plr weap_m1911colt_clipout_plr -weap_m1911colt_clipin_plr weap_m1911colt_clipin_plr -weap_m1911colt_chamber_plr weap_m1911colt_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_COLT45\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.45 ACP\maxAmmo\64\startAmmo\32\clipName\colt45_mp\clipSize\8\shotCount\1\dropAmmoMin\1\dropAmmoMax\8\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\350\minDamageRange\900\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.63\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.6\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.15\adsTransOutTime\0.15\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\6\hipSpreadDuckedMax\5\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\0\hipGunKickPitchMax\0\hipGunKickYawMin\0\hipGunKickYawMax\0\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\25\hipViewKickPitchMax\45\hipViewKickYawMin\35\hipViewKickYawMax\-35\hipViewKickCenterSpeed\1100\adsViewKickPitchMin\25\adsViewKickPitchMax\45\adsViewKickYawMin\35\adsViewKickYawMax\-35\adsViewKickCenterSpeed\1100\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.2\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_colt45_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_colt1911_black\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_colt45_idle\emptyIdleAnim\viewmodel_colt45_idle\fireAnim\viewmodel_colt45_fire\lastShotAnim\viewmodel_colt45_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_colt45_reload\reloadEmptyAnim\viewmodel_colt45_reload_empty2\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_colt45_pullout2\dropAnim\viewmodel_colt45_putaway\firstRaiseAnim\viewmodel_colt45_pullout2\altRaiseAnim\viewmodel_colt45_pullout2\altDropAnim\viewmodel_colt45_putaway\quickRaiseAnim\viewmodel_colt45_pullout2\quickDropAnim\viewmodel_colt45_putaway\emptyRaiseAnim\viewmodel_colt45_pullout2\emptyDropAnim\viewmodel_colt45_putaway\sprintInAnim\viewmodel_colt45_sprint_in\sprintLoopAnim\viewmodel_colt45_sprint_loop\sprintOutAnim\viewmodel_colt45_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_colt45_fire_ads\adsLastShotAnim\viewmodel_colt45_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_colt45_ADS_up\adsDownAnim\viewmodel_colt45_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m1911colt45_fire_npc\fireSoundPlayer\weap_m1911colt45_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_m1911colt45_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m1911colt_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m1911colt_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_colt_45\killIcon\hud_icon_colt_45\dpadIcon\\ammoCounterIcon\hud_icon_colt_45\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\1:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_m1911colt_clift_plr weap_m1911colt_clift_plr +weap_m1911colt_clipout_plr weap_m1911colt_clipout_plr +weap_m1911colt_clipin_plr weap_m1911colt_clipin_plr +weap_m1911colt_chamber_plr weap_m1911colt_chamber_plr diff --git a/weapons/mp/colt45_silencer_mp b/weapons/mp/colt45_silencer_mp index 17f6438..9409cce 100644 --- a/weapons/mp/colt45_silencer_mp +++ b/weapons/mp/colt45_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_COLT45\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.45 ACP\maxAmmo\64\startAmmo\32\clipName\colt45_silencer_mp\clipSize\8\shotCount\1\dropAmmoMin\1\dropAmmoMax\8\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\250\minDamageRange\500\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.63\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.6\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.15\adsTransOutTime\0.15\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\6\hipSpreadDuckedMax\5\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\0\hipGunKickPitchMax\0\hipGunKickYawMin\0\hipGunKickYawMax\0\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\25\hipViewKickPitchMax\45\hipViewKickYawMin\35\hipViewKickYawMax\-35\hipViewKickCenterSpeed\1100\adsViewKickPitchMin\25\adsViewKickPitchMax\45\adsViewKickYawMin\35\adsViewKickYawMax\-35\adsViewKickCenterSpeed\1100\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.2\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_colt45_and_silencer_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_colt1911_silencer\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_colt45_idle\emptyIdleAnim\viewmodel_colt45_idle\fireAnim\viewmodel_colt45_fire\lastShotAnim\viewmodel_colt45_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_colt45_reload\reloadEmptyAnim\viewmodel_colt45_reload_empty2\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_colt45_pullout2\dropAnim\viewmodel_colt45_putaway\firstRaiseAnim\viewmodel_colt45_pullout2\altRaiseAnim\viewmodel_colt45_pullout2\altDropAnim\viewmodel_colt45_putaway\quickRaiseAnim\viewmodel_colt45_pullout2\quickDropAnim\viewmodel_colt45_putaway\emptyRaiseAnim\viewmodel_colt45_pullout2\emptyDropAnim\viewmodel_colt45_putaway\sprintInAnim\viewmodel_colt45_sprint_in\sprintLoopAnim\viewmodel_colt45_sprint_loop\sprintOutAnim\viewmodel_colt45_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_colt45_fire_ads\adsLastShotAnim\viewmodel_colt45_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_colt45_ADS_up\adsDownAnim\viewmodel_colt45_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_usp45sd_fire_npc\fireSoundPlayer\weap_usp45sd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_m1911colt45_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m1911colt_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m1911colt_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_colt_45\killIcon\hud_icon_colt_45\dpadIcon\\ammoCounterIcon\hud_icon_pistol\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\0\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_m1911colt_clift_plr weap_m1911colt_clift_plr -weap_m1911colt_clipout_plr weap_m1911colt_clipout_plr -weap_m1911colt_clipin_plr weap_m1911colt_clipin_plr -weap_m1911colt_chamber_plr weap_m1911colt_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_COLT45\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.45 ACP\maxAmmo\64\startAmmo\32\clipName\colt45_silencer_mp\clipSize\8\shotCount\1\dropAmmoMin\1\dropAmmoMax\8\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\250\minDamageRange\500\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.63\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.6\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.15\adsTransOutTime\0.15\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\6\hipSpreadDuckedMax\5\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\0\hipGunKickPitchMax\0\hipGunKickYawMin\0\hipGunKickYawMax\0\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\25\hipViewKickPitchMax\45\hipViewKickYawMin\35\hipViewKickYawMax\-35\hipViewKickCenterSpeed\1100\adsViewKickPitchMin\25\adsViewKickPitchMax\45\adsViewKickYawMin\35\adsViewKickYawMax\-35\adsViewKickCenterSpeed\1100\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.2\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_colt45_and_silencer_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_colt1911_silencer\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_colt45_idle\emptyIdleAnim\viewmodel_colt45_idle\fireAnim\viewmodel_colt45_fire\lastShotAnim\viewmodel_colt45_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_colt45_reload\reloadEmptyAnim\viewmodel_colt45_reload_empty2\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_colt45_pullout2\dropAnim\viewmodel_colt45_putaway\firstRaiseAnim\viewmodel_colt45_pullout2\altRaiseAnim\viewmodel_colt45_pullout2\altDropAnim\viewmodel_colt45_putaway\quickRaiseAnim\viewmodel_colt45_pullout2\quickDropAnim\viewmodel_colt45_putaway\emptyRaiseAnim\viewmodel_colt45_pullout2\emptyDropAnim\viewmodel_colt45_putaway\sprintInAnim\viewmodel_colt45_sprint_in\sprintLoopAnim\viewmodel_colt45_sprint_loop\sprintOutAnim\viewmodel_colt45_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_colt45_fire_ads\adsLastShotAnim\viewmodel_colt45_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_colt45_ADS_up\adsDownAnim\viewmodel_colt45_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_usp45sd_fire_npc\fireSoundPlayer\weap_usp45sd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_m1911colt45_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m1911colt_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m1911colt_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_colt_45\killIcon\hud_icon_colt_45\dpadIcon\\ammoCounterIcon\hud_icon_pistol\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\0\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_m1911colt_clift_plr weap_m1911colt_clift_plr +weap_m1911colt_clipout_plr weap_m1911colt_clipout_plr +weap_m1911colt_clipin_plr weap_m1911colt_clipin_plr +weap_m1911colt_chamber_plr weap_m1911colt_chamber_plr diff --git a/weapons/mp/deserteagle_mp b/weapons/mp/deserteagle_mp index d946e8e..478dd64 100644 --- a/weapons/mp/deserteagle_mp +++ b/weapons/mp/deserteagle_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_DESERTEAGLE\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.357 Magnum\maxAmmo\42\startAmmo\21\clipName\deserteagle_mp\clipSize\7\shotCount\1\dropAmmoMin\1\dropAmmoMax\7\reloadAmmoAdd\0\reloadStartAdd\0\damage\50\minDamage\30\meleeDamage\135\maxDamageRange\350\minDamageRange\1200\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.96\reloadEmptyTime\2.1\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.43\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.15\adsTransOutTime\0.15\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.5\hipSpreadProneMin\1\hipSpreadMax\4\hipSpreadDuckedMax\3\hipSpreadProneMax\2\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\100\hipGunKickPitchMin\-30\hipGunKickPitchMax\-35\hipGunKickYawMin\-2\hipGunKickYawMax\18\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\60\hipViewKickPitchMax\80\hipViewKickYawMin\-40\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\60\adsViewKickPitchMax\80\adsViewKickYawMin\-40\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.16\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_desert_eagle\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_desert_eagle_silver\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_desert_eagle_idle\emptyIdleAnim\viewmodel_desert_eagle_idle\fireAnim\viewmodel_desert_eagle_fire\lastShotAnim\viewmodel_desert_eagle_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_desert_eagle_reload\reloadEmptyAnim\viewmodel_desert_eagle_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_desert_eagle_pullout\dropAnim\viewmodel_desert_eagle_putaway\firstRaiseAnim\viewmodel_desert_eagle_pullout\altRaiseAnim\viewmodel_desert_eagle_pullout\altDropAnim\viewmodel_desert_eagle_putaway\quickRaiseAnim\viewmodel_desert_eagle_pullout\quickDropAnim\viewmodel_desert_eagle_putaway\emptyRaiseAnim\viewmodel_desert_eagle_pullout\emptyDropAnim\viewmodel_desert_eagle_putaway\sprintInAnim\viewmodel_desert_eagle_sprint_in\sprintLoopAnim\viewmodel_desert_eagle_sprint_loop\sprintOutAnim\viewmodel_desert_eagle_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_desert_eagle_ADS_fire\adsLastShotAnim\viewmodel_desert_eagle_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_desert_eagle_ADS_up\adsDownAnim\viewmodel_desert_eagle_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_deserteagle_fire_npc\fireSoundPlayer\weap_deserteagle_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_deserteagle_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_de50_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_de50_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_desert_eagle\killIcon\hud_icon_desert_eagle\dpadIcon\\ammoCounterIcon\hud_icon_desert_eagle\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_de50_clift_plr weap_de50_clift_plr -weap_de50_clipout_plr weap_de50_clipout_plr -weap_de50_clipin_plr weap_de50_clipin_plr -weap_de50_chamber_plr weap_de50_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_DESERTEAGLE\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.357 Magnum\maxAmmo\42\startAmmo\21\clipName\deserteagle_mp\clipSize\7\shotCount\1\dropAmmoMin\1\dropAmmoMax\7\reloadAmmoAdd\0\reloadStartAdd\0\damage\50\minDamage\30\meleeDamage\135\maxDamageRange\350\minDamageRange\1200\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.96\reloadEmptyTime\2.1\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.43\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.15\adsTransOutTime\0.15\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.5\hipSpreadProneMin\1\hipSpreadMax\4\hipSpreadDuckedMax\3\hipSpreadProneMax\2\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\100\hipGunKickPitchMin\-30\hipGunKickPitchMax\-35\hipGunKickYawMin\-2\hipGunKickYawMax\18\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\60\hipViewKickPitchMax\80\hipViewKickYawMin\-40\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\60\adsViewKickPitchMax\80\adsViewKickYawMin\-40\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.16\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_desert_eagle\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_desert_eagle_silver\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_desert_eagle_idle\emptyIdleAnim\viewmodel_desert_eagle_idle\fireAnim\viewmodel_desert_eagle_fire\lastShotAnim\viewmodel_desert_eagle_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_desert_eagle_reload\reloadEmptyAnim\viewmodel_desert_eagle_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_desert_eagle_pullout\dropAnim\viewmodel_desert_eagle_putaway\firstRaiseAnim\viewmodel_desert_eagle_pullout\altRaiseAnim\viewmodel_desert_eagle_pullout\altDropAnim\viewmodel_desert_eagle_putaway\quickRaiseAnim\viewmodel_desert_eagle_pullout\quickDropAnim\viewmodel_desert_eagle_putaway\emptyRaiseAnim\viewmodel_desert_eagle_pullout\emptyDropAnim\viewmodel_desert_eagle_putaway\sprintInAnim\viewmodel_desert_eagle_sprint_in\sprintLoopAnim\viewmodel_desert_eagle_sprint_loop\sprintOutAnim\viewmodel_desert_eagle_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_desert_eagle_ADS_fire\adsLastShotAnim\viewmodel_desert_eagle_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_desert_eagle_ADS_up\adsDownAnim\viewmodel_desert_eagle_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_deserteagle_fire_npc\fireSoundPlayer\weap_deserteagle_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_deserteagle_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_de50_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_de50_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_desert_eagle\killIcon\hud_icon_desert_eagle\dpadIcon\\ammoCounterIcon\hud_icon_desert_eagle\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_de50_clift_plr weap_de50_clift_plr +weap_de50_clipout_plr weap_de50_clipout_plr +weap_de50_clipin_plr weap_de50_clipin_plr +weap_de50_chamber_plr weap_de50_chamber_plr diff --git a/weapons/mp/deserteaglegold_mp b/weapons/mp/deserteaglegold_mp index a29803a..5c52eb4 100644 --- a/weapons/mp/deserteaglegold_mp +++ b/weapons/mp/deserteaglegold_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_DESERTEAGLEGOLD\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.357 Magnum\maxAmmo\42\startAmmo\21\clipName\deserteaglegold_mp\clipSize\7\shotCount\1\dropAmmoMin\1\dropAmmoMax\7\reloadAmmoAdd\0\reloadStartAdd\0\damage\50\minDamage\30\meleeDamage\135\maxDamageRange\350\minDamageRange\1200\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.96\reloadEmptyTime\2.1\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.43\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.15\adsTransOutTime\0.15\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.5\hipSpreadProneMin\1\hipSpreadMax\4\hipSpreadDuckedMax\3\hipSpreadProneMax\2\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\100\hipGunKickPitchMin\-30\hipGunKickPitchMax\-35\hipGunKickYawMin\-2\hipGunKickYawMax\18\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\60\hipViewKickPitchMax\80\hipViewKickYawMin\-40\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\60\adsViewKickPitchMax\80\adsViewKickYawMin\-40\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.16\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_desert_eagle_gold_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_desert_eagle_gold\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_desert_eagle_idle\emptyIdleAnim\viewmodel_desert_eagle_idle\fireAnim\viewmodel_desert_eagle_fire\lastShotAnim\viewmodel_desert_eagle_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_desert_eagle_reload\reloadEmptyAnim\viewmodel_desert_eagle_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_desert_eagle_pullout\dropAnim\viewmodel_desert_eagle_putaway\firstRaiseAnim\viewmodel_desert_eagle_pullout\altRaiseAnim\viewmodel_desert_eagle_pullout\altDropAnim\viewmodel_desert_eagle_putaway\quickRaiseAnim\viewmodel_desert_eagle_pullout\quickDropAnim\viewmodel_desert_eagle_putaway\emptyRaiseAnim\viewmodel_desert_eagle_pullout\emptyDropAnim\viewmodel_desert_eagle_putaway\sprintInAnim\viewmodel_desert_eagle_sprint_in\sprintLoopAnim\viewmodel_desert_eagle_sprint_loop\sprintOutAnim\viewmodel_desert_eagle_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_desert_eagle_ADS_fire\adsLastShotAnim\viewmodel_desert_eagle_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_desert_eagle_ADS_up\adsDownAnim\viewmodel_desert_eagle_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_deserteagle_fire_npc\fireSoundPlayer\weap_deserteagle_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_deserteagle_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_de50_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_de50_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_desert_eagle\killIcon\hud_icon_desert_eagle\dpadIcon\\ammoCounterIcon\hud_icon_desert_eagle\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\0\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_de50_clift_plr weap_de50_clift_plr -weap_de50_clipout_plr weap_de50_clipout_plr -weap_de50_clipin_plr weap_de50_clipin_plr -weap_de50_chamber_plr weap_de50_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_DESERTEAGLEGOLD\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.357 Magnum\maxAmmo\42\startAmmo\21\clipName\deserteaglegold_mp\clipSize\7\shotCount\1\dropAmmoMin\1\dropAmmoMax\7\reloadAmmoAdd\0\reloadStartAdd\0\damage\50\minDamage\30\meleeDamage\135\maxDamageRange\350\minDamageRange\1200\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.96\reloadEmptyTime\2.1\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.43\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.15\adsTransOutTime\0.15\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.5\hipSpreadProneMin\1\hipSpreadMax\4\hipSpreadDuckedMax\3\hipSpreadProneMax\2\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\100\hipGunKickPitchMin\-30\hipGunKickPitchMax\-35\hipGunKickYawMin\-2\hipGunKickYawMax\18\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\60\hipViewKickPitchMax\80\hipViewKickYawMin\-40\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\60\adsViewKickPitchMax\80\adsViewKickYawMin\-40\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.16\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_desert_eagle_gold_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_desert_eagle_gold\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_desert_eagle_idle\emptyIdleAnim\viewmodel_desert_eagle_idle\fireAnim\viewmodel_desert_eagle_fire\lastShotAnim\viewmodel_desert_eagle_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_desert_eagle_reload\reloadEmptyAnim\viewmodel_desert_eagle_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_desert_eagle_pullout\dropAnim\viewmodel_desert_eagle_putaway\firstRaiseAnim\viewmodel_desert_eagle_pullout\altRaiseAnim\viewmodel_desert_eagle_pullout\altDropAnim\viewmodel_desert_eagle_putaway\quickRaiseAnim\viewmodel_desert_eagle_pullout\quickDropAnim\viewmodel_desert_eagle_putaway\emptyRaiseAnim\viewmodel_desert_eagle_pullout\emptyDropAnim\viewmodel_desert_eagle_putaway\sprintInAnim\viewmodel_desert_eagle_sprint_in\sprintLoopAnim\viewmodel_desert_eagle_sprint_loop\sprintOutAnim\viewmodel_desert_eagle_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_desert_eagle_ADS_fire\adsLastShotAnim\viewmodel_desert_eagle_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_desert_eagle_ADS_up\adsDownAnim\viewmodel_desert_eagle_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_deserteagle_fire_npc\fireSoundPlayer\weap_deserteagle_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_deserteagle_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_de50_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_de50_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_desert_eagle\killIcon\hud_icon_desert_eagle\dpadIcon\\ammoCounterIcon\hud_icon_desert_eagle\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\0\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_de50_clift_plr weap_de50_clift_plr +weap_de50_clipout_plr weap_de50_clipout_plr +weap_de50_clipin_plr weap_de50_clipin_plr +weap_de50_chamber_plr weap_de50_chamber_plr diff --git a/weapons/mp/flash_grenade_mp b/weapons/mp/flash_grenade_mp index 388a53b..4fc23e0 100644 --- a/weapons/mp/flash_grenade_mp +++ b/weapons/mp/flash_grenade_mp @@ -1 +1 @@ -WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Flash Grenade\impactType\none\inventoryType\offhand\displayName\WEAPON_FLASH_GRENADE\modeName\\playerAnimType\grenade\AIOverlayDescription\\gunModel\viewmodel_m84\handModel\viewmodel_base_viewhands\isHandModelOverridable\1\idleAnim\viewmodel_m84_idle\emptyIdleAnim\viewmodel_m84_idle\fireAnim\viewmodel_m84_throw\holdFireAnim\viewmodel_m84_pullpin\lastShotAnim\viewmodel_m84_throw\detonateAnim\\meleeAnim\viewmodel_m84_idle\meleeChargeAnim\\raiseAnim\viewmodel_m84_idle\dropAnim\viewmodel_m84_idle\firstRaiseAnim\\altRaiseAnim\viewmodel_m84_idle\altDropAnim\viewmodel_m84_idle\quickRaiseAnim\\quickDropAnim\\emptyRaiseAnim\\emptyDropAnim\\sprintInAnim\\sprintLoopAnim\\sprintOutAnim\\nightVisionWearAnim\\nightVisionRemoveAnim\\autoAimRange\0\aimAssistRange\0\aimAssistRangeAds\0\moveSpeedScale\1.2\sprintDurationScale\1\lowAmmoWarningThreshold\0.33\damage\15\meleeDamage\135\fireDelay\0.15\meleeDelay\0.1\meleeChargeDelay\0\fireTime\0.7\holdFireTime\0.6\detonateTime\0.1\detonateDelay\0.1\meleeTime\0.66\meleeChargeTime\0\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0\quickDropTime\0.5\quickRaiseTime\0.5\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.5\sprintLoopTime\0.5\sprintOutTime\0.5\nightVisionWearTime\0.5\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\fuseTime\1.5\aiFuseTime\2\stickiness\Don't stick\hasDetonator\0\timedDetonation\1\rotate\1\holdButtonToThrow\0\freezeMovementWhenFiring\0\clipOnly\1\hipIdleAmount\80\hipIdleSpeed\0\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\parallelCeramicBounce\0.5\parallelPlasticBounce\0.5\parallelRubberBounce\0.5\parallelCushionBounce\0.5\parallelFruitBounce\0.5\parallelPaintedMetalBounce\0.5\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\perpendicularCeramicBounce\0.5\perpendicularPlasticBounce\0.5\perpendicularRubberBounce\0.5\perpendicularCushionBounce\0.5\perpendicularFruitBounce\0.5\perpendicularPaintedMetalBounce\0.5\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\weapon_m84_flashbang_grenade\knifeModel\\worldKnifeModel\\ammoName\flashgrenade\maxAmmo\4\startAmmo\1\clipName\flashgrenade\clipSize\4\sharedAmmoCapName\WEAPON_FLASHGRENADE\sharedAmmoCap\4\dropAmmoMin\1\dropAmmoMax\1\pickupSound\grenade_pickup\pickupSoundPlayer\grenade_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\pullbackSound\weap_fraggrenade_pin\pullbackSoundPlayer\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\fireSoundPlayer\weap_fraggrenade_fire\lastShotSound\\lastShotSoundPlayer\\meleeSwipeSound\\meleeSwipeSoundPlayer\\reloadSound\\reloadSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\detonateSound\\detonateSoundPlayer\\raiseSound\\raiseSoundPlayer\\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\bounceSound\grenade_bounce\reticleCenter\reticle_center_cross\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\blocksProne\0\cookOffHold\0\hudIcon\hud_us_flashgrenade\killIcon\\dpadIcon\\ammoCounterIcon\\hudIconRatio\1:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\None\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\800\explosionRadiusMin\200\explosionInnerDamage\0\explosionOuterDamage\0\damageConeAngle\180\projectileSpeed\940\projectileSpeedUp\120\projectileSpeedForward\0\projectileModel\projectile_m84_flashbang_grenade\projExplosionType\flashbang\projExplosionEffect\explosions/flashbang\projExplosionEffectForceNormalUp\0\projExplosionSound\flashbang_explode_default\projectileTrail\none\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0\adsDofStart\0\adsDofEnd\0\notetrackSoundMap\ \ No newline at end of file +WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Flash Grenade\impactType\none\inventoryType\offhand\displayName\WEAPON_FLASH_GRENADE\modeName\\playerAnimType\grenade\AIOverlayDescription\\gunModel\viewmodel_m84\handModel\viewmodel_base_viewhands\isHandModelOverridable\1\idleAnim\viewmodel_m84_idle\emptyIdleAnim\viewmodel_m84_idle\fireAnim\viewmodel_m84_throw\holdFireAnim\viewmodel_m84_pullpin\lastShotAnim\viewmodel_m84_throw\detonateAnim\\meleeAnim\viewmodel_m84_idle\meleeChargeAnim\\raiseAnim\viewmodel_m84_idle\dropAnim\viewmodel_m84_idle\firstRaiseAnim\\altRaiseAnim\viewmodel_m84_idle\altDropAnim\viewmodel_m84_idle\quickRaiseAnim\\quickDropAnim\\emptyRaiseAnim\\emptyDropAnim\\sprintInAnim\\sprintLoopAnim\\sprintOutAnim\\nightVisionWearAnim\\nightVisionRemoveAnim\\autoAimRange\0\aimAssistRange\0\aimAssistRangeAds\0\moveSpeedScale\1.2\sprintDurationScale\1\lowAmmoWarningThreshold\0.33\damage\15\meleeDamage\135\fireDelay\0.15\meleeDelay\0.1\meleeChargeDelay\0\fireTime\0.7\holdFireTime\0.6\detonateTime\0.1\detonateDelay\0.1\meleeTime\0.66\meleeChargeTime\0\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0\quickDropTime\0.5\quickRaiseTime\0.5\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.5\sprintLoopTime\0.5\sprintOutTime\0.5\nightVisionWearTime\0.5\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\fuseTime\1.5\aiFuseTime\2\stickiness\Don't stick\hasDetonator\0\timedDetonation\1\rotate\1\holdButtonToThrow\0\freezeMovementWhenFiring\0\clipOnly\1\hipIdleAmount\80\hipIdleSpeed\0\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\parallelCeramicBounce\0.5\parallelPlasticBounce\0.5\parallelRubberBounce\0.5\parallelCushionBounce\0.5\parallelFruitBounce\0.5\parallelPaintedMetalBounce\0.5\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\perpendicularCeramicBounce\0.5\perpendicularPlasticBounce\0.5\perpendicularRubberBounce\0.5\perpendicularCushionBounce\0.5\perpendicularFruitBounce\0.5\perpendicularPaintedMetalBounce\0.5\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\weapon_m84_flashbang_grenade\knifeModel\\worldKnifeModel\\ammoName\flashgrenade\maxAmmo\4\startAmmo\1\clipName\flashgrenade\clipSize\4\sharedAmmoCapName\WEAPON_FLASHGRENADE\sharedAmmoCap\4\dropAmmoMin\1\dropAmmoMax\1\pickupSound\grenade_pickup\pickupSoundPlayer\grenade_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\pullbackSound\weap_fraggrenade_pin\pullbackSoundPlayer\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\fireSoundPlayer\weap_fraggrenade_fire\lastShotSound\\lastShotSoundPlayer\\meleeSwipeSound\\meleeSwipeSoundPlayer\\reloadSound\\reloadSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\detonateSound\\detonateSoundPlayer\\raiseSound\\raiseSoundPlayer\\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\bounceSound\grenade_bounce\reticleCenter\reticle_center_cross\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\blocksProne\0\cookOffHold\0\hudIcon\hud_us_flashgrenade\killIcon\\dpadIcon\\ammoCounterIcon\\hudIconRatio\1:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\None\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\800\explosionRadiusMin\200\explosionInnerDamage\0\explosionOuterDamage\0\damageConeAngle\180\projectileSpeed\940\projectileSpeedUp\120\projectileSpeedForward\0\projectileModel\projectile_m84_flashbang_grenade\projExplosionType\flashbang\projExplosionEffect\explosions/flashbang\projExplosionEffectForceNormalUp\0\projExplosionSound\flashbang_explode_default\projectileTrail\none\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0\adsDofStart\0\adsDofEnd\0\notetrackSoundMap\ diff --git a/weapons/mp/frag_grenade_mp b/weapons/mp/frag_grenade_mp index dc182ea..eede9d3 100644 --- a/weapons/mp/frag_grenade_mp +++ b/weapons/mp/frag_grenade_mp @@ -1 +1 @@ -WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Frag Grenade\impactType\grenade_explode\inventoryType\offhand\displayName\WEAPON_M2FRAGGRENADE\modeName\\playerAnimType\grenade\AIOverlayDescription\\gunModel\viewmodel_m67\handModel\viewmodel_base_viewhands\isHandModelOverridable\1\idleAnim\viewmodel_m67_idle\emptyIdleAnim\viewmodel_m67_idle\fireAnim\viewmodel_m67_throw\holdFireAnim\viewmodel_m67_pullpin\lastShotAnim\viewmodel_m67_throw\detonateAnim\\meleeAnim\viewmodel_m67_idle\meleeChargeAnim\\raiseAnim\viewmodel_m67_idle\dropAnim\viewmodel_m67_idle\firstRaiseAnim\\altRaiseAnim\viewmodel_m67_pickup_livenade\altDropAnim\viewmodel_m67_idle\quickRaiseAnim\\quickDropAnim\\emptyRaiseAnim\\emptyDropAnim\\sprintInAnim\\sprintLoopAnim\\sprintOutAnim\\nightVisionWearAnim\\nightVisionRemoveAnim\\autoAimRange\0\aimAssistRange\0\aimAssistRangeAds\0\moveSpeedScale\1\sprintDurationScale\1\lowAmmoWarningThreshold\0.33\damage\15\meleeDamage\135\fireDelay\0.13\meleeDelay\0.1\meleeChargeDelay\0\fireTime\0.36\holdFireTime\0.6\detonateTime\0.1\detonateDelay\0.1\meleeTime\0.66\meleeChargeTime\0\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0.6\quickDropTime\0.5\quickRaiseTime\0.5\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.5\sprintLoopTime\0.5\sprintOutTime\0.5\nightVisionWearTime\0.5\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\fuseTime\3.5\aiFuseTime\5\stickiness\Don't stick\hasDetonator\0\timedDetonation\1\rotate\1\holdButtonToThrow\0\freezeMovementWhenFiring\0\clipOnly\1\hipIdleAmount\80\hipIdleSpeed\0\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\parallelCeramicBounce\0.5\parallelPlasticBounce\0.5\parallelRubberBounce\0.5\parallelCushionBounce\0.5\parallelFruitBounce\0.5\parallelPaintedMetalBounce\0.5\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\perpendicularCeramicBounce\0.5\perpendicularPlasticBounce\0.5\perpendicularRubberBounce\0.5\perpendicularCushionBounce\0.5\perpendicularFruitBounce\0.5\perpendicularPaintedMetalBounce\0.5\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\weapon_m67_grenade\knifeModel\\worldKnifeModel\\ammoName\usgrenade\maxAmmo\4\startAmmo\1\clipName\usgrenade\clipSize\4\sharedAmmoCapName\WEAPON_FRAGGRENADE\sharedAmmoCap\4\dropAmmoMin\1\dropAmmoMax\1\pickupSound\grenade_pickup\pickupSoundPlayer\grenade_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\pullbackSound\weap_fraggrenade_pin\pullbackSoundPlayer\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\fireSoundPlayer\weap_fraggrenade_fire\lastShotSound\\lastShotSoundPlayer\\meleeSwipeSound\\meleeSwipeSoundPlayer\\reloadSound\\reloadSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\detonateSound\\detonateSoundPlayer\\raiseSound\\raiseSoundPlayer\\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\bounceSound\grenade_bounce\reticleCenter\reticle_center_cross\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\blocksProne\0\cookOffHold\0\hudIcon\hud_us_grenade\killIcon\hud_us_grenade\dpadIcon\\ammoCounterIcon\\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\None\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\256\explosionRadiusMin\0\explosionInnerDamage\270\explosionOuterDamage\67.5\damageConeAngle\180\projectileSpeed\940\projectileSpeedUp\120\projectileSpeedForward\0\projectileModel\projectile_m67fraggrenade\projExplosionType\grenade\projExplosionEffect\\projExplosionEffectForceNormalUp\0\projExplosionSound\\projectileTrail\grenade\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0\adsDofStart\0\adsDofEnd\0\notetrackSoundMap\ \ No newline at end of file +WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Frag Grenade\impactType\grenade_explode\inventoryType\offhand\displayName\WEAPON_M2FRAGGRENADE\modeName\\playerAnimType\grenade\AIOverlayDescription\\gunModel\viewmodel_m67\handModel\viewmodel_base_viewhands\isHandModelOverridable\1\idleAnim\viewmodel_m67_idle\emptyIdleAnim\viewmodel_m67_idle\fireAnim\viewmodel_m67_throw\holdFireAnim\viewmodel_m67_pullpin\lastShotAnim\viewmodel_m67_throw\detonateAnim\\meleeAnim\viewmodel_m67_idle\meleeChargeAnim\\raiseAnim\viewmodel_m67_idle\dropAnim\viewmodel_m67_idle\firstRaiseAnim\\altRaiseAnim\viewmodel_m67_pickup_livenade\altDropAnim\viewmodel_m67_idle\quickRaiseAnim\\quickDropAnim\\emptyRaiseAnim\\emptyDropAnim\\sprintInAnim\\sprintLoopAnim\\sprintOutAnim\\nightVisionWearAnim\\nightVisionRemoveAnim\\autoAimRange\0\aimAssistRange\0\aimAssistRangeAds\0\moveSpeedScale\1\sprintDurationScale\1\lowAmmoWarningThreshold\0.33\damage\15\meleeDamage\135\fireDelay\0.13\meleeDelay\0.1\meleeChargeDelay\0\fireTime\0.36\holdFireTime\0.6\detonateTime\0.1\detonateDelay\0.1\meleeTime\0.66\meleeChargeTime\0\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0.6\quickDropTime\0.5\quickRaiseTime\0.5\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.5\sprintLoopTime\0.5\sprintOutTime\0.5\nightVisionWearTime\0.5\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\fuseTime\3.5\aiFuseTime\5\stickiness\Don't stick\hasDetonator\0\timedDetonation\1\rotate\1\holdButtonToThrow\0\freezeMovementWhenFiring\0\clipOnly\1\hipIdleAmount\80\hipIdleSpeed\0\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\parallelCeramicBounce\0.5\parallelPlasticBounce\0.5\parallelRubberBounce\0.5\parallelCushionBounce\0.5\parallelFruitBounce\0.5\parallelPaintedMetalBounce\0.5\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\perpendicularCeramicBounce\0.5\perpendicularPlasticBounce\0.5\perpendicularRubberBounce\0.5\perpendicularCushionBounce\0.5\perpendicularFruitBounce\0.5\perpendicularPaintedMetalBounce\0.5\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\weapon_m67_grenade\knifeModel\\worldKnifeModel\\ammoName\usgrenade\maxAmmo\4\startAmmo\1\clipName\usgrenade\clipSize\4\sharedAmmoCapName\WEAPON_FRAGGRENADE\sharedAmmoCap\4\dropAmmoMin\1\dropAmmoMax\1\pickupSound\grenade_pickup\pickupSoundPlayer\grenade_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\pullbackSound\weap_fraggrenade_pin\pullbackSoundPlayer\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\fireSoundPlayer\weap_fraggrenade_fire\lastShotSound\\lastShotSoundPlayer\\meleeSwipeSound\\meleeSwipeSoundPlayer\\reloadSound\\reloadSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\detonateSound\\detonateSoundPlayer\\raiseSound\\raiseSoundPlayer\\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\bounceSound\grenade_bounce\reticleCenter\reticle_center_cross\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\blocksProne\0\cookOffHold\0\hudIcon\hud_us_grenade\killIcon\hud_us_grenade\dpadIcon\\ammoCounterIcon\\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\None\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\256\explosionRadiusMin\0\explosionInnerDamage\270\explosionOuterDamage\67.5\damageConeAngle\180\projectileSpeed\940\projectileSpeedUp\120\projectileSpeedForward\0\projectileModel\projectile_m67fraggrenade\projExplosionType\grenade\projExplosionEffect\\projExplosionEffectForceNormalUp\0\projExplosionSound\\projectileTrail\grenade\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0\adsDofStart\0\adsDofEnd\0\notetrackSoundMap\ diff --git a/weapons/mp/frag_grenade_short_mp b/weapons/mp/frag_grenade_short_mp index 3ca512c..b472005 100644 --- a/weapons/mp/frag_grenade_short_mp +++ b/weapons/mp/frag_grenade_short_mp @@ -1 +1 @@ -WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Frag Grenade\impactType\grenade_explode\inventoryType\offhand\displayName\WEAPON_M2FRAGGRENADE\modeName\\playerAnimType\grenade\AIOverlayDescription\\gunModel\viewmodel_m67\handModel\viewmodel_base_viewhands\isHandModelOverridable\1\idleAnim\viewmodel_m67_idle\emptyIdleAnim\viewmodel_m67_idle\fireAnim\viewmodel_m67_throw\holdFireAnim\viewmodel_m67_pullpin\lastShotAnim\viewmodel_m67_throw\detonateAnim\\meleeAnim\viewmodel_m67_idle\meleeChargeAnim\\raiseAnim\viewmodel_m67_idle\dropAnim\viewmodel_m67_idle\firstRaiseAnim\\altRaiseAnim\viewmodel_m67_pickup_livenade\altDropAnim\viewmodel_m67_idle\quickRaiseAnim\\quickDropAnim\\emptyRaiseAnim\\emptyDropAnim\\sprintInAnim\\sprintLoopAnim\\sprintOutAnim\\nightVisionWearAnim\\nightVisionRemoveAnim\\autoAimRange\0\aimAssistRange\0\aimAssistRangeAds\0\moveSpeedScale\1\sprintDurationScale\1\lowAmmoWarningThreshold\0.33\damage\15\meleeDamage\135\fireDelay\0.13\meleeDelay\0.1\meleeChargeDelay\0\fireTime\0.36\holdFireTime\0.6\detonateTime\0.1\detonateDelay\0.1\meleeTime\0.66\meleeChargeTime\0\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0.6\quickDropTime\0.5\quickRaiseTime\0.5\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.5\sprintLoopTime\0.5\sprintOutTime\0.5\nightVisionWearTime\0.5\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\fuseTime\3.5\aiFuseTime\5\stickiness\Don't stick\hasDetonator\0\timedDetonation\1\rotate\1\holdButtonToThrow\0\freezeMovementWhenFiring\0\clipOnly\1\hipIdleAmount\80\hipIdleSpeed\0\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\parallelCeramicBounce\0.5\parallelPlasticBounce\0.5\parallelRubberBounce\0.5\parallelCushionBounce\0.5\parallelFruitBounce\0.5\parallelPaintedMetalBounce\0.5\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\perpendicularCeramicBounce\0.5\perpendicularPlasticBounce\0.5\perpendicularRubberBounce\0.5\perpendicularCushionBounce\0.5\perpendicularFruitBounce\0.5\perpendicularPaintedMetalBounce\0.5\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\weapon_m67_grenade\knifeModel\\worldKnifeModel\\ammoName\usgrenade\maxAmmo\4\startAmmo\1\clipName\usgrenade\clipSize\4\sharedAmmoCapName\WEAPON_FRAGGRENADE\sharedAmmoCap\4\dropAmmoMin\1\dropAmmoMax\1\pickupSound\grenade_pickup\pickupSoundPlayer\grenade_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\pullbackSound\weap_fraggrenade_pin\pullbackSoundPlayer\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\fireSoundPlayer\weap_fraggrenade_fire\lastShotSound\\lastShotSoundPlayer\\meleeSwipeSound\\meleeSwipeSoundPlayer\\reloadSound\\reloadSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\detonateSound\\detonateSoundPlayer\\raiseSound\\raiseSoundPlayer\\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\bounceSound\grenade_bounce\reticleCenter\reticle_center_cross\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\blocksProne\0\cookOffHold\1\hudIcon\hud_us_grenade\killIcon\hud_us_grenade\dpadIcon\\ammoCounterIcon\\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\None\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\256\explosionRadiusMin\0\explosionInnerDamage\270\explosionOuterDamage\67.5\damageConeAngle\180\projectileSpeed\940\projectileSpeedUp\120\projectileSpeedForward\0\projectileModel\projectile_m67fraggrenade\projExplosionType\grenade\projExplosionEffect\\projExplosionEffectForceNormalUp\0\projExplosionSound\\projectileTrail\grenade\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0\adsDofStart\0\adsDofEnd\0\notetrackSoundMap\ \ No newline at end of file +WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Frag Grenade\impactType\grenade_explode\inventoryType\offhand\displayName\WEAPON_M2FRAGGRENADE\modeName\\playerAnimType\grenade\AIOverlayDescription\\gunModel\viewmodel_m67\handModel\viewmodel_base_viewhands\isHandModelOverridable\1\idleAnim\viewmodel_m67_idle\emptyIdleAnim\viewmodel_m67_idle\fireAnim\viewmodel_m67_throw\holdFireAnim\viewmodel_m67_pullpin\lastShotAnim\viewmodel_m67_throw\detonateAnim\\meleeAnim\viewmodel_m67_idle\meleeChargeAnim\\raiseAnim\viewmodel_m67_idle\dropAnim\viewmodel_m67_idle\firstRaiseAnim\\altRaiseAnim\viewmodel_m67_pickup_livenade\altDropAnim\viewmodel_m67_idle\quickRaiseAnim\\quickDropAnim\\emptyRaiseAnim\\emptyDropAnim\\sprintInAnim\\sprintLoopAnim\\sprintOutAnim\\nightVisionWearAnim\\nightVisionRemoveAnim\\autoAimRange\0\aimAssistRange\0\aimAssistRangeAds\0\moveSpeedScale\1\sprintDurationScale\1\lowAmmoWarningThreshold\0.33\damage\15\meleeDamage\135\fireDelay\0.13\meleeDelay\0.1\meleeChargeDelay\0\fireTime\0.36\holdFireTime\0.6\detonateTime\0.1\detonateDelay\0.1\meleeTime\0.66\meleeChargeTime\0\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0.6\quickDropTime\0.5\quickRaiseTime\0.5\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.5\sprintLoopTime\0.5\sprintOutTime\0.5\nightVisionWearTime\0.5\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\fuseTime\3.5\aiFuseTime\5\stickiness\Don't stick\hasDetonator\0\timedDetonation\1\rotate\1\holdButtonToThrow\0\freezeMovementWhenFiring\0\clipOnly\1\hipIdleAmount\80\hipIdleSpeed\0\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\parallelCeramicBounce\0.5\parallelPlasticBounce\0.5\parallelRubberBounce\0.5\parallelCushionBounce\0.5\parallelFruitBounce\0.5\parallelPaintedMetalBounce\0.5\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\perpendicularCeramicBounce\0.5\perpendicularPlasticBounce\0.5\perpendicularRubberBounce\0.5\perpendicularCushionBounce\0.5\perpendicularFruitBounce\0.5\perpendicularPaintedMetalBounce\0.5\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\weapon_m67_grenade\knifeModel\\worldKnifeModel\\ammoName\usgrenade\maxAmmo\4\startAmmo\1\clipName\usgrenade\clipSize\4\sharedAmmoCapName\WEAPON_FRAGGRENADE\sharedAmmoCap\4\dropAmmoMin\1\dropAmmoMax\1\pickupSound\grenade_pickup\pickupSoundPlayer\grenade_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\pullbackSound\weap_fraggrenade_pin\pullbackSoundPlayer\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\fireSoundPlayer\weap_fraggrenade_fire\lastShotSound\\lastShotSoundPlayer\\meleeSwipeSound\\meleeSwipeSoundPlayer\\reloadSound\\reloadSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\detonateSound\\detonateSoundPlayer\\raiseSound\\raiseSoundPlayer\\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\bounceSound\grenade_bounce\reticleCenter\reticle_center_cross\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\blocksProne\0\cookOffHold\1\hudIcon\hud_us_grenade\killIcon\hud_us_grenade\dpadIcon\\ammoCounterIcon\\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\None\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\256\explosionRadiusMin\0\explosionInnerDamage\270\explosionOuterDamage\67.5\damageConeAngle\180\projectileSpeed\940\projectileSpeedUp\120\projectileSpeedForward\0\projectileModel\projectile_m67fraggrenade\projExplosionType\grenade\projExplosionEffect\\projExplosionEffectForceNormalUp\0\projExplosionSound\\projectileTrail\grenade\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0\adsDofStart\0\adsDofEnd\0\notetrackSoundMap\ diff --git a/weapons/mp/g36c_mp b/weapons/mp/g36c_mp index 5ceaaf3..a35af01 100644 --- a/weapons/mp/g36c_mp +++ b/weapons/mp/g36c_mp @@ -1,7 +1,7 @@ -WEAPONFILE\displayName\WEAPON_G36C\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\g36c_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.08\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.1\reloadEmptyTime\2.967\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.25\raiseTime\0.4\altDropTime\0\altRaiseTime\0.66\quickDropTime\0.25\quickRaiseTime\0.76\firstRaiseTime\0.5\emptyDropTime\0.25\emptyRaiseTime\0.4\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\50\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\50\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0\swayVertScale\0.15\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.05\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_g36c_mp\gunModel2\viewmodel_g36c_mp_brock\gunModel3\viewmodel_g36c_mp_bshdwl\gunModel4\viewmodel_g36c_mp_bwmrpt\gunModel5\viewmodel_g36c_mp_cmdtgr\gunModel6\viewmodel_g36c_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_g36_mp\worldModel2\weapon_g36_mp_brock\worldModel3\weapon_g36_mp_bshdwl\worldModel4\weapon_g36_mp_bwmrpt\worldModel5\weapon_g36_mp_cmdtgr\worldModel6\weapon_g36_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_g36_idle\emptyIdleAnim\\fireAnim\viewmodel_g36_fire\lastShotAnim\viewmodel_g36_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_g36_reload\reloadEmptyAnim\viewmodel_g36_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_g36_pullout\dropAnim\viewmodel_g36_putaway_fast\firstRaiseAnim\viewmodel_g36_pullout\altRaiseAnim\viewmodel_g36_pullout\altDropAnim\viewmodel_g36_putaway_fast\quickRaiseAnim\viewmodel_g36_pullout_fast\quickDropAnim\viewmodel_g36_putaway_fast\emptyRaiseAnim\viewmodel_g36_pullout\emptyDropAnim\viewmodel_g36_putaway_fast\sprintInAnim\viewmodel_g36_sprint_in\sprintLoopAnim\viewmodel_g36_sprint_loop\sprintOutAnim\viewmodel_g36_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_g36_fire_ads\adsLastShotAnim\viewmodel_g36_idle\adsRechamberAnim\\adsUpAnim\viewmodel_g36_ironsites_ADS_up\adsDownAnim\viewmodel_g36_ironsites_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_g36c_fire_npc\fireSoundPlayer\weap_g36c_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_g36c_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_g36_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_g36_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_g36c_mp\killIcon\hud_icon_g36c_mp\dpadIcon\\ammoCounterIcon\hud_icon_g36c_mp\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\12\hideTags\tag_acog -tag_g36_scope -tag_reflex_sight\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_g36_lift_plr weap_g36_lift_plr -weap_g36_clipout_plr weap_g36_clipout_plr -weap_g36_clipin_plr weap_g36_clipin_plr -weap_g36_chamber_plr weap_g36_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_G36C\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\g36c_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.08\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.1\reloadEmptyTime\2.967\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.25\raiseTime\0.4\altDropTime\0\altRaiseTime\0.66\quickDropTime\0.25\quickRaiseTime\0.76\firstRaiseTime\0.5\emptyDropTime\0.25\emptyRaiseTime\0.4\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\50\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\50\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0\swayVertScale\0.15\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.05\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_g36c_mp\gunModel2\viewmodel_g36c_mp_brock\gunModel3\viewmodel_g36c_mp_bshdwl\gunModel4\viewmodel_g36c_mp_bwmrpt\gunModel5\viewmodel_g36c_mp_cmdtgr\gunModel6\viewmodel_g36c_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_g36_mp\worldModel2\weapon_g36_mp_brock\worldModel3\weapon_g36_mp_bshdwl\worldModel4\weapon_g36_mp_bwmrpt\worldModel5\weapon_g36_mp_cmdtgr\worldModel6\weapon_g36_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_g36_idle\emptyIdleAnim\\fireAnim\viewmodel_g36_fire\lastShotAnim\viewmodel_g36_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_g36_reload\reloadEmptyAnim\viewmodel_g36_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_g36_pullout\dropAnim\viewmodel_g36_putaway_fast\firstRaiseAnim\viewmodel_g36_pullout\altRaiseAnim\viewmodel_g36_pullout\altDropAnim\viewmodel_g36_putaway_fast\quickRaiseAnim\viewmodel_g36_pullout_fast\quickDropAnim\viewmodel_g36_putaway_fast\emptyRaiseAnim\viewmodel_g36_pullout\emptyDropAnim\viewmodel_g36_putaway_fast\sprintInAnim\viewmodel_g36_sprint_in\sprintLoopAnim\viewmodel_g36_sprint_loop\sprintOutAnim\viewmodel_g36_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_g36_fire_ads\adsLastShotAnim\viewmodel_g36_idle\adsRechamberAnim\\adsUpAnim\viewmodel_g36_ironsites_ADS_up\adsDownAnim\viewmodel_g36_ironsites_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_g36c_fire_npc\fireSoundPlayer\weap_g36c_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_g36c_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_g36_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_g36_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_g36c_mp\killIcon\hud_icon_g36c_mp\dpadIcon\\ammoCounterIcon\hud_icon_g36c_mp\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\12\hideTags\tag_acog +tag_g36_scope +tag_reflex_sight\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_g36_lift_plr weap_g36_lift_plr +weap_g36_clipout_plr weap_g36_clipout_plr +weap_g36_clipin_plr weap_g36_clipin_plr +weap_g36_chamber_plr weap_g36_chamber_plr diff --git a/weapons/mp/g36c_silencer_mp b/weapons/mp/g36c_silencer_mp index 196fe5d..310a3a8 100644 --- a/weapons/mp/g36c_silencer_mp +++ b/weapons/mp/g36c_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_G36C\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\g36c_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.08\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.1\reloadEmptyTime\2.967\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.25\raiseTime\0.4\altDropTime\0\altRaiseTime\0.66\quickDropTime\0.25\quickRaiseTime\0.76\firstRaiseTime\0.5\emptyDropTime\0.25\emptyRaiseTime\0.4\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\70\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\50\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\50\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.2\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_g36c_silencer\gunModel2\viewmodel_g36csd_mp_brock\gunModel3\viewmodel_g36csd_mp_bshdwl\gunModel4\viewmodel_g36csd_mp_bwmrpt\gunModel5\viewmodel_g36csd_mp_cmdtgr\gunModel6\viewmodel_g36csd_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_g36csd_mp\worldModel2\weapon_g36csd_mp_brock\worldModel3\weapon_g36csd_mp_bshdwl\worldModel4\weapon_g36csd_mp_bwmrpt\worldModel5\weapon_g36csd_mp_cmdtgr\worldModel6\weapon_g36csd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_g36_idle\emptyIdleAnim\\fireAnim\viewmodel_g36_fire\lastShotAnim\viewmodel_g36_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_g36_reload\reloadEmptyAnim\viewmodel_g36_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_g36_pullout\dropAnim\viewmodel_g36_putaway_fast\firstRaiseAnim\viewmodel_g36_pullout\altRaiseAnim\viewmodel_g36_pullout\altDropAnim\viewmodel_g36_putaway_fast\quickRaiseAnim\viewmodel_g36_pullout_fast\quickDropAnim\viewmodel_g36_putaway_fast\emptyRaiseAnim\viewmodel_g36_pullout\emptyDropAnim\viewmodel_g36_putaway_fast\sprintInAnim\viewmodel_g36_sprint_in\sprintLoopAnim\viewmodel_g36_sprint_loop\sprintOutAnim\viewmodel_g36_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_g36_fire_ads\adsLastShotAnim\viewmodel_g36_idle\adsRechamberAnim\\adsUpAnim\viewmodel_g36_ironsites_ADS_up\adsDownAnim\viewmodel_g36_ironsites_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_g36c_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_g36_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_g36_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_g36c_mp\killIcon\hud_icon_g36c_mp\dpadIcon\\ammoCounterIcon\hud_icon_g36c_mp\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_g36_lift_plr weap_g36_lift_plr -weap_g36_clipout_plr weap_g36_clipout_plr -weap_g36_clipin_plr weap_g36_clipin_plr -weap_g36_chamber_plr weap_g36_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_G36C\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\g36c_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.08\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.1\reloadEmptyTime\2.967\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.25\raiseTime\0.4\altDropTime\0\altRaiseTime\0.66\quickDropTime\0.25\quickRaiseTime\0.76\firstRaiseTime\0.5\emptyDropTime\0.25\emptyRaiseTime\0.4\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\70\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\50\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\50\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.2\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_g36c_silencer\gunModel2\viewmodel_g36csd_mp_brock\gunModel3\viewmodel_g36csd_mp_bshdwl\gunModel4\viewmodel_g36csd_mp_bwmrpt\gunModel5\viewmodel_g36csd_mp_cmdtgr\gunModel6\viewmodel_g36csd_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_g36csd_mp\worldModel2\weapon_g36csd_mp_brock\worldModel3\weapon_g36csd_mp_bshdwl\worldModel4\weapon_g36csd_mp_bwmrpt\worldModel5\weapon_g36csd_mp_cmdtgr\worldModel6\weapon_g36csd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_g36_idle\emptyIdleAnim\\fireAnim\viewmodel_g36_fire\lastShotAnim\viewmodel_g36_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_g36_reload\reloadEmptyAnim\viewmodel_g36_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_g36_pullout\dropAnim\viewmodel_g36_putaway_fast\firstRaiseAnim\viewmodel_g36_pullout\altRaiseAnim\viewmodel_g36_pullout\altDropAnim\viewmodel_g36_putaway_fast\quickRaiseAnim\viewmodel_g36_pullout_fast\quickDropAnim\viewmodel_g36_putaway_fast\emptyRaiseAnim\viewmodel_g36_pullout\emptyDropAnim\viewmodel_g36_putaway_fast\sprintInAnim\viewmodel_g36_sprint_in\sprintLoopAnim\viewmodel_g36_sprint_loop\sprintOutAnim\viewmodel_g36_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_g36_fire_ads\adsLastShotAnim\viewmodel_g36_idle\adsRechamberAnim\\adsUpAnim\viewmodel_g36_ironsites_ADS_up\adsDownAnim\viewmodel_g36_ironsites_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_g36c_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_g36_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_g36_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_g36c_mp\killIcon\hud_icon_g36c_mp\dpadIcon\\ammoCounterIcon\hud_icon_g36c_mp\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_g36_lift_plr weap_g36_lift_plr +weap_g36_clipout_plr weap_g36_clipout_plr +weap_g36_clipin_plr weap_g36_clipin_plr +weap_g36_chamber_plr weap_g36_chamber_plr diff --git a/weapons/mp/g3_mp b/weapons/mp/g3_mp index 27c8016..25d7f6a 100644 --- a/weapons/mp/g3_mp +++ b/weapons/mp/g3_mp @@ -1,7 +1,7 @@ -WEAPONFILE\displayName\WEAPON_G3\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\1\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\120\startAmmo\60\clipName\g3_mp\clipSize\20\shotCount\1\dropAmmoMin\1\dropAmmoMax\20\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.75\reloadEmptyTime\3.75\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.85\altDropTime\0.55\altRaiseTime\0.85\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.1\emptyDropTime\0.6\emptyRaiseTime\0.85\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\0\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\50\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\50\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_G3_mp\gunModel2\viewmodel_G3_mp_brock\gunModel3\viewmodel_G3_mp_bshdwl\gunModel4\viewmodel_G3_mp_bwmrpt\gunModel5\viewmodel_G3_mp_cmdtgr\gunModel6\viewmodel_G3_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_g3\worldModel2\weapon_G3_mp_brock\worldModel3\weapon_G3_mp_bshdwl\worldModel4\weapon_G3_mp_bwmrpt\worldModel5\weapon_G3_mp_cmdtgr\worldModel6\weapon_G3_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_G3_idle\emptyIdleAnim\viewmodel_G3_idle\fireAnim\viewmodel_G3_fire\lastShotAnim\viewmodel_G3_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_G3_reload\reloadEmptyAnim\viewmodel_G3_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_G3_pullout\dropAnim\viewmodel_G3_putaway\firstRaiseAnim\viewmodel_G3_first_time_pullout\altRaiseAnim\viewmodel_G3_pullout\altDropAnim\viewmodel_G3_putaway\quickRaiseAnim\viewmodel_G3_quick_pullout\quickDropAnim\viewmodel_G3_quick_putaway\emptyRaiseAnim\viewmodel_G3_pullout\emptyDropAnim\viewmodel_G3_putaway\sprintInAnim\viewmodel_G3_sprint_in\sprintLoopAnim\viewmodel_G3_sprint_loop\sprintOutAnim\viewmodel_G3_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_G3_ADS_fire\adsLastShotAnim\viewmodel_G3_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_G3_ADS_up\adsDownAnim\viewmodel_G3_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_g3_fire_npc\fireSoundPlayer\weap_g3_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_g3_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_g3_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_g3_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_g3\killIcon\hud_icon_g3\dpadIcon\\ammoCounterIcon\hud_icon_g3\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\tag_acog -tag_ak47_mount -tag_reflex_sight\notetrackSoundMap\weap_g3_lift_plr weap_g3_lift_plr -weap_g3_clipout_plr weap_g3_clipout_plr -weap_g3_clipin_plr weap_g3_clipin_plr -weap_g3_chamber_plr weap_g3_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_G3\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\1\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\120\startAmmo\60\clipName\g3_mp\clipSize\20\shotCount\1\dropAmmoMin\1\dropAmmoMax\20\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.75\reloadEmptyTime\3.75\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.85\altDropTime\0.55\altRaiseTime\0.85\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.1\emptyDropTime\0.6\emptyRaiseTime\0.85\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\0\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\50\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\50\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_G3_mp\gunModel2\viewmodel_G3_mp_brock\gunModel3\viewmodel_G3_mp_bshdwl\gunModel4\viewmodel_G3_mp_bwmrpt\gunModel5\viewmodel_G3_mp_cmdtgr\gunModel6\viewmodel_G3_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_g3\worldModel2\weapon_G3_mp_brock\worldModel3\weapon_G3_mp_bshdwl\worldModel4\weapon_G3_mp_bwmrpt\worldModel5\weapon_G3_mp_cmdtgr\worldModel6\weapon_G3_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_G3_idle\emptyIdleAnim\viewmodel_G3_idle\fireAnim\viewmodel_G3_fire\lastShotAnim\viewmodel_G3_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_G3_reload\reloadEmptyAnim\viewmodel_G3_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_G3_pullout\dropAnim\viewmodel_G3_putaway\firstRaiseAnim\viewmodel_G3_first_time_pullout\altRaiseAnim\viewmodel_G3_pullout\altDropAnim\viewmodel_G3_putaway\quickRaiseAnim\viewmodel_G3_quick_pullout\quickDropAnim\viewmodel_G3_quick_putaway\emptyRaiseAnim\viewmodel_G3_pullout\emptyDropAnim\viewmodel_G3_putaway\sprintInAnim\viewmodel_G3_sprint_in\sprintLoopAnim\viewmodel_G3_sprint_loop\sprintOutAnim\viewmodel_G3_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_G3_ADS_fire\adsLastShotAnim\viewmodel_G3_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_G3_ADS_up\adsDownAnim\viewmodel_G3_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_g3_fire_npc\fireSoundPlayer\weap_g3_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_g3_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_g3_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_g3_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_g3\killIcon\hud_icon_g3\dpadIcon\\ammoCounterIcon\hud_icon_g3\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\tag_acog +tag_ak47_mount +tag_reflex_sight\notetrackSoundMap\weap_g3_lift_plr weap_g3_lift_plr +weap_g3_clipout_plr weap_g3_clipout_plr +weap_g3_clipin_plr weap_g3_clipin_plr +weap_g3_chamber_plr weap_g3_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/g3_silencer_mp b/weapons/mp/g3_silencer_mp index f912fa6..4db1d93 100644 --- a/weapons/mp/g3_silencer_mp +++ b/weapons/mp/g3_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_G3\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\1\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\120\startAmmo\60\clipName\g3_silencer_mp\clipSize\20\shotCount\1\dropAmmoMin\1\dropAmmoMax\20\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.75\reloadEmptyTime\3.75\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.85\altDropTime\0.55\altRaiseTime\0.85\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.1\emptyDropTime\0.6\emptyRaiseTime\0.85\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\0\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\50\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\50\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_G3_silencer\gunModel2\viewmodel_g3_and_silencer_mp_brock\gunModel3\viewmodel_g3_and_silencer_mp_bshdwl\gunModel4\viewmodel_g3_and_sliencer_mp_bwmrpt\gunModel5\viewmodel_g3_and_silencer_mp_cmdtgr\gunModel6\viewmodel_g3_and_silencer_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_g3_silencer\worldModel2\weapon_g3SD_mp_brock\worldModel3\weapon_g3SD_mp_bshdwl\worldModel4\weapon_g3SD_mp_bwmrpt\worldModel5\weapon_g3SD_mp_cmdtgr\worldModel6\weapon_g3SD_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_G3_idle\emptyIdleAnim\viewmodel_G3_idle\fireAnim\viewmodel_G3_fire\lastShotAnim\viewmodel_G3_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_G3_reload\reloadEmptyAnim\viewmodel_G3_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_G3_pullout\dropAnim\viewmodel_G3_putaway\firstRaiseAnim\viewmodel_G3_first_time_pullout\altRaiseAnim\viewmodel_G3_pullout\altDropAnim\viewmodel_G3_putaway\quickRaiseAnim\viewmodel_G3_quick_pullout\quickDropAnim\viewmodel_G3_quick_putaway\emptyRaiseAnim\viewmodel_G3_pullout\emptyDropAnim\viewmodel_G3_putaway\sprintInAnim\viewmodel_G3_sprint_in\sprintLoopAnim\viewmodel_G3_sprint_loop\sprintOutAnim\viewmodel_G3_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_G3_ADS_fire\adsLastShotAnim\viewmodel_G3_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_G3_ADS_up\adsDownAnim\viewmodel_G3_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_g3_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_g3_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_g3_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_g3\killIcon\hud_icon_g3\dpadIcon\\ammoCounterIcon\hud_icon_g3\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0.2\adsDofEnd\9.9\hideTags\\notetrackSoundMap\weap_g3_lift_plr weap_g3_lift_plr -weap_g3_clipout_plr weap_g3_clipout_plr -weap_g3_clipin_plr weap_g3_clipin_plr -weap_g3_chamber_plr weap_g3_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_G3\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\1\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\120\startAmmo\60\clipName\g3_silencer_mp\clipSize\20\shotCount\1\dropAmmoMin\1\dropAmmoMax\20\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.75\reloadEmptyTime\3.75\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.85\altDropTime\0.55\altRaiseTime\0.85\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.1\emptyDropTime\0.6\emptyRaiseTime\0.85\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\0\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\50\hipViewKickYawMax\-50\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\50\adsViewKickYawMax\-50\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_G3_silencer\gunModel2\viewmodel_g3_and_silencer_mp_brock\gunModel3\viewmodel_g3_and_silencer_mp_bshdwl\gunModel4\viewmodel_g3_and_sliencer_mp_bwmrpt\gunModel5\viewmodel_g3_and_silencer_mp_cmdtgr\gunModel6\viewmodel_g3_and_silencer_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_g3_silencer\worldModel2\weapon_g3SD_mp_brock\worldModel3\weapon_g3SD_mp_bshdwl\worldModel4\weapon_g3SD_mp_bwmrpt\worldModel5\weapon_g3SD_mp_cmdtgr\worldModel6\weapon_g3SD_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_G3_idle\emptyIdleAnim\viewmodel_G3_idle\fireAnim\viewmodel_G3_fire\lastShotAnim\viewmodel_G3_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_G3_reload\reloadEmptyAnim\viewmodel_G3_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_G3_pullout\dropAnim\viewmodel_G3_putaway\firstRaiseAnim\viewmodel_G3_first_time_pullout\altRaiseAnim\viewmodel_G3_pullout\altDropAnim\viewmodel_G3_putaway\quickRaiseAnim\viewmodel_G3_quick_pullout\quickDropAnim\viewmodel_G3_quick_putaway\emptyRaiseAnim\viewmodel_G3_pullout\emptyDropAnim\viewmodel_G3_putaway\sprintInAnim\viewmodel_G3_sprint_in\sprintLoopAnim\viewmodel_G3_sprint_loop\sprintOutAnim\viewmodel_G3_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_G3_ADS_fire\adsLastShotAnim\viewmodel_G3_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_G3_ADS_up\adsDownAnim\viewmodel_G3_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_g3_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_g3_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_g3_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_g3\killIcon\hud_icon_g3\dpadIcon\\ammoCounterIcon\hud_icon_g3\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0.2\adsDofEnd\9.9\hideTags\\notetrackSoundMap\weap_g3_lift_plr weap_g3_lift_plr +weap_g3_clipout_plr weap_g3_clipout_plr +weap_g3_clipin_plr weap_g3_clipin_plr +weap_g3_chamber_plr weap_g3_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/m1014_mp b/weapons/mp/m1014_mp index 9d4f7b3..9f958e5 100644 --- a/weapons/mp/m1014_mp +++ b/weapons/mp/m1014_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_BENELLI\modeName\\playerAnimType\other\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\spread\penetrateType\small\impactType\shotgun\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\0\noPartialReload\0\segmentedReload\1\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\80\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\12 gauge\maxAmmo\40\startAmmo\20\clipName\m1014_mp\clipSize\4\shotCount\8\dropAmmoMin\1\dropAmmoMax\4\reloadAmmoAdd\1\reloadStartAdd\1\damage\30\minDamage\10\meleeDamage\135\maxDamageRange\300\minDamageRange\600\playerDamage\30\locNone\1\locHelmet\1\locHead\1\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.2\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\0.567\reloadEmptyTime\0.567\reloadStartTime\1\reloadEndTime\0.36\reloadAddTime\0.25\reloadStartAddTime\0.6\rechamberTime\0\rechamberBoltTime\0.55\dropTime\0.43\raiseTime\0.75\altDropTime\0\altRaiseTime\0.6\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.6\emptyDropTime\0.43\emptyRaiseTime\0.75\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-100\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\220\proneRotR\-300\proneOfsF\-0.5\proneOfsR\2\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.8\idleProneFactor\0.4\adsSpread\5.5\adsAimPitch\-0.1\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.5\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\5\hipSpreadDuckedMin\5\hipSpreadProneMin\5\hipSpreadMax\5\hipSpreadDuckedMax\5\hipSpreadProneMax\5\hipSpreadFireAdd\0\hipSpreadTurnAdd\0\hipSpreadMoveAdd\0.1\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\50\hipGunKickPitchMax\60\hipGunKickYawMin\-30\hipGunKickYawMax\30\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\35\adsGunKickPitchMax\45\adsGunKickYawMin\-25\adsGunKickYawMax\25\adsGunKickAccel\260\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\50\adsGunKickStaticDecay\10\hipViewKickPitchMin\85\hipViewKickPitchMax\95\hipViewKickYawMin\-45\hipViewKickYawMax\45\hipViewKickCenterSpeed\1000\adsViewKickPitchMin\85\adsViewKickPitchMax\95\adsViewKickYawMin\-45\adsViewKickYawMax\45\adsViewKickCenterSpeed\1000\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\8\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.2\fightDist\720\maxDist\680\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_benelli_m4_mp\gunModel2\viewmodel_benelli_m4_mp_brock\gunModel3\viewmodel_benelli_m4_mp_bshdwl\gunModel4\viewmodel_benelli_m4_mp_bwmrpt\gunModel5\viewmodel_benelli_m4_mp_cmdtgr\gunModel6\viewmodel_benelli_m4_mp_stagger\gunModel7\viewmodel_benelli_m4_gold_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_benelli_super_90\worldModel2\weapon_benelli_super_90_mp_brock\worldModel3\weapon_benelli_super_90_mp_bshdwl\worldModel4\weapon_benelli_super_90_mp_bwmrpt\worldModel5\weapon_benelli_super_90_mp_cmdtgr\worldModel6\weapon_benelli_super_90_mp_stagger\worldModel7\weapon_benelli_super_90_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_benelliM4_idle\emptyIdleAnim\viewmodel_benelliM4_idle\fireAnim\viewmodel_benelliM4_fire\lastShotAnim\viewmodel_benelliM4_fire_last\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_benelliM4_reload_loop\reloadEmptyAnim\\reloadStartAnim\viewmodel_benelliM4_reload_intro\reloadEndAnim\viewmodel_benelliM4_reload_out\raiseAnim\viewmodel_benelliM4_pullout\dropAnim\viewmodel_benelliM4_putaway\firstRaiseAnim\viewmodel_benelliM4_pullout\altRaiseAnim\viewmodel_benelliM4_pullout\altDropAnim\viewmodel_benelliM4_putaway\quickRaiseAnim\viewmodel_benelliM4_pullout_quick\quickDropAnim\viewmodel_benelliM4_putaway_quick\emptyRaiseAnim\viewmodel_benelliM4_pullout\emptyDropAnim\viewmodel_benelliM4_putaway\sprintInAnim\viewmodel_benelliM4_sprint_in\sprintLoopAnim\viewmodel_benelliM4_sprint_loop\sprintOutAnim\viewmodel_benelliM4_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_benelliM4_fire_ads\adsLastShotAnim\viewmodel_benelliM4_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_benelliM4_ADS_up\adsDownAnim\viewmodel_benelliM4_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/shotgun_view\worldShellEjectEffect\shellejects/shotgun\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m1014_fire_npc\fireSoundPlayer\weap_m1014_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m1014_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m4benelli_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m4benelli_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_benelli_m4\killIcon\hud_icon_benelli_m4\dpadIcon\\ammoCounterIcon\hud_icon_benelli_m4\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Shotgun\flipKillIcon\1\fireRumble\shotgun_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\0\hideTags\tag_foregrip -tag_reflex_sight\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_m4benelli_start_plr weap_m4benelli_start_plr -weap_m4benelli_loop_plr weap_m4benelli_loop_plr -weap_m4benelli_end_plr weap_m4benelli_end_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_BENELLI\modeName\\playerAnimType\other\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\spread\penetrateType\small\impactType\shotgun\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\0\noPartialReload\0\segmentedReload\1\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\80\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\12 gauge\maxAmmo\40\startAmmo\20\clipName\m1014_mp\clipSize\4\shotCount\8\dropAmmoMin\1\dropAmmoMax\4\reloadAmmoAdd\1\reloadStartAdd\1\damage\30\minDamage\10\meleeDamage\135\maxDamageRange\300\minDamageRange\600\playerDamage\30\locNone\1\locHelmet\1\locHead\1\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.2\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\0.567\reloadEmptyTime\0.567\reloadStartTime\1\reloadEndTime\0.36\reloadAddTime\0.25\reloadStartAddTime\0.6\rechamberTime\0\rechamberBoltTime\0.55\dropTime\0.43\raiseTime\0.75\altDropTime\0\altRaiseTime\0.6\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.6\emptyDropTime\0.43\emptyRaiseTime\0.75\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-100\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\220\proneRotR\-300\proneOfsF\-0.5\proneOfsR\2\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.8\idleProneFactor\0.4\adsSpread\5.5\adsAimPitch\-0.1\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.5\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\5\hipSpreadDuckedMin\5\hipSpreadProneMin\5\hipSpreadMax\5\hipSpreadDuckedMax\5\hipSpreadProneMax\5\hipSpreadFireAdd\0\hipSpreadTurnAdd\0\hipSpreadMoveAdd\0.1\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\50\hipGunKickPitchMax\60\hipGunKickYawMin\-30\hipGunKickYawMax\30\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\35\adsGunKickPitchMax\45\adsGunKickYawMin\-25\adsGunKickYawMax\25\adsGunKickAccel\260\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\50\adsGunKickStaticDecay\10\hipViewKickPitchMin\85\hipViewKickPitchMax\95\hipViewKickYawMin\-45\hipViewKickYawMax\45\hipViewKickCenterSpeed\1000\adsViewKickPitchMin\85\adsViewKickPitchMax\95\adsViewKickYawMin\-45\adsViewKickYawMax\45\adsViewKickCenterSpeed\1000\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\8\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.2\fightDist\720\maxDist\680\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_benelli_m4_mp\gunModel2\viewmodel_benelli_m4_mp_brock\gunModel3\viewmodel_benelli_m4_mp_bshdwl\gunModel4\viewmodel_benelli_m4_mp_bwmrpt\gunModel5\viewmodel_benelli_m4_mp_cmdtgr\gunModel6\viewmodel_benelli_m4_mp_stagger\gunModel7\viewmodel_benelli_m4_gold_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_benelli_super_90\worldModel2\weapon_benelli_super_90_mp_brock\worldModel3\weapon_benelli_super_90_mp_bshdwl\worldModel4\weapon_benelli_super_90_mp_bwmrpt\worldModel5\weapon_benelli_super_90_mp_cmdtgr\worldModel6\weapon_benelli_super_90_mp_stagger\worldModel7\weapon_benelli_super_90_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_benelliM4_idle\emptyIdleAnim\viewmodel_benelliM4_idle\fireAnim\viewmodel_benelliM4_fire\lastShotAnim\viewmodel_benelliM4_fire_last\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_benelliM4_reload_loop\reloadEmptyAnim\\reloadStartAnim\viewmodel_benelliM4_reload_intro\reloadEndAnim\viewmodel_benelliM4_reload_out\raiseAnim\viewmodel_benelliM4_pullout\dropAnim\viewmodel_benelliM4_putaway\firstRaiseAnim\viewmodel_benelliM4_pullout\altRaiseAnim\viewmodel_benelliM4_pullout\altDropAnim\viewmodel_benelliM4_putaway\quickRaiseAnim\viewmodel_benelliM4_pullout_quick\quickDropAnim\viewmodel_benelliM4_putaway_quick\emptyRaiseAnim\viewmodel_benelliM4_pullout\emptyDropAnim\viewmodel_benelliM4_putaway\sprintInAnim\viewmodel_benelliM4_sprint_in\sprintLoopAnim\viewmodel_benelliM4_sprint_loop\sprintOutAnim\viewmodel_benelliM4_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_benelliM4_fire_ads\adsLastShotAnim\viewmodel_benelliM4_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_benelliM4_ADS_up\adsDownAnim\viewmodel_benelliM4_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/shotgun_view\worldShellEjectEffect\shellejects/shotgun\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m1014_fire_npc\fireSoundPlayer\weap_m1014_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m1014_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m4benelli_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m4benelli_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_benelli_m4\killIcon\hud_icon_benelli_m4\dpadIcon\\ammoCounterIcon\hud_icon_benelli_m4\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Shotgun\flipKillIcon\1\fireRumble\shotgun_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\0\hideTags\tag_foregrip +tag_reflex_sight\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_m4benelli_start_plr weap_m4benelli_start_plr +weap_m4benelli_loop_plr weap_m4benelli_loop_plr +weap_m4benelli_end_plr weap_m4benelli_end_plr diff --git a/weapons/mp/m14_mp b/weapons/mp/m14_mp index ce62034..3f8371c 100644 --- a/weapons/mp/m14_mp +++ b/weapons/mp/m14_mp @@ -1,8 +1,8 @@ -WEAPONFILE\displayName\WEAPON_M14\modeName\\playerAnimType\sniper\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\large\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\30\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\120\startAmmo\60\clipName\m14_mp\clipSize\20\shotCount\1\dropAmmoMin\1\dropAmmoMax\20\reloadAmmoAdd\0\reloadStartAdd\1\damage\50\minDamage\40\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\30\locNone\1\locHelmet\1.5\locHead\1.5\locNeck\1.5\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.06\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\1\rechamberBoltTime\0\dropTime\0.7\raiseTime\0.8\altDropTime\0.75\altRaiseTime\0.1\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.8\emptyDropTime\0.7\emptyRaiseTime\0.8\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-2.2\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.5\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-55\proneMoveR\3\proneMoveU\-145\proneRotP\0\proneRotY\220\proneRotR\-200\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1.5\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\80\hipGunKickPitchMax\85\hipGunKickYawMin\-35\hipGunKickYawMax\35\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\600\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\100\adsGunKickStaticDecay\100\hipViewKickPitchMin\40\hipViewKickPitchMax\80\hipViewKickYawMin\40\hipViewKickYawMax\-40\hipViewKickCenterSpeed\1200\adsViewKickPitchMin\40\adsViewKickPitchMax\80\adsViewKickYawMin\40\adsViewKickYawMax\-40\adsViewKickCenterSpeed\1200\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.25\fightDist\720\maxDist\730\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m14_mp\gunModel2\viewmodel_m14_mp_brock\gunModel3\viewmodel_m14_mp_bshdwl\gunModel4\viewmodel_m14_mp_bwmrpt\gunModel5\viewmodel_m14_mp_cmdtgr\gunModel6\viewmodel_m14_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m14_scout_mp\worldModel2\weapon_m14_scout_mp_brock\worldModel3\weapon_m14_scout_mp_bshdwl\worldModel4\weapon_m14_scout_mp_bwmrpt\worldModel5\weapon_m14_scout_mp_cmdtgr\worldModel6\weapon_m14_scout_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M14_idle\emptyIdleAnim\viewmodel_M14_idle\fireAnim\viewmodel_M14_fire\lastShotAnim\viewmodel_M14_last_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M14_reload\reloadEmptyAnim\viewmodel_M14_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_M14_pullout\dropAnim\viewmodel_M14_putaway\firstRaiseAnim\viewmodel_M14_pullout\altRaiseAnim\viewmodel_M14_pullout\altDropAnim\viewmodel_M14_putaway\quickRaiseAnim\viewmodel_M14_pullout_quick\quickDropAnim\viewmodel_M14_putaway_quick\emptyRaiseAnim\viewmodel_M14_pullout\emptyDropAnim\viewmodel_M14_putaway\sprintInAnim\viewmodel_M14_sprint_in\sprintLoopAnim\viewmodel_M14_sprint_loop\sprintOutAnim\viewmodel_M14_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M14_fire_ads\adsLastShotAnim\viewmodel_M14_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_M14_ironsites_ADS_up\adsDownAnim\viewmodel_M14_ironsites_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m14sniper_fire_npc\fireSoundPlayer\weap_m14sniper_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m14sniper_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m14sniper_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m14sniper_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m14\killIcon\hud_icon_m14\dpadIcon\\ammoCounterIcon\hud_icon_m14\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\12\hideTags\TAG_ACOG -TAG_REFLEX_SIGHT -\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_m14sniper_lift_plr weap_m14sniper_lift_plr -weap_m14sniper_clipout_plr weap_m14sniper_clipout_plr -weap_m14sniper_clipin_plr weap_m14sniper_clipin_plr -weap_m14sniper_chamber_close_plr weap_m14sniper_chamber_close_plr -weap_m14sniper_clipin_tac_plr weap_m14sniper_clipin_tac_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_M14\modeName\\playerAnimType\sniper\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\large\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\30\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\120\startAmmo\60\clipName\m14_mp\clipSize\20\shotCount\1\dropAmmoMin\1\dropAmmoMax\20\reloadAmmoAdd\0\reloadStartAdd\1\damage\50\minDamage\40\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\30\locNone\1\locHelmet\1.5\locHead\1.5\locNeck\1.5\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.06\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\1\rechamberBoltTime\0\dropTime\0.7\raiseTime\0.8\altDropTime\0.75\altRaiseTime\0.1\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.8\emptyDropTime\0.7\emptyRaiseTime\0.8\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-2.2\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.5\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-55\proneMoveR\3\proneMoveU\-145\proneRotP\0\proneRotY\220\proneRotR\-200\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1.5\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\80\hipGunKickPitchMax\85\hipGunKickYawMin\-35\hipGunKickYawMax\35\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\600\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\100\adsGunKickStaticDecay\100\hipViewKickPitchMin\40\hipViewKickPitchMax\80\hipViewKickYawMin\40\hipViewKickYawMax\-40\hipViewKickCenterSpeed\1200\adsViewKickPitchMin\40\adsViewKickPitchMax\80\adsViewKickYawMin\40\adsViewKickYawMax\-40\adsViewKickCenterSpeed\1200\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.25\fightDist\720\maxDist\730\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m14_mp\gunModel2\viewmodel_m14_mp_brock\gunModel3\viewmodel_m14_mp_bshdwl\gunModel4\viewmodel_m14_mp_bwmrpt\gunModel5\viewmodel_m14_mp_cmdtgr\gunModel6\viewmodel_m14_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m14_scout_mp\worldModel2\weapon_m14_scout_mp_brock\worldModel3\weapon_m14_scout_mp_bshdwl\worldModel4\weapon_m14_scout_mp_bwmrpt\worldModel5\weapon_m14_scout_mp_cmdtgr\worldModel6\weapon_m14_scout_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M14_idle\emptyIdleAnim\viewmodel_M14_idle\fireAnim\viewmodel_M14_fire\lastShotAnim\viewmodel_M14_last_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M14_reload\reloadEmptyAnim\viewmodel_M14_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_M14_pullout\dropAnim\viewmodel_M14_putaway\firstRaiseAnim\viewmodel_M14_pullout\altRaiseAnim\viewmodel_M14_pullout\altDropAnim\viewmodel_M14_putaway\quickRaiseAnim\viewmodel_M14_pullout_quick\quickDropAnim\viewmodel_M14_putaway_quick\emptyRaiseAnim\viewmodel_M14_pullout\emptyDropAnim\viewmodel_M14_putaway\sprintInAnim\viewmodel_M14_sprint_in\sprintLoopAnim\viewmodel_M14_sprint_loop\sprintOutAnim\viewmodel_M14_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M14_fire_ads\adsLastShotAnim\viewmodel_M14_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_M14_ironsites_ADS_up\adsDownAnim\viewmodel_M14_ironsites_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m14sniper_fire_npc\fireSoundPlayer\weap_m14sniper_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m14sniper_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m14sniper_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m14sniper_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m14\killIcon\hud_icon_m14\dpadIcon\\ammoCounterIcon\hud_icon_m14\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\12\hideTags\TAG_ACOG +TAG_REFLEX_SIGHT +\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_m14sniper_lift_plr weap_m14sniper_lift_plr +weap_m14sniper_clipout_plr weap_m14sniper_clipout_plr +weap_m14sniper_clipin_plr weap_m14sniper_clipin_plr +weap_m14sniper_chamber_close_plr weap_m14sniper_chamber_close_plr +weap_m14sniper_clipin_tac_plr weap_m14sniper_clipin_tac_plr diff --git a/weapons/mp/m14_silencer_mp b/weapons/mp/m14_silencer_mp index 247b94c..b23263d 100644 --- a/weapons/mp/m14_silencer_mp +++ b/weapons/mp/m14_silencer_mp @@ -1,6 +1,6 @@ -WEAPONFILE\displayName\WEAPON_M14\modeName\\playerAnimType\sniper\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\large\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\2500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\30\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\120\startAmmo\60\clipName\m14_silencer_mp\clipSize\20\shotCount\1\dropAmmoMin\1\dropAmmoMax\20\reloadAmmoAdd\0\reloadStartAdd\1\damage\50\minDamage\40\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\30\locNone\1\locHelmet\1.5\locHead\1.5\locNeck\1.5\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.06\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\1\rechamberBoltTime\0\dropTime\0.7\raiseTime\0.8\altDropTime\0.75\altRaiseTime\0.1\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.8\emptyDropTime\0.7\emptyRaiseTime\0.8\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-2.2\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.5\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-55\proneMoveR\3\proneMoveU\-145\proneRotP\0\proneRotY\220\proneRotR\-200\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1.5\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\80\hipGunKickPitchMax\85\hipGunKickYawMin\-35\hipGunKickYawMax\35\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\600\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\100\adsGunKickStaticDecay\100\hipViewKickPitchMin\40\hipViewKickPitchMax\80\hipViewKickYawMin\40\hipViewKickYawMax\-40\hipViewKickCenterSpeed\1200\adsViewKickPitchMin\40\adsViewKickPitchMax\80\adsViewKickYawMin\40\adsViewKickYawMax\-40\adsViewKickCenterSpeed\1200\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.25\fightDist\720\maxDist\730\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m14SD_mp\gunModel2\viewmodel_m14SD_mp_brock\gunModel3\viewmodel_m14SD_mp_bshdwl\gunModel4\viewmodel_m14SD_mp_bwmrpt\gunModel5\viewmodel_m14SD_mp_cmdtgr\gunModel6\viewmodel_m14SD_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m14SD_scout\worldModel2\weapon_m14SD_scout_brock\worldModel3\weapon_m14SD_scout_bshdwl\worldModel4\weapon_m14SD_scout_bwmrpt\worldModel5\weapon_m14SD_scout_cmdtgr\worldModel6\weapon_m14SD_scout_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M14_idle\emptyIdleAnim\viewmodel_M14_idle\fireAnim\viewmodel_M14_fire\lastShotAnim\viewmodel_M14_last_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M14_reload\reloadEmptyAnim\viewmodel_M14_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_M14_pullout\dropAnim\viewmodel_M14_putaway\firstRaiseAnim\viewmodel_M14_pullout\altRaiseAnim\viewmodel_M14_pullout\altDropAnim\viewmodel_M14_putaway\quickRaiseAnim\viewmodel_M14_pullout_quick\quickDropAnim\viewmodel_M14_putaway_quick\emptyRaiseAnim\viewmodel_M14_pullout\emptyDropAnim\viewmodel_M14_putaway\sprintInAnim\viewmodel_M14_sprint_in\sprintLoopAnim\viewmodel_M14_sprint_loop\sprintOutAnim\viewmodel_M14_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M14_fire_ads\adsLastShotAnim\viewmodel_M14_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_M14_ironsites_ADS_up\adsDownAnim\viewmodel_M14_ironsites_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m14sniper_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m14sniper_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m14sniper_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m14\killIcon\hud_icon_m14\dpadIcon\\ammoCounterIcon\hud_icon_m14\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_m14sniper_lift_plr weap_m14sniper_lift_plr -weap_m14sniper_clipout_plr weap_m14sniper_clipout_plr -weap_m14sniper_clipin_plr weap_m14sniper_clipin_plr -weap_m14sniper_chamber_close_plr weap_m14sniper_chamber_close_plr -weap_m14sniper_clipin_tac_plr weap_m14sniper_clipin_tac_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_M14\modeName\\playerAnimType\sniper\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\large\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\2500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\30\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\120\startAmmo\60\clipName\m14_silencer_mp\clipSize\20\shotCount\1\dropAmmoMin\1\dropAmmoMax\20\reloadAmmoAdd\0\reloadStartAdd\1\damage\50\minDamage\40\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\30\locNone\1\locHelmet\1.5\locHead\1.5\locNeck\1.5\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.5\reloadEmptyTime\3.06\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\1\rechamberBoltTime\0\dropTime\0.7\raiseTime\0.8\altDropTime\0.75\altRaiseTime\0.1\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.8\emptyDropTime\0.7\emptyRaiseTime\0.8\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-2.2\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.5\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-55\proneMoveR\3\proneMoveU\-145\proneRotP\0\proneRotY\220\proneRotR\-200\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1.5\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\4\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\80\hipGunKickPitchMax\85\hipGunKickYawMin\-35\hipGunKickYawMax\35\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\600\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\100\adsGunKickStaticDecay\100\hipViewKickPitchMin\40\hipViewKickPitchMax\80\hipViewKickYawMin\40\hipViewKickYawMax\-40\hipViewKickCenterSpeed\1200\adsViewKickPitchMin\40\adsViewKickPitchMax\80\adsViewKickYawMin\40\adsViewKickYawMax\-40\adsViewKickCenterSpeed\1200\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.12\adsSwayVertScale\0.25\fightDist\720\maxDist\730\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m14SD_mp\gunModel2\viewmodel_m14SD_mp_brock\gunModel3\viewmodel_m14SD_mp_bshdwl\gunModel4\viewmodel_m14SD_mp_bwmrpt\gunModel5\viewmodel_m14SD_mp_cmdtgr\gunModel6\viewmodel_m14SD_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m14SD_scout\worldModel2\weapon_m14SD_scout_brock\worldModel3\weapon_m14SD_scout_bshdwl\worldModel4\weapon_m14SD_scout_bwmrpt\worldModel5\weapon_m14SD_scout_cmdtgr\worldModel6\weapon_m14SD_scout_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M14_idle\emptyIdleAnim\viewmodel_M14_idle\fireAnim\viewmodel_M14_fire\lastShotAnim\viewmodel_M14_last_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M14_reload\reloadEmptyAnim\viewmodel_M14_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_M14_pullout\dropAnim\viewmodel_M14_putaway\firstRaiseAnim\viewmodel_M14_pullout\altRaiseAnim\viewmodel_M14_pullout\altDropAnim\viewmodel_M14_putaway\quickRaiseAnim\viewmodel_M14_pullout_quick\quickDropAnim\viewmodel_M14_putaway_quick\emptyRaiseAnim\viewmodel_M14_pullout\emptyDropAnim\viewmodel_M14_putaway\sprintInAnim\viewmodel_M14_sprint_in\sprintLoopAnim\viewmodel_M14_sprint_loop\sprintOutAnim\viewmodel_M14_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M14_fire_ads\adsLastShotAnim\viewmodel_M14_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_M14_ironsites_ADS_up\adsDownAnim\viewmodel_M14_ironsites_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m14sniper_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m14sniper_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m14sniper_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m14\killIcon\hud_icon_m14\dpadIcon\\ammoCounterIcon\hud_icon_m14\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\12\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_m14sniper_lift_plr weap_m14sniper_lift_plr +weap_m14sniper_clipout_plr weap_m14sniper_clipout_plr +weap_m14sniper_clipin_plr weap_m14sniper_clipin_plr +weap_m14sniper_chamber_close_plr weap_m14sniper_chamber_close_plr +weap_m14sniper_clipin_tac_plr weap_m14sniper_clipin_tac_plr diff --git a/weapons/mp/m16_mp b/weapons/mp/m16_mp index 21f7bab..a440a8b 100644 --- a/weapons/mp/m16_mp +++ b/weapons/mp/m16_mp @@ -1,6 +1,6 @@ -WEAPONFILE\displayName\WEAPON_M16\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\3-Round Burst\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\m16_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.065\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2\reloadEmptyTime\2.365\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.5\raiseTime\0.35\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.3\quickRaiseTime\0.75\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.35\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\70\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\45\hipViewKickYawMax\-45\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\45\adsViewKickYawMax\-45\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m16_mp\gunModel2\viewmodel_m16_mp_brock\gunModel3\viewmodel_m16_mp_bshdwl\gunModel4\viewmodel_m16_mp_bwmrpt\gunModel5\viewmodel_m16_mp_cmdtgr\gunModel6\viewmodel_m16_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m16_mp\worldModel2\weapon_m16_mp_brock\worldModel3\weapon_m16_mp_bshdwl\worldModel4\weapon_m16_mp_bwmrpt\worldModel5\weapon_m16_mp_cmdtgr\worldModel6\weapon_m16_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_m16_idle\emptyIdleAnim\\fireAnim\viewmodel_m16_fire\lastShotAnim\viewmodel_m16_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_m16_reload\reloadEmptyAnim\viewmodel_m16_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_m16_pullout\dropAnim\viewmodel_m16_putaway\firstRaiseAnim\viewmodel_m16_pullout\altRaiseAnim\viewmodel_m16_pullout\altDropAnim\viewmodel_m16_putaway\quickRaiseAnim\viewmodel_m16_pullout_quick\quickDropAnim\viewmodel_m16_putaway\emptyRaiseAnim\viewmodel_m16_pullout\emptyDropAnim\viewmodel_m16_putaway\sprintInAnim\viewmodel_m16_sprint_in\sprintLoopAnim\viewmodel_m16_sprint_loop\sprintOutAnim\viewmodel_m16_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_m16_fire_ads\adsLastShotAnim\viewmodel_m16_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_m16_ADS_up\adsDownAnim\viewmodel_m16_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m16_fire_npc\fireSoundPlayer\weap_m16_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m16_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m16_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m16_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m16a4_grenade\killIcon\hud_icon_m16a4_grenade\dpadIcon\\ammoCounterIcon\hud_icon_m16a4\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\2\adsDofEnd\8\hideTags\tag_acog -tag_reflex_sight\notetrackSoundMap\weap_m16_lift_plr weap_m16_lift_plr -weap_m16_clipout_plr weap_m16_clipout_plr -weap_m16_clipin_plr weap_m16_clipin_plr -weap_m16_chamber_close_plr weap_m16_chamber_close_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_M16\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\3-Round Burst\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\m16_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.065\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2\reloadEmptyTime\2.365\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.5\raiseTime\0.35\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.3\quickRaiseTime\0.75\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.35\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\70\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\45\hipViewKickYawMax\-45\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\45\adsViewKickYawMax\-45\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m16_mp\gunModel2\viewmodel_m16_mp_brock\gunModel3\viewmodel_m16_mp_bshdwl\gunModel4\viewmodel_m16_mp_bwmrpt\gunModel5\viewmodel_m16_mp_cmdtgr\gunModel6\viewmodel_m16_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m16_mp\worldModel2\weapon_m16_mp_brock\worldModel3\weapon_m16_mp_bshdwl\worldModel4\weapon_m16_mp_bwmrpt\worldModel5\weapon_m16_mp_cmdtgr\worldModel6\weapon_m16_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_m16_idle\emptyIdleAnim\\fireAnim\viewmodel_m16_fire\lastShotAnim\viewmodel_m16_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_m16_reload\reloadEmptyAnim\viewmodel_m16_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_m16_pullout\dropAnim\viewmodel_m16_putaway\firstRaiseAnim\viewmodel_m16_pullout\altRaiseAnim\viewmodel_m16_pullout\altDropAnim\viewmodel_m16_putaway\quickRaiseAnim\viewmodel_m16_pullout_quick\quickDropAnim\viewmodel_m16_putaway\emptyRaiseAnim\viewmodel_m16_pullout\emptyDropAnim\viewmodel_m16_putaway\sprintInAnim\viewmodel_m16_sprint_in\sprintLoopAnim\viewmodel_m16_sprint_loop\sprintOutAnim\viewmodel_m16_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_m16_fire_ads\adsLastShotAnim\viewmodel_m16_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_m16_ADS_up\adsDownAnim\viewmodel_m16_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m16_fire_npc\fireSoundPlayer\weap_m16_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m16_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m16_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m16_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m16a4_grenade\killIcon\hud_icon_m16a4_grenade\dpadIcon\\ammoCounterIcon\hud_icon_m16a4\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\2\adsDofEnd\8\hideTags\tag_acog +tag_reflex_sight\notetrackSoundMap\weap_m16_lift_plr weap_m16_lift_plr +weap_m16_clipout_plr weap_m16_clipout_plr +weap_m16_clipin_plr weap_m16_clipin_plr +weap_m16_chamber_close_plr weap_m16_chamber_close_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/m16_silencer_mp b/weapons/mp/m16_silencer_mp index 39d9820..e6eeb83 100644 --- a/weapons/mp/m16_silencer_mp +++ b/weapons/mp/m16_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_M16\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\3-Round Burst\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\m16_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.065\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2\reloadEmptyTime\2.365\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.5\raiseTime\0.35\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.3\quickRaiseTime\0.75\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.35\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\70\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\45\hipViewKickYawMax\-45\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\45\adsViewKickYawMax\-45\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m16_and_silencer_mp\gunModel2\viewmodel_m16_and_silencer_mp_brock\gunModel3\viewmodel_m16_and_silencer_mp_bshdwl\gunModel4\viewmodel_m16_and_silencer_mp_bwmrpt\gunModel5\viewmodel_m16_and_silencer_mp_cmdtgr\gunModel6\viewmodel_m16_and_silencer_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m16_silencer_mp\worldModel2\weapon_m16sd_mp_brock\worldModel3\weapon_m16sd_mp_bshdwl\worldModel4\weapon_m16sd_mp_bwmrpt\worldModel5\weapon_m16sd_mp_cmdtgr\worldModel6\weapon_m16sd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_m16_idle\emptyIdleAnim\\fireAnim\viewmodel_m16_fire\lastShotAnim\viewmodel_m16_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_m16_reload\reloadEmptyAnim\viewmodel_m16_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_m16_pullout\dropAnim\viewmodel_m16_putaway\firstRaiseAnim\viewmodel_m16_pullout\altRaiseAnim\viewmodel_m16_pullout\altDropAnim\viewmodel_m16_putaway\quickRaiseAnim\viewmodel_m16_pullout_quick\quickDropAnim\viewmodel_m16_putaway\emptyRaiseAnim\viewmodel_m16_pullout\emptyDropAnim\viewmodel_m16_putaway\sprintInAnim\viewmodel_m16_sprint_in\sprintLoopAnim\viewmodel_m16_sprint_loop\sprintOutAnim\viewmodel_m16_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_m16_fire_ads\adsLastShotAnim\viewmodel_m16_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_m16_ADS_up\adsDownAnim\viewmodel_m16_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m16_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m16_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m16_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m16a4_grenade\killIcon\hud_icon_m16a4_grenade\dpadIcon\\ammoCounterIcon\hud_icon_m16a4\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\2\adsDofEnd\8\hideTags\\notetrackSoundMap\weap_m16_lift_plr weap_m16_lift_plr -weap_m16_clipout_plr weap_m16_clipout_plr -weap_m16_clipin_plr weap_m16_clipin_plr -weap_m16_chamber_close_plr weap_m16_chamber_close_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_M16\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\3-Round Burst\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\m16_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.065\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2\reloadEmptyTime\2.365\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.5\raiseTime\0.35\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.3\quickRaiseTime\0.75\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.35\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\70\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\60\hipViewKickYawMin\45\hipViewKickYawMax\-45\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\60\adsViewKickYawMin\45\adsViewKickYawMax\-45\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m16_and_silencer_mp\gunModel2\viewmodel_m16_and_silencer_mp_brock\gunModel3\viewmodel_m16_and_silencer_mp_bshdwl\gunModel4\viewmodel_m16_and_silencer_mp_bwmrpt\gunModel5\viewmodel_m16_and_silencer_mp_cmdtgr\gunModel6\viewmodel_m16_and_silencer_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m16_silencer_mp\worldModel2\weapon_m16sd_mp_brock\worldModel3\weapon_m16sd_mp_bshdwl\worldModel4\weapon_m16sd_mp_bwmrpt\worldModel5\weapon_m16sd_mp_cmdtgr\worldModel6\weapon_m16sd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_m16_idle\emptyIdleAnim\\fireAnim\viewmodel_m16_fire\lastShotAnim\viewmodel_m16_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_m16_reload\reloadEmptyAnim\viewmodel_m16_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_m16_pullout\dropAnim\viewmodel_m16_putaway\firstRaiseAnim\viewmodel_m16_pullout\altRaiseAnim\viewmodel_m16_pullout\altDropAnim\viewmodel_m16_putaway\quickRaiseAnim\viewmodel_m16_pullout_quick\quickDropAnim\viewmodel_m16_putaway\emptyRaiseAnim\viewmodel_m16_pullout\emptyDropAnim\viewmodel_m16_putaway\sprintInAnim\viewmodel_m16_sprint_in\sprintLoopAnim\viewmodel_m16_sprint_loop\sprintOutAnim\viewmodel_m16_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_m16_fire_ads\adsLastShotAnim\viewmodel_m16_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_m16_ADS_up\adsDownAnim\viewmodel_m16_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m16_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m16_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m16_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m16a4_grenade\killIcon\hud_icon_m16a4_grenade\dpadIcon\\ammoCounterIcon\hud_icon_m16a4\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\2\adsDofEnd\8\hideTags\\notetrackSoundMap\weap_m16_lift_plr weap_m16_lift_plr +weap_m16_clipout_plr weap_m16_clipout_plr +weap_m16_clipin_plr weap_m16_clipin_plr +weap_m16_chamber_close_plr weap_m16_chamber_close_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/m40a3_mp b/weapons/mp/m40a3_mp index ff1c52f..6c39e04 100644 --- a/weapons/mp/m40a3_mp +++ b/weapons/mp/m40a3_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_M40A3\modeName\\playerAnimType\sniper\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\large\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\1\aimDownSight\1\rechamberWhileAds\0\noPartialReload\0\segmentedReload\1\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\2500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\30\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\40\startAmmo\20\clipName\m40a3_mp\clipSize\5\shotCount\1\dropAmmoMin\1\dropAmmoMax\5\reloadAmmoAdd\1\reloadStartAdd\1\damage\70\minDamage\70\meleeDamage\135\maxDamageRange\4000\minDamageRange\5000\playerDamage\30\locNone\1\locHelmet\4.5\locHead\4.5\locNeck\4.5\locTorsoUpper\4.5\locTorsoLower\4.5\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.05\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\0.43333\reloadEmptyTime\0.15\reloadStartTime\1.13\reloadEndTime\0.76666\reloadAddTime\0.26\reloadStartAddTime\0.96\rechamberTime\1\rechamberBoltTime\0.65\dropTime\0.66\raiseTime\0.9\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.9\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-2.2\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.5\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-55\proneMoveR\3\proneMoveU\-145\proneRotP\0\proneRotY\220\proneRotR\-200\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.4\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\15\adsZoomInFrac\0.05\adsZoomOutFrac\0.05\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3.8\hipSpreadDuckedMin\3.4\hipSpreadProneMin\3\hipSpreadMax\8\hipSpreadDuckedMax\7\hipSpreadProneMax\6.5\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\80\hipGunKickPitchMax\85\hipGunKickYawMin\-35\hipGunKickYawMax\35\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\600\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\100\adsGunKickStaticDecay\100\hipViewKickPitchMin\80\hipViewKickPitchMax\100\hipViewKickYawMin\50\hipViewKickYawMax\-55\hipViewKickCenterSpeed\500\adsViewKickPitchMin\10\adsViewKickPitchMax\65\adsViewKickYawMin\50\adsViewKickYawMax\-55\adsViewKickCenterSpeed\500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0\adsSwayYawScale\0\adsSwayHorizScale\0\adsSwayVertScale\0\fightDist\720\maxDist\730\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\scope_overlay_m40a3\adsOverlayShaderLowRes\scope_overlay_m40a3_low_res\adsOverlayReticle\crosshair\adsOverlayWidth\480\adsOverlayHeight\480\gunModel\viewmodel_m40a3_mp\gunModel2\viewmodel_m40a3_mp_brock\gunModel3\viewmodel_m40a3_mp_bshdwl\gunModel4\viewmodel_m40a3_mp_bwmrpt\gunModel5\viewmodel_m40a3_mp_cmdtgr\gunModel6\viewmodel_m40a3_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m40a3\worldModel2\weapon_m40a3_mp_brock\worldModel3\weapon_m40a3_mp_bshdwl\worldModel4\weapon_m40a3_mp_bwmrpt\worldModel5\weapon_m40a3_mp_cmdtgr\worldModel6\weapon_m40a3_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M40a3_idle\emptyIdleAnim\\fireAnim\viewmodel_M40a3_fire\lastShotAnim\viewmodel_M40a3_fire\rechamberAnim\viewmodel_M40a3_rechamber\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M40a3_reload_loop\reloadEmptyAnim\viewmodel_M40a3_reload_loop\reloadStartAnim\viewmodel_M40a3_reload_intro\reloadEndAnim\viewmodel_M40a3_reload_out\raiseAnim\viewmodel_M40a3_pullout\dropAnim\viewmodel_M40a3_putaway\firstRaiseAnim\viewmodel_M40a3_pullout\altRaiseAnim\viewmodel_M40a3_pullout\altDropAnim\viewmodel_M40a3_putaway\quickRaiseAnim\viewmodel_M40a3_pullout_quick\quickDropAnim\viewmodel_M40a3_putaway_quick\emptyRaiseAnim\viewmodel_M40a3_pullout\emptyDropAnim\viewmodel_M40a3_putaway\sprintInAnim\viewmodel_M40a3_sprint_in\sprintLoopAnim\viewmodel_M40a3_sprint_loop\sprintOutAnim\viewmodel_M40a3_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M40a3_fire\adsLastShotAnim\viewmodel_M40a3_fire\adsRechamberAnim\viewmodel_M40a3_rechamber\adsUpAnim\viewmodel_M40a3_ADS_up\adsDownAnim\viewmodel_M40a3_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m40a3sniper_fire_npc\fireSoundPlayer\weap_m40a3sniper_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m40a3sniper_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\weap_m40a3sniper_rechamber_npc\rechamberSoundPlayer\weap_m40a3sniper_rechamber_plr\reloadSound\weap_m40a3sniper_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m40a3sniper_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m40a3\killIcon\hud_icon_m40a3\dpadIcon\\ammoCounterIcon\hud_icon_m40a3\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\ShortMagazine\flipKillIcon\1\fireRumble\sniper_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\4\adsDofEnd\30\hideTags\tag_acog\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_m40a3sniper_start_plr weap_m40a3sniper_start_plr -weap_m40a3sniper_loop_plr weap_m40a3sniper_loop_plr -weap_m40a3sniper_end_plr weap_m40a3sniper_end_plr -weap_m40a3sniper_rechamber_plr weap_m40a3sniper_rechamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_M40A3\modeName\\playerAnimType\sniper\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\large\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\1\aimDownSight\1\rechamberWhileAds\0\noPartialReload\0\segmentedReload\1\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\2500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\30\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\40\startAmmo\20\clipName\m40a3_mp\clipSize\5\shotCount\1\dropAmmoMin\1\dropAmmoMax\5\reloadAmmoAdd\1\reloadStartAdd\1\damage\70\minDamage\70\meleeDamage\135\maxDamageRange\4000\minDamageRange\5000\playerDamage\30\locNone\1\locHelmet\4.5\locHead\4.5\locNeck\4.5\locTorsoUpper\4.5\locTorsoLower\4.5\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.05\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\0.43333\reloadEmptyTime\0.15\reloadStartTime\1.13\reloadEndTime\0.76666\reloadAddTime\0.26\reloadStartAddTime\0.96\rechamberTime\1\rechamberBoltTime\0.65\dropTime\0.66\raiseTime\0.9\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.9\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-2.2\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.5\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-55\proneMoveR\3\proneMoveU\-145\proneRotP\0\proneRotY\220\proneRotR\-200\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.4\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\15\adsZoomInFrac\0.05\adsZoomOutFrac\0.05\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3.8\hipSpreadDuckedMin\3.4\hipSpreadProneMin\3\hipSpreadMax\8\hipSpreadDuckedMax\7\hipSpreadProneMax\6.5\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\80\hipGunKickPitchMax\85\hipGunKickYawMin\-35\hipGunKickYawMax\35\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\600\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\100\adsGunKickStaticDecay\100\hipViewKickPitchMin\80\hipViewKickPitchMax\100\hipViewKickYawMin\50\hipViewKickYawMax\-55\hipViewKickCenterSpeed\500\adsViewKickPitchMin\10\adsViewKickPitchMax\65\adsViewKickYawMin\50\adsViewKickYawMax\-55\adsViewKickCenterSpeed\500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0\adsSwayYawScale\0\adsSwayHorizScale\0\adsSwayVertScale\0\fightDist\720\maxDist\730\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\scope_overlay_m40a3\adsOverlayShaderLowRes\scope_overlay_m40a3_low_res\adsOverlayReticle\crosshair\adsOverlayWidth\480\adsOverlayHeight\480\gunModel\viewmodel_m40a3_mp\gunModel2\viewmodel_m40a3_mp_brock\gunModel3\viewmodel_m40a3_mp_bshdwl\gunModel4\viewmodel_m40a3_mp_bwmrpt\gunModel5\viewmodel_m40a3_mp_cmdtgr\gunModel6\viewmodel_m40a3_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m40a3\worldModel2\weapon_m40a3_mp_brock\worldModel3\weapon_m40a3_mp_bshdwl\worldModel4\weapon_m40a3_mp_bwmrpt\worldModel5\weapon_m40a3_mp_cmdtgr\worldModel6\weapon_m40a3_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M40a3_idle\emptyIdleAnim\\fireAnim\viewmodel_M40a3_fire\lastShotAnim\viewmodel_M40a3_fire\rechamberAnim\viewmodel_M40a3_rechamber\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M40a3_reload_loop\reloadEmptyAnim\viewmodel_M40a3_reload_loop\reloadStartAnim\viewmodel_M40a3_reload_intro\reloadEndAnim\viewmodel_M40a3_reload_out\raiseAnim\viewmodel_M40a3_pullout\dropAnim\viewmodel_M40a3_putaway\firstRaiseAnim\viewmodel_M40a3_pullout\altRaiseAnim\viewmodel_M40a3_pullout\altDropAnim\viewmodel_M40a3_putaway\quickRaiseAnim\viewmodel_M40a3_pullout_quick\quickDropAnim\viewmodel_M40a3_putaway_quick\emptyRaiseAnim\viewmodel_M40a3_pullout\emptyDropAnim\viewmodel_M40a3_putaway\sprintInAnim\viewmodel_M40a3_sprint_in\sprintLoopAnim\viewmodel_M40a3_sprint_loop\sprintOutAnim\viewmodel_M40a3_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M40a3_fire\adsLastShotAnim\viewmodel_M40a3_fire\adsRechamberAnim\viewmodel_M40a3_rechamber\adsUpAnim\viewmodel_M40a3_ADS_up\adsDownAnim\viewmodel_M40a3_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m40a3sniper_fire_npc\fireSoundPlayer\weap_m40a3sniper_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m40a3sniper_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\weap_m40a3sniper_rechamber_npc\rechamberSoundPlayer\weap_m40a3sniper_rechamber_plr\reloadSound\weap_m40a3sniper_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m40a3sniper_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m40a3\killIcon\hud_icon_m40a3\dpadIcon\\ammoCounterIcon\hud_icon_m40a3\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\ShortMagazine\flipKillIcon\1\fireRumble\sniper_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\4\adsDofEnd\30\hideTags\tag_acog\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_m40a3sniper_start_plr weap_m40a3sniper_start_plr +weap_m40a3sniper_loop_plr weap_m40a3sniper_loop_plr +weap_m40a3sniper_end_plr weap_m40a3sniper_end_plr +weap_m40a3sniper_rechamber_plr weap_m40a3sniper_rechamber_plr diff --git a/weapons/mp/m4_mp b/weapons/mp/m4_mp index d395c93..77d7ba2 100644 --- a/weapons/mp/m4_mp +++ b/weapons/mp/m4_mp @@ -1,7 +1,7 @@ -WEAPONFILE\displayName\WEAPON_M4_CARBINE\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\m4_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.07\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.03\reloadEmptyTime\2.36\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.75\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.85\emptyDropTime\0.45\emptyRaiseTime\0.75\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1.5\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\50\hipViewKickYawMin\40\hipViewKickYawMax\-40\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\50\adsViewKickYawMin\40\adsViewKickYawMax\-40\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_M4_mp\gunModel2\viewmodel_M4_mp_brock\gunModel3\viewmodel_M4_mp_bshdwl\gunModel4\viewmodel_M4_mp_bwmrpt\gunModel5\viewmodel_M4_mp_cmdtgr\gunModel6\viewmodel_M4_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m4_mp\worldModel2\weapon_m4_mp_brock\worldModel3\weapon_m4_mp_bshdwl\worldModel4\weapon_m4_mp_bwmrpt\worldModel5\weapon_m4_mp_cmdtgr\worldModel6\weapon_m4_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\weapon_m16_clip\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M4_idle\emptyIdleAnim\viewmodel_M4_idle\fireAnim\viewmodel_M4_fire\lastShotAnim\viewmodel_M4_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M4_reload\reloadEmptyAnim\viewmodel_M4_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_M4_pullout\dropAnim\viewmodel_M4_putaway\firstRaiseAnim\viewmodel_m4_first_time_pullout\altRaiseAnim\viewmodel_M4_idle\altDropAnim\viewmodel_M4_idle\quickRaiseAnim\viewmodel_M4silencer_quick_pullout\quickDropAnim\viewmodel_M4silencer_quick_putaway\emptyRaiseAnim\viewmodel_M4_pullout\emptyDropAnim\viewmodel_M4_putaway\sprintInAnim\viewmodel_M4_sprint_in\sprintLoopAnim\viewmodel_M4_sprint_loop\sprintOutAnim\viewmodel_M4_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M4_fire_ads\adsLastShotAnim\viewmodel_M4_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_M4_iron_ADS_up\adsDownAnim\viewmodel_M4_iron_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4carbine_fire_npc\fireSoundPlayer\weap_m4carbine_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m4carbine_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m4carbine_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m4carbine_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m4carbine\killIcon\hud_icon_m4carbine\dpadIcon\\ammoCounterIcon\hud_icon_m4carbine\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\2\adsDofEnd\8\hideTags\tag_acog -tag_g36_scope -tag_reflex_sight\notetrackSoundMap\weap_m4carbine_clipout_plr weap_m4carbine_clipout_plr -weap_m4carbine_clipin_plr weap_m4carbine_clipin_plr -weap_m4carbine_chamber_close_plr weap_m4carbine_chamber_close_plr -weap_ak47_chamber_plr weap_ak47_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_M4_CARBINE\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\m4_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.07\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.03\reloadEmptyTime\2.36\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.75\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.85\emptyDropTime\0.45\emptyRaiseTime\0.75\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1.5\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\50\hipViewKickYawMin\40\hipViewKickYawMax\-40\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\50\adsViewKickYawMin\40\adsViewKickYawMax\-40\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_M4_mp\gunModel2\viewmodel_M4_mp_brock\gunModel3\viewmodel_M4_mp_bshdwl\gunModel4\viewmodel_M4_mp_bwmrpt\gunModel5\viewmodel_M4_mp_cmdtgr\gunModel6\viewmodel_M4_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m4_mp\worldModel2\weapon_m4_mp_brock\worldModel3\weapon_m4_mp_bshdwl\worldModel4\weapon_m4_mp_bwmrpt\worldModel5\weapon_m4_mp_cmdtgr\worldModel6\weapon_m4_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\weapon_m16_clip\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M4_idle\emptyIdleAnim\viewmodel_M4_idle\fireAnim\viewmodel_M4_fire\lastShotAnim\viewmodel_M4_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M4_reload\reloadEmptyAnim\viewmodel_M4_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_M4_pullout\dropAnim\viewmodel_M4_putaway\firstRaiseAnim\viewmodel_m4_first_time_pullout\altRaiseAnim\viewmodel_M4_idle\altDropAnim\viewmodel_M4_idle\quickRaiseAnim\viewmodel_M4silencer_quick_pullout\quickDropAnim\viewmodel_M4silencer_quick_putaway\emptyRaiseAnim\viewmodel_M4_pullout\emptyDropAnim\viewmodel_M4_putaway\sprintInAnim\viewmodel_M4_sprint_in\sprintLoopAnim\viewmodel_M4_sprint_loop\sprintOutAnim\viewmodel_M4_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M4_fire_ads\adsLastShotAnim\viewmodel_M4_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_M4_iron_ADS_up\adsDownAnim\viewmodel_M4_iron_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4carbine_fire_npc\fireSoundPlayer\weap_m4carbine_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m4carbine_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m4carbine_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m4carbine_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m4carbine\killIcon\hud_icon_m4carbine\dpadIcon\\ammoCounterIcon\hud_icon_m4carbine\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\2\adsDofEnd\8\hideTags\tag_acog +tag_g36_scope +tag_reflex_sight\notetrackSoundMap\weap_m4carbine_clipout_plr weap_m4carbine_clipout_plr +weap_m4carbine_clipin_plr weap_m4carbine_clipin_plr +weap_m4carbine_chamber_close_plr weap_m4carbine_chamber_close_plr +weap_ak47_chamber_plr weap_ak47_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/m4_silencer_mp b/weapons/mp/m4_silencer_mp index de46a7a..5261ba5 100644 --- a/weapons/mp/m4_silencer_mp +++ b/weapons/mp/m4_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_M4_CARBINE\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\m4_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.07\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.03\reloadEmptyTime\2.36\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.75\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.85\emptyDropTime\0.45\emptyRaiseTime\0.75\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1.5\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\50\hipViewKickYawMin\40\hipViewKickYawMax\-40\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\50\adsViewKickYawMin\40\adsViewKickYawMax\-40\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m4_and_silencer_mp\gunModel2\viewmodel_m4_and_silencer_mp_brock\gunModel3\viewmodel_m4_and_silencer_mp_bshdwl\gunModel4\viewmodel_m4_and_silencer_mp_bwmrpt\gunModel5\viewmodel_m4_and_silencer_mp_cmdtgr\gunModel6\viewmodel_m4_and_silencer_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m4_silencer_mp\worldModel2\weapon_m4sd_mp_brock\worldModel3\weapon_m4sd_mp_bshdwl\worldModel4\weapon_m4sd_mp_bwmrpt\worldModel5\weapon_m4sd_mp_cmdtgr\worldModel6\weapon_m4sd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\weapon_m16_clip\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M4_idle\emptyIdleAnim\viewmodel_M4_idle\fireAnim\viewmodel_M4_fire\lastShotAnim\viewmodel_M4_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M4_reload\reloadEmptyAnim\viewmodel_M4_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_M4_pullout\dropAnim\viewmodel_M4_putaway\firstRaiseAnim\viewmodel_m4_first_time_pullout\altRaiseAnim\viewmodel_M4_idle\altDropAnim\viewmodel_M4_idle\quickRaiseAnim\viewmodel_M4silencer_quick_pullout\quickDropAnim\viewmodel_M4silencer_quick_putaway\emptyRaiseAnim\viewmodel_M4_pullout\emptyDropAnim\viewmodel_M4_putaway\sprintInAnim\viewmodel_M4_sprint_in\sprintLoopAnim\viewmodel_M4_sprint_loop\sprintOutAnim\viewmodel_M4_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M4_fire_ads\adsLastShotAnim\viewmodel_M4_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_M4_iron_ADS_up\adsDownAnim\viewmodel_M4_iron_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m4carbine_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m4carbine_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m4carbine_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m4carbine\killIcon\hud_icon_m4carbine\dpadIcon\\ammoCounterIcon\hud_icon_m4carbine\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\2\adsDofEnd\8\hideTags\\notetrackSoundMap\weap_m4carbine_clipout_plr weap_m4carbine_clipout_plr -weap_m4carbine_clipin_plr weap_m4carbine_clipin_plr -weap_m4carbine_chamber_close_plr weap_m4carbine_chamber_close_plr -weap_ak47_chamber_plr weap_ak47_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_M4_CARBINE\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\5.56 × 45 mm NATO\maxAmmo\180\startAmmo\90\clipName\m4_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\500\minDamageRange\1000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.07\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.03\reloadEmptyTime\2.36\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.75\altDropTime\0\altRaiseTime\0.35\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.85\emptyDropTime\0.45\emptyRaiseTime\0.75\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1.5\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-30\hipViewKickPitchMax\50\hipViewKickYawMin\40\hipViewKickYawMax\-40\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-30\adsViewKickPitchMax\50\adsViewKickYawMin\40\adsViewKickYawMax\-40\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.14\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_m4_and_silencer_mp\gunModel2\viewmodel_m4_and_silencer_mp_brock\gunModel3\viewmodel_m4_and_silencer_mp_bshdwl\gunModel4\viewmodel_m4_and_silencer_mp_bwmrpt\gunModel5\viewmodel_m4_and_silencer_mp_cmdtgr\gunModel6\viewmodel_m4_and_silencer_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_m4_silencer_mp\worldModel2\weapon_m4sd_mp_brock\worldModel3\weapon_m4sd_mp_bshdwl\worldModel4\weapon_m4sd_mp_bwmrpt\worldModel5\weapon_m4sd_mp_cmdtgr\worldModel6\weapon_m4sd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\weapon_m16_clip\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_M4_idle\emptyIdleAnim\viewmodel_M4_idle\fireAnim\viewmodel_M4_fire\lastShotAnim\viewmodel_M4_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_M4_reload\reloadEmptyAnim\viewmodel_M4_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_M4_pullout\dropAnim\viewmodel_M4_putaway\firstRaiseAnim\viewmodel_m4_first_time_pullout\altRaiseAnim\viewmodel_M4_idle\altDropAnim\viewmodel_M4_idle\quickRaiseAnim\viewmodel_M4silencer_quick_pullout\quickDropAnim\viewmodel_M4silencer_quick_putaway\emptyRaiseAnim\viewmodel_M4_pullout\emptyDropAnim\viewmodel_M4_putaway\sprintInAnim\viewmodel_M4_sprint_in\sprintLoopAnim\viewmodel_M4_sprint_loop\sprintOutAnim\viewmodel_M4_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_M4_fire_ads\adsLastShotAnim\viewmodel_M4_fire_ads\adsRechamberAnim\\adsUpAnim\viewmodel_M4_iron_ADS_up\adsDownAnim\viewmodel_M4_iron_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_m4silenced_fire_npc\fireSoundPlayer\weap_m4silenced_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_m4carbine_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_m4carbine_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_m4carbine_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_m4carbine\killIcon\hud_icon_m4carbine\dpadIcon\\ammoCounterIcon\hud_icon_m4carbine\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\2\adsDofEnd\8\hideTags\\notetrackSoundMap\weap_m4carbine_clipout_plr weap_m4carbine_clipout_plr +weap_m4carbine_clipin_plr weap_m4carbine_clipin_plr +weap_m4carbine_chamber_close_plr weap_m4carbine_chamber_close_plr +weap_ak47_chamber_plr weap_ak47_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/mp44_mp b/weapons/mp/mp44_mp index f0bb5f3..154b999 100644 --- a/weapons/mp/mp44_mp +++ b/weapons/mp/mp44_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_MP44\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.92 x 33 mm\maxAmmo\180\startAmmo\90\clipName\mp44_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.75\reloadEmptyTime\3.5\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-40\hipViewKickPitchMax\80\hipViewKickYawMin\70\hipViewKickYawMax\-70\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-40\adsViewKickPitchMax\80\adsViewKickYawMin\70\adsViewKickYawMax\-70\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.05\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_mp44_mp\gunModel2\viewmodel_mp44_mp_brock\gunModel3\viewmodel_mp44_mp_bshdwl\gunModel4\viewmodel_mp44_mp_bwmrpt\gunModel5\viewmodel_mp44_mp_cmdtgr\gunModel6\viewmodel_mp44_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mp44\worldModel2\weapon_mp44_mp_brock\worldModel3\weapon_mp44_mp_bshdwl\worldModel4\weapon_mp44_mp_bwmrpt\worldModel5\weapon_mp44_mp_cmdtgr\worldModel6\weapon_mp44_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_mp44_idle\emptyIdleAnim\\fireAnim\viewmodel_mp44_fire\lastShotAnim\viewmodel_mp44_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_mp44_reload\reloadEmptyAnim\viewmodel_mp44_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_mp44_pullout\dropAnim\viewmodel_mp44_putaway\firstRaiseAnim\viewmodel_mp44_first_time_pullout\altRaiseAnim\viewmodel_mp44_pullout\altDropAnim\viewmodel_mp44_putaway\quickRaiseAnim\viewmodel_mp44_quick_pullout\quickDropAnim\viewmodel_mp44_quick_putaway\emptyRaiseAnim\viewmodel_mp44_pullout\emptyDropAnim\viewmodel_mp44_putaway\sprintInAnim\viewmodel_mp44_sprint_in\sprintLoopAnim\viewmodel_mp44_sprint_loop\sprintOutAnim\viewmodel_mp44_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_mp44_ADS_fire\adsLastShotAnim\viewmodel_mp44_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_mp44_ADS_up\adsDownAnim\viewmodel_mp44_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_mp44_fire_npc\fireSoundPlayer\weap_mp44_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_mp44_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_mp44_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_mp44_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mp44\killIcon\hud_icon_mp44\dpadIcon\\ammoCounterIcon\hud_icon_mp44\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\2:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\20\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_mp44_lift_plr weap_mp44_lift_plr -weap_mp44_clipout_plr weap_mp44_clipout_plr -weap_mp44_clipin_plr weap_mp44_clipin_plr -weap_mp44_chamber_close_plr weap_mp44_chamber_close_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_MP44\modeName\\playerAnimType\autorifle\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\medium\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\1000\aimAssistRangeAds\1500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\8\gunMaxYaw\25\lowAmmoWarningThreshold\0.33\ammoName\7.92 x 33 mm\maxAmmo\180\startAmmo\90\clipName\mp44_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\30\meleeDamage\135\maxDamageRange\1500\minDamageRange\2000\playerDamage\100\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.75\reloadEmptyTime\3.5\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.5\reloadStartAddTime\0\rechamberTime\0\rechamberBoltTime\0\dropTime\0.6\raiseTime\0.95\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\1.4\emptyDropTime\0.6\emptyRaiseTime\0.95\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\6\posRotRate\6\duckedMoveF\-1\duckedMoveR\0\duckedMoveU\-1\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-160\proneMoveR\3\proneMoveU\-120\proneRotP\0\proneRotY\300\proneRotR\-300\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.25\adsTransBlendTime\0.1\adsReloadTransTime\0.45\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\50\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\7\hipSpreadDuckedMax\6\hipSpreadProneMax\5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\5\hipGunKickPitchMax\-15\hipGunKickYawMin\5\hipGunKickYawMax\-5\hipGunKickAccel\800\hipGunKickSpeedMax\2000\hipGunKickSpeedDecay\16\hipGunKickStaticDecay\20\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\800\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\32\adsGunKickStaticDecay\40\hipViewKickPitchMin\-40\hipViewKickPitchMax\80\hipViewKickYawMin\70\hipViewKickYawMax\-70\hipViewKickCenterSpeed\1500\adsViewKickPitchMin\-40\adsViewKickPitchMax\80\adsViewKickYawMin\70\adsViewKickYawMax\-70\adsViewKickCenterSpeed\1500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.05\adsSwayVertScale\0.25\fightDist\720\maxDist\590\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\150\adsOverlayHeight\150\gunModel\viewmodel_mp44_mp\gunModel2\viewmodel_mp44_mp_brock\gunModel3\viewmodel_mp44_mp_bshdwl\gunModel4\viewmodel_mp44_mp_bwmrpt\gunModel5\viewmodel_mp44_mp_cmdtgr\gunModel6\viewmodel_mp44_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mp44\worldModel2\weapon_mp44_mp_brock\worldModel3\weapon_mp44_mp_bshdwl\worldModel4\weapon_mp44_mp_bwmrpt\worldModel5\weapon_mp44_mp_cmdtgr\worldModel6\weapon_mp44_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_mp44_idle\emptyIdleAnim\\fireAnim\viewmodel_mp44_fire\lastShotAnim\viewmodel_mp44_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_mp44_reload\reloadEmptyAnim\viewmodel_mp44_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_mp44_pullout\dropAnim\viewmodel_mp44_putaway\firstRaiseAnim\viewmodel_mp44_first_time_pullout\altRaiseAnim\viewmodel_mp44_pullout\altDropAnim\viewmodel_mp44_putaway\quickRaiseAnim\viewmodel_mp44_quick_pullout\quickDropAnim\viewmodel_mp44_quick_putaway\emptyRaiseAnim\viewmodel_mp44_pullout\emptyDropAnim\viewmodel_mp44_putaway\sprintInAnim\viewmodel_mp44_sprint_in\sprintLoopAnim\viewmodel_mp44_sprint_loop\sprintOutAnim\viewmodel_mp44_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_mp44_ADS_fire\adsLastShotAnim\viewmodel_mp44_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_mp44_ADS_up\adsDownAnim\viewmodel_mp44_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_mp44_fire_npc\fireSoundPlayer\weap_mp44_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_mp44_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_mp44_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_mp44_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mp44\killIcon\hud_icon_mp44\dpadIcon\\ammoCounterIcon\hud_icon_mp44\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\2:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\assault_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\3\adsDofEnd\20\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_mp44_lift_plr weap_mp44_lift_plr +weap_mp44_clipout_plr weap_mp44_clipout_plr +weap_mp44_clipin_plr weap_mp44_clipin_plr +weap_mp44_chamber_close_plr weap_mp44_chamber_close_plr diff --git a/weapons/mp/mp5_mp b/weapons/mp/mp5_mp index 6a77fe8..d002a47 100644 --- a/weapons/mp/mp5_mp +++ b/weapons/mp/mp5_mp @@ -1,6 +1,6 @@ -WEAPONFILE\displayName\WEAPON_MP5\modeName\\playerAnimType\smg\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\smg\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\750\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\6\gunMaxYaw\6\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm Luger\maxAmmo\180\startAmmo\90\clipName\mp5_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\50\minDamage\5\meleeDamage\135\maxDamageRange\1\minDamageRange\1500\playerDamage\30\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1.4\locTorsoUpper\1.4\locTorsoLower\1.2\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.075\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.33\reloadEmptyTime\3.3\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.77\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.25\raiseTime\0.666\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.666\emptyDropTime\0.25\emptyRaiseTime\0.666\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-50\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\280\proneRotR\-300\proneOfsF\0\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.9\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.3\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.7\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.52\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\35\hipGunKickPitchMax\40\hipGunKickYawMin\-25\hipGunKickYawMax\25\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\700\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\35\adsGunKickStaticDecay\10\hipViewKickPitchMin\-30\hipViewKickPitchMax\70\hipViewKickYawMin\70\hipViewKickYawMax\-80\hipViewKickCenterSpeed\1700\adsViewKickPitchMin\-30\adsViewKickPitchMax\70\adsViewKickYawMin\70\adsViewKickYawMax\-80\adsViewKickCenterSpeed\1700\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.15\adsSwayVertScale\0.2\fightDist\720\maxDist\340\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\8\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_mp5_mp\gunModel2\viewmodel_mp5_mp_brock\gunModel3\viewmodel_mp5_mp_bshdwl\gunModel4\viewmodel_mp5_mp_bwmrpt\gunModel5\viewmodel_mp5_mp_cmdtgr\gunModel6\viewmodel_mp5_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mp5\worldModel2\weapon_mp5_mp_brock\worldModel3\weapon_mp5_mp_bshdwl\worldModel4\weapon_mp5_mp_bwmrpt\worldModel5\weapon_mp5_mp_cmdtgr\worldModel6\weapon_mp5_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_mp5_idle\emptyIdleAnim\\fireAnim\viewmodel_mp5_fire\lastShotAnim\viewmodel_mp5_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_mp5_reload\reloadEmptyAnim\viewmodel_mp5_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_mp5_pullout\dropAnim\viewmodel_mp5_putaway\firstRaiseAnim\viewmodel_mp5_pullout\altRaiseAnim\viewmodel_mp5_pullout\altDropAnim\viewmodel_mp5_putaway\quickRaiseAnim\viewmodel_mp5_pullout_quick\quickDropAnim\viewmodel_mp5_putaway_quick\emptyRaiseAnim\viewmodel_mp5_pullout\emptyDropAnim\viewmodel_mp5_putaway\sprintInAnim\viewmodel_mp5_sprint_in\sprintLoopAnim\viewmodel_mp5_sprint_loop\sprintOutAnim\viewmodel_mp5_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_mp5_ads_fire\adsLastShotAnim\viewmodel_mp5_fire\adsRechamberAnim\\adsUpAnim\viewmodel_mp5_ads_up\adsDownAnim\viewmodel_mp5_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_mp5_fire_npc\fireSoundPlayer\weap_mp5_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_mp5_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_mp5_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_mp5_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mp5\killIcon\hud_icon_mp5\dpadIcon\\ammoCounterIcon\hud_icon_mp5\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\smg_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\tag_acog -tag_ak47_mount -tag_reflex_sight\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_mp5_clipout_plr weap_mp5_clipout_plr -weap_mp5_clipin_plr weap_mp5_clipin_plr -weap_mp5_chamber_plr weap_mp5_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_MP5\modeName\\playerAnimType\smg\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\smg\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\750\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\6\gunMaxYaw\6\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm Luger\maxAmmo\180\startAmmo\90\clipName\mp5_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\50\minDamage\5\meleeDamage\135\maxDamageRange\1\minDamageRange\1500\playerDamage\30\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1.4\locTorsoUpper\1.4\locTorsoLower\1.2\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.075\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.33\reloadEmptyTime\3.3\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.77\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.25\raiseTime\0.666\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.666\emptyDropTime\0.25\emptyRaiseTime\0.666\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-50\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\280\proneRotR\-300\proneOfsF\0\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.9\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.3\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.7\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.52\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\35\hipGunKickPitchMax\40\hipGunKickYawMin\-25\hipGunKickYawMax\25\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\700\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\35\adsGunKickStaticDecay\10\hipViewKickPitchMin\-30\hipViewKickPitchMax\70\hipViewKickYawMin\70\hipViewKickYawMax\-80\hipViewKickCenterSpeed\1700\adsViewKickPitchMin\-30\adsViewKickPitchMax\70\adsViewKickYawMin\70\adsViewKickYawMax\-80\adsViewKickCenterSpeed\1700\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.15\adsSwayVertScale\0.2\fightDist\720\maxDist\340\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\8\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_mp5_mp\gunModel2\viewmodel_mp5_mp_brock\gunModel3\viewmodel_mp5_mp_bshdwl\gunModel4\viewmodel_mp5_mp_bwmrpt\gunModel5\viewmodel_mp5_mp_cmdtgr\gunModel6\viewmodel_mp5_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mp5\worldModel2\weapon_mp5_mp_brock\worldModel3\weapon_mp5_mp_bshdwl\worldModel4\weapon_mp5_mp_bwmrpt\worldModel5\weapon_mp5_mp_cmdtgr\worldModel6\weapon_mp5_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_mp5_idle\emptyIdleAnim\\fireAnim\viewmodel_mp5_fire\lastShotAnim\viewmodel_mp5_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_mp5_reload\reloadEmptyAnim\viewmodel_mp5_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_mp5_pullout\dropAnim\viewmodel_mp5_putaway\firstRaiseAnim\viewmodel_mp5_pullout\altRaiseAnim\viewmodel_mp5_pullout\altDropAnim\viewmodel_mp5_putaway\quickRaiseAnim\viewmodel_mp5_pullout_quick\quickDropAnim\viewmodel_mp5_putaway_quick\emptyRaiseAnim\viewmodel_mp5_pullout\emptyDropAnim\viewmodel_mp5_putaway\sprintInAnim\viewmodel_mp5_sprint_in\sprintLoopAnim\viewmodel_mp5_sprint_loop\sprintOutAnim\viewmodel_mp5_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_mp5_ads_fire\adsLastShotAnim\viewmodel_mp5_fire\adsRechamberAnim\\adsUpAnim\viewmodel_mp5_ads_up\adsDownAnim\viewmodel_mp5_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_mp5_fire_npc\fireSoundPlayer\weap_mp5_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_mp5_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_mp5_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_mp5_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mp5\killIcon\hud_icon_mp5\dpadIcon\\ammoCounterIcon\hud_icon_mp5\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\smg_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\tag_acog +tag_ak47_mount +tag_reflex_sight\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_mp5_clipout_plr weap_mp5_clipout_plr +weap_mp5_clipin_plr weap_mp5_clipin_plr +weap_mp5_chamber_plr weap_mp5_chamber_plr diff --git a/weapons/mp/mp5_silencer_mp b/weapons/mp/mp5_silencer_mp index 5aa15de..50bed46 100644 --- a/weapons/mp/mp5_silencer_mp +++ b/weapons/mp/mp5_silencer_mp @@ -1,4 +1,4 @@ -WEAPONFILE\displayName\WEAPON_MP5\modeName\\playerAnimType\smg\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\smg\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\750\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\6\gunMaxYaw\6\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm Luger\maxAmmo\180\startAmmo\90\clipName\mp5_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\5\meleeDamage\135\maxDamageRange\1\minDamageRange\1500\playerDamage\30\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.075\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.33\reloadEmptyTime\3.3\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.77\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.25\raiseTime\0.666\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.666\emptyDropTime\0.25\emptyRaiseTime\0.666\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-50\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\280\proneRotR\-300\proneOfsF\0\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.9\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.3\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.7\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.52\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\35\hipGunKickPitchMax\40\hipGunKickYawMin\-25\hipGunKickYawMax\25\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\700\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\35\adsGunKickStaticDecay\10\hipViewKickPitchMin\-30\hipViewKickPitchMax\70\hipViewKickYawMin\70\hipViewKickYawMax\-80\hipViewKickCenterSpeed\1700\adsViewKickPitchMin\-30\adsViewKickPitchMax\70\adsViewKickYawMin\70\adsViewKickYawMax\-80\adsViewKickCenterSpeed\1700\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.15\adsSwayVertScale\0.2\fightDist\720\maxDist\340\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\8\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_mp5_silencer_mp\gunModel2\viewmodel_mp5_silencer_mp_brock\gunModel3\viewmodel_mp5_silencer_mp_bshdwl\gunModel4\viewmodel_mp5_silencer_mp_bwmrpt\gunModel5\viewmodel_mp5_silencer_mp_cmdtgr\gunModel6\viewmodel_mp5_silencer_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mp5sd\worldModel2\weapon_mp5sd_mp_brock\worldModel3\weapon_mp5sd_mp_bshdwl\worldModel4\weapon_mp5sd_mp_bwmrpt\worldModel5\weapon_mp5sd_mp_cmdtgr\worldModel6\weapon_mp5sd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_mp5_sd_idle\emptyIdleAnim\\fireAnim\viewmodel_mp5_sd_fire\lastShotAnim\viewmodel_mp5_sd_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_mp5_sd_reload\reloadEmptyAnim\viewmodel_mp5_sd_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_mp5_sd_pullout\dropAnim\viewmodel_mp5_sd_putaway\firstRaiseAnim\viewmodel_mp5_sd_pullout\altRaiseAnim\viewmodel_mp5_sd_pullout\altDropAnim\viewmodel_mp5_sd_putaway\quickRaiseAnim\viewmodel_mp5_sd_pullout\quickDropAnim\viewmodel_mp5_sd_putaway\emptyRaiseAnim\viewmodel_mp5_sd_pullout\emptyDropAnim\viewmodel_mp5_sd_putaway\sprintInAnim\viewmodel_mp5_sd_sprint_in\sprintLoopAnim\viewmodel_mp5_sd_sprint_loop\sprintOutAnim\viewmodel_mp5_sd_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_mp5_sd_ads_fire\adsLastShotAnim\viewmodel_mp5_sd_fire\adsRechamberAnim\\adsUpAnim\viewmodel_mp5_sd_ads_up\adsDownAnim\viewmodel_mp5_sd_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_mp5sd_fire_npc\fireSoundPlayer\weap_mp5sd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_mp5_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_mp5_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_mp5_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mp5\killIcon\hud_icon_mp5\dpadIcon\\ammoCounterIcon\hud_icon_mp5\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_mp5sd_clipout_plr weap_mp5sd_clipout_plr -weap_mp5sd_clipin_plr weap_mp5sd_clipin_plr -weap_mp5sd_chamber_plr weap_mp5sd_chamber_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_MP5\modeName\\playerAnimType\smg\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\smg\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\750\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\6\gunMaxYaw\6\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm Luger\maxAmmo\180\startAmmo\90\clipName\mp5_silencer_mp\clipSize\30\shotCount\1\dropAmmoMin\1\dropAmmoMax\30\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\5\meleeDamage\135\maxDamageRange\1\minDamageRange\1500\playerDamage\30\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.075\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.33\reloadEmptyTime\3.3\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.77\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.25\raiseTime\0.666\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.666\emptyDropTime\0.25\emptyRaiseTime\0.666\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-50\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\280\proneRotR\-300\proneOfsF\0\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.9\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.3\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.7\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.52\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\35\hipGunKickPitchMax\40\hipGunKickYawMin\-25\hipGunKickYawMax\25\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\700\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\35\adsGunKickStaticDecay\10\hipViewKickPitchMin\-30\hipViewKickPitchMax\70\hipViewKickYawMin\70\hipViewKickYawMax\-80\hipViewKickCenterSpeed\1700\adsViewKickPitchMin\-30\adsViewKickPitchMax\70\adsViewKickYawMin\70\adsViewKickYawMax\-80\adsViewKickCenterSpeed\1700\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.15\adsSwayVertScale\0.2\fightDist\720\maxDist\340\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\8\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_mp5_silencer_mp\gunModel2\viewmodel_mp5_silencer_mp_brock\gunModel3\viewmodel_mp5_silencer_mp_bshdwl\gunModel4\viewmodel_mp5_silencer_mp_bwmrpt\gunModel5\viewmodel_mp5_silencer_mp_cmdtgr\gunModel6\viewmodel_mp5_silencer_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mp5sd\worldModel2\weapon_mp5sd_mp_brock\worldModel3\weapon_mp5sd_mp_bshdwl\worldModel4\weapon_mp5sd_mp_bwmrpt\worldModel5\weapon_mp5sd_mp_cmdtgr\worldModel6\weapon_mp5sd_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_mp5_sd_idle\emptyIdleAnim\\fireAnim\viewmodel_mp5_sd_fire\lastShotAnim\viewmodel_mp5_sd_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_mp5_sd_reload\reloadEmptyAnim\viewmodel_mp5_sd_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_mp5_sd_pullout\dropAnim\viewmodel_mp5_sd_putaway\firstRaiseAnim\viewmodel_mp5_sd_pullout\altRaiseAnim\viewmodel_mp5_sd_pullout\altDropAnim\viewmodel_mp5_sd_putaway\quickRaiseAnim\viewmodel_mp5_sd_pullout\quickDropAnim\viewmodel_mp5_sd_putaway\emptyRaiseAnim\viewmodel_mp5_sd_pullout\emptyDropAnim\viewmodel_mp5_sd_putaway\sprintInAnim\viewmodel_mp5_sd_sprint_in\sprintLoopAnim\viewmodel_mp5_sd_sprint_loop\sprintOutAnim\viewmodel_mp5_sd_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_mp5_sd_ads_fire\adsLastShotAnim\viewmodel_mp5_sd_fire\adsRechamberAnim\\adsUpAnim\viewmodel_mp5_sd_ads_up\adsDownAnim\viewmodel_mp5_sd_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_mp5sd_fire_npc\fireSoundPlayer\weap_mp5sd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_smg_npc\emptyFireSoundPlayer\weap_dryfire_smg_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_mp5_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_mp5_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_mp5_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mp5\killIcon\hud_icon_mp5\dpadIcon\\ammoCounterIcon\hud_icon_mp5\hudIconRatio\2:1\killIconRatio\2:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_mp5sd_clipout_plr weap_mp5sd_clipout_plr +weap_mp5sd_clipin_plr weap_mp5sd_clipin_plr +weap_mp5sd_chamber_plr weap_mp5sd_chamber_plr diff --git a/weapons/mp/radar_mp b/weapons/mp/radar_mp index 5ad716a..141b692 100644 --- a/weapons/mp/radar_mp +++ b/weapons/mp/radar_mp @@ -1 +1 @@ -WEAPONFILE\inventoryType\offhand\moveSpeedScale\1\sprintDurationScale\1\gunModel\viewmodel_ak47\idleAnim\viewmodel_mk2_idle \ No newline at end of file +WEAPONFILE\inventoryType\offhand\moveSpeedScale\1\sprintDurationScale\1\gunModel\viewmodel_ak47\idleAnim\viewmodel_mk2_idle diff --git a/weapons/mp/remington700_mp b/weapons/mp/remington700_mp index cc41ba7..d483cb9 100644 --- a/weapons/mp/remington700_mp +++ b/weapons/mp/remington700_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_REMINGTON700\modeName\\playerAnimType\sniper\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\large\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\1\aimDownSight\1\rechamberWhileAds\0\noPartialReload\0\segmentedReload\1\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\2500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\30\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\32\startAmmo\16\clipName\remington700_mp\clipSize\4\shotCount\1\dropAmmoMin\1\dropAmmoMax\4\reloadAmmoAdd\1\reloadStartAdd\1\damage\70\minDamage\70\meleeDamage\135\maxDamageRange\4000\minDamageRange\5000\playerDamage\30\locNone\1\locHelmet\4.5\locHead\4.5\locNeck\4.5\locTorsoUpper\4.5\locTorsoLower\4.5\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.05\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\0.43333\reloadEmptyTime\0.15\reloadStartTime\1.13\reloadEndTime\0.7666\reloadAddTime\0.26\reloadStartAddTime\0.96\rechamberTime\1\rechamberBoltTime\0.65\dropTime\0.66\raiseTime\0.9\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.9\emptyDropTime\0.66\emptyRaiseTime\0.9\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-2.2\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.5\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-55\proneMoveR\3\proneMoveU\-145\proneRotP\0\proneRotY\220\proneRotR\-200\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.4\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\15\adsZoomInFrac\0.05\adsZoomOutFrac\0.05\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3.8\hipSpreadDuckedMin\3.4\hipSpreadProneMin\3\hipSpreadMax\8\hipSpreadDuckedMax\7\hipSpreadProneMax\6.5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\80\hipGunKickPitchMax\85\hipGunKickYawMin\-35\hipGunKickYawMax\35\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\600\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\100\adsGunKickStaticDecay\100\hipViewKickPitchMin\80\hipViewKickPitchMax\100\hipViewKickYawMin\-50\hipViewKickYawMax\-55\hipViewKickCenterSpeed\500\adsViewKickPitchMin\30\adsViewKickPitchMax\85\adsViewKickYawMin\70\adsViewKickYawMax\-75\adsViewKickCenterSpeed\500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0\adsSwayYawScale\0\adsSwayHorizScale\0\adsSwayVertScale\0\fightDist\720\maxDist\730\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\scope_overlay_m40a3\adsOverlayShaderLowRes\scope_overlay_m40a3_low_res\adsOverlayReticle\crosshair\adsOverlayWidth\480\adsOverlayHeight\480\gunModel\viewmodel_remington700_mp\gunModel2\viewmodel_remington700_mp_brock\gunModel3\viewmodel_remington700_mp_bshdwl\gunModel4\viewmodel_remington700_mp_bwmrpt\gunModel5\viewmodel_remington700_mp_cmdtgr\gunModel6\viewmodel_remington700_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_remington700\worldModel2\weapon_remington700_mp_brock\worldModel3\weapon_remington700_mp_bshdwl\worldModel4\weapon_remington700_mp_bwmrpt\worldModel5\weapon_remington700_mp_cmdtgr\worldModel6\weapon_remington700_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_remington_idle\emptyIdleAnim\\fireAnim\viewmodel_remington_fire\lastShotAnim\viewmodel_remington_fire\rechamberAnim\viewmodel_remington_rechamber\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_remington_reload_loop\reloadEmptyAnim\viewmodel_remington_reload_loop\reloadStartAnim\viewmodel_remington_reload_intro\reloadEndAnim\viewmodel_remington_reload_out\raiseAnim\viewmodel_remington_pullout\dropAnim\viewmodel_remington_putaway\firstRaiseAnim\viewmodel_remington_pullout\altRaiseAnim\viewmodel_remington_pullout\altDropAnim\viewmodel_remington_putaway\quickRaiseAnim\viewmodel_remington_quick_pullout\quickDropAnim\viewmodel_remington_quick_putaway\emptyRaiseAnim\viewmodel_remington_pullout\emptyDropAnim\viewmodel_remington_putaway\sprintInAnim\viewmodel_remington_sprint_in\sprintLoopAnim\viewmodel_remington_sprint_loop\sprintOutAnim\viewmodel_remington_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_remington_fire\adsLastShotAnim\viewmodel_remington_fire\adsRechamberAnim\viewmodel_remington_rechamber\adsUpAnim\viewmodel_remington_ADS_up\adsDownAnim\viewmodel_remington_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_rem700sniper_fire_npc\fireSoundPlayer\weap_rem700sniper_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_rem700sniper_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\weap_rem700_rechamber_npc\rechamberSoundPlayer\weap_rem700_rechamber_plr\reloadSound\weap_rem700_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_rem700_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_remington700\killIcon\hud_icon_remington700\dpadIcon\\ammoCounterIcon\hud_icon_sniperrifle\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\ShortMagazine\flipKillIcon\1\fireRumble\\meleeImpactRumble\\adsDofStart\0\adsDofEnd\10\hideTags\tag_acog\notetrackSoundMap\weap_rem700_start_plr weap_rem700_start_plr -weap_rem700_loop_plr weap_rem700_loop_plr -weap_rem700_end_plr weap_rem700_end_plr -weap_rem700_rechamber_plr weap_rem700_rechamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_REMINGTON700\modeName\\playerAnimType\sniper\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\rifle\penetrateType\large\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\1\armorPiercing\0\boltAction\1\aimDownSight\1\rechamberWhileAds\0\noPartialReload\0\segmentedReload\1\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\2500\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\1\sprintDurationScale\1\gunMaxPitch\30\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\7.62 × 51 mm NATO\maxAmmo\32\startAmmo\16\clipName\remington700_mp\clipSize\4\shotCount\1\dropAmmoMin\1\dropAmmoMax\4\reloadAmmoAdd\1\reloadStartAdd\1\damage\70\minDamage\70\meleeDamage\135\maxDamageRange\4000\minDamageRange\5000\playerDamage\30\locNone\1\locHelmet\4.5\locHead\4.5\locNeck\4.5\locTorsoUpper\4.5\locTorsoLower\4.5\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.05\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\0.43333\reloadEmptyTime\0.15\reloadStartTime\1.13\reloadEndTime\0.7666\reloadAddTime\0.26\reloadStartAddTime\0.96\rechamberTime\1\rechamberBoltTime\0.65\dropTime\0.66\raiseTime\0.9\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.9\emptyDropTime\0.66\emptyRaiseTime\0.9\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-2.2\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.5\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-55\proneMoveR\3\proneMoveU\-145\proneRotP\0\proneRotY\220\proneRotR\-200\proneOfsF\-2\proneOfsR\1.5\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0\idleCrouchFactor\1\idleProneFactor\1\adsSpread\0\adsAimPitch\0\adsTransInTime\0.25\adsTransOutTime\0.4\adsTransBlendTime\0.1\adsReloadTransTime\0.6\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\15\adsZoomInFrac\0.05\adsZoomOutFrac\0.05\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3.8\hipSpreadDuckedMin\3.4\hipSpreadProneMin\3\hipSpreadMax\8\hipSpreadDuckedMax\7\hipSpreadProneMax\6.5\hipSpreadFireAdd\0.6\hipSpreadTurnAdd\0\hipSpreadMoveAdd\5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1.05\hipSpreadProneDecay\1.1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\80\hipGunKickPitchMax\85\hipGunKickYawMin\-35\hipGunKickYawMax\35\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\600\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\100\adsGunKickStaticDecay\100\hipViewKickPitchMin\80\hipViewKickPitchMax\100\hipViewKickYawMin\-50\hipViewKickYawMax\-55\hipViewKickCenterSpeed\500\adsViewKickPitchMin\30\adsViewKickPitchMax\85\adsViewKickYawMin\70\adsViewKickYawMax\-75\adsViewKickCenterSpeed\500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0\adsSwayYawScale\0\adsSwayHorizScale\0\adsSwayVertScale\0\fightDist\720\maxDist\730\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\scope_overlay_m40a3\adsOverlayShaderLowRes\scope_overlay_m40a3_low_res\adsOverlayReticle\crosshair\adsOverlayWidth\480\adsOverlayHeight\480\gunModel\viewmodel_remington700_mp\gunModel2\viewmodel_remington700_mp_brock\gunModel3\viewmodel_remington700_mp_bshdwl\gunModel4\viewmodel_remington700_mp_bwmrpt\gunModel5\viewmodel_remington700_mp_cmdtgr\gunModel6\viewmodel_remington700_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_remington700\worldModel2\weapon_remington700_mp_brock\worldModel3\weapon_remington700_mp_bshdwl\worldModel4\weapon_remington700_mp_bwmrpt\worldModel5\weapon_remington700_mp_cmdtgr\worldModel6\weapon_remington700_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_remington_idle\emptyIdleAnim\\fireAnim\viewmodel_remington_fire\lastShotAnim\viewmodel_remington_fire\rechamberAnim\viewmodel_remington_rechamber\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_remington_reload_loop\reloadEmptyAnim\viewmodel_remington_reload_loop\reloadStartAnim\viewmodel_remington_reload_intro\reloadEndAnim\viewmodel_remington_reload_out\raiseAnim\viewmodel_remington_pullout\dropAnim\viewmodel_remington_putaway\firstRaiseAnim\viewmodel_remington_pullout\altRaiseAnim\viewmodel_remington_pullout\altDropAnim\viewmodel_remington_putaway\quickRaiseAnim\viewmodel_remington_quick_pullout\quickDropAnim\viewmodel_remington_quick_putaway\emptyRaiseAnim\viewmodel_remington_pullout\emptyDropAnim\viewmodel_remington_putaway\sprintInAnim\viewmodel_remington_sprint_in\sprintLoopAnim\viewmodel_remington_sprint_loop\sprintOutAnim\viewmodel_remington_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_remington_fire\adsLastShotAnim\viewmodel_remington_fire\adsRechamberAnim\viewmodel_remington_rechamber\adsUpAnim\viewmodel_remington_ADS_up\adsDownAnim\viewmodel_remington_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/rifle_view\worldShellEjectEffect\shellejects/rifle\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_rem700sniper_fire_npc\fireSoundPlayer\weap_rem700sniper_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_rem700sniper_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\weap_rem700_rechamber_npc\rechamberSoundPlayer\weap_rem700_rechamber_plr\reloadSound\weap_rem700_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_rem700_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_remington700\killIcon\hud_icon_remington700\dpadIcon\\ammoCounterIcon\hud_icon_sniperrifle\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\ShortMagazine\flipKillIcon\1\fireRumble\\meleeImpactRumble\\adsDofStart\0\adsDofEnd\10\hideTags\tag_acog\notetrackSoundMap\weap_rem700_start_plr weap_rem700_start_plr +weap_rem700_loop_plr weap_rem700_loop_plr +weap_rem700_end_plr weap_rem700_end_plr +weap_rem700_rechamber_plr weap_rem700_rechamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/smoke_grenade_mp b/weapons/mp/smoke_grenade_mp index ef23dfc..e311db0 100644 --- a/weapons/mp/smoke_grenade_mp +++ b/weapons/mp/smoke_grenade_mp @@ -1 +1 @@ -WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Smoke Grenade\impactType\none\inventoryType\offhand\displayName\WEAPON_SMOKE_GRENADE\modeName\\playerAnimType\grenade\AIOverlayDescription\\gunModel\viewmodel_ussmokegrenade\handModel\viewmodel_base_viewhands\isHandModelOverridable\1\idleAnim\viewmodel_ussmokegrenade_idle\emptyIdleAnim\viewmodel_ussmokegrenade_idle\fireAnim\viewmodel_ussmokegrenade_throw\holdFireAnim\viewmodel_ussmokegrenade_pullpin\lastShotAnim\viewmodel_ussmokegrenade_throw\detonateAnim\\meleeAnim\viewmodel_ussmokegrenade_idle\meleeChargeAnim\\raiseAnim\viewmodel_ussmokegrenade_idle\dropAnim\viewmodel_ussmokegrenade_idle\firstRaiseAnim\\altRaiseAnim\viewmodel_ussmokegrenade_idle\altDropAnim\viewmodel_ussmokegrenade_idle\quickRaiseAnim\\quickDropAnim\\emptyRaiseAnim\\emptyDropAnim\\sprintInAnim\\sprintLoopAnim\\sprintOutAnim\\nightVisionWearAnim\\nightVisionRemoveAnim\\autoAimRange\0\aimAssistRange\0\aimAssistRangeAds\0\moveSpeedScale\1.2\sprintDurationScale\1\lowAmmoWarningThreshold\0.33\damage\15\meleeDamage\135\fireDelay\0.13\meleeDelay\0.1\meleeChargeDelay\0\fireTime\0.36\holdFireTime\0.6\detonateTime\0.1\detonateDelay\0.1\meleeTime\0.66\meleeChargeTime\0\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0.6\quickDropTime\0.5\quickRaiseTime\0.5\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.5\sprintLoopTime\0.5\sprintOutTime\0.5\nightVisionWearTime\0.5\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\fuseTime\1\aiFuseTime\1\stickiness\Don't stick\hasDetonator\0\timedDetonation\1\rotate\1\holdButtonToThrow\0\freezeMovementWhenFiring\0\clipOnly\1\hipIdleAmount\80\hipIdleSpeed\0\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\parallelCeramicBounce\0.5\parallelPlasticBounce\0.5\parallelRubberBounce\0.5\parallelCushionBounce\0.5\parallelFruitBounce\0.5\parallelPaintedMetalBounce\0.5\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\perpendicularCeramicBounce\0.5\perpendicularPlasticBounce\0.5\perpendicularRubberBounce\0.5\perpendicularCushionBounce\0.5\perpendicularFruitBounce\0.5\perpendicularPaintedMetalBounce\0.5\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\weapon_us_smoke_grenade\knifeModel\\worldKnifeModel\\ammoName\smokegrenade_american\maxAmmo\4\startAmmo\1\clipName\smokegrenade_american\clipSize\4\sharedAmmoCapName\WEAPON_SMOKEGRENADE\sharedAmmoCap\4\dropAmmoMin\1\dropAmmoMax\1\pickupSound\grenade_pickup\pickupSoundPlayer\grenade_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\pullbackSound\weap_fraggrenade_pin\pullbackSoundPlayer\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\fireSoundPlayer\weap_fraggrenade_fire\lastShotSound\\lastShotSoundPlayer\\meleeSwipeSound\\meleeSwipeSoundPlayer\\reloadSound\\reloadSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\detonateSound\\detonateSoundPlayer\\raiseSound\\raiseSoundPlayer\\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\bounceSound\grenade_bounce\reticleCenter\reticle_center_cross\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\blocksProne\0\cookOffHold\0\hudIcon\hud_us_smokegrenade\killIcon\hud_us_grenade\dpadIcon\\ammoCounterIcon\\hudIconRatio\1:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\None\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\0\explosionRadiusMin\0\explosionInnerDamage\0\explosionOuterDamage\0\damageConeAngle\180\projectileSpeed\960\projectileSpeedUp\120\projectileSpeedForward\0\projectileModel\projectile_us_smoke_grenade\projExplosionType\smoke\projExplosionEffect\props/american_smoke_grenade_mp\projExplosionEffectForceNormalUp\0\projExplosionSound\smokegrenade_explode_default\projectileTrail\none\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0\adsDofStart\0\adsDofEnd\0\notetrackSoundMap\ \ No newline at end of file +WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Smoke Grenade\impactType\none\inventoryType\offhand\displayName\WEAPON_SMOKE_GRENADE\modeName\\playerAnimType\grenade\AIOverlayDescription\\gunModel\viewmodel_ussmokegrenade\handModel\viewmodel_base_viewhands\isHandModelOverridable\1\idleAnim\viewmodel_ussmokegrenade_idle\emptyIdleAnim\viewmodel_ussmokegrenade_idle\fireAnim\viewmodel_ussmokegrenade_throw\holdFireAnim\viewmodel_ussmokegrenade_pullpin\lastShotAnim\viewmodel_ussmokegrenade_throw\detonateAnim\\meleeAnim\viewmodel_ussmokegrenade_idle\meleeChargeAnim\\raiseAnim\viewmodel_ussmokegrenade_idle\dropAnim\viewmodel_ussmokegrenade_idle\firstRaiseAnim\\altRaiseAnim\viewmodel_ussmokegrenade_idle\altDropAnim\viewmodel_ussmokegrenade_idle\quickRaiseAnim\\quickDropAnim\\emptyRaiseAnim\\emptyDropAnim\\sprintInAnim\\sprintLoopAnim\\sprintOutAnim\\nightVisionWearAnim\\nightVisionRemoveAnim\\autoAimRange\0\aimAssistRange\0\aimAssistRangeAds\0\moveSpeedScale\1.2\sprintDurationScale\1\lowAmmoWarningThreshold\0.33\damage\15\meleeDamage\135\fireDelay\0.13\meleeDelay\0.1\meleeChargeDelay\0\fireTime\0.36\holdFireTime\0.6\detonateTime\0.1\detonateDelay\0.1\meleeTime\0.66\meleeChargeTime\0\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0.6\quickDropTime\0.5\quickRaiseTime\0.5\firstRaiseTime\0.5\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.5\sprintLoopTime\0.5\sprintOutTime\0.5\nightVisionWearTime\0.5\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\fuseTime\1\aiFuseTime\1\stickiness\Don't stick\hasDetonator\0\timedDetonation\1\rotate\1\holdButtonToThrow\0\freezeMovementWhenFiring\0\clipOnly\1\hipIdleAmount\80\hipIdleSpeed\0\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\parallelCeramicBounce\0.5\parallelPlasticBounce\0.5\parallelRubberBounce\0.5\parallelCushionBounce\0.5\parallelFruitBounce\0.5\parallelPaintedMetalBounce\0.5\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\perpendicularCeramicBounce\0.5\perpendicularPlasticBounce\0.5\perpendicularRubberBounce\0.5\perpendicularCushionBounce\0.5\perpendicularFruitBounce\0.5\perpendicularPaintedMetalBounce\0.5\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\weapon_us_smoke_grenade\knifeModel\\worldKnifeModel\\ammoName\smokegrenade_american\maxAmmo\4\startAmmo\1\clipName\smokegrenade_american\clipSize\4\sharedAmmoCapName\WEAPON_SMOKEGRENADE\sharedAmmoCap\4\dropAmmoMin\1\dropAmmoMax\1\pickupSound\grenade_pickup\pickupSoundPlayer\grenade_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\pullbackSound\weap_fraggrenade_pin\pullbackSoundPlayer\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\fireSoundPlayer\weap_fraggrenade_fire\lastShotSound\\lastShotSoundPlayer\\meleeSwipeSound\\meleeSwipeSoundPlayer\\reloadSound\\reloadSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\detonateSound\\detonateSoundPlayer\\raiseSound\\raiseSoundPlayer\\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\bounceSound\grenade_bounce\reticleCenter\reticle_center_cross\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\blocksProne\0\cookOffHold\0\hudIcon\hud_us_smokegrenade\killIcon\hud_us_grenade\dpadIcon\\ammoCounterIcon\\hudIconRatio\1:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\None\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\0\explosionRadiusMin\0\explosionInnerDamage\0\explosionOuterDamage\0\damageConeAngle\180\projectileSpeed\960\projectileSpeedUp\120\projectileSpeedForward\0\projectileModel\projectile_us_smoke_grenade\projExplosionType\smoke\projExplosionEffect\props/american_smoke_grenade_mp\projExplosionEffectForceNormalUp\0\projExplosionSound\smokegrenade_explode_default\projectileTrail\none\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0\adsDofStart\0\adsDofEnd\0\notetrackSoundMap\ diff --git a/weapons/mp/usp_mp b/weapons/mp/usp_mp index 240bbf0..426697a 100644 --- a/weapons/mp/usp_mp +++ b/weapons/mp/usp_mp @@ -1,7 +1,5 @@ -WEAPONFILE\displayName\WEAPON_USP\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.45 ACP\maxAmmo\72\startAmmo\36\clipName\usp_mp\clipSize\12\shotCount\1\dropAmmoMin\1\dropAmmoMax\12\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\450\minDamageRange\1000\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.625\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.6\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\8\hipSpreadDuckedMax\8\hipSpreadProneMax\8\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\0\hipGunKickPitchMax\0\hipGunKickYawMin\0\hipGunKickYawMax\0\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\0\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\25\hipViewKickPitchMax\45\hipViewKickYawMin\35\hipViewKickYawMax\-35\hipViewKickCenterSpeed\1000\adsViewKickPitchMin\25\adsViewKickPitchMax\45\adsViewKickYawMin\35\adsViewKickYawMax\-35\adsViewKickCenterSpeed\1000\swayMaxAngle\5\swayLerpSpeed\4\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.3\swayVertScale\0.5\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.1\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_usp_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_USP\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_USP_idle\emptyIdleAnim\viewmodel_USP_idle\fireAnim\viewmodel_USP_fire\lastShotAnim\viewmodel_USP_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_USP_reload\reloadEmptyAnim\viewmodel_USP_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_USP_pullout2\dropAnim\viewmodel_USP_putaway\firstRaiseAnim\viewmodel_USP_pullout2\altRaiseAnim\viewmodel_USP_pullout2\altDropAnim\viewmodel_USP_putaway\quickRaiseAnim\viewmodel_USP_pullout2\quickDropAnim\viewmodel_USP_putaway\emptyRaiseAnim\viewmodel_USP_pullout2\emptyDropAnim\viewmodel_USP_putaway\sprintInAnim\viewmodel_USP_sprint_in\sprintLoopAnim\viewmodel_USP_sprint_loop\sprintOutAnim\viewmodel_USP_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_USP_fire_ads\adsLastShotAnim\viewmodel_USP_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_USP_ADS_up\adsDownAnim\viewmodel_USP_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_usp45_fire_npc\fireSoundPlayer\weap_usp45_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_usp45_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_usp45_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_usp45_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_usp_45\killIcon\hud_icon_usp_45\dpadIcon\\ammoCounterIcon\hud_icon_usp_45\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\weap_usp45_clipout_plr weap_usp45_clipout_plr -weap_usp45_clipin_plr weap_usp45_clipin_plr -weap_m9_chamber_plr weap_m9_chamber_plr -weap_usp45_lift_plr weap_usp45_lift_plr -melee_knife_stab melee_knife_stab - - \ No newline at end of file +WEAPONFILE\displayName\WEAPON_USP\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.45 ACP\maxAmmo\72\startAmmo\36\clipName\usp_mp\clipSize\12\shotCount\1\dropAmmoMin\1\dropAmmoMax\12\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\450\minDamageRange\1000\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.625\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.6\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\8\hipSpreadDuckedMax\8\hipSpreadProneMax\8\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\0\hipGunKickPitchMax\0\hipGunKickYawMin\0\hipGunKickYawMax\0\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\0\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\25\hipViewKickPitchMax\45\hipViewKickYawMin\35\hipViewKickYawMax\-35\hipViewKickCenterSpeed\1000\adsViewKickPitchMin\25\adsViewKickPitchMax\45\adsViewKickYawMin\35\adsViewKickYawMax\-35\adsViewKickCenterSpeed\1000\swayMaxAngle\5\swayLerpSpeed\4\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.3\swayVertScale\0.5\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.1\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_usp_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_USP\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_USP_idle\emptyIdleAnim\viewmodel_USP_idle\fireAnim\viewmodel_USP_fire\lastShotAnim\viewmodel_USP_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_USP_reload\reloadEmptyAnim\viewmodel_USP_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_USP_pullout2\dropAnim\viewmodel_USP_putaway\firstRaiseAnim\viewmodel_USP_pullout2\altRaiseAnim\viewmodel_USP_pullout2\altDropAnim\viewmodel_USP_putaway\quickRaiseAnim\viewmodel_USP_pullout2\quickDropAnim\viewmodel_USP_putaway\emptyRaiseAnim\viewmodel_USP_pullout2\emptyDropAnim\viewmodel_USP_putaway\sprintInAnim\viewmodel_USP_sprint_in\sprintLoopAnim\viewmodel_USP_sprint_loop\sprintOutAnim\viewmodel_USP_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_USP_fire_ads\adsLastShotAnim\viewmodel_USP_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_USP_ADS_up\adsDownAnim\viewmodel_USP_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_usp45_fire_npc\fireSoundPlayer\weap_usp45_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_usp45_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_usp45_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_usp45_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_usp_45\killIcon\hud_icon_usp_45\dpadIcon\\ammoCounterIcon\hud_icon_usp_45\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\pistol_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\weap_usp45_clipout_plr weap_usp45_clipout_plr +weap_usp45_clipin_plr weap_usp45_clipin_plr +weap_m9_chamber_plr weap_m9_chamber_plr +weap_usp45_lift_plr weap_usp45_lift_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/usp_silencer_mp b/weapons/mp/usp_silencer_mp index 6385c87..73f1611 100644 --- a/weapons/mp/usp_silencer_mp +++ b/weapons/mp/usp_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_USP\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.45 ACP\maxAmmo\72\startAmmo\36\clipName\usp_silencer_mp\clipSize\12\shotCount\1\dropAmmoMin\1\dropAmmoMax\12\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\250\minDamageRange\650\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.625\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.6\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\8\hipSpreadDuckedMax\8\hipSpreadProneMax\8\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\0\hipGunKickPitchMax\0\hipGunKickYawMin\0\hipGunKickYawMax\0\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\0\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\25\hipViewKickPitchMax\45\hipViewKickYawMin\35\hipViewKickYawMax\-35\hipViewKickCenterSpeed\1000\adsViewKickPitchMin\25\adsViewKickPitchMax\45\adsViewKickYawMin\35\adsViewKickYawMax\-35\adsViewKickCenterSpeed\1000\swayMaxAngle\5\swayLerpSpeed\4\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.3\swayVertScale\0.5\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.1\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_usp_silencer_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_usp_silencer\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_USP_idle\emptyIdleAnim\viewmodel_USP_idle\fireAnim\viewmodel_USP_fire\lastShotAnim\viewmodel_USP_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_USP_reload\reloadEmptyAnim\viewmodel_USP_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_USP_pullout2\dropAnim\viewmodel_USP_putaway\firstRaiseAnim\viewmodel_USP_pullout2\altRaiseAnim\viewmodel_USP_pullout2\altDropAnim\viewmodel_USP_putaway\quickRaiseAnim\viewmodel_USP_pullout2\quickDropAnim\viewmodel_USP_putaway\emptyRaiseAnim\viewmodel_USP_pullout2\emptyDropAnim\viewmodel_USP_putaway\sprintInAnim\viewmodel_USP_sprint_in\sprintLoopAnim\viewmodel_USP_sprint_loop\sprintOutAnim\viewmodel_USP_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_USP_fire_ads\adsLastShotAnim\viewmodel_USP_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_USP_ADS_up\adsDownAnim\viewmodel_USP_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_usp45sd_fire_npc\fireSoundPlayer\weap_usp45sd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_usp45_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_usp45_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_usp45_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_usp_45\killIcon\hud_icon_usp_45\dpadIcon\\ammoCounterIcon\hud_icon_usp_45\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\weap_usp45_clipout_plr weap_usp45_clipout_plr -weap_usp45_clipin_plr weap_usp45_clipin_plr -weap_m9_chamber_plr weap_m9_chamber_plr -weap_usp45_lift_plr weap_usp45_lift_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_USP\modeName\\playerAnimType\pistol\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\pistol\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Single Shot\twoHanded\0\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\600\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\2\gunMaxYaw\8\lowAmmoWarningThreshold\0.33\ammoName\.45 ACP\maxAmmo\72\startAmmo\36\clipName\usp_silencer_mp\clipSize\12\shotCount\1\dropAmmoMin\1\dropAmmoMax\12\reloadAmmoAdd\0\reloadStartAdd\0\damage\40\minDamage\20\meleeDamage\135\maxDamageRange\250\minDamageRange\650\playerDamage\150\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.1\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\1.625\reloadEmptyTime\1.917\reloadStartTime\0\reloadEndTime\0\reloadAddTime\1.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.45\raiseTime\0.55\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.25\firstRaiseTime\0.25\emptyDropTime\0.45\emptyRaiseTime\0.25\sprintInTime\0.3\sprintLoopTime\0.6\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\1\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\0\standRotMinSpeed\0\posMoveRate\5\posRotRate\6\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-2\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.8\duckedOfsR\1.2\duckedOfsU\-1\duckedMoveMinSpeed\0\duckedRotMinSpeed\0\proneMoveF\-20\proneMoveR\-25\proneMoveU\-95\proneRotP\0\proneRotY\270\proneRotR\-300\proneOfsF\2\proneOfsR\2\proneOfsU\-1.6\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\1\idleCrouchFactor\0.8\idleProneFactor\0.6\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.15\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\65\adsZoomInFrac\0.42\adsZoomOutFrac\0.08\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\3\hipSpreadDuckedMin\2.5\hipSpreadProneMin\2\hipSpreadMax\8\hipSpreadDuckedMax\8\hipSpreadProneMax\8\hipSpreadFireAdd\1\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4.5\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\0\hipGunKickPitchMax\0\hipGunKickYawMin\0\hipGunKickYawMax\0\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\0\adsGunKickPitchMax\0\adsGunKickYawMin\0\adsGunKickYawMax\0\adsGunKickAccel\0\adsGunKickSpeedMax\0\adsGunKickSpeedDecay\25\adsGunKickStaticDecay\50\hipViewKickPitchMin\25\hipViewKickPitchMax\45\hipViewKickYawMin\35\hipViewKickYawMax\-35\hipViewKickCenterSpeed\1000\adsViewKickPitchMin\25\adsViewKickPitchMax\45\adsViewKickYawMin\35\adsViewKickYawMax\-35\adsViewKickCenterSpeed\1000\swayMaxAngle\5\swayLerpSpeed\4\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.3\swayVertScale\0.5\swayShellShockScale\5\adsSwayMaxAngle\6\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.1\adsSwayVertScale\0.25\fightDist\720\maxDist\250\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\4\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_usp_silencer_mp\gunModel2\\gunModel3\\gunModel4\\gunModel5\\gunModel6\\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_usp_silencer\worldModel2\\worldModel3\\worldModel4\\worldModel5\\worldModel6\\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_USP_idle\emptyIdleAnim\viewmodel_USP_idle\fireAnim\viewmodel_USP_fire\lastShotAnim\viewmodel_USP_lastfire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_USP_reload\reloadEmptyAnim\viewmodel_USP_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_USP_pullout2\dropAnim\viewmodel_USP_putaway\firstRaiseAnim\viewmodel_USP_pullout2\altRaiseAnim\viewmodel_USP_pullout2\altDropAnim\viewmodel_USP_putaway\quickRaiseAnim\viewmodel_USP_pullout2\quickDropAnim\viewmodel_USP_putaway\emptyRaiseAnim\viewmodel_USP_pullout2\emptyDropAnim\viewmodel_USP_putaway\sprintInAnim\viewmodel_USP_sprint_in\sprintLoopAnim\viewmodel_USP_sprint_loop\sprintOutAnim\viewmodel_USP_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_USP_fire_ads\adsLastShotAnim\viewmodel_USP_lastfire\adsRechamberAnim\\adsUpAnim\viewmodel_USP_ADS_up\adsDownAnim\viewmodel_USP_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_usp45sd_fire_npc\fireSoundPlayer\weap_usp45sd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_usp45_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_usp45_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_usp45_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_usp_45\killIcon\hud_icon_usp_45\dpadIcon\\ammoCounterIcon\hud_icon_usp_45\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\8\adsDofEnd\12\hideTags\\notetrackSoundMap\weap_usp45_clipout_plr weap_usp45_clipout_plr +weap_usp45_clipin_plr weap_usp45_clipin_plr +weap_m9_chamber_plr weap_m9_chamber_plr +weap_usp45_lift_plr weap_usp45_lift_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/uzi_mp b/weapons/mp/uzi_mp index bbd7053..b35b8e5 100644 --- a/weapons/mp/uzi_mp +++ b/weapons/mp/uzi_mp @@ -1,7 +1,7 @@ -WEAPONFILE\displayName\WEAPON_UZI\modeName\\playerAnimType\smg\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\smg\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\750\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\6\gunMaxYaw\6\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm Luger\maxAmmo\192\startAmmo\96\clipName\uzi_mp\clipSize\32\shotCount\1\dropAmmoMin\1\dropAmmoMax\32\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\750\minDamageRange\1000\playerDamage\30\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.063\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.4\reloadEmptyTime\3.5\reloadStartTime\0\reloadEndTime\0\reloadAddTime\2.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.42\raiseTime\0.8\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.55\firstRaiseTime\0.8\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-50\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\280\proneRotR\-300\proneOfsF\0\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.9\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.3\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.7\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.52\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\35\hipGunKickPitchMax\40\hipGunKickYawMin\-25\hipGunKickYawMax\25\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\700\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\35\adsGunKickStaticDecay\10\hipViewKickPitchMin\-50\hipViewKickPitchMax\80\hipViewKickYawMin\75\hipViewKickYawMax\-75\hipViewKickCenterSpeed\1600\adsViewKickPitchMin\-50\adsViewKickPitchMax\80\adsViewKickYawMin\75\adsViewKickYawMax\-75\adsViewKickCenterSpeed\1600\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.3\adsSwayVertScale\0.2\fightDist\720\maxDist\340\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\8\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_miniUZI_mp\gunModel2\viewmodel_miniUZI_mp_brock\gunModel3\viewmodel_miniUZI_mp_bshdwl\gunModel4\viewmodel_miniUZI_mp_bwmrpt\gunModel5\viewmodel_miniUZI_mp_cmdtgr\gunModel6\viewmodel_miniUZI_mp_stagger\gunModel7\viewmodel_miniUZI_gold_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mini_uzi\worldModel2\weapon_mini_uzi_mp_brock\worldModel3\weapon_mini_uzi_mp_bshdwl\worldModel4\weapon_mini_uzi_mp_bwmrpt\worldModel5\weapon_mini_uzi_mp_cmdtgr\worldModel6\weapon_mini_uzi_mp_stagger\worldModel7\weapon_mini_uzi_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_miniUZI_idle\emptyIdleAnim\viewmodel_miniUZI_idle\fireAnim\viewmodel_miniUZI_fire\lastShotAnim\viewmodel_miniUZI_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_miniUZI_reload\reloadEmptyAnim\viewmodel_miniUZI_attachment_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_miniUZI_pullout\dropAnim\viewmodel_miniUZI_putaway\firstRaiseAnim\viewmodel_miniUZI_pullout\altRaiseAnim\viewmodel_miniUZI_pullout\altDropAnim\viewmodel_miniUZI_putaway\quickRaiseAnim\viewmodel_miniUZI_pullout\quickDropAnim\viewmodel_miniUZI_putaway\emptyRaiseAnim\viewmodel_miniUZI_pullout\emptyDropAnim\viewmodel_miniUZI_putaway\sprintInAnim\viewmodel_miniUZI_sprint_in\sprintLoopAnim\viewmodel_miniUZI_sprint_loop\sprintOutAnim\viewmodel_miniUZI_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_miniUZI_ADS_fire\adsLastShotAnim\viewmodel_miniUZI_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_miniUZI_ADS_up\adsDownAnim\viewmodel_miniUZI_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_miniuzi_fire_npc\fireSoundPlayer\weap_miniuzi_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_miniuzi_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_miniuzi_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_miniuzi_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mini_uzi\killIcon\hud_icon_mini_uzi\dpadIcon\\ammoCounterIcon\hud_icon_mini_uzi\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\smg_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\tag_acog -tag_ak47_mount -tag_reflex_sight\notetrackSoundMap\weap_miniuzi_lift_plr weap_miniuzi_lift_plr -weap_miniuzi_clipout_plr weap_miniuzi_clipout_plr -weap_miniuzi_clipin_plr weap_miniuzi_clipin_plr -weap_miniuzi_chamber_plr weap_miniuzi_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_UZI\modeName\\playerAnimType\smg\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\smg\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\750\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\6\gunMaxYaw\6\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm Luger\maxAmmo\192\startAmmo\96\clipName\uzi_mp\clipSize\32\shotCount\1\dropAmmoMin\1\dropAmmoMax\32\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\750\minDamageRange\1000\playerDamage\30\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.063\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.4\reloadEmptyTime\3.5\reloadStartTime\0\reloadEndTime\0\reloadAddTime\2.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.42\raiseTime\0.8\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.55\firstRaiseTime\0.8\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-50\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\280\proneRotR\-300\proneOfsF\0\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.9\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.3\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.7\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.52\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\35\hipGunKickPitchMax\40\hipGunKickYawMin\-25\hipGunKickYawMax\25\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\700\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\35\adsGunKickStaticDecay\10\hipViewKickPitchMin\-50\hipViewKickPitchMax\80\hipViewKickYawMin\75\hipViewKickYawMax\-75\hipViewKickCenterSpeed\1600\adsViewKickPitchMin\-50\adsViewKickPitchMax\80\adsViewKickYawMin\75\adsViewKickYawMax\-75\adsViewKickCenterSpeed\1600\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.3\adsSwayVertScale\0.2\fightDist\720\maxDist\340\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\8\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_miniUZI_mp\gunModel2\viewmodel_miniUZI_mp_brock\gunModel3\viewmodel_miniUZI_mp_bshdwl\gunModel4\viewmodel_miniUZI_mp_bwmrpt\gunModel5\viewmodel_miniUZI_mp_cmdtgr\gunModel6\viewmodel_miniUZI_mp_stagger\gunModel7\viewmodel_miniUZI_gold_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mini_uzi\worldModel2\weapon_mini_uzi_mp_brock\worldModel3\weapon_mini_uzi_mp_bshdwl\worldModel4\weapon_mini_uzi_mp_bwmrpt\worldModel5\weapon_mini_uzi_mp_cmdtgr\worldModel6\weapon_mini_uzi_mp_stagger\worldModel7\weapon_mini_uzi_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_miniUZI_idle\emptyIdleAnim\viewmodel_miniUZI_idle\fireAnim\viewmodel_miniUZI_fire\lastShotAnim\viewmodel_miniUZI_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_miniUZI_reload\reloadEmptyAnim\viewmodel_miniUZI_attachment_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_miniUZI_pullout\dropAnim\viewmodel_miniUZI_putaway\firstRaiseAnim\viewmodel_miniUZI_pullout\altRaiseAnim\viewmodel_miniUZI_pullout\altDropAnim\viewmodel_miniUZI_putaway\quickRaiseAnim\viewmodel_miniUZI_pullout\quickDropAnim\viewmodel_miniUZI_putaway\emptyRaiseAnim\viewmodel_miniUZI_pullout\emptyDropAnim\viewmodel_miniUZI_putaway\sprintInAnim\viewmodel_miniUZI_sprint_in\sprintLoopAnim\viewmodel_miniUZI_sprint_loop\sprintOutAnim\viewmodel_miniUZI_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_miniUZI_ADS_fire\adsLastShotAnim\viewmodel_miniUZI_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_miniUZI_ADS_up\adsDownAnim\viewmodel_miniUZI_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_miniuzi_fire_npc\fireSoundPlayer\weap_miniuzi_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_miniuzi_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_miniuzi_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_miniuzi_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mini_uzi\killIcon\hud_icon_mini_uzi\dpadIcon\\ammoCounterIcon\hud_icon_mini_uzi\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\smg_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\tag_acog +tag_ak47_mount +tag_reflex_sight\notetrackSoundMap\weap_miniuzi_lift_plr weap_miniuzi_lift_plr +weap_miniuzi_clipout_plr weap_miniuzi_clipout_plr +weap_miniuzi_clipin_plr weap_miniuzi_clipin_plr +weap_miniuzi_chamber_plr weap_miniuzi_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/uzi_silencer_mp b/weapons/mp/uzi_silencer_mp index fc8c147..5871fa9 100644 --- a/weapons/mp/uzi_silencer_mp +++ b/weapons/mp/uzi_silencer_mp @@ -1,5 +1,5 @@ -WEAPONFILE\displayName\WEAPON_UZI\modeName\\playerAnimType\smg\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\smg\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\750\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\6\gunMaxYaw\6\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm Luger\maxAmmo\192\startAmmo\96\clipName\uzi_silencer_mp\clipSize\32\shotCount\1\dropAmmoMin\1\dropAmmoMax\32\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\350\minDamageRange\700\playerDamage\30\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.063\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.4\reloadEmptyTime\3.5\reloadStartTime\0\reloadEndTime\0\reloadAddTime\2.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.42\raiseTime\0.8\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.55\firstRaiseTime\0.8\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-50\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\280\proneRotR\-300\proneOfsF\0\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.9\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.3\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.7\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.52\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\35\hipGunKickPitchMax\40\hipGunKickYawMin\-25\hipGunKickYawMax\25\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\700\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\35\adsGunKickStaticDecay\10\hipViewKickPitchMin\-50\hipViewKickPitchMax\80\hipViewKickYawMin\75\hipViewKickYawMax\-75\hipViewKickCenterSpeed\1600\adsViewKickPitchMin\-50\adsViewKickPitchMax\80\adsViewKickYawMin\75\adsViewKickYawMax\-75\adsViewKickCenterSpeed\1600\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.3\adsSwayVertScale\0.2\fightDist\720\maxDist\340\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\8\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_miniUZI_silencer\gunModel2\viewmodel_miniUZI_supressed_mp_brock\gunModel3\viewmodel_miniUZI_supressed_mp_bshdwl\gunModel4\viewmodel_miniUZI_supressed_mp_bwmrpt\gunModel5\viewmodel_miniUZI_supressed_mp_cmdtgr\gunModel6\viewmodel_miniUZI_supressed_mp_stagger\gunModel7\viewmodel_miniuzi_supressed_gold_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mini_uzi_silencer\worldModel2\weapon_mini_uzi_sd_mp_brock\worldModel3\weapon_mini_uzi_sd_mp_bshdwl\worldModel4\weapon_mini_uzi_sd_mp_bwmrpt\worldModel5\weapon_mini_uzi_sd_mp_cmdtgr\worldModel6\weapon_mini_uzi_sd_mp_stagger\worldModel7\weapon_mini_uzi_silencer_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_miniUZI_idle\emptyIdleAnim\viewmodel_miniUZI_idle\fireAnim\viewmodel_miniUZI_fire\lastShotAnim\viewmodel_miniUZI_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_miniUZI_reload\reloadEmptyAnim\viewmodel_miniUZI_attachment_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_miniUZI_pullout\dropAnim\viewmodel_miniUZI_putaway\firstRaiseAnim\viewmodel_miniUZI_pullout\altRaiseAnim\viewmodel_miniUZI_pullout\altDropAnim\viewmodel_miniUZI_putaway\quickRaiseAnim\viewmodel_miniUZI_pullout\quickDropAnim\viewmodel_miniUZI_putaway\emptyRaiseAnim\viewmodel_miniUZI_pullout\emptyDropAnim\viewmodel_miniUZI_putaway\sprintInAnim\viewmodel_miniUZI_sprint_in\sprintLoopAnim\viewmodel_miniUZI_sprint_loop\sprintOutAnim\viewmodel_miniUZI_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_miniUZI_ADS_fire\adsLastShotAnim\viewmodel_miniUZI_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_miniUZI_ADS_up\adsDownAnim\viewmodel_miniUZI_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_miniuzisd_fire_npc\fireSoundPlayer\weap_miniuzisd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_miniuzi_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_miniuzi_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_miniuzi_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mini_uzi\killIcon\hud_icon_mini_uzi\dpadIcon\\ammoCounterIcon\hud_icon_mini_uzi\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\\notetrackSoundMap\weap_miniuzi_lift_plr weap_miniuzi_lift_plr -weap_miniuzi_clipout_plr weap_miniuzi_clipout_plr -weap_miniuzi_clipin_plr weap_miniuzi_clipin_plr -weap_miniuzi_chamber_plr weap_miniuzi_chamber_plr -melee_knife_stab melee_knife_stab \ No newline at end of file +WEAPONFILE\displayName\WEAPON_UZI\modeName\\playerAnimType\smg\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\smg\penetrateType\small\impactType\bullet_small\inventoryType\primary\fireType\Full Auto\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\0\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\0\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\1\autoAimRange\0\aimAssistRange\750\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\6\gunMaxYaw\6\lowAmmoWarningThreshold\0.33\ammoName\9 × 19 mm Luger\maxAmmo\192\startAmmo\96\clipName\uzi_silencer_mp\clipSize\32\shotCount\1\dropAmmoMin\1\dropAmmoMax\32\reloadAmmoAdd\0\reloadStartAdd\0\damage\30\minDamage\20\meleeDamage\135\maxDamageRange\350\minDamageRange\700\playerDamage\30\locNone\1\locHelmet\1.4\locHead\1.4\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.063\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\2.4\reloadEmptyTime\3.5\reloadStartTime\0\reloadEndTime\0\reloadAddTime\2.2\reloadStartAddTime\0\rechamberTime\0.1\rechamberBoltTime\0\dropTime\0.42\raiseTime\0.8\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.55\firstRaiseTime\0.8\emptyDropTime\0.5\emptyRaiseTime\0.5\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-50\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\280\proneRotR\-300\proneOfsF\0\proneOfsR\1.5\proneOfsU\0\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.9\idleCrouchFactor\0.75\idleProneFactor\0.4\adsSpread\0\adsAimPitch\0\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.3\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.7\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\2\hipSpreadDuckedMin\1.75\hipSpreadProneMin\1.5\hipSpreadMax\5\hipSpreadDuckedMax\4.5\hipSpreadProneMax\4\hipSpreadFireAdd\0.52\hipSpreadTurnAdd\0\hipSpreadMoveAdd\4\hipSpreadDecayRate\4\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\35\hipGunKickPitchMax\40\hipGunKickYawMin\-25\hipGunKickYawMax\25\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\100\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\75\adsGunKickPitchMin\5\adsGunKickPitchMax\15\adsGunKickYawMin\-5\adsGunKickYawMax\10\adsGunKickAccel\700\adsGunKickSpeedMax\2000\adsGunKickSpeedDecay\35\adsGunKickStaticDecay\10\hipViewKickPitchMin\-50\hipViewKickPitchMax\80\hipViewKickYawMin\75\hipViewKickYawMax\-75\hipViewKickCenterSpeed\1600\adsViewKickPitchMin\-50\adsViewKickPitchMax\80\adsViewKickYawMin\75\adsViewKickYawMax\-75\adsViewKickCenterSpeed\1600\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.3\adsSwayVertScale\0.2\fightDist\720\maxDist\340\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\8\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_miniUZI_silencer\gunModel2\viewmodel_miniUZI_supressed_mp_brock\gunModel3\viewmodel_miniUZI_supressed_mp_bshdwl\gunModel4\viewmodel_miniUZI_supressed_mp_bwmrpt\gunModel5\viewmodel_miniUZI_supressed_mp_cmdtgr\gunModel6\viewmodel_miniUZI_supressed_mp_stagger\gunModel7\viewmodel_miniuzi_supressed_gold_mp\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_mini_uzi_silencer\worldModel2\weapon_mini_uzi_sd_mp_brock\worldModel3\weapon_mini_uzi_sd_mp_bshdwl\worldModel4\weapon_mini_uzi_sd_mp_bwmrpt\worldModel5\weapon_mini_uzi_sd_mp_cmdtgr\worldModel6\weapon_mini_uzi_sd_mp_stagger\worldModel7\weapon_mini_uzi_silencer_gold\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_miniUZI_idle\emptyIdleAnim\viewmodel_miniUZI_idle\fireAnim\viewmodel_miniUZI_fire\lastShotAnim\viewmodel_miniUZI_fire\rechamberAnim\\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_miniUZI_reload\reloadEmptyAnim\viewmodel_miniUZI_attachment_reload_empty\reloadStartAnim\\reloadEndAnim\\raiseAnim\viewmodel_miniUZI_pullout\dropAnim\viewmodel_miniUZI_putaway\firstRaiseAnim\viewmodel_miniUZI_pullout\altRaiseAnim\viewmodel_miniUZI_pullout\altDropAnim\viewmodel_miniUZI_putaway\quickRaiseAnim\viewmodel_miniUZI_pullout\quickDropAnim\viewmodel_miniUZI_putaway\emptyRaiseAnim\viewmodel_miniUZI_pullout\emptyDropAnim\viewmodel_miniUZI_putaway\sprintInAnim\viewmodel_miniUZI_sprint_in\sprintLoopAnim\viewmodel_miniUZI_sprint_loop\sprintOutAnim\viewmodel_miniUZI_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_miniUZI_ADS_fire\adsLastShotAnim\viewmodel_miniUZI_ADS_fire\adsRechamberAnim\\adsUpAnim\viewmodel_miniUZI_ADS_up\adsDownAnim\viewmodel_miniUZI_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/pistol_view\worldShellEjectEffect\shellejects/pistol\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_miniuzisd_fire_npc\fireSoundPlayer\weap_miniuzisd_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_pistol_npc\emptyFireSoundPlayer\weap_dryfire_pistol_plr\meleeSwipeSound\melee_swing_small\meleeSwipeSoundPlayer\melee_miniuzi_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\\rechamberSoundPlayer\\reloadSound\weap_miniuzi_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_miniuzi_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_mini_uzi\killIcon\hud_icon_mini_uzi\dpadIcon\\ammoCounterIcon\hud_icon_mini_uzi\hudIconRatio\1:1\killIconRatio\1:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Magazine\flipKillIcon\1\fireRumble\silencer_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\\notetrackSoundMap\weap_miniuzi_lift_plr weap_miniuzi_lift_plr +weap_miniuzi_clipout_plr weap_miniuzi_clipout_plr +weap_miniuzi_clipin_plr weap_miniuzi_clipin_plr +weap_miniuzi_chamber_plr weap_miniuzi_chamber_plr +melee_knife_stab melee_knife_stab diff --git a/weapons/mp/winchester1200_mp b/weapons/mp/winchester1200_mp index 671aef6..fc57048 100644 --- a/weapons/mp/winchester1200_mp +++ b/weapons/mp/winchester1200_mp @@ -1,7 +1,7 @@ -WEAPONFILE\displayName\WEAPON_WINCHESTER1200\modeName\\playerAnimType\other\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\spread\penetrateType\small\impactType\shotgun\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\1\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\1\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\80\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\12 gauge\maxAmmo\56\startAmmo\28\clipName\winchester1200_mp\clipSize\7\shotCount\8\dropAmmoMin\1\dropAmmoMax\7\reloadAmmoAdd\1\reloadStartAdd\1\damage\40\minDamage\10\meleeDamage\135\maxDamageRange\300\minDamageRange\500\playerDamage\30\locNone\1\locHelmet\1\locHead\1\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.283\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\0.567\reloadEmptyTime\0.567\reloadStartTime\1\reloadEndTime\0.767\reloadAddTime\0.25\reloadStartAddTime\0.6\rechamberTime\0.467\rechamberBoltTime\0\dropTime\0.33\raiseTime\0.625\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.625\emptyDropTime\0.33\emptyRaiseTime\0.65\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-100\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\220\proneRotR\-300\proneOfsF\-0.5\proneOfsR\2\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.8\idleProneFactor\0.4\adsSpread\5.5\adsAimPitch\-0.1\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.5\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\4\hipSpreadDuckedMin\4\hipSpreadProneMin\4\hipSpreadMax\4\hipSpreadDuckedMax\4\hipSpreadProneMax\4\hipSpreadFireAdd\0\hipSpreadTurnAdd\0\hipSpreadMoveAdd\0.1\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\50\hipGunKickPitchMax\60\hipGunKickYawMin\-30\hipGunKickYawMax\30\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\35\adsGunKickPitchMax\45\adsGunKickYawMin\-25\adsGunKickYawMax\25\adsGunKickAccel\260\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\50\adsGunKickStaticDecay\10\hipViewKickPitchMin\95\hipViewKickPitchMax\100\hipViewKickYawMin\-75\hipViewKickYawMax\-85\hipViewKickCenterSpeed\500\adsViewKickPitchMin\95\adsViewKickPitchMax\100\adsViewKickYawMin\-75\adsViewKickYawMax\-85\adsViewKickCenterSpeed\500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.2\adsSwayVertScale\0.25\fightDist\720\maxDist\680\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_winchester1200_mp\gunModel2\viewmodel_winchester1200_mp_brock\gunModel3\viewmodel_winchester1200_mp_bshdwl\gunModel4\viewmodel_winchester1200_mp_bwmrpt\gunModel5\viewmodel_winchester1200_mp_cmdtgr\gunModel6\viewmodel_winchester1200_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_winchest1200\worldModel2\weapon_winchest1200_mp_brock\worldModel3\weapon_winchest1200_mp_bshdwl\worldModel4\weapon_winchest1200_mp_bwmrpt\worldModel5\weapon_winchest1200_mp_cmdtgr\worldModel6\weapon_winchest1200_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_winchester_idle\emptyIdleAnim\viewmodel_winchester_idle\fireAnim\viewmodel_winchester_fire\lastShotAnim\viewmodel_winchester_fire\rechamberAnim\viewmodel_winchester_rechamber\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_winchester_reload_loop\reloadEmptyAnim\\reloadStartAnim\viewmodel_winchester_reload_intro\reloadEndAnim\viewmodel_winchester_reload_end\raiseAnim\viewmodel_winchester_pullout_quick\dropAnim\viewmodel_winchester_putaway_quick\firstRaiseAnim\viewmodel_winchester_pullout_quick\altRaiseAnim\viewmodel_winchester_pullout_quick\altDropAnim\viewmodel_winchester_putaway_quick\quickRaiseAnim\viewmodel_winchester_pullout_quick\quickDropAnim\viewmodel_winchester_putaway_quick\emptyRaiseAnim\viewmodel_winchester_pullout\emptyDropAnim\viewmodel_winchester_putaway\sprintInAnim\viewmodel_winchester_sprint_in\sprintLoopAnim\viewmodel_winchester_sprint_loop\sprintOutAnim\viewmodel_winchester_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_winchester_fire_ads\adsLastShotAnim\viewmodel_winchester_fire\adsRechamberAnim\viewmodel_winchester_rechamber\adsUpAnim\viewmodel_winchester_ADS_up\adsDownAnim\viewmodel_winchester_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/shotgun_view\worldShellEjectEffect\shellejects/shotgun\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_winch1200_fire_npc\fireSoundPlayer\weap_winch1200_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_winch1200_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\weap_winch1200_pump_npc\rechamberSoundPlayer\\reloadSound\weap_winch1200_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_winch1200_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_winchester_1200\killIcon\hud_icon_winchester_1200\dpadIcon\\ammoCounterIcon\hud_icon_winchester_1200\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Shotgun\flipKillIcon\1\fireRumble\shotgun_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\tag_ak47_mount -tag_reflex_sight -tag_foregrip\notetrackSoundMap\melee_knife_stab melee_knife_stab -weap_winch1200_start_plr weap_winch1200_start_plr -weap_winch1200_loop_plr weap_winch1200_loop_plr -weap_winch1200_end_plr weap_winch1200_end_plr -weap_winch1200_pump_plr weap_winch1200_pump_plr \ No newline at end of file +WEAPONFILE\displayName\WEAPON_WINCHESTER1200\modeName\\playerAnimType\other\altWeapon\\AIOverlayDescription\\weaponType\bullet\weaponClass\spread\penetrateType\small\impactType\shotgun\inventoryType\primary\fireType\Single Shot\twoHanded\1\rifleBullet\0\armorPiercing\0\boltAction\1\aimDownSight\1\rechamberWhileAds\1\noPartialReload\0\segmentedReload\1\adsFire\0\noAdsWhenMagEmpty\0\avoidDropCleanup\0\enhanced\0\cancelAutoHolsterWhenEmpty\0\suppressAmmoReserveDisplay\0\laserSightDuringNightvision\0\blocksProne\0\silenced\0\autoAimRange\0\aimAssistRange\600\aimAssistRangeAds\1000\enemyCrosshairRange\0\crosshairColorChange\0\moveSpeedScale\1\adsMoveSpeedScale\2\sprintDurationScale\1\gunMaxPitch\80\gunMaxYaw\15\lowAmmoWarningThreshold\0.33\ammoName\12 gauge\maxAmmo\56\startAmmo\28\clipName\winchester1200_mp\clipSize\7\shotCount\8\dropAmmoMin\1\dropAmmoMax\7\reloadAmmoAdd\1\reloadStartAdd\1\damage\40\minDamage\10\meleeDamage\135\maxDamageRange\300\minDamageRange\500\playerDamage\30\locNone\1\locHelmet\1\locHead\1\locNeck\1\locTorsoUpper\1\locTorsoLower\1\locRightArmUpper\1\locRightArmLower\1\locRightHand\1\locLeftArmUpper\1\locLeftArmLower\1\locLeftHand\1\locRightLegUpper\1\locRightLegLower\1\locRightFoot\1\locLeftLegUpper\1\locLeftLegLower\1\locLeftFoot\1\locGun\0\fireTime\0.283\fireDelay\0\meleeTime\0.8\meleeChargeTime\1.16\meleeDelay\0.13\meleeChargeDelay\0.16\reloadTime\0.567\reloadEmptyTime\0.567\reloadStartTime\1\reloadEndTime\0.767\reloadAddTime\0.25\reloadStartAddTime\0.6\rechamberTime\0.467\rechamberBoltTime\0\dropTime\0.33\raiseTime\0.625\altDropTime\0\altRaiseTime\0\quickDropTime\0.25\quickRaiseTime\0.75\firstRaiseTime\0.625\emptyDropTime\0.33\emptyRaiseTime\0.65\sprintInTime\0.3\sprintLoopTime\0.7\sprintOutTime\0.3\nightVisionWearTime\0\nightVisionWearTimeFadeOutEnd\0\nightVisionWearTimePowerUp\0\nightVisionRemoveTime\0\nightVisionRemoveTimePowerDown\0\nightVisionRemoveTimeFadeInStart\0\standMoveF\0\standMoveR\0\standMoveU\-1.7\standRotP\0\standRotY\0\standRotR\0\standMoveMinSpeed\80\standRotMinSpeed\80\posMoveRate\6\posRotRate\6\duckedMoveF\0\duckedMoveR\0\duckedMoveU\-1.7\duckedRotP\0\duckedRotY\0\duckedRotR\0\duckedOfsF\-0.1\duckedOfsR\0.8\duckedOfsU\-0.2\duckedMoveMinSpeed\20\duckedRotMinSpeed\20\proneMoveF\-100\proneMoveR\3\proneMoveU\-105\proneRotP\0\proneRotY\220\proneRotR\-300\proneOfsF\-0.5\proneOfsR\2\proneOfsU\0.8\posProneMoveRate\25\posProneRotRate\30\proneMoveMinSpeed\0\proneRotMinSpeed\0\hipIdleAmount\30\adsIdleAmount\0\hipIdleSpeed\1\adsIdleSpeed\0.8\idleCrouchFactor\0.8\idleProneFactor\0.4\adsSpread\5.5\adsAimPitch\-0.1\adsTransInTime\0.2\adsTransOutTime\0.2\adsTransBlendTime\0.1\adsReloadTransTime\0.5\adsCrosshairInFrac\1\adsCrosshairOutFrac\0.2\adsZoomFov\55\adsZoomInFrac\0.5\adsZoomOutFrac\0.4\adsBobFactor\0\adsViewBobMult\0\adsViewErrorMin\0\adsViewErrorMax\0\hipSpreadStandMin\4\hipSpreadDuckedMin\4\hipSpreadProneMin\4\hipSpreadMax\4\hipSpreadDuckedMax\4\hipSpreadProneMax\4\hipSpreadFireAdd\0\hipSpreadTurnAdd\0\hipSpreadMoveAdd\0.1\hipSpreadDecayRate\5\hipSpreadDuckedDecay\1\hipSpreadProneDecay\1\hipGunKickReducedKickBullets\0\hipGunKickReducedKickPercent\0\hipGunKickPitchMin\50\hipGunKickPitchMax\60\hipGunKickYawMin\-30\hipGunKickYawMax\30\hipGunKickAccel\1000\hipGunKickSpeedMax\1200\hipGunKickSpeedDecay\100\hipGunKickStaticDecay\2\adsGunKickReducedKickBullets\0\adsGunKickReducedKickPercent\0\adsGunKickPitchMin\35\adsGunKickPitchMax\45\adsGunKickYawMin\-25\adsGunKickYawMax\25\adsGunKickAccel\260\adsGunKickSpeedMax\600\adsGunKickSpeedDecay\50\adsGunKickStaticDecay\10\hipViewKickPitchMin\95\hipViewKickPitchMax\100\hipViewKickYawMin\-75\hipViewKickYawMax\-85\hipViewKickCenterSpeed\500\adsViewKickPitchMin\95\adsViewKickPitchMax\100\adsViewKickYawMin\-75\adsViewKickYawMax\-85\adsViewKickCenterSpeed\500\swayMaxAngle\20\swayLerpSpeed\4\swayPitchScale\-1\swayYawScale\-1\swayHorizScale\0.3\swayVertScale\0.1\swayShellShockScale\5\adsSwayMaxAngle\2\adsSwayLerpSpeed\6\adsSwayPitchScale\0.1\adsSwayYawScale\0.1\adsSwayHorizScale\0.2\adsSwayVertScale\0.25\fightDist\720\maxDist\680\aiVsAiAccuracyGraph\\aiVsPlayerAccuracyGraph\\reticleCenter\\reticleSide\reticle_side_small\reticleCenterSize\3\reticleSideSize\8\reticleMinOfs\0\hipReticleSidePos\0\adsOverlayShader\\adsOverlayShaderLowRes\\adsOverlayReticle\none\adsOverlayWidth\220\adsOverlayHeight\220\gunModel\viewmodel_winchester1200_mp\gunModel2\viewmodel_winchester1200_mp_brock\gunModel3\viewmodel_winchester1200_mp_bshdwl\gunModel4\viewmodel_winchester1200_mp_bwmrpt\gunModel5\viewmodel_winchester1200_mp_cmdtgr\gunModel6\viewmodel_winchester1200_mp_stagger\gunModel7\\gunModel8\\gunModel9\\gunModel10\\gunModel11\\gunModel12\\gunModel13\\gunModel14\\gunModel15\\gunModel16\\handModel\viewmodel_base_viewhands\worldModel\weapon_winchest1200\worldModel2\weapon_winchest1200_mp_brock\worldModel3\weapon_winchest1200_mp_bshdwl\worldModel4\weapon_winchest1200_mp_bwmrpt\worldModel5\weapon_winchest1200_mp_cmdtgr\worldModel6\weapon_winchest1200_mp_stagger\worldModel7\\worldModel8\\worldModel9\\worldModel10\\worldModel11\\worldModel12\\worldModel13\\worldModel14\\worldModel15\\worldModel16\\worldClipModel\\knifeModel\viewmodel_knife\worldKnifeModel\weapon_parabolic_knife\idleAnim\viewmodel_winchester_idle\emptyIdleAnim\viewmodel_winchester_idle\fireAnim\viewmodel_winchester_fire\lastShotAnim\viewmodel_winchester_fire\rechamberAnim\viewmodel_winchester_rechamber\meleeAnim\viewmodel_M4m203_knife_melee_1\meleeChargeAnim\viewmodel_M4m203_knife_melee_2\reloadAnim\viewmodel_winchester_reload_loop\reloadEmptyAnim\\reloadStartAnim\viewmodel_winchester_reload_intro\reloadEndAnim\viewmodel_winchester_reload_end\raiseAnim\viewmodel_winchester_pullout_quick\dropAnim\viewmodel_winchester_putaway_quick\firstRaiseAnim\viewmodel_winchester_pullout_quick\altRaiseAnim\viewmodel_winchester_pullout_quick\altDropAnim\viewmodel_winchester_putaway_quick\quickRaiseAnim\viewmodel_winchester_pullout_quick\quickDropAnim\viewmodel_winchester_putaway_quick\emptyRaiseAnim\viewmodel_winchester_pullout\emptyDropAnim\viewmodel_winchester_putaway\sprintInAnim\viewmodel_winchester_sprint_in\sprintLoopAnim\viewmodel_winchester_sprint_loop\sprintOutAnim\viewmodel_winchester_sprint_out\nightVisionWearAnim\\nightVisionRemoveAnim\\adsFireAnim\viewmodel_winchester_fire_ads\adsLastShotAnim\viewmodel_winchester_fire\adsRechamberAnim\viewmodel_winchester_rechamber\adsUpAnim\viewmodel_winchester_ADS_up\adsDownAnim\viewmodel_winchester_ADS_down\viewFlashEffect\\worldFlashEffect\\viewShellEjectEffect\shellejects/shotgun_view\worldShellEjectEffect\shellejects/shotgun\viewLastShotEjectEffect\\worldLastShotEjectEffect\\worldClipDropEffect\\pickupSound\weap_pickup\pickupSoundPlayer\weap_pickup\ammoPickupSound\\ammoPickupSoundPlayer\\fireSound\weap_winch1200_fire_npc\fireSoundPlayer\weap_winch1200_fire_plr\lastShotSound\\lastShotSoundPlayer\\emptyFireSound\weap_dryfire_rifle_npc\emptyFireSoundPlayer\weap_dryfire_rifle_plr\meleeSwipeSound\melee_swing_large\meleeSwipeSoundPlayer\melee_winch1200_swing_plr\meleeHitSound\\meleeMissSound\\rechamberSound\weap_winch1200_pump_npc\rechamberSoundPlayer\\reloadSound\weap_winch1200_reload_npc\reloadSoundPlayer\\reloadEmptySound\weap_winch1200_reload_npc\reloadEmptySoundPlayer\\reloadStartSound\\reloadStartSoundPlayer\\reloadEndSound\\reloadEndSoundPlayer\\altSwitchSound\\altSwitchSoundPlayer\\raiseSound\weap_raise\raiseSoundPlayer\weap_raise_plr\firstRaiseSound\\firstRaiseSoundPlayer\\putawaySound\\putawaySoundPlayer\\nightVisionWearSound\\nightVisionWearSoundPlayer\\nightVisionRemoveSound\\nightVisionRemoveSoundPlayer\\hudIcon\hud_icon_winchester_1200\killIcon\hud_icon_winchester_1200\dpadIcon\\ammoCounterIcon\hud_icon_winchester_1200\hudIconRatio\4:1\killIconRatio\4:1\dpadIconRatio\4:1\ammoCounterIconRatio\4:1\ammoCounterClip\Shotgun\flipKillIcon\1\fireRumble\shotgun_fire\meleeImpactRumble\defaultweapon_melee\adsDofStart\0\adsDofEnd\10\hideTags\tag_ak47_mount +tag_reflex_sight +tag_foregrip\notetrackSoundMap\melee_knife_stab melee_knife_stab +weap_winch1200_start_plr weap_winch1200_start_plr +weap_winch1200_loop_plr weap_winch1200_loop_plr +weap_winch1200_end_plr weap_winch1200_end_plr +weap_winch1200_pump_plr weap_winch1200_pump_plr