Advertisement
Guest User

Untitled

a guest
May 4th, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 23.66 KB | None | 0 0
  1. #include maps\mp\_utility;
  2.  
  3. init()
  4. {
  5.     switch(game["allies"])
  6.     {
  7.     case "american":
  8.         precacheItem("frag_grenade_american_mp");
  9.         precacheItem("smoke_grenade_american_mp");
  10.         precacheItem("colt_mp");
  11.         precacheItem("m1carbine_mp");
  12.         precacheItem("m1garand_mp");
  13.         precacheItem("thompson_mp");
  14.         precacheItem("bar_mp");
  15.         precacheItem("springfield_mp");
  16.         precacheItem("greasegun_mp");
  17.         precacheItem("shotgun_mp");
  18.         //precacheItem("30cal_mp");
  19.         //precacheItem("M9_Bazooka");
  20.         //precacheItem("springfield_mp");
  21.         precacheItem("enfield_mp");
  22.         precacheItem("enfield_scope_mp");
  23.         precacheItem("mosin_nagant_sniper_mp");
  24.         precacheItem("mosin_nagant_mp");
  25.         precacheItem("kar98k_sniper_mp");
  26.         precacheItem("kar98k_mp");
  27.         break;
  28.  
  29.     case "british":
  30.         precacheItem("frag_grenade_british_mp");
  31.         precacheItem("smoke_grenade_british_mp");
  32.         precacheItem("webley_mp");
  33.         precacheItem("enfield_mp");
  34.         precacheItem("sten_mp");
  35.         precacheItem("bren_mp");
  36.         precacheItem("enfield_scope_mp");
  37.         precacheItem("m1garand_mp");
  38.         precacheItem("thompson_mp");
  39.         precacheItem("shotgun_mp");
  40.         //precacheItem("30cal_mp");
  41.         //precacheItem("M9_Bazooka");
  42.         precacheItem("springfield_mp");
  43.         //precacheItem("enfield_mp");
  44.         //precacheItem("enfield_scope_mp");
  45.         precacheItem("mosin_nagant_sniper_mp");
  46.         precacheItem("mosin_nagant_mp");
  47.         precacheItem("kar98k_sniper_mp");
  48.         precacheItem("kar98k_mp");
  49.         break;
  50.  
  51.     case "russian":
  52.         precacheItem("frag_grenade_russian_mp");
  53.         precacheItem("smoke_grenade_russian_mp");
  54.         precacheItem("TT30_mp");
  55.         precacheItem("mosin_nagant_mp");
  56.         precacheItem("SVT40_mp");
  57.         precacheItem("PPS42_mp");
  58.         precacheItem("ppsh_mp");
  59.         precacheItem("mosin_nagant_sniper_mp");
  60.         precacheItem("shotgun_mp");
  61.         //precacheItem("dp28_mp");
  62.         //precacheItem("M9_Bazooka");
  63.         precacheItem("springfield_mp");
  64.         precacheItem("enfield_mp");
  65.         precacheItem("enfield_scope_mp");
  66.         //precacheItem("mosin_nagant_sniper_mp");
  67.         //precacheItem("mosin_nagant_mp");
  68.         precacheItem("kar98k_sniper_mp");
  69.         precacheItem("kar98k_mp");
  70.         break;
  71.     }
  72.  
  73.     precacheItem("frag_grenade_german_mp");
  74.     precacheItem("smoke_grenade_german_mp");
  75.     precacheItem("luger_mp");
  76.     precacheItem("kar98k_mp");
  77.     precacheItem("g43_mp");
  78.     precacheItem("mp40_mp");
  79.     precacheItem("mp44_mp");
  80.     precacheItem("kar98k_sniper_mp");
  81.     precacheItem("shotgun_mp");
  82.     //precacheItem("dp28_mp");
  83.     //precacheItem("panzerfaust_mp");
  84.     //precacheItem("panzerschreck_mp");
  85.     precacheItem("springfield_mp");
  86.     precacheItem("enfield_mp");
  87.     precacheItem("enfield_scope_mp");
  88.     precacheItem("mosin_nagant_sniper_mp");
  89.     precacheItem("mosin_nagant_mp");
  90.     //precacheItem("kar98k_sniper_mp");
  91.     //precacheItem("kar98k_mp");
  92.  
  93.     precacheItem("binoculars_mp");
  94.  
  95.     level.weaponnames = [];
  96.     level.weaponnames[0] = "greasegun_mp";
  97.     level.weaponnames[1] = "m1carbine_mp";
  98.     level.weaponnames[2] = "m1garand_mp";
  99.     level.weaponnames[3] = "springfield_mp";
  100.     level.weaponnames[4] = "thompson_mp";
  101.     level.weaponnames[5] = "bar_mp";
  102.     level.weaponnames[6] = "sten_mp";
  103.     level.weaponnames[7] = "enfield_mp";
  104.     level.weaponnames[8] = "enfield_scope_mp";
  105.     level.weaponnames[9] = "bren_mp";
  106.     level.weaponnames[10] = "PPS42_mp";
  107.     level.weaponnames[11] = "mosin_nagant_mp";
  108.     level.weaponnames[12] = "SVT40_mp";
  109.     level.weaponnames[13] = "mosin_nagant_sniper_mp";
  110.     level.weaponnames[14] = "ppsh_mp";
  111.     level.weaponnames[15] = "mp40_mp";
  112.     level.weaponnames[16] = "kar98k_mp";
  113.     level.weaponnames[17] = "g43_mp";
  114.     level.weaponnames[18] = "kar98k_sniper_mp";
  115.     level.weaponnames[19] = "mp44_mp";
  116.     level.weaponnames[20] = "shotgun_mp";
  117.     level.weaponnames[21] = "fraggrenade";
  118.     level.weaponnames[22] = "smokegrenade";
  119.  
  120.     level.weapons = [];
  121.     level.weapons["greasegun_mp"] = spawnstruct();
  122.     level.weapons["greasegun_mp"].server_allowcvar = "scr_allow_greasegun";
  123.     level.weapons["greasegun_mp"].client_allowcvar = "ui_allow_greasegun";
  124.     level.weapons["greasegun_mp"].allow_default = 1;
  125.  
  126.     level.weapons["m1carbine_mp"] = spawnstruct();
  127.     level.weapons["m1carbine_mp"].server_allowcvar = "scr_allow_m1carbine";
  128.     level.weapons["m1carbine_mp"].client_allowcvar = "ui_allow_m1carbine";
  129.     level.weapons["m1carbine_mp"].allow_default = 1;
  130.  
  131.     level.weapons["m1garand_mp"] = spawnstruct();
  132.     level.weapons["m1garand_mp"].server_allowcvar = "scr_allow_m1garand";
  133.     level.weapons["m1garand_mp"].client_allowcvar = "ui_allow_m1garand";
  134.     level.weapons["m1garand_mp"].allow_default = 1;
  135.  
  136.     level.weapons["springfield_mp"] = spawnstruct();
  137.     level.weapons["springfield_mp"].server_allowcvar = "scr_allow_springfield";
  138.     level.weapons["springfield_mp"].client_allowcvar = "ui_allow_springfield";
  139.     level.weapons["springfield_mp"].allow_default = 1;
  140.  
  141.     level.weapons["thompson_mp"] = spawnstruct();
  142.     level.weapons["thompson_mp"].server_allowcvar = "scr_allow_thompson";
  143.     level.weapons["thompson_mp"].client_allowcvar = "ui_allow_thompson";
  144.     level.weapons["thompson_mp"].allow_default = 1;
  145.  
  146.     level.weapons["bar_mp"] = spawnstruct();
  147.     level.weapons["bar_mp"].server_allowcvar = "scr_allow_bar";
  148.     level.weapons["bar_mp"].client_allowcvar = "ui_allow_bar";
  149.     level.weapons["bar_mp"].allow_default = 1;
  150.  
  151.     level.weapons["sten_mp"] = spawnstruct();
  152.     level.weapons["sten_mp"].server_allowcvar = "scr_allow_sten";
  153.     level.weapons["sten_mp"].client_allowcvar = "ui_allow_sten";
  154.     level.weapons["sten_mp"].allow_default = 1;
  155.  
  156.     level.weapons["enfield_mp"] = spawnstruct();
  157.     level.weapons["enfield_mp"].server_allowcvar = "scr_allow_enfield";
  158.     level.weapons["enfield_mp"].client_allowcvar = "ui_allow_enfield";
  159.     level.weapons["enfield_mp"].allow_default = 1;
  160.  
  161.     level.weapons["enfield_scope_mp"] = spawnstruct();
  162.     level.weapons["enfield_scope_mp"].server_allowcvar = "scr_allow_enfieldsniper";
  163.     level.weapons["enfield_scope_mp"].client_allowcvar = "ui_allow_enfieldsniper";
  164.     level.weapons["enfield_scope_mp"].allow_default = 1;
  165.  
  166.     level.weapons["bren_mp"] = spawnstruct();
  167.     level.weapons["bren_mp"].server_allowcvar = "scr_allow_bren";
  168.     level.weapons["bren_mp"].client_allowcvar = "ui_allow_bren";
  169.     level.weapons["bren_mp"].allow_default = 1;
  170.  
  171.     level.weapons["PPS42_mp"] = spawnstruct();
  172.     level.weapons["PPS42_mp"].server_allowcvar = "scr_allow_pps42";
  173.     level.weapons["PPS42_mp"].client_allowcvar = "ui_allow_pps42";
  174.     level.weapons["PPS42_mp"].allow_default = 1;
  175.  
  176.     level.weapons["mosin_nagant_mp"] = spawnstruct();
  177.     level.weapons["mosin_nagant_mp"].server_allowcvar = "scr_allow_nagant";
  178.     level.weapons["mosin_nagant_mp"].client_allowcvar = "ui_allow_nagant";
  179.     level.weapons["mosin_nagant_mp"].allow_default = 1;
  180.  
  181.     level.weapons["SVT40_mp"] = spawnstruct();
  182.     level.weapons["SVT40_mp"].server_allowcvar = "scr_allow_svt40";
  183.     level.weapons["SVT40_mp"].client_allowcvar = "ui_allow_svt40";
  184.     level.weapons["SVT40_mp"].allow_default = 1;
  185.  
  186.     level.weapons["mosin_nagant_sniper_mp"] = spawnstruct();
  187.     level.weapons["mosin_nagant_sniper_mp"].server_allowcvar = "scr_allow_nagantsniper";
  188.     level.weapons["mosin_nagant_sniper_mp"].client_allowcvar = "ui_allow_nagantsniper";
  189.     level.weapons["mosin_nagant_sniper_mp"].allow_default = 1;
  190.  
  191.     level.weapons["ppsh_mp"] = spawnstruct();
  192.     level.weapons["ppsh_mp"].server_allowcvar = "scr_allow_ppsh";
  193.     level.weapons["ppsh_mp"].client_allowcvar = "ui_allow_ppsh";
  194.     level.weapons["ppsh_mp"].allow_default = 1;
  195.  
  196.     level.weapons["mp40_mp"] = spawnstruct();
  197.     level.weapons["mp40_mp"].server_allowcvar = "scr_allow_mp40";
  198.     level.weapons["mp40_mp"].client_allowcvar = "ui_allow_mp40";
  199.     level.weapons["mp40_mp"].allow_default = 1;
  200.  
  201.     level.weapons["kar98k_mp"] = spawnstruct();
  202.     level.weapons["kar98k_mp"].server_allowcvar = "scr_allow_kar98k";
  203.     level.weapons["kar98k_mp"].client_allowcvar = "ui_allow_kar98k";
  204.     level.weapons["kar98k_mp"].allow_default = 1;
  205.  
  206.     level.weapons["g43_mp"] = spawnstruct();
  207.     level.weapons["g43_mp"].server_allowcvar = "scr_allow_g43";
  208.     level.weapons["g43_mp"].client_allowcvar = "ui_allow_g43";
  209.     level.weapons["g43_mp"].allow_default = 1;
  210.  
  211.     level.weapons["kar98k_sniper_mp"] = spawnstruct();
  212.     level.weapons["kar98k_sniper_mp"].server_allowcvar = "scr_allow_kar98ksniper";
  213.     level.weapons["kar98k_sniper_mp"].client_allowcvar = "ui_allow_kar98ksniper";
  214.     level.weapons["kar98k_sniper_mp"].allow_default = 1;
  215.  
  216.     level.weapons["mp44_mp"] = spawnstruct();
  217.     level.weapons["mp44_mp"].server_allowcvar = "scr_allow_mp44";
  218.     level.weapons["mp44_mp"].client_allowcvar = "ui_allow_mp44";
  219.     level.weapons["mp44_mp"].allow_default = 1;
  220.  
  221.     level.weapons["shotgun_mp"] = spawnstruct();
  222.     level.weapons["shotgun_mp"].server_allowcvar = "scr_allow_shotgun";
  223.     level.weapons["shotgun_mp"].client_allowcvar = "ui_allow_shotgun";
  224.     level.weapons["shotgun_mp"].allow_default = 1;
  225.  
  226.     level.weapons["fraggrenade"] = spawnstruct();
  227.     level.weapons["fraggrenade"].server_allowcvar = "scr_allow_fraggrenades";
  228.     level.weapons["fraggrenade"].client_allowcvar = "ui_allow_fraggrenades";
  229.     level.weapons["fraggrenade"].allow_default = 1;
  230.  
  231.     level.weapons["smokegrenade"] = spawnstruct();
  232.     level.weapons["smokegrenade"].server_allowcvar = "scr_allow_smokegrenades";
  233.     level.weapons["smokegrenade"].client_allowcvar = "ui_allow_smokegrenades";
  234.     level.weapons["smokegrenade"].allow_default = 1;
  235.  
  236.     for(i = 0; i < level.weaponnames.size; i++)
  237.     {
  238.         weaponname = level.weaponnames[i];
  239.  
  240.         if(getCvar(level.weapons[weaponname].server_allowcvar) == "")
  241.         {
  242.             level.weapons[weaponname].allow = level.weapons[weaponname].allow_default;
  243.             setCvar(level.weapons[weaponname].server_allowcvar, level.weapons[weaponname].allow);
  244.         }
  245.         else
  246.             level.weapons[weaponname].allow = getCvarInt(level.weapons[weaponname].server_allowcvar);
  247.     }
  248.  
  249.     level thread deleteRestrictedWeapons();
  250.     level thread onPlayerConnect();
  251.  
  252.     for(;;)
  253.     {
  254.         updateAllowed();
  255.         wait 5;
  256.     }
  257. }
  258.  
  259. onPlayerConnect()
  260. {
  261.     for(;;)
  262.     {
  263.         level waittill("connecting", player);
  264.  
  265.         player.usedweapons = false;
  266.  
  267.         player thread updateAllAllowedSingleClient();
  268.         player thread onPlayerSpawned();
  269.     }
  270. }
  271.  
  272. onPlayerSpawned()
  273. {
  274.     self endon("disconnect");
  275.  
  276.     for(;;)
  277.     {
  278.         self waittill("spawned_player");
  279.  
  280.         self thread watchWeaponUsage();
  281.     }
  282. }
  283.  
  284. deleteRestrictedWeapons()
  285. {
  286.     for(i = 0; i < level.weaponnames.size; i++)
  287.     {
  288.         weaponname = level.weaponnames[i];
  289.  
  290.         //if(level.weapons[weaponname].allow != 1)
  291.             //deletePlacedEntity(level.weapons[weaponname].radiant_name);
  292.     }
  293.  
  294.     // Need to not automatically give these to players if I allow restricting them
  295.     // colt_mp
  296.     // webley_mp
  297.     // TT30_mp
  298.     // luger_mp
  299.     // fraggrenade_mp
  300.     // mk1britishfrag_mp
  301.     // rgd-33russianfrag_mp
  302.     // stielhandgranate_mp
  303.  
  304.     //danith
  305.     mg42guys=getentarray("misc_turret","classname");
  306.     for (i=0;i<mg42guys.size;i++)
  307.     {
  308.         mg42guys[i] delete();
  309.     }
  310.     mg42s=getEntArray("misc_mg42","classname");
  311.  
  312.     for (i=0;i<mg42s.size;i++)
  313.     {
  314.         mg42s[i] delete();
  315.     }
  316. }
  317.  
  318. givePistol()
  319. {
  320.     weapon2 = self getweaponslotweapon("primaryb");
  321.     if(weapon2 == "none")
  322.     {
  323.         if(self.pers["team"] == "allies")
  324.         {
  325.             switch(game["allies"])
  326.             {
  327.             case "american":
  328.                 pistoltype = "colt_mp";
  329.                 break;
  330.  
  331.             case "british":
  332.                 pistoltype = "webley_mp";
  333.                 break;
  334.  
  335.             default:
  336.                 assert(game["allies"] == "russian");
  337.                 pistoltype = "TT30_mp";
  338.                 break;
  339.             }
  340.         }
  341.         else
  342.         {
  343.             assert(self.pers["team"] == "axis");
  344.             switch(game["axis"])
  345.             {
  346.             default:
  347.                 assert(game["axis"] == "german");
  348.                 pistoltype = "luger_mp";
  349.                 break;
  350.             }
  351.         }
  352.  
  353.         self takeWeapon("colt_mp");
  354.         self takeWeapon("webley_mp");
  355.         self takeWeapon("TT30_mp");
  356.         self takeWeapon("luger_mp");
  357.  
  358.         //self giveWeapon(pistoltype);
  359.         self setWeaponSlotWeapon("primaryb", pistoltype);
  360.         self giveMaxAmmo(pistoltype);
  361.     }
  362. }
  363.  
  364. giveGrenades()
  365. {
  366.     if(self.pers["team"] == "allies")
  367.     {
  368.         switch(game["allies"])
  369.         {
  370.         case "american":
  371.             grenadetype = "frag_grenade_american_mp";
  372.             smokegrenadetype = "smoke_grenade_american_mp";
  373.             break;
  374.  
  375.         case "british":
  376.             grenadetype = "frag_grenade_british_mp";
  377.             smokegrenadetype = "smoke_grenade_british_mp";
  378.             break;
  379.  
  380.         default:
  381.             assert(game["allies"] == "russian");
  382.             grenadetype = "frag_grenade_russian_mp";
  383.             smokegrenadetype = "smoke_grenade_russian_mp";
  384.             break;
  385.         }
  386.     }
  387.     else
  388.     {
  389.         assert(self.pers["team"] == "axis");
  390.         switch(game["axis"])
  391.         {
  392.         default:
  393.             assert(game["axis"] == "german");
  394.             grenadetype = "frag_grenade_german_mp";
  395.             smokegrenadetype = "smoke_grenade_german_mp";
  396.             break;
  397.         }
  398.     }
  399.  
  400.     self takeWeapon("frag_grenade_american_mp");
  401.     self takeWeapon("frag_grenade_british_mp");
  402.     self takeWeapon("frag_grenade_russian_mp");
  403.     self takeWeapon("frag_grenade_german_mp");
  404.     self takeWeapon("smoke_grenade_american_mp");
  405.     self takeWeapon("smoke_grenade_british_mp");
  406.     self takeWeapon("smoke_grenade_russian_mp");
  407.     self takeWeapon("smoke_grenade_german_mp");
  408.  
  409.     if(getcvarint("scr_allow_fraggrenades"))
  410.     {
  411.         fraggrenadecount = getWeaponBasedGrenadeCount(self.pers["weapon"]);
  412.         if(fraggrenadecount)
  413.         {
  414.             self giveWeapon(grenadetype);
  415.             self setWeaponClipAmmo(grenadetype, fraggrenadecount);
  416.         }
  417.     }
  418.  
  419.     if(getcvarint("scr_allow_smokegrenades"))
  420.     {
  421.         smokegrenadecount = getWeaponBasedSmokeGrenadeCount(self.pers["weapon"]);
  422.         if(smokegrenadecount)
  423.         {
  424.             self giveWeapon(smokegrenadetype);
  425.             self setWeaponClipAmmo(smokegrenadetype, smokegrenadecount);
  426.         }
  427.     }
  428.  
  429.     self switchtooffhand(grenadetype);
  430. }
  431.  
  432. giveBinoculars()
  433. {
  434.     self giveWeapon("binoculars_mp");
  435. }
  436.  
  437. dropWeapon()
  438. {
  439.     current = self getcurrentweapon();
  440.     if(current != "none")
  441.     {
  442.         weapon1 = self getweaponslotweapon("primary");
  443.         weapon2 = self getweaponslotweapon("primaryb");
  444.  
  445.         if(current == weapon1)
  446.             currentslot = "primary";
  447.         else
  448.         {
  449.             assert(current == weapon2);
  450.             currentslot = "primaryb";
  451.         }
  452.  
  453.         clipsize = self getweaponslotclipammo(currentslot);
  454.         reservesize = self getweaponslotammo(currentslot);
  455.  
  456.         if(clipsize || reservesize)
  457.             self dropItem(current);
  458.     }
  459. }
  460.  
  461. dropOffhand()
  462. {
  463.     current = self getcurrentoffhand();
  464.     if(current != "none")
  465.     {
  466.         ammosize = self getammocount(current);
  467.  
  468.         if(ammosize)
  469.             self dropItem(current);
  470.     }
  471. }
  472.  
  473. getWeaponBasedGrenadeCount(weapon)
  474. {
  475.     switch(weapon)
  476.     {
  477.     case "springfield_mp":
  478.     case "enfield_scope_mp":
  479.     case "mosin_nagant_sniper_mp":
  480.     case "kar98k_sniper_mp":
  481.     case "enfield_mp":
  482.     case "mosin_nagant_mp":
  483.     case "kar98k_mp":
  484.         return 3;
  485.     case "m1carbine_mp":
  486.     case "m1garand_mp":
  487.     case "SVT40_mp":
  488.     case "g43_mp":
  489.     case "bar_mp":
  490.     case "bren_mp":
  491.     case "mp44_mp":
  492.         return 2;
  493.     default:
  494.     case "thompson_mp":
  495.     case "sten_mp":
  496.     case "ppsh_mp":
  497.     case "mp40_mp":
  498.     case "PPS42_mp":
  499.     case "shotgun_mp":
  500.     case "greasegun_mp":
  501.         return 1;
  502.     }
  503. }
  504.  
  505. getWeaponBasedSmokeGrenadeCount(weapon)
  506. {
  507.     switch(weapon)
  508.     {
  509.     case "thompson_mp":
  510.     case "sten_mp":
  511.     case "ppsh_mp":
  512.     case "mp40_mp":
  513.     case "PPS42_mp":
  514.     case "shotgun_mp":
  515.     case "greasegun_mp":
  516.         return 1;
  517.     case "m1carbine_mp":
  518.     case "m1garand_mp":
  519.     case "enfield_mp":
  520.     case "mosin_nagant_mp":
  521.     case "SVT40_mp":
  522.     case "kar98k_mp":
  523.     case "g43_mp":
  524.     case "bar_mp":
  525.     case "bren_mp":
  526.     case "mp44_mp":
  527.     case "springfield_mp":
  528.     case "enfield_scope_mp":
  529.     case "mosin_nagant_sniper_mp":
  530.     case "kar98k_sniper_mp":
  531.     default:
  532.         return 0;
  533.     }
  534. }
  535.  
  536. getFragGrenadeCount()
  537. {
  538.     if(self.pers["team"] == "allies")
  539.         grenadetype = "frag_grenade_" + game["allies"] + "_mp";
  540.     else
  541.     {
  542.         assert(self.pers["team"] == "axis");
  543.         grenadetype = "frag_grenade_" + game["axis"] + "_mp";
  544.     }
  545.  
  546.     count = self getammocount(grenadetype);
  547.     return count;
  548. }
  549.  
  550. getSmokeGrenadeCount()
  551. {
  552.     if(self.pers["team"] == "allies")
  553.         grenadetype = "smoke_grenade_" + game["allies"] + "_mp";
  554.     else
  555.     {
  556.         assert(self.pers["team"] == "axis");
  557.         grenadetype = "smoke_grenade_" + game["axis"] + "_mp";
  558.     }
  559.  
  560.     count = self getammocount(grenadetype);
  561.     return count;
  562. }
  563.  
  564. isPistol(weapon)
  565. {
  566.     switch(weapon)
  567.     {
  568.     case "colt_mp":
  569.     case "webley_mp":
  570.     case "luger_mp":
  571.     case "TT30_mp":
  572.         return true;
  573.     default:
  574.         return false;
  575.     }
  576. }
  577.  
  578. isMainWeapon(weapon)
  579. {
  580.     // Include any main weapons that can be picked up
  581.  
  582.     switch(weapon)
  583.     {
  584.     case "greasegun_mp":
  585.     case "m1carbine_mp":
  586.     case "m1garand_mp":
  587.     case "thompson_mp":
  588.     case "bar_mp":
  589.     case "springfield_mp":
  590.     case "sten_mp":
  591.     case "enfield_mp":
  592.     case "bren_mp":
  593.     case "enfield_scope_mp":
  594.     case "mosin_nagant_mp":
  595.     case "SVT40_mp":
  596.     case "PPS42_mp":
  597.     case "ppsh_mp":
  598.     case "mosin_nagant_sniper_mp":
  599.     case "kar98k_mp":
  600.     case "g43_mp":
  601.     case "mp40_mp":
  602.     case "mp44_mp":
  603.     case "kar98k_sniper_mp":
  604.     case "shotgun_mp":
  605.         return true;
  606.     default:
  607.         return false;
  608.     }
  609. }
  610.  
  611. restrictWeaponByServerCvars(response)
  612. {
  613.     switch(response)
  614.     {
  615.     // American
  616.     case "m1carbine_mp":
  617.         if(!getcvarint("scr_allow_m1carbine"))
  618.         {
  619.             //self iprintln(&"MP_M1A1_CARBINE_IS_A_RESTRICTED");
  620.             response = "restricted";
  621.         }
  622.         break;
  623.  
  624.     case "m1garand_mp":
  625.         if(!getcvarint("scr_allow_m1garand"))
  626.         {
  627.             //self iprintln(&"MP_M1_GARAND_IS_A_RESTRICTED");
  628.             response = "restricted";
  629.         }
  630.         break;
  631.  
  632.     case "thompson_mp":
  633.         if(!getcvarint("scr_allow_thompson"))
  634.         {
  635.             //self iprintln(&"MP_THOMPSON_IS_A_RESTRICTED");
  636.             response = "restricted";
  637.         }
  638.         break;
  639.  
  640.     case "bar_mp":
  641.         if(!getcvarint("scr_allow_bar"))
  642.         {
  643.             //self iprintln(&"MP_BAR_IS_A_RESTRICTED_WEAPON");
  644.             response = "restricted";
  645.         }
  646.         break;
  647.  
  648.     case "springfield_mp":
  649.         if(!getcvarint("scr_allow_springfield"))
  650.         {
  651.             //self iprintln(&"MP_SPRINGFIELD_IS_A_RESTRICTED");
  652.             response = "restricted";
  653.         }
  654.         break;
  655.  
  656.     case "greasegun_mp":
  657.         if(!getcvarint("scr_allow_greasegun"))
  658.         {
  659.             //self iprintln(&"MP_GREASEGUN_IS_A_RESTRICTED");
  660.             response = "restricted";
  661.         }
  662.         break;
  663.  
  664.     case "shotgun_mp":
  665.         if(!getcvarint("scr_allow_shotgun"))
  666.         {
  667.             //self iprintln(&"MP_SHOTGUN_IS_A_RESTRICTED");
  668.             response = "restricted";
  669.         }
  670.         break;
  671.  
  672.     // British
  673.     case "enfield_mp":
  674.         if(!getcvarint("scr_allow_enfield"))
  675.         {
  676.             //self iprintln(&"MP_LEEENFIELD_IS_A_RESTRICTED");
  677.             response = "restricted";
  678.         }
  679.         break;
  680.  
  681.     case "sten_mp":
  682.         if(!getcvarint("scr_allow_sten"))
  683.         {
  684.             //self iprintln(&"MP_STEN_IS_A_RESTRICTED");
  685.             response = "restricted";
  686.         }
  687.         break;
  688.  
  689.     case "bren_mp":
  690.         if(!getcvarint("scr_allow_bren"))
  691.         {
  692.             //self iprintln(&"MP_BREN_LMG_IS_A_RESTRICTED");
  693.             response = "restricted";
  694.         }
  695.         break;
  696.  
  697.     case "enfield_scope_mp":
  698.         if(!getcvarint("scr_allow_enfieldsniper"))
  699.         {
  700.             //self iprintln(&"MP_BREN_LMG_IS_A_RESTRICTED");
  701.             response = "restricted";
  702.         }
  703.         break;
  704.  
  705.     // Russian
  706.     case "mosin_nagant_mp":
  707.         if(!getcvarint("scr_allow_nagant"))
  708.         {
  709.             //self iprintln(&"MP_MOSINNAGANT_IS_A_RESTRICTED");
  710.             response = "restricted";
  711.         }
  712.         break;
  713.  
  714.     case "SVT40_mp":
  715.         if(!getcvarint("scr_allow_svt40"))
  716.         {
  717.             //self iprintln(&"MP_MOSINNAGANT_IS_A_RESTRICTED");
  718.             response = "restricted";
  719.         }
  720.         break;
  721.  
  722.     case "PPS42_mp":
  723.         if(!getcvarint("scr_allow_pps42"))
  724.         {
  725.             //self iprintln(&"MP_PPSH_IS_A_RESTRICTED");
  726.             response = "restricted";
  727.         }
  728.         break;
  729.  
  730.     case "ppsh_mp":
  731.         if(!getcvarint("scr_allow_ppsh"))
  732.         {
  733.             //self iprintln(&"MP_PPSH_IS_A_RESTRICTED");
  734.             response = "restricted";
  735.         }
  736.         break;
  737.  
  738.     case "mosin_nagant_sniper_mp":
  739.         if(!getcvarint("scr_allow_nagantsniper"))
  740.         {
  741.             //self iprintln(&"MP_SCOPED_MOSINNAGANT_IS");
  742.             response = "restricted";
  743.         }
  744.         break;
  745.  
  746.     // German
  747.     case "kar98k_mp":
  748.         if(!getcvarint("scr_allow_kar98k"))
  749.         {
  750.             //self iprintln(&"MP_KAR98K_IS_A_RESTRICTED");
  751.             response = "restricted";
  752.         }
  753.         break;
  754.  
  755.     case "g43_mp":
  756.         if(!getcvarint("scr_allow_g43"))
  757.         {
  758.             //self iprintln(&"MP_KAR98K_IS_A_RESTRICTED");
  759.             response = "restricted";
  760.         }
  761.         break;
  762.  
  763.     case "mp40_mp":
  764.         if(!getcvarint("scr_allow_mp40"))
  765.         {
  766.             //self iprintln(&"MP_MP40_IS_A_RESTRICTED");
  767.             response = "restricted";
  768.         }
  769.         break;
  770.  
  771.     case "mp44_mp":
  772.         if(!getcvarint("scr_allow_mp44"))
  773.         {
  774.             //self iprintln(&"MP_MP44_IS_A_RESTRICTED");
  775.             response = "restricted";
  776.         }
  777.         break;
  778.  
  779.     case "kar98k_sniper_mp":
  780.         if(!getcvarint("scr_allow_kar98ksniper"))
  781.         {
  782.             //self iprintln(&"MP_SCOPED_KAR98K_IS_A_RESTRICTED");
  783.             response = "restricted";
  784.         }
  785.         break;
  786.  
  787.     case "fraggrenade":
  788.         if(!getcvarint("scr_allow_fraggrenades"))
  789.         {
  790.             //self iprintln("Frag grenades are restricted");
  791.             response = "restricted";
  792.         }
  793.         break;
  794.  
  795.     case "smokegrenade":
  796.         if(!getcvarint("scr_allow_smokegrenades"))
  797.         {
  798.             //self iprintln("Smoke grenades are restricted");
  799.             response = "restricted";
  800.         }
  801.         break;
  802.  
  803.     default:
  804.         //self iprintln(&"MP_UNKNOWN_WEAPON_SELECTED");
  805.         response = "restricted";
  806.         break;
  807.     }
  808.  
  809.     return response;
  810. }
  811.  
  812. // TODO: This doesn't handle offhands
  813. watchWeaponUsage()
  814. {
  815.     self endon("spawned_player");
  816.     self endon("disconnect");
  817.  
  818.     self.usedweapons = false;
  819.  
  820.     while(self attackButtonPressed())
  821.         wait .05;
  822.  
  823.     while(!(self attackButtonPressed()))
  824.         wait .05;
  825.  
  826.     self.usedweapons = true;
  827. }
  828.  
  829. getWeaponName(weapon)
  830. {
  831.     switch(weapon)
  832.     {
  833.     // American
  834.     case "m1carbine_mp":
  835.         weaponname = &"WEAPON_M1A1CARBINE";
  836.         break;
  837.  
  838.     case "m1garand_mp":
  839.         weaponname = &"WEAPON_M1GARAND";
  840.         break;
  841.  
  842.     case "thompson_mp":
  843.         weaponname = &"WEAPON_THOMPSON";
  844.         break;
  845.  
  846.     case "bar_mp":
  847.         weaponname = &"WEAPON_BAR";
  848.         break;
  849.  
  850.     case "springfield_mp":
  851.         weaponname = &"WEAPON_SPRINGFIELD";
  852.         break;
  853.  
  854.     case "greasegun_mp":
  855.         weaponname = &"WEAPON_GREASEGUN";
  856.         break;
  857.  
  858.     case "shotgun_mp":
  859.         weaponname = &"WEAPON_SHOTGUN";
  860.         break;
  861.  
  862. //  case "30cal_mp":
  863. //      weaponname = &"PI_WEAPON_MP_30CAL";
  864. //      break;
  865.  
  866. //  case "M9_Bazooka":
  867. //      weaponname = &"PI_WEAPON_MP_BAZOOKA";
  868. //      break;
  869.  
  870.     // British
  871.     case "enfield_mp":
  872.         weaponname = &"WEAPON_LEEENFIELD";
  873.         break;
  874.  
  875.     case "sten_mp":
  876.         weaponname = &"WEAPON_STEN";
  877.         break;
  878.  
  879.     case "bren_mp":
  880.         weaponname = &"WEAPON_BREN";
  881.         break;
  882.  
  883.     case "enfield_scope_mp":
  884.         weaponname = &"WEAPON_SCOPEDLEEENFIELD";
  885.         break;
  886.  
  887.     // Russian
  888.     case "mosin_nagant_mp":
  889.         weaponname = &"WEAPON_MOSINNAGANT";
  890.         break;
  891.  
  892.     case "SVT40_mp":
  893.         weaponname = &"WEAPON_SVT40";
  894.         break;
  895.  
  896.     case "PPS42_mp":
  897.         weaponname = &"WEAPON_PPS42";
  898.         break;
  899.  
  900.     case "ppsh_mp":
  901.         weaponname = &"WEAPON_PPSH";
  902.         break;
  903.  
  904.     case "mosin_nagant_sniper_mp":
  905.         weaponname = &"WEAPON_SCOPEDMOSINNAGANT";
  906.         break;
  907.  
  908.     //German
  909.     case "kar98k_mp":
  910.         weaponname = &"WEAPON_KAR98K";
  911.         break;
  912.  
  913.     case "g43_mp":
  914.         weaponname = &"WEAPON_G43";
  915.         break;
  916.  
  917.     case "mp40_mp":
  918.         weaponname = &"WEAPON_MP40";
  919.         break;
  920.  
  921.     case "mp44_mp":
  922.         weaponname = &"WEAPON_MP44";
  923.         break;
  924.  
  925.     case "kar98k_sniper_mp":
  926.         weaponname = &"WEAPON_SCOPEDKAR98K";
  927.         break;
  928.  
  929. //  case "panzerfaust_mp":
  930. //      weaponname = &"WEAPON_PANZERFAUST";
  931. //      break;
  932. //
  933. //  case "panzerschreck_mp":
  934. //      weaponname = &"PI_WEAPON_MP_PANZERSCHRECK";
  935. //      break;
  936. //
  937. //  case "dp28_mp":
  938. //      weaponname = &"PI_WEAPON_MP_DP28";
  939. //      break;
  940.  
  941.     default:
  942.         weaponname = &"WEAPON_UNKNOWNWEAPON";
  943.         break;
  944.     }
  945.  
  946.     return weaponname;
  947. }
  948.  
  949. useAn(weapon)
  950. {
  951.     switch(weapon)
  952.     {
  953.     case "m1carbine_mp":
  954.     case "m1garand_mp":
  955.     case "mp40_mp":
  956.     case "mp44_mp":
  957.     case "shotgun_mp":
  958.         result = true;
  959.         break;
  960.  
  961.     default:
  962.         result = false;
  963.         break;
  964.     }
  965.  
  966.     return result;
  967. }
  968.  
  969. updateAllowed()
  970. {
  971.     for(i = 0; i < level.weaponnames.size; i++)
  972.     {
  973.         weaponname = level.weaponnames[i];
  974.  
  975.         cvarvalue = getCvarInt(level.weapons[weaponname].server_allowcvar);
  976.         if(level.weapons[weaponname].allow != cvarvalue)
  977.         {
  978.             level.weapons[weaponname].allow = cvarvalue;
  979.  
  980.             thread updateAllowedAllClients(weaponname);
  981.         }
  982.     }
  983. }
  984.  
  985. updateAllowedAllClients(weaponname)
  986. {
  987.     players = getentarray("player", "classname");
  988.     for(i = 0; i < players.size; i++)
  989.         players[i] updateAllowedSingleClient(weaponname);
  990. }
  991.  
  992. updateAllowedSingleClient(weaponname)
  993. {
  994.     self setClientCvar(level.weapons[weaponname].client_allowcvar, level.weapons[weaponname].allow);
  995. }
  996.  
  997.  
  998. updateAllAllowedSingleClient()
  999. {
  1000.     for(i = 0; i < level.weaponnames.size; i++)
  1001.     {
  1002.         weaponname = level.weaponnames[i];
  1003.         self updateAllowedSingleClient(weaponname);
  1004.     }
  1005. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement