Skip to content
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Donate
Collapse

Plutonium

  1. Home
  2. BO2 Modding Support & Discussion
  3. [Resource] Weapons and attachments restriction !Code

[Resource] Weapons and attachments restriction !Code

Scheduled Pinned Locked Moved BO2 Modding Support & Discussion
9 Posts 4 Posters 1.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Kalitosundefined Offline
    Kalitosundefined Offline
    Kalitos
    wrote on last edited by Kalitos
    #1

    I want to share what I have done these days.
    As you know, the bo2 server restrictions are not very effective especially on attachments, that's why I started to make my own script for it, of course thanks to the help of some of the people on the Forum.

    It is not very complete, but it achieves what I need.

    • Restrict weapons that are defined within the list of restricted weapons.
    • Restrict the attachments you define within the list of restricted attachments. // Except Dual Wield, it is strange, it does not recognize it.
    • Additional, disables the use of kill streaks.

    It is especially designed for a SyD game mode

    Something to keep in mind, you must remove any weapons you have restricted in the server's restricted file of restrictions. If it does not, and select a weapon that is in that file when the player appears, it will have 1 additional weapon, which will be assigned as a replacement by the server's own restraint system.

    =====
    CODE :::: UPDATE: 10/04/2020

    /*
    *	 Black Ops 2 - GSC Studio by iMCSx
    *
    *	 Creator : Kalitos
    *	 Project : Restriccion de armas
    *    Mode : Multiplayer
    *	 Date : 2020/04/05 - 13:35:30	
    *
    */	
    
    #include maps\mp\_utility;
    #include common_scripts\utility;
    #include maps\mp\gametypes\_hud_util;
    #include maps\mp\gametypes\_hud_message;
    
    
    init()
    {
    
    	level.loadoutkillstreaksenabled = false;
    	level.AttachmentRestrict="+silencer,+rf,+dw,+gl,+rangefinder,+fmj,+mms,+ir";
        level.WeaponRestrict= "mp7_mp,mk48_mp,qbb95_mp,lsat_mp,hamr_mp,svu_mp,as50_mp,smaw_mp,usrpg_mp";  
        level thread onPlayerConnect();  
    	 
    }
    
    onPlayerConnect()
    {	
        for(;;)
        {
            level waittill("connected", player);        
            player thread onPlayerSpawned();
            player thread doChangeClass();
         }
    }
    
    onPlayerSpawned()
    {
        self endon("disconnect");
    	level endon("game_ended");
        for(;;)
        {
        	self waittill("spawned_player");    	
        	if(!isDefined(self.isFirstSpawn))
    		{
    		self iprintln("^5Black Ops 2 - Script ^7| ^5Weapons ^7and ^5attachments ^7restriction ^5| ^7By: ^2Kalitos"); 
           	
    		}        
    	}
    }
    
    doChangeClass()
    {
       	self endon("disconnect");
       	level endon("game_ended");
    	for(;;)
    	{
    		self waittill_any("changed_class", "spawned_player");				
    		if ( level.inGracePeriod && !self.hasDoneCombat ) // used weapons check?
    		{
    			//player.checkChangeClass = true;
    			changeWeaponsOnClass();
    			self notify ("change_class_complete");
    		}
    	}
    }
    
    
    getNumClass(class)
    {
    	if ( issubstr( class, "CLASS_CUSTOM" ) )
    			{				
    				switch ( class )
    				{
    					case "CLASS_CUSTOM1": 
    						class_num1=0;
    						 break;    
    					case "CLASS_CUSTOM2": 
    						class_num1=1;
    						 break;    
    					case "CLASS_CUSTOM3": 
    						class_num1=2;
    						 break;    
    					case "CLASS_CUSTOM4": 
    						class_num1=3;
    						 break;    
    					case "CLASS_CUSTOM5": 
    						class_num1=4;
    						 break;    
    					case "CLASS_CUSTOM6": 
    						class_num1=5;
    						 break;    
    					case "CLASS_CUSTOM7": 
    						class_num1=6;
    						 break;    
    					case "CLASS_CUSTOM8": 
    						class_num1=7;
    						 break;    
    					case "CLASS_CUSTOM9": 
    						class_num1=8;
    						 break;    
    					case "CLASS_CUSTOM10": 
    						class_num1=9;
    						 break;    						
    					default : 						
    						 break;    
    				}				
    				return class_num1;
    			}
    			else
    			{
    				return level.classtoclassnum[class ];
    			}
    }
    
    changeWeaponsOnClass()
    {
    	//self endon("disconnect");
    	//level endon("game_ended");
    	//self endon("round_ended");
    	self endon("change_class_complete");
    	
    		class_num1 = getNumClass(self.class);
    		weaponP = self getloadoutweapon( class_num1, "primary" );
    		weaponS = self getloadoutweapon( class_num1, "secondary" );
    		//self iprintln(weaponP + " :: " + weaponS);
    		//self getloadoutitem( class_num, "primarygrenadecount" );					
    		NWeaponP= getClearWeaponAttachment(weaponP); // Remove all attachment restrict
    		NweaponS= getClearWeaponAttachment(weaponS); // Remove all attachment restrict	
    		if(NWeaponP!=weaponP)
    		{
    			self takeWeapon(weaponP);
    			self giveWeapon(NWeaponP);
    			self switchToWeapon(NWeaponP);			
    		}
    		if(NWeaponS!=weaponS)
    		{
    			self takeWeapon(weaponS);
    			self giveWeapon(NWeaponS);
    		}else
    		{  
    			restriccionAt = strTok(level.AttachmentRestrict,",");
    			arrayWeapon = strTok(Weapon,"+");
    			if(isInArray(arrayWeapon,"+dw")) // If pistol has +dw
    			{
    				if (getWeaponClassOfArray(weaponS) == "weapon_pistol" && getSizeArrayWeaponSrTok(weaponS)==1)
    				{
    					self takeWeapon(weaponS);
    					self giveWeapon("beretta93r_mp");
    				}		
    			}
    			
    								
    		}
    }
    
    getSizeArrayWeaponSrTok(array)
    {
    	arrayWeapon = strTok(array,"+");
    	return arrayWeapon.size;
    }
    
    getWeaponClassOfArray(Weapon)
    {
    	arrayWeapon = strTok(Weapon,"+");
    	return getWeaponClass(arrayWeapon[0]);
    }
    
    getClearWeaponAttachment(Weapon)
    {
    	restriccionAt = strTok(level.AttachmentRestrict,",");
    	arrayWeapon = strTok(Weapon,"+");
    	NewWeapon = "";
    	
    	if (checkWeaponNotAllowed(Weapon)==1) // If is a weapon restrict
    		{
    			arrayWeapon[0]= getWeaponAllowed(Weapon); // Replace weapon with aleatory weapon allowed ( Same Type that weapon restrict )			
    		}
    	
    	for (j=0;j<	arrayWeapon.size; j++)
    	{
    		if(j==0) // Is the weapon
    		{
    			temp=arrayWeapon[j];
    		}else
    		{
    			temp="+"+arrayWeapon[j];
    		}
    		if(!isInArray(restriccionAt, temp))
    		{
    			NewWeapon=NewWeapon+temp;
    		}
    	}
    	
    	return NewWeapon;
    }
    
    
    checkWeaponNotAllowed(Weapon)
    {
    	restriccionWeapon = strTok(level.WeaponRestrict,",");
    	arrayWeapon = strTok(Weapon,"+");
    	if(isInArray(restriccionWeapon, arrayWeapon[0]))
    		{			
    			return 1;
    		}
    
     	return 0;
    }
    
    getWeaponAllowed(Weapon)
    {
    	restriccionWeapon = strTok(level.WeaponRestrict,",");
    	arrayWeapon = strTok(Weapon,"+");
    	arrayWeaponAllowed=WeaponsArray(getWeaponClass(arrayWeapon[0]));
    	randomWeapon= "";
    	while(true)
    	{
    		randomWeaponIndex = randomInt(arrayWeaponAllowed.size);
    		randomWeapon = arrayWeaponAllowed[randomWeaponIndex];
    		if(!isInArray(restriccionWeapon,randomWeapon))
    		{
    		 break;
    		}
    	}
    	
    	return randomWeapon;
    }
    
    WeaponsArray(category)
    {
    level.WeaponArray["All"][0] = "tar21_mp";
    level.WeaponArray["All"][1] = "type95_mp";
    level.WeaponArray["All"][2] = "sig556_mp";
    level.WeaponArray["All"][3] = "sa58_mp";
    level.WeaponArray["All"][4] = "hk416_mp";
    level.WeaponArray["All"][5] = "scar_mp";
    level.WeaponArray["All"][6] = "saritch_mp";
    level.WeaponArray["All"][7] = "xm8_mp";
    level.WeaponArray["All"][8] = "an94_mp";
    level.WeaponArray["All"][9] = "peacekeeper_mp";
    level.WeaponArray["All"][10] = "870mcs_mp";
    level.WeaponArray["All"][11] = "saiga12_mp";
    level.WeaponArray["All"][12] = "ksg_mp";
    level.WeaponArray["All"][13] = "srm1216_mp";
    level.WeaponArray["All"][14] = "mk48_mp";
    level.WeaponArray["All"][15] = "qbb95_mp";
    level.WeaponArray["All"][16] = "lsat_mp";
    level.WeaponArray["All"][17] = "hamr_mp";
    level.WeaponArray["All"][18] = "mp7_mp";
    level.WeaponArray["All"][19] = "pdw57_mp";
    level.WeaponArray["All"][20] = "vector_mp";
    level.WeaponArray["All"][21] = "insas_mp";
    level.WeaponArray["All"][22] = "qcw05_mp";
    level.WeaponArray["All"][23] = "evoskorpion_mp";
    level.WeaponArray["All"][24] = "svu_mp";
    level.WeaponArray["All"][25] = "dsr50_mp";
    level.WeaponArray["All"][26] = "ballista_mp";
    level.WeaponArray["All"][27] = "as50_mp";
    level.WeaponArray["All"][28] = "fiveseven_mp";
    level.WeaponArray["All"][29] = "fnp45_mp";
    level.WeaponArray["All"][30] = "beretta93r_mp";
    level.WeaponArray["All"][31] = "judge_mp";
    level.WeaponArray["All"][32] = "kard_mp";
    level.WeaponArray["All"][33] = "smaw_mp";
    level.WeaponArray["All"][34] = "usrpg_mp";
    level.WeaponArray["All"][35] = "fhj18_mp";
    level.WeaponArray["All"][36] = "crossbow_mp";
    level.WeaponArray["All"][37] = "knife_ballistic_mp";
    level.WeaponArray["All"][38] = "knife_held_mp";
    level.WeaponArray["All"][39] = "frag_grenade_mp";
    level.WeaponArray["All"][40] = "hatchet_mp";
    level.WeaponArray["All"][41] = "sticky_grenade_mp";
    level.WeaponArray["All"][42] = "satchel_charge_mp";
    level.WeaponArray["All"][43] = "bouncingbetty_mp";
    level.WeaponArray["All"][44] = "claymore_mp";
    level.WeaponArray["All"][45] = "flash_grenade_mp";
    level.WeaponArray["All"][46] = "smoke_center_mp";
    level.WeaponArray["All"][47] = "concussion_grenade_mp";
    level.WeaponArray["All"][48] = "emp_grenade_mp";
    level.WeaponArray["All"][49] = "sensor_grenade_mp";
    level.WeaponArray["All"][50] = "pda_hack_mp";
    level.WeaponArray["All"][51] = "tactical_insertion_mp";
    level.WeaponArray["All"][52] = "proximity_grenade_mp";
    level.WeaponArray["Assault"][0] = "tar21_mp";
    level.WeaponArray["Assault"][1] = "type95_mp";
    level.WeaponArray["Assault"][2] = "sig556_mp";
    level.WeaponArray["Assault"][3] = "sa58_mp";
    level.WeaponArray["Assault"][4] = "hk416_mp";
    level.WeaponArray["Assault"][5] = "scar_mp";
    level.WeaponArray["Assault"][6] = "saritch_mp";
    level.WeaponArray["Assault"][7] = "xm8_mp";
    level.WeaponArray["Assault"][8] = "an94_mp";
    level.WeaponArray["Assault"][9] = "peacekeeper_mp";
    level.WeaponArray["Shotgun"][0] = "870mcs_mp";
    level.WeaponArray["Shotgun"][1] = "saiga12_mp";
    level.WeaponArray["Shotgun"][2] = "ksg_mp";
    level.WeaponArray["Shotgun"][3] = "srm1216_mp";
    level.WeaponArray["LMG"][0] = "mk48_mp";
    level.WeaponArray["LMG"][1] = "qbb95_mp";
    level.WeaponArray["LMG"][2] = "lsat_mp";
    level.WeaponArray["LMG"][3] = "hamr_mp";
    level.WeaponArray["SMG"][0] = "mp7_mp";
    level.WeaponArray["SMG"][1] = "pdw57_mp";
    level.WeaponArray["SMG"][2] = "vector_mp";
    level.WeaponArray["SMG"][3] = "insas_mp";
    level.WeaponArray["SMG"][4] = "qcw05_mp";
    level.WeaponArray["SMG"][5] = "evoskorpion_mp";
    level.WeaponArray["Sniper"][0] = "svu_mp";
    level.WeaponArray["Sniper"][1] = "dsr50_mp";
    level.WeaponArray["Sniper"][2] = "ballista_mp";
    level.WeaponArray["Sniper"][3] = "as50_mp";
    level.WeaponArray["Pistol"][0] = "fiveseven_mp";
    level.WeaponArray["Pistol"][1] = "fnp45_mp";
    level.WeaponArray["Pistol"][2] = "beretta93r_mp";
    level.WeaponArray["Pistol"][3] = "judge_mp";
    level.WeaponArray["Pistol"][4] = "kard_mp";
    level.WeaponArray["Launcher"][0] = "smaw_mp";
    level.WeaponArray["Launcher"][1] = "usrpg_mp";
    level.WeaponArray["Launcher"][2] = "fhj18_mp";
    level.WeaponArray["Special"][0] = "crossbow_mp";
    level.WeaponArray["Special"][1] = "knife_ballistic_mp";
    level.WeaponArray["Special"][2] = "knife_held_mp";
    level.WeaponArray["Lethal"][0] = "frag_grenade_mp";
    level.WeaponArray["Lethal"][1] = "hatchet_mp";
    level.WeaponArray["Lethal"][2] = "sticky_grenade_mp";
    level.WeaponArray["Lethal"][3] = "satchel_charge_mp";
    level.WeaponArray["Lethal"][4] = "bouncingbetty_mp";
    level.WeaponArray["Lethal"][5] = "claymore_mp";
    level.WeaponArray["Tactical"][0] = "flash_grenade_mp";
    level.WeaponArray["Tactical"][1] = "smoke_center_mp";
    level.WeaponArray["Tactical"][2] = "concussion_grenade_mp";
    level.WeaponArray["Tactical"][3] = "emp_grenade_mp";
    level.WeaponArray["Tactical"][4] = "sensor_grenade_mp";
    level.WeaponArray["Tactical"][5] = "pda_hack_mp";
    level.WeaponArray["Tactical"][6] = "tactical_insertion_mp";
    level.WeaponArray["Tactical"][7] = "proximity_grenade_mp";
    
    if (category == "All")
    return level.WeaponArray["All"];
    else if(category == "weapon_assault")
    return level.WeaponArray["Assault"];
    else if(category == "weapon_shotgun")
    return level.WeaponArray["Shotgun"];
    else if(category == "weapon_lmg")
    return level.WeaponArray["Assault"]; //Replace with assault if you block all LMG
    else if(category == "weapon_smg")
    return level.WeaponArray["SMG"];
    else if(category == "weapon_sniper")
    return level.WeaponArray["Sniper"];
    else if(category == "weapon_pistol")
    return level.WeaponArray["Pistol"];
    else if(category == "weapon_launcher")
    return level.WeaponArray["Pistol"]; // Replace with pistol if you block all launchers
    else if(category == "weapon_special")
    return level.WeaponArray["Special"];
    else if(category == "weapon_grenade")
    return level.WeaponArray["Lethal"];
    else if(category == "Tactical")
    return level.WeaponArray["Tactical"];
    }
    vituhdsundefined 1 Reply Last reply
    0
    • TheHiddenHourundefined Offline
      TheHiddenHourundefined Offline
      TheHiddenHour Contributor
      wrote on last edited by
      #2

      Look into level.givecustomloadout. It's a better method than rigging up your own class monitor.

      Kalitosundefined 1 Reply Last reply
      0
      • Kalitosundefined Offline
        Kalitosundefined Offline
        Kalitos
        replied to TheHiddenHour on last edited by
        #3

        TheHiddenHour Thank you for your observation, I will try to review it.

        1 Reply Last reply
        0
        • B4N3undefined Offline
          B4N3undefined Offline
          B4N3 VIP
          wrote on last edited by
          #4

          Kalitos said in [Resource] Weapons and attachments restriction !Code:

          Restrict the attachments you define within the list of restricted attachments.

          Thanks for providing this. I just started a thread related to this and someone linked ur thread. I am only trying to remove the mms and target finder. I am not into coding at all, so not sure what I would need to change in ur script above or what to put that script into. Thanks for suggestions you might have.

          https://forum.plutonium.pw/topic/1121/removing-mms-target-finder-attachments-bo2/2?_=1587664126629

          Kalitosundefined 1 Reply Last reply
          0
          • Kalitosundefined Offline
            Kalitosundefined Offline
            Kalitos
            replied to B4N3 on last edited by Kalitos
            #5

            @Vexbane You must copy the code and compile it with "Black Op2 - GSC Studio" and name it as "_clientids.gsc" and place it in your server folder, here is a guide on how to load scripts in BO2.
            The lines that interest you are these:

            This list adds the accessories that you will not allow on your server, you must do it separated by a "," and the name of each accessory as it is in gsc code.. Yours are +mms and +rangefinder, they are already included in the list.

            level.AttachmentRestrict="+silencer,+rf,+dw,+gl,+rangefinder,+fmj,+mms,+ir";

            Here is the list of weapons that you will not allow on your server.

            evel.WeaponRestrict= "mp7_mp,mk48_mp,qbb95_mp,lsat_mp,hamr_mp,svu_mp,as50_mp,smaw_mp,usrpg_mp";

            B4N3undefined 1 Reply Last reply
            0
            • B4N3undefined Offline
              B4N3undefined Offline
              B4N3 VIP
              replied to Kalitos on last edited by B4N3
              #6

              Kalitos
              awesome.. ty.. i will give try soon and report back

              I dont want to restrict any weapons at this time.. the only thing wanting to change is remove the mms and target finder

              Kalitosundefined 1 Reply Last reply
              0
              • Kalitosundefined Offline
                Kalitosundefined Offline
                Kalitos
                replied to B4N3 on last edited by
                #7

                @Vexbane in this case, leave the weapon list like this level.WeaponRestrict = "";

                B4N3undefined 1 Reply Last reply
                0
                • B4N3undefined Offline
                  B4N3undefined Offline
                  B4N3 VIP
                  replied to Kalitos on last edited by
                  #8

                  Kalitos

                  finally getting time to try to test this stuff out.

                  I had created that thread I linked above ( https://forum.plutonium.pw/topic/1121/removing-mms-target-finder-attachments-bo2/2?_=1587664126629 ) - before I found your thread and replied to it. since then TheHiddenHour posted there.

                  Trying not to double ask the same questions on both threads to keep things more simple. If you wouldnt mind / have time if to post on there, I would be grateful.

                  Thank you!

                  1 Reply Last reply
                  0
                  • vituhdsundefined Offline
                    vituhdsundefined Offline
                    vituhds
                    replied to Kalitos on last edited by
                    #9
                    This post is deleted!
                    1 Reply Last reply
                    0

                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Donate