Crimson Mage 2 Posted July 19, 2017 I am trying to edit this restriction script used by AW . I want to be able to restrict vests and helmets but I can never get it to work. I was able to do it with weapons but not anything else here is the non edited script: /* Author: Quiksilver Last modified: 23/10/2014 ArmA 1.32 by Quiksilver Description: Restricts certain weapon systems to different roles _________________________________________________*/ private ["_opticsAllowed","_specialisedOptics","_optics","_basePos","_firstRun","_insideSafezone","_outsideSafezone"]; #define AT_MSG "Only AT Soldiers may use this weapon system. Launcher removed." #define SNIPER_MSG "Only Snipers may use this weapon system. Sniper rifle removed." #define AUTOTUR_MSG "You are not allowed to use this weapon system, Backpack removed." #define UAV_MSG "Only UAV operator may use this Item, UAV terminal removed." #define OPTICS_MSG "Thermal optics such as TWS and Nightstalker are currently restricted." #define MG_MSG "Only Autoriflemen may use this weapon system. LMG removed." #define SOPT_MSG "SOS and LRPS are designated for Snipers and Spotters only. Optic removed." //===== UAV TERMINAL _uavOperator = ["B_soldier_UAV_F","B_officer_F"]; _uavRestricted = ["B_UavTerminal","O_UavTerminal","I_UavTerminal"]; //===== AT / MISSILE LAUNCHERS (excl RPG) _missileSoldiers = ["B_soldier_LAT_F","B_soldier_AA_F","B_soldier_AT_F","B_officer_F","B_recon_LAT_F"]; _missileSpecialised = ["launch_NLAW_F","launch_B_Titan_F","launch_O_Titan_F","launch_I_Titan_F","launch_B_Titan_short_F","launch_O_Titan_short_F","launch_I_Titan_short_F"]; //===== SNIPER RIFLES _snipers = ["B_sniper_F","B_officer_F"]; _sniperSpecialised = ["srifle_GM6_F","srifle_GM6_LRPS_F","srifle_GM6_SOS_F","srifle_LRR_F","srifle_LRR_LRPS_F","srifle_LRR_SOS_F","srifle_GM6_camo_F","srifle_GM6_camo_LRPS_F","srifle_GM6_camo_SOS_F","srifle_LRR_camo_F","srifle_LRR_camo_LRPS_F","srifle_LRR_camo_SOS_F"]; //===== THERMAL OPTICS _opticsAllowed = [""]; _specialisedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; //===== BACKPACKS _backpackRestricted = ["O_Mortar_01_support_F","I_Mortar_01_support_F","O_Mortar_01_weapon_F","I_Mortar_01_weapon_F","O_UAV_01_backpack_F","I_UAV_01_backpack_F","O_HMG_01_support_F","I_HMG_01_support_F","O_HMG_01_support_high_F","I_HMG_01_support_high_F","O_HMG_01_weapon_F","I_HMG_01_weapon_F","O_HMG_01_A_weapon_F","I_HMG_01_A_weapon_F","O_GMG_01_weapon_F","I_GMG_01_weapon_F","O_GMG_01_A_weapon_F","I_GMG_01_A_weapon_F","O_HMG_01_high_weapon_F","I_HMG_01_high_weapon_F","O_HMG_01_A_high_weapon_F","I_HMG_01_A_high_weapon_F","O_GMG_01_high_weapon_F","I_GMG_01_high_weapon_F","O_GMG_01_A_high_weapon_F","I_GMG_01_A_high_weapon_F","I_AT_01_weapon_F","O_AT_01_weapon_F","I_AA_01_weapon_F","O_AA_01_weapon_F"]; //===== LMG _autoRiflemen = ["B_soldier_AR_F","B_officer_F"]; _autoSpecialised = ["LMG_Mk200_F","LMG_Mk200_MRCO_F","LMG_Mk200_pointer_F","LMG_Zafir_F","LMG_Zafir_pointer_F"]; //===== _sniperTeam = ["B_sniper_F","B_spotter_F"]; _sniperOpt = ["optic_SOS","optic_LRPS"]; _basePos = getMarkerPos "respawn_west"; _szmkr = getMarkerPos "safezone_marker"; #define SZ_RADIUS 300 _EHFIRED = { deleteVehicle (_this select 6); hintC "You are discharging your weapon at base without approval. Cease your actions Immediately!"; hintC_EH = findDisplay 57 displayAddEventHandler ["unload", { 0 = _this spawn { _this select 0 displayRemoveEventHandler ["unload", hintC_EH]; hintSilent ""; }; }]; }; _firstRun = TRUE; if (_firstRun) then { _firstRun = FALSE; if ((player distance _szmkr) <= SZ_RADIUS) then { _insideSafezone = TRUE; _outsideSafezone = FALSE; EHFIRED = player addEventHandler ["Fired",_EHFIRED]; } else { _outsideSafezone = TRUE; _insideSafezone = FALSE; }; }; restrict_Thermal = false; restrict_LMG = false; restrict_sOptics = false; if (PARAMS_rThermal != 0) then {restrict_Thermal = true;}; if (PARAMS_rLMG != 0) then {restrict_LMG = true;}; if (PARAMS_rSOptics != 0) then {restrict_sOptics = true;}; while {true} do { //------------------------------------- Launchers if (({player hasWeapon _x} count _missileSpecialised) > 0) then { if (({player isKindOf _x} count _missileSoldiers) < 1) then { player removeWeapon (secondaryWeapon player); titleText [AT_MSG,"PLAIN",3]; }; }; sleep 1; //------------------------------------- Sniper Rifles if (({player hasWeapon _x} count _sniperSpecialised) > 0) then { if (({player isKindOf _x} count _snipers) < 1) then { player removeWeapon (primaryWeapon player); titleText [SNIPER_MSG,"PLAIN",3]; }; }; sleep 1; //------------------------------------- UAV _assignedItems = assignedItems player; if (({"B_UavTerminal" == _x} count _assignedItems) > 0) then { if (({player isKindOf _x} count _uavOperator) < 1) then { player unassignItem "B_UavTerminal"; player removeItem "B_UavTerminal"; titleText [UAV_MSG,"PLAIN",3]; }; }; sleep 1; //------------------------------------- Thermal optics if (restrict_Thermal) then { _optics = primaryWeaponItems player; if (({_x in _optics} count _specialisedOptics) > 0) then { if (({player isKindOf _x} count _opticsAllowed) < 1) then { {player removePrimaryWeaponItem _x;} count _specialisedOptics; titleText [OPTICS_MSG,"PLAIN",3]; }; }; sleep 1; }; //------------------------------------- sniper optics if (restrict_sOptics) then { _optics = primaryWeaponItems player; if (({_x in _optics} count _sniperOpt) > 0) then { if (({player isKindOf _x} count _sniperTeam) < 1) then { {player removePrimaryWeaponItem _x;} count _sniperOpt; titleText [SOPT_MSG,"PLAIN",3]; }; }; sleep 1; }; //------------------------------------- LMG if (restrict_LMG) then { if (({player hasWeapon _x} count _autoSpecialised) > 0) then { if (({player isKindOf _x} count _autoRiflemen) < 1) then { player removeWeapon (primaryWeapon player); titleText [MG_MSG,"PLAIN",3]; }; }; sleep 1; }; //------------------------------------- Opfor turret backpacks if ((backpack player) in _backpackRestricted) then { removeBackpack player; titleText [AUTOTUR_MSG, "PLAIN", 3]; }; //===================================== SAFE ZONE MANAGER _szmkr = getMarkerPos "safezone_marker"; if (_insideSafezone) then { if ((player distance _szmkr) > SZ_RADIUS) then { _insideSafezone = FALSE; _outsideSafezone = TRUE; player removeEventHandler ["Fired",EHFIRED]; }; }; sleep 2; if (_outsideSafezone) then { if ((player distance _szmkr) < SZ_RADIUS) then { _outsideSafezone = FALSE; _insideSafezone = TRUE; EHFIRED = player addEventHandler ["Fired",_EHFIRED]; }; }; //----- Sleep _basePos = getMarkerPos "respawn_west"; if ((player distance _basePos) <= 500) then { sleep 1; } else { sleep 20; }; }; I need help with this: //------------------------------------- 101 if (({"Armor101","Armor101roz","Armor101serg" == _x} count _101Restricted) > 0) then { if (({player isKindOf _x} count _clone101) < 1) then { player removeVest; titleText [UAV_MSG,"PLAIN",3]; }; }; Any help will be extremely appreciated. Share this post Link to post Share on other sites
7erra 629 Posted July 19, 2017 First of all you have to define anyone who's allowed to have a certain vest: _vestBearer = ["B_officer_F","unit_classname"]; Then you can add the restricted vests: _restrictedVests = ["vest_classnames",...]; And now add this to the while loop: if (vest player in _restrictedVests) then { if (({player isKindOf _x} count _vestBearer) < 1) then { removeVest player; // Add custom message if needed }; }; You can define your own message with #define VEST_MSG "*your description*" ... // Call it with: titleText [VEST_MSG, "PLAIN",3]; 1 Share this post Link to post Share on other sites
Crimson Mage 2 Posted July 19, 2017 @7erra OMG Thank you so much. For Helmets i just change "vest" to "headgear" like removeHeadgear and Headgear player in the while loop right? Share this post Link to post Share on other sites
Crimson Mage 2 Posted July 20, 2017 @7erra It doesn't seem to be working with this. Quote if (headgear player in _101Restricted) then { if (({player isKindOf _x} count _clone101) < 1) then { removeHeadgear player; // Add custom message if needed }; When I do that all of the restrictions don't work. It also breaks when I add the message. Can you have have multiple of these Quote if (headgear player in _101Restricted) then { if (({player isKindOf _x} count _clone101) < 1) then { removeHeadgear player; // Add custom message if needed }; Bound to this: Quote _clone101 = ["SWOP_101_mg","SWOP_101_a"]; _101Restricted = ["Clone101slicer","Clone101serg","Clone101roz","Clone101ash","Clone101","Armor101","Armor101roz","Armor101serg","CloneP3_F101_CombatUniform","CloneP3_F101roz_CombatUniform","CloneP3_F101serg_CombatUniform"]; Share this post Link to post Share on other sites
das attorney 858 Posted July 20, 2017 You should get in contact with Quicksilver - he wrote it so would most likely know. Share this post Link to post Share on other sites
7erra 629 Posted July 20, 2017 8 hours ago, Crimson Mage said: if (headgear player in _101Restricted) then { if (({player isKindOf _x} count _clone101) < 1) then { removeHeadgear player; // Add custom message if needed }; Missing }; at the end. Correct: if (headgear player in _101Restricted) then { if (({player isKindOf _x} count _clone101) < 1) then { removeHeadgear player; // Add custom message if needed }; }; Share this post Link to post Share on other sites
fn_Quiksilver 1636 Posted July 20, 2017 One thing to think about, if you're using the launcher/weapon restrictions, there are some newer weapon classes (Apex camo) for some of the launchers and sniper rifles that dont appear to be in those lists. you'll be able to find those classnames here https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Weapons search for partial keyword like "launch" or "GM6" Share this post Link to post Share on other sites
Crimson Mage 2 Posted July 20, 2017 Yes! I finally did it. I found out it was actually because I did 101_MSG and it wouldn't work for me because I used numbers. When I deleted the numbers it worked! Share this post Link to post Share on other sites
csk222 23 Posted August 27, 2017 (edited) Hello. I want to restrict multiple things BUT not by role (Just straight up restrict). If this is how I remove clothing (headgear, backpack, vest, uniform etc.) _bomsf_headgear = ["H_HelmetO_ViperSP_ghex_F","H_HelmetO_ViperSP_hex_F"]; while {true} do { // Headgear if (headgear player in _bomsf_headgear) then { removeHeadgear player; }; }; How could I remove weapon items and goggles using something like this? _bomsf_item = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; _bomsf_nvg = ["NVGogglesB_blk_F","NVGogglesB_grn_F","NVGogglesB_gry_F"]; This is how I currently do it. while {true} do { // Thermal Scopes player unassignItem "optic_Nightstalker"; player removeItem "optic_Nightstalker"; player removePrimaryWeaponItem "optic_Nightstalker"; player unassignItem "optic_tws"; player removeItem "optic_tws"; player removePrimaryWeaponItem "optic_tws"; player unassignItem "optic_tws_mg"; player removeItem "optic_tws_mg"; player removePrimaryWeaponItem "optic_tws_mg"; // Thermal Goggles player unassignItem "NVGogglesB_blk_F"; player removeItem "NVGogglesB_blk_F"; player unassignItem "NVGogglesB_grn_F"; player removeItem "NVGogglesB_grn_F"; player unassignItem "NVGogglesB_gry_F"; player removeItem "NVGogglesB_gry_F"; }; Update: Spoiler /* Author: Quiksilver 23/10/2014 ArmA 1.32 Description: Restricts weapons and items Edit By: CSK222 bomsfARMA3@gmail.com */ private ["_bomsf_optics","_optics","_bomsf_goggles","_bomsf_headgear"]; #define msg_optics "Thermal Optics Are Restricted." #define msg_goggles "Thermal Goggles Are Restricted." #define msg_headgear "Thermal Headgear Is Restricted." // Optics _bomsf_optics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; // NVGs _bomsf_goggles = ["NVGogglesB_gry_F","NVGogglesB_grn_F","NVGogglesB_blk_F"]; // Headgear _bomsf_headgear = ["H_HelmetO_ViperSP_ghex_F","H_HelmetO_ViperSP_hex_F"]; while {true} do { //Optics _optics = primaryWeaponItems player; if (({_x in _optics} count _bomsf_optics) > 0) then { {player removePrimaryWeaponItem _x;} count _bomsf_optics; titleText [msg_optics,"PLAIN",0.7]; sleep 1; }; // NVGs if (hmd player in _bomsf_goggles) then { player unlinkItem "NVGogglesB_gry_F"; player unlinkItem "NVGogglesB_grn_F"; player unlinkItem "NVGogglesB_blk_F"; titleText [msg_goggles,"PLAIN",0.7]; }; // Headgear if (headgear player in _bomsf_headgear) then { removeHeadgear player; titleText [msg_headgear,"PLAIN",0.7]; }; }; Edited September 2, 2017 by csk222 What I ended up with Share this post Link to post Share on other sites