Jump to content

Recommended Posts

CF9D431A40D880FC0F41608C9E6CD67FB8B6AA29

 

 

Download:

MIL_ExplosiveBreaching - Dropbox/Armaholic

Demo Missions - Dropbox

* Mission #2 requires Advanced Rappelling to be run on the host/server only. 

* Mission haven't been updated with door breaching, and still use the old system at this stage.

Previous demo missions are still set up for the old system. They will be updated at some point.

New demo Missions (supports vanilla/RHS/CUP) - Dropbox

- Co-op (4)

- Attack-Defend (4v4)

 

Description:

MIL_ExplosiveBreaching is a set of scripts that allows designated players to breach urban walls, fences and building doors using vanilla Explosive Charges. Anyone in the same group as a breacher can be within 2m of a charge. Anyone else within 5m of a charge and not in cover may be knocked down for a short time. Any AI up to 10m and not knocked over will have their skills severely reduced for a short time.

In a hosted MP environment please allow up to 30 seconds before trying to breach anything, otherwise breaching won't occur.

 

Features:
- Easy-to-use GUI system for managing breaching charges.

- Uses explosive charges as breaching charges.
- Optional Red/Green indicator on each charge to indicate a player's safe distance from a charge.
- Specific players can be used as designated breachers.
- All players (including non-breachers) can see effects/features of the system.
- Disorientating effects for anyone, human or AI, caught by the explosive breach.
- Single/Multiple charges can be used together

 

***Mission makers***

Two variables to check if a unit's lifeState == "INCAPACITATED" have been added to account for conflicts with other lifeState checks that may be in use on other scripts.
    - e.g. Running custom revive scripts when lifeState == "INCAPACITATED".
    - In this case, it would be wrong to run the custom revive if a player was a bit too close to the breaching charge and got knocked out.
- When being affected by breaching, a unit's lifeState will return "INCAPACITATED" for a few seconds.
- This system makes use of publicVariables to return if a unit has been scripted into being unconscious.
- The variables are:
    - MIL_ExplosiveBreaching_Stunned_Player & MIL_ExplosiveBreaching_Stunned_AI.
    - Each variable is a 4 index array:
        - _array select 0/1/2/3 will return number of unconscious units for BLUFOR/OPFOR/INDI/CIV respectively
Example:
- If a BluFor player stands too close to a door on breaching, and there's 2 AI OpFor on the other side and close enough to get knocked down the returns would be:
    - MIL_ExplosiveBreaching_Stunned_Player - [1,0,0,0];
    - MIL_ExplosiveBreaching_Stunned_AI ------- [0,2,0,0];
- This might take some tweaking, but suits my purpose for what this breaching function was originally being made for, and so that's where it stands for now unless someone needs it changed/improved.

 

To use:

- Add these lines to your description.ext:

#include "MIL_ExplosiveBreaching\dialog\defines.hpp"
#include "MIL_ExplosiveBreaching\dialog\dialog.hpp"

- Copy the folder MIL_ExplosiveBreaching to your mission folder.
- Anyone assigned as a breacher will require Explosive Charges ("DemoCharge_Remote_Mag") to breach.
- To avoid damage, the better the ballistic protection of a player's vest, the safer they will be.

 

- For MP use:

initServer.sqf

nul = [_indicator] execVM "MIL_ExplosiveBreaching\initialiseServer.sqf";

initPlayerLocal.sqf

nul = [] execVM "MIL_ExplosiveBreaching\initialiseClient.sqf";

- _indicator - boolean (optional - default: true)
                     - true - a safe distance indicator will spawn with the charge
                     - false - no safe distance indicator will spawn

 

- For SP use:

init.sqf

nul = [_indicator] execVM "MIL_ExplosiveBreaching\initialiseServer.sqf";
nul = [] execVM "MIL_ExplosiveBreaching\initialiseClient.sqf";

 

Example:

- This will set any group leaders as breachers:

if (player == (leader (group player))) then {
	nul = [] execVM "MIL_ExplosiveBreaching\initialiseClient.sqf";
};

 

- This will set player4/8/12 as breachers:

_allBreachers = ["player4","player8","player12"];
if !(_allBreachers find (str player)) then {
	nul = [] execVM "MIL_ExplosiveBreaching\initialiseClient.sqf";
};

 

Credits:

- Credit to zorilya, who's code for aligning a bomb against a wall was offered up for use (in one of his replies in this video).

- Honestly, without the maths already being available I doubt this would've worked out for me. I'm a numbers kind of guy, but I'm no mathemagician (Simpsons reference).

- For the missions themselves, they are credited to a number of people within their briefings.

- My mates for playing my stuff in ways which no sane person plays ArmA.

- My kids for playing ArmA properly :rthumb:.

 

Media:

- My YouTube channel playlist of all the videos I've put up to show the explosive breaching and its progress - Playlist - ArmA 3 - Explosive Breaching

 

MP Demo of the single-storey wall breaching demo mission (an oldie) (5:17):

 

 

Coop demo mission, running the most recent version, v2.1 (2:06):

 

Known bugs:

- Sometimes walls (I think only in specific locations/circumstances) will collapse when setting a charge. I haven't seen this for a while though, but let me know if it happens.

- Door breaching will not work on some buildings - https://feedback.bistudio.com/T133450.

- In MP, breaching will not work immediately. Likely only in hosted MP, and should be ready after 30 seconds game time.

 

To do:

- Add ability to change the minimum safe distance to avoid being knocked down (both breacher's group and for other nearby units).
- Add default compatability for charges from common mods to be used for breaching.
- Add ability to designate custom array of charge/s to be used for breaching.
- Add ACE menu compatability.
- Add a 2-second timer to stunned AI to delay reactionary firing.
- Adjust chance of being knocked if needed.

 

If anyone happens across any bugs, or has any suggestions, please let me know. I would like to implement door breaching in the future too, so I'll see where that takes me.

 

Thank you.

 

Change log:

Spoiler

v2.1:

Added - GUI for user handling of setting and detonating breaching charges.
Added - Doors will now lock when a charge is placed on them.

Changed - AddAction commands changed and/or removed in favour of GUI.
Changed - Detonating all breaching charges now handled in their own door/wall lists (i.e. all door charges & all wall charges, instead of all charges).
Changed - Multiple charges on the same wall/door will now detonate simultaneously when one of them is detonated.
Changed - Action menu command colour.
Changed - Damage from breaching charge explosion is now handled differently. No damage should be taken regardless of armour equiped or distance to the explosion (please let me know if this IS NOT the case).
Changed - The breaching player, plus any players in the breacher's group, now only need to be 2m away from the charge to avoid being knocked down.
Changed - Breaching charges set too far away from a door will still detonate when the nearest door to them is breached (be warned!).

Fixed - Rubble will be less likely to spawn above ground on slopped terrain (please let me know if this IS NOT the case, and if you can, exactly where it occured so I can tighten up the maths).
Fixed - Damage blocking handling now works properly in MP.

 

v2.0:

Changed - MIL_WallBreaching now becomes MIL_ExplosiveBreaching.

Changed - Folder structure was almost completely re-worked.

Changed - Breaching has now been expanded to include building doors.

Changed - Action names and priorities were adjusted for better organisation.

Added - Two variables to check if a unit's lifeState == "INCAPACITATED" have been added to account for conflicts with other lifeState checks that may be in use on other scripts (see OP for more detail).

Added - More crazy arse ArmA magic to facilitate door breaching.

 

There have been a number of other changes, fixes and additions that don't necessarily need mentioning, but have improved the function none-the-less.

 

v1.1:

Added - Option to turn green/red indicators on or off (via initServer.sqf - see readMe.txt).

Fixed - Client would attempt to run initialisation even if server had not yet compiled functions.

 

v1 - Release.

 

Edited by beno_83au
Update v2.1
  • Like 12
  • Thanks 1

Share this post


Link to post
Share on other sites

Slight addition to the post concerning the missions. Mission #2 requires Advanced Rappelling to be run on the host/server only. Otherwise peeps are gonna get stuck in the helicopter with nothing to do. 

  • Like 1

Share this post


Link to post
Share on other sites

@heyvern69 I'll have a go at it. I've tried turning scripts into a mod in the past but never got them to work, but I can always give it another go.

  • Like 1

Share this post


Link to post
Share on other sites

Awesome!  Thanks.  :drinking2:

And if it doesn't work out, I still appreciate the effort!!!

Share this post


Link to post
Share on other sites

Can someone give me the correct way to allow all players on the server to use this script. There has to be an easier way than listing every player

Share this post


Link to post
Share on other sites

@Big Daddy Grimm Under the instructions for MP use is all the info you need. The example just provides a way of assigning the ability to specific players.

Share this post


Link to post
Share on other sites

How do I get all players to have the ability to breach?

 

Thanks

Share this post


Link to post
Share on other sites
On 28/03/2018 at 11:48 PM, beno_83au said:

To use:

- Copy the folder MIL_WallBreaching to your mission folder.
- Anyone assigned as a breacher will require Explosive Charges ("DemoCharge_Remote_Mag") to breach.
- To avoid damage, the better the ballistic protection of a player's vest, the safer they will be.

 

- For MP use:

initServer.sqf


nul = [] execVM "MIL_WallBreaching\initialiseServer.sqf";

initPlayerLocal.sqf


nul = [] execVM "MIL_WallBreaching\initialiseClient.sqf";

 

 

 

 

 

  • Like 1

Share this post


Link to post
Share on other sites

Sorry, tried to add an error and didn't work.

18:37:34 String STR_A3_Fighter_03_Canopy_name not found
18:37:34 Error in expression <",[]];

["AttachBreachingCharge"] spawn MIL_fnc_WallBreaching_AddActions;
["Deto>
18:37:34   Error position: <MIL_fnc_WallBreaching_AddActions;
["Deto>
18:37:34   Error Undefined variable in expression: mil_fnc_wallbreaching_addactions
18:37:34 File C:\Users\Jason Reed\Documents\Arma 3 - Other Profiles\[SA]Reed\mpmissions\SA_Insurgency_Malden_v1.Malden\MIL_WallBreaching\initialiseClient.sqf, line 7
18:37:34 String STR_A3_Fighter_03_Canopy_name not found
18:37:34 String STR_A3_Fighter_03_Canopy_name not found

 

Share this post


Link to post
Share on other sites

@Jnr4817 Oooohh, yeah I might have an idea why that is.

 

In the initPlayerLocal.sqf, please replace this:

 

nul = [] execVM "MIL_WallBreaching\initialiseClient.sqf";

With:

nul = [] spawn {
	waitUntil {missionNamespace getVariable ["MIL_fnc_wallBreachingInitialised",false]};
	nul = [] execVM "MIL_WallBreaching\initialiseClient.sqf";
};

Let me know how it goes. If it works, then I'll have to make the change for an update hopefully before the end of the week.

 

Edit: I'd do it myself, but I've got work that's taking priority over most other things this week :down:

  • Like 3
  • Thanks 1

Share this post


Link to post
Share on other sites

Awesome script dude!!

Ever thought of expanding it to door/gates breaching? There's some scripts out there that does that, but none are appealing as yours could be. The only real problem that I see is that democharges are too powerful for door: you'll  take down the whole building with those. Any way to lower charges damage with a script?

 

Anyway, GREAT job mate!

  • Thanks 1

Share this post


Link to post
Share on other sites
21 hours ago, zagor64bz said:

Ever thought of expanding it to door/gates breaching?

 

Briefly, but originally when I started this ArmA doors weren't lockable in-editor, so for me to work that one out at that time was out of scope. However, now that doors are lockable, and with the breaching system in place it shouldn't be too much of a stretch to add.

 

21 hours ago, zagor64bz said:

Any way to lower charges damage with a script?

 

They already do ZERO damage :rthumb: *magic*

 

Edit: DISCLAIMER - some damage is done, but not by the charges. Again *magic*

Share this post


Link to post
Share on other sites
2 hours ago, beno_83au said:

However, now that doors are lockable, and with the breaching system in place it shouldn't be too much of a stretch to add.

THAT would be VERY appreciated by the community, mate.

 

2 hours ago, beno_83au said:

They already do ZERO damage :rthumb: *magic*

 

Edit: DISCLAIMER - some damage is done, but not by the charges. Again *magic*

:scratchchin:

Like they say...the trick is there, but you can't see it!

Share this post


Link to post
Share on other sites
Spoiler

18:33:08 Error in expression <eh,_pos, [], 0, "NONE"];
_armor1 setdir _direction;
_armor1 setposatl (getposatl>
18:33:08   Error position: <_direction;
_armor1 setposatl (getposatl>
18:33:08   Error Undefined variable in expression: _direction
18:33:08 File Ghost\functions\spawn\fn_evehsentryspawn.sqf [GHST_fnc_evehsentryspawn], line 51
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression <eh,_pos, [], 0, "NONE"];
_armor1 setdir _direction;
_armor1 setposatl (getposatl>
18:33:08   Error position: <_direction;
_armor1 setposatl (getposatl>
18:33:08   Error Undefined variable in expression: _direction
18:33:08 File Ghost\functions\spawn\fn_evehsentryspawn.sqf [GHST_fnc_evehsentryspawn], line 51
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression < %1, expected %2, on index %3, in %4", [_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error position: <_par] call _fnc_getTypeName, [_x] call _>
18:33:08   Error Undefined variable in expression: _par
18:33:08 File A3\functions_f\Debug\fn_errorParamsType.sqf [BIS_fnc_errorParamsType], line 146
18:33:08 Error in expression <",[]];

["AttachBreachingCharge"] spawn MIL_fnc_WallBreaching_AddActions;
["Deto>
18:33:08   Error position: <MIL_fnc_WallBreaching_AddActions;
["Deto>
18:33:08   Error Undefined variable in expression: mil_fnc_wallbreaching_addactions
18:33:08 File C:\Users\Jason Reed\Documents\Arma 3 - Other Profiles\[SA]Reed\mpmissions\SA_Template_DEP_5_22_Reed.Altis\MIL_WallBreaching\initialiseClient.sqf, line 7
18:33:12 String STR_A3_Fighter_03_Canopy_name not found

Still getting some errors. Some of these may not be related to breaching, but they appeared together.

 

Thanks

 

Share this post


Link to post
Share on other sites

@Jnr4817 Can you please post your initServer.sqf and initPlayerLocal.sqf files? At this stage my best guess is that your problem is in your initServer.sqf. The only way I get that error is if the function hasn't been initialised on the server when the client runs, which is what that change to initPlayerLocal.sqf would've fixed that I suggested trying (that bug will be updated soon anyway).

Share this post


Link to post
Share on other sites

This looks like it has a LOT of promise.

 

Anyway to remove the phone and green/red indicator, sort of immersion breaking for "me" and  the more "milsim" inclined. 

  • Thanks 1

Share this post


Link to post
Share on other sites
41 minutes ago, WarhammerActual said:

This looks like it has a LOT of promise.

 

Anyway to remove the phone and green/red indicator, sort of immersion breaking for "me" and  the more "milsim" inclined. 

 

I can add it to the list of things to update. It would be very easy to do.

Share this post


Link to post
Share on other sites
Just now, beno_83au said:

 

I can add it to the list of things to update. It would be very easy to do.

AWESOME mate.... that would be great, just make it a feature to a visual indicator or not... can't wait to try it out.

Share this post


Link to post
Share on other sites
On 5/24/2018 at 8:21 PM, beno_83au said:

@Jnr4817 Can you please post your initServer.sqf and initPlayerLocal.sqf files? At this stage my best guess is that your problem is in your initServer.sqf. The only way I get that error is if the function hasn't been initialised on the server when the client runs, which is what that change to initPlayerLocal.sqf would've fixed that I suggested trying (that bug will be updated soon anyway).

 

initplayerlocal.sqf

if !("PARAM_AimSway" call BIS_fnc_getParamValue == 100) then {
	call fnc_ghst_aimsway;
	player addEventHandler ["Respawn", {call fnc_ghst_aimsway}];
};

I dont have an initserver.sqf

 

Thanks

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×