KokaKolaA3 394 Posted November 3, 2015 Hey, im trying to make a Safezone, I put in every init of a vehlice "this allowdamage false;", and i want when the vehicle drive through a trigger the vehicle damage turns on. I have a lot vehicles so i dont want to make 30 triggers for each vehicle.(at activation: veh1 or veh2 or veh3 ... allowdamage true). And i have another question, if i put in a trigger "player allowdamage true;" does every Player turns the damage on or only the one who entered the trigger? Share this post Link to post Share on other sites
Heeeere's johnny! 51 Posted November 3, 2015 Not that I would want to advertise my content, but I reckoned this to be the easiest and fastest way: _safezoneTrigger = createTrigger ["EmptyDetector", _yourSafezonePosition]; _safezoneTrigger setTriggerActivation ["ANY", "PRESENT", true]; _safezoneTrigger setTriggerArea [10, 10, 0, false]; _safezoneTrigger = [ _safezoneTrigger, {_x allowDamage false;}, {_x allowDamage true;}, true ] call fnc_triggerListChanged; Using this little script: [sCRIPT] Trigger List Changed v2.1 - Handle units which entered/left a trigger's list That way, every unit entering the trigger area (Safezone) is invulnerable. Every unit leaving the trigger area is vulnerable again. EDIT: I'm not sure right now whether this also affects the vehicle's crew, but I believe it doesn't. You might need to add some respective code to the trigger list lines above: if (_x isKindOf "Car") then {{_x allowDamage false;} forEach (crew _x);} if (_x isKindOf "Car") then {{_x allowDamage true;} forEach (crew _x);} And i have another question, if i put in a trigger "player allowdamage true;" does every Player turns the damage on or only the one who entered the trigger? Only the unit activating the trigger gets its allowDamage set. Share this post Link to post Share on other sites
bull_a 44 Posted November 3, 2015 Another way to do it: 1. Put triggers for each of the area want to protect 2. Put the following in the init.sqf file: //init.sqf MISSION_SAFEZONES = [*list of trigger names in here*]; MISSION_ALLOWSAFEZONEFIRING = false; // Allows players to fire in safezone - can be changed during mission MISSION_ALLOWSAFEZONEDAMAGE = false; // Allows players to be damaged in the safezone - can be changed during mission MISSION_SAFEZONE_FNC_INSAFEZONE = { _object = _this param [0,objnull,[objnull]]; _inSafeZone = false; if (isNull _object) exitWith {false}; _safeZones = MISSION_SAFEZONES; for "_i" from 0 to ((count _safeZones) - 1) step 1 do { _safeZone = _safeZones select _i; if ([_object,_safeZone] call BIS_fnc_inTrigger) exitWith { _inSafeZone = true; }; }; _inSafeZone; }; player addEventHandler ["Fired",{ // Checks if player is in safezone _inSafeZone = [(_this select 0)] call MISSION_SAFEZONE_FNC_INSAFEZONE; if (_inSafeZone && !MISSION_ALLOWSAFEZONEFIRING) { // Deletes projectile deleteVehicle (_this select 6); }; }; player addEventHandler ["HandleDamage",{ _inSafeZone = [(_this select 0)] call MISSION_SAFEZONE_FNC_INSAFEZONE; if !(MISSION_ALLOWSAFEZONEDAMAGE && !(_inSafeZone)) then { (_this select 0) setDamage 0; true; }; }; That means that you can change the parameters on the fly, and have multiple safezones. Hope that helps, Bull Share this post Link to post Share on other sites
schadler17 36 Posted November 3, 2015 Make a marker on map called "westSafeZone" (or "esatSafeZone" but has to be changed in script) Fix distance inside script. Change Magazine types to the magazines you use. (each case) Prevents players from firing weapons, planting c4, throwing nades/smokes, etc. Also warns player on entering/exiting Safezone // Safezone Script // Written by Schadler.C [TacBF Team] _safeZone = getMarkerPos "westSafeZone"; while {true} do { waitUntil {_safeZone distance player < 250}; sleep 2; hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>You have entered the safezone!<br/>Firing your weapon or throwing grenades is prohibited!"]; player allowDamage false; _safeZoneDamageEH = player addEventhandler["HandleDamage",{false}]; _safeZoneFiredEH = player addEventHandler ["Fired", { _unit = _this select 0; _type = _this select 5; _projectile = _this select 6; _projectileName = getText(configFile >> "CfgMagazines" >>_type >> "displayName"); switch (_type) do { deleteVehicle _projectile; case "rhs_mag_30Rnd_556x45_M855A1_Stanag": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhs_mag_30Rnd_556x45_M855A1_Stanag_Tracer_Red": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhsusf_100Rnd_556x45_soft_pouch": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhs_mag_M441_HE": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!<br/><br/>All %1s Removed From Inventory!", _projectileName]; _unit removeMagazines "rhs_mag_M441_HE"; }; case "rhs_mag_M433_HE": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!<br/><br/>All %1s Removed From Inventory!", _projectileName]; _unit removeMagazines "rhs_mag_M433_HE"; }; case "rhs_m136_mag": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhs_fgm148_Magazines_AT": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!<br/><br/>All %1s Removed From Inventory!", _projectileName]; _unit removeMagazines "rhs_fgm148_Magazines_AT"; }; case "rhsusf_20Rnd_762x51_m118_special_Mag": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhsusf_5Rnd_300winmag_xm2010": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhs_mag_m67": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "SmokeShell": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "SmokeShellBlue": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "SmokeShellRed": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "SmokeShellOrange": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "DemoCharge_Remote_Mag": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!<br/><br/>All %1s Removed From Inventory!", _projectileName]; _unit removeMagazines "DemoCharge_Remote_Mag"; }; case default { systemChat format ["%1", _this select 0]; systemChat format ["%1", _this select 1]; systemChat format ["%1", _this select 2]; systemChat format ["%1", _this select 3]; systemChat format ["%1", _this select 4]; systemChat format ["%1", _this select 5]; hint parseText format ["<t size = '1.5' color = '#FF0000'>BUG FOUND!</t><br/><br/>Please Report Ammotype (Located In Chat) To Admin/Developer!"]; }; }; }]; waitUntil {_safeZone distance player > 250}; hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>You are leaving the safezone!<br/>You are now vulnerable to enemies!"]; player allowDamage true; player removeEventhandler["HandleDamage", _safeZoneDamageEH]; player removeEventHandler["Fired", _safeZoneFiredEH]; }; 2 Share this post Link to post Share on other sites
KokaKolaA3 394 Posted November 4, 2015 Make a marker on map called "westSafeZone" (or "esatSafeZone" but has to be changed in script) Fix distance inside script. Change Magazine types to the magazines you use. (each case) Prevents players from firing weapons, planting c4, throwing nades/smokes, etc. Also warns player on entering/exiting Safezone // Safezone Script // Written by Schadler.C [TacBF Team] _safeZone = getMarkerPos "westSafeZone"; while {true} do { waitUntil {_safeZone distance player < 250}; sleep 2; hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>You have entered the safezone!<br/>Firing your weapon or throwing grenades is prohibited!"]; player allowDamage false; _safeZoneDamageEH = player addEventhandler["HandleDamage",{false}]; _safeZoneFiredEH = player addEventHandler ["Fired", { _unit = _this select 0; _type = _this select 5; _projectile = _this select 6; _projectileName = getText(configFile >> "CfgMagazines" >>_type >> "displayName"); switch (_type) do { deleteVehicle _projectile; case "rhs_mag_30Rnd_556x45_M855A1_Stanag": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhs_mag_30Rnd_556x45_M855A1_Stanag_Tracer_Red": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhsusf_100Rnd_556x45_soft_pouch": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhs_mag_M441_HE": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!<br/><br/>All %1s Removed From Inventory!", _projectileName]; _unit removeMagazines "rhs_mag_M441_HE"; }; case "rhs_mag_M433_HE": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!<br/><br/>All %1s Removed From Inventory!", _projectileName]; _unit removeMagazines "rhs_mag_M433_HE"; }; case "rhs_m136_mag": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhs_fgm148_Magazines_AT": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!<br/><br/>All %1s Removed From Inventory!", _projectileName]; _unit removeMagazines "rhs_fgm148_Magazines_AT"; }; case "rhsusf_20Rnd_762x51_m118_special_Mag": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhsusf_5Rnd_300winmag_xm2010": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!"]; _unit setAmmo [currentWeapon player, 0]; }; case "rhs_mag_m67": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "SmokeShell": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "SmokeShellBlue": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "SmokeShellRed": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "SmokeShellOrange": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Throw Grenades In Safezone!<br/><br/>All Grenades Removed From Inventory!"]; _unit removeMagazines "rhs_mag_m67"; _unit removeMagazines "SmokeShell"; _unit removeMagazines "SmokeShellBlue"; _unit removeMagazines "SmokeShellRed"; _unit removeMagazines "SmokeShellOrange"; }; case "DemoCharge_Remote_Mag": { hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>Do Not Discharge Weapons In Safezone!<br/><br/>All %1s Removed From Inventory!", _projectileName]; _unit removeMagazines "DemoCharge_Remote_Mag"; }; case default { systemChat format ["%1", _this select 0]; systemChat format ["%1", _this select 1]; systemChat format ["%1", _this select 2]; systemChat format ["%1", _this select 3]; systemChat format ["%1", _this select 4]; systemChat format ["%1", _this select 5]; hint parseText format ["<t size = '1.5' color = '#FF0000'>BUG FOUND!</t><br/><br/>Please Report Ammotype (Located In Chat) To Admin/Developer!"]; }; }; }]; waitUntil {_safeZone distance player > 250}; hint parseText format ["<t size = '1.5' color = '#FF0000'>SAFEZONE!</t><br/><br/>You are leaving the safezone!<br/>You are now vulnerable to enemies!"]; player allowDamage true; player removeEventhandler["HandleDamage", _safeZoneDamageEH]; player removeEventHandler["Fired", _safeZoneFiredEH]; }; where i have to put the script? in safezonescript.sqf and this in the init.sqf: execVM "safezonescript.sqf"; or just a marker or trigger.... ? Share this post Link to post Share on other sites
schadler17 36 Posted November 4, 2015 Create the marker ingame, then call for the script in init.sqf or initPlayerLocal.sqf, however you prefer. But yeah, make your own .sqf to call for Share this post Link to post Share on other sites