Search the Community
Showing results for tags 'automatic'.
Found 6 results
-
sandbox [Release] Controlled Spawn And Waypoints Randomizr
thy_ posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
CSWR is an Arma 3 script that allows the Mission Editor to spawn AI units and vehicles (by ground or air paradrop) and makes those groups move randomly to waypoints forever in life, where spawn-points and waypoints are easily pre-defined by Mission Editor through Eden marker's positions. CSWR accepts faction loadout customization, including additional customizations for sniper teams and paratroopers. CSWR almost doesn't change any original Arma AI behavior, saving server performance and Arma 3 integrity. Creation concept: bring life to the mission through non-stop units' movements with some level of unpredictability without losing control of server performance and what AI units can do. Special thanks: To the old (but gold) "T8 Units" script for the inspiration over the years. How to install / Documentation: https://github.com/aldolammel/Arma-3-Controlled-Spawn-And-Waypoints-Randomizr-Script/blob/main/_CSWR_Script_Documentation.pdf What to expect from the CSWR script: No dependencies from other mods or scripts; Manually define which markers the faction can use as spawn-points; Create unlimited different types of spawn-points: Common spawn: for units and ground vehicles; Vehicle spawn: exclusive for ground vehicles; Heli spawn: exclusive for helicopters; Paradrop spawn: for units and ground vehicles; Sectorized spawn: all spawn types can be sectorized to be available only for specific groups/vehicles inside a faction; Spawn-points can be triggered by: Mission starts: right after the mission gets started; Timer delay: a down count; Trigger delay: when some editor's trigger is activated; Target delay: when a specific unit or vehicle or building is killed/destroyed; Once the spawn-points are created, the script will spawn the groups randomly through their faction spawns; There is no re-spawn. Death is death for units and vehicles spawned by CSWR; Vehicles with turrets spawned by CSWR, when damaged, their gunners never leave the vehicle, doing the last standing in combat until death; Manually define which markers will be used as one types of destinations (waypoints) for AI units and vehicles; Create unlimited different types of destinations: Move: groups will move randomly through your predefined move-markers; IMPROVED! Watch: sniper groups will search for the best high position to cover one of your predefined watch-markers; Hold: soldiers, civilians, or ground vehicles (mainly tracked ones) will set position facing a specific direction predefined by you with hold-markers; IMPROVED! Occupy: soldiers and civilians will search for a building around a predefined occupy-marker, and will go there, get in, and stay; IMPROVED! Sectorized destination: all destination types can be sectorized to be available only for specific groups/vehicles inside a faction; Once the destination markers are created, CSWR will take care of taking (or not) the groups there, randomly; Manually set the number of soldiers, who they are, their loadouts, who belongs in each group type, and even ground vehicles and helicopters; Add or remove Night-Vision-Goggles and Flashlights for one or more factions, easily through "True" or "False" management; There are 7 infantry templates and 8 vehicle templates to customize (with modded or vanilla things) for each faction; Define easily how many AI groups are in-game, what squad types they belong to, and their behavior: safe, aware, stealth, combat, chaos. For more details, check the documentation; IMPROVED! Available white and blacklist for buildings and ruins when groups are using Occupy movements; All vehicles and units spawned by CSWR can be (ON/OFF) editable by Zeus; Set if the CSWR should wait for another script load first on the server; Debugging: friendly error handling; Debugging: hint monitor to control some AI numbers; IMPROVED! Debugging: full documentation available. . Video demo: Check the file above on GitHub. Check the file above on GitHub. Link on this post header. (Above) Editor set if all one side can use night vision goggles (or just parachuters, or only sniper teams), or only flashlights, or both gears or none. If flashlights are available they need to be on all the mission long or just when each AI decides. (Above) WATCH destination (specific for sniper groups) is working much better with high natural terrains, regardless of whether the map is an official one. (Above) Group executing OCCUPY destinations can get in high towers with better distribution positions inside. (Above) Group executing OCCUPY, if they select an acceptable ruin/destroyed building, the group will always get in a crouch in this kind of position. (Above) Even heavy ground vehicles can be paradropped. (Above) All groups paradropped, when touched the ground, they will focus on regrouping with their squad leader before starting their missions. (Above) Helicopters automatically identify where all safe and not busy helipads are to land if they need to rearm, repair, refuel, or heal their wounded crew. Dependencies: None 😉 Download: - On GitHub: https://github.com/aldolammel/Arma-3-Controlled-Spawn-And-Waypoints-Randomizr-Script - On Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=2740912514 Missions using it: Tanks & Helicopters (light): https://steamcommunity.com/sharedfiles/filedetails/?id=2424050518 Escape from Kherson: https://steamcommunity.com/sharedfiles/filedetails/?id=2878171355 Ukrainian ATGM Team: https://steamcommunity.com/sharedfiles/filedetails/?id=2847369831 Fake SDF in Syria: https://steamcommunity.com/sharedfiles/filedetails/?id=2728537885 Tanks Theater: https://steamcommunity.com/sharedfiles/filedetails/?id=2160397214 ISIS VBIED: https://steamcommunity.com/sharedfiles/filedetails/?id=2732654349 - - - - - - - - - - - Changelog: Apr, 14th 2024 | v6.5.2: news, fixes and notes. Known issues: - Watch > Sniper groups still not considering buildings when no natural highlands to take a position for overwatching; - Occupy > If you hide a building and the building can be occupied, the groups will consider that hidden building as a regular place to occupy; Paradrop > When parachuters are civilians, they're crouched right after landing and stay like this forever. - Move Hold > Sometimes tracked vehicles are not facing exactly the marker direction configured by the editor; - - - - - - - - - - - Video tutorials:- 34 replies
-
- 10
-
collision [SOLVED] Vehicle spawn (collision issues)
thy_ posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Hello there, I am facing some challenges to implement the findEmptyPosition and avoid collision among vehicles those spawn in the same spot. Some help to fix it will be very much appreciated. Here below is my code working pretty fine, except for the collisions in some rounds. If you prefer, here is for download: https://drive.google.com/file/d/1NIdU2pLEjl41M3Vlc0dVANRvuK3PFCqd/view?usp=sharing // SIDE SPAWNS // Spawnpoints for each faction. Only the specific faction can spawn. _bluAllSpawns = ["bluSpawn01","bluSpawn02","bluSpawn03","bluSpawn04","bluSpawn05","bluSpawn06"]; _opAllSpawns = ["opSpawn01","opSpawn02","opSpawn03","opSpawn04","opSpawn05","opSpawn06"]; _indAllSpawns = ["indSpawn01","indSpawn02","indSpawn03","indSpawn04","indSpawn05","indSpawn06"]; // ................................................................................................................................................ // SHARED DESTINY // Waypoints where any faction can go. _goToSharedDestiny = ["destinoComum01","destinoComum02","destinoComum03","destinoComum04"]; // SIDE DESTINY // Waypoints where only the specific faction can go. _goToDestinyBlu = ["destinoBlu01","destinoBlu02"]; _goToDestinyOp = ["destinoOp01","destinoOp02"]; _goToDestinyInd = ["destinoInd01","destinoInd02"]; // ANY DESTINY // Use _goToAnywhere for the group to consider going to both shared destinations and those of all factions. _goToAnywhere = _goToSharedDestiny + _goToDestinyBlu + _goToDestinyOp + _goToDestinyInd; // ................................................................................................................................................ // BLUFOR GROUPS // Number of soldiers and type of faction squads. _bluSquadLight = ["B_Soldier_TL_F", "B_soldier_AR_F"]; _bluSquadRegular = ["B_Soldier_TL_F", "B_soldier_AR_F", "B_soldier_AR_F", "B_soldier_AR_F"]; _bluSquadHeavy = ["B_Soldier_TL_F", "B_soldier_AR_F", "B_soldier_AR_F", "B_soldier_AR_F", "B_soldier_AR_F", "B_soldier_AR_F"]; _bluVehLight = ["B_Quadbike_01_F"]; _bluVehRegular = ["B_MRAP_01_hmg_F"]; _bluVehHeavy = ["B_MBT_01_cannon_F"]; // OPFOR GROUPS // Number of soldiers and type of faction squads. _opSquadLight = ["O_Soldier_TL_F", "O_soldier_AR_F"]; _opSquadRegular = ["O_Soldier_TL_F", "O_soldier_AR_F", "O_soldier_AR_F", "O_soldier_AR_F"]; _opSquadHeavy = ["O_Soldier_TL_F", "O_soldier_AR_F", "O_soldier_AR_F", "O_soldier_AR_F", "O_soldier_AR_F", "O_soldier_AR_F"]; _opVehLight = ["O_Quadbike_01_F"]; _opVehRegular = ["O_MRAP_02_hmg_F"]; _opVehHeavy = ["O_MBT_02_cannon_F"]; // INDEPENDENT GROUPS // Number of soldiers and type of faction squads. _indSquadLight = ["I_Soldier_TL_F", "I_Soldier_AR_F"]; _indSquadRegular = ["I_Soldier_TL_F", "I_Soldier_AR_F", "I_Soldier_AR_F", "I_Soldier_AR_F"]; _indSquadHeavy = ["I_Soldier_TL_F", "I_Soldier_AR_F", "I_Soldier_AR_F", "I_Soldier_AR_F", "I_Soldier_AR_F", "I_Soldier_AR_F"]; _indVehLight = ["I_Quadbike_01_F"]; _indVehRegular = ["I_MRAP_03_hmg_F"]; _indVehHeavy = ["I_MBT_03_cannon_F"]; // ................................................................................................................................................ // BLUFOR STRATEGY // All faction groups and destinations. _bluGroup01 = [getmarkerpos (selectRandom _bluAllSpawns), BLUFOR, _bluSquadLight,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _bluGroup01 addWaypoint [getmarkerpos (selectRandom _goToSharedDestiny), 0]; _bluGroup02 = [getmarkerpos (selectRandom _bluAllSpawns), BLUFOR, _bluSquadLight,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _bluGroup02 addWaypoint [getmarkerpos (selectRandom _goToDestinyBlu), 0]; _bluGroup03 = [getmarkerpos (selectRandom _bluAllSpawns), BLUFOR, _bluSquadRegular,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _bluGroup03 addWaypoint [getmarkerpos (selectRandom _goToSharedDestiny), 0]; _bluGroup03 addWaypoint [getmarkerpos (selectRandom _goToDestinyBlu), 1]; _bluGroup04 = [getmarkerpos (selectRandom _bluAllSpawns), BLUFOR, _bluSquadHeavy,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _bluGroup04 addWaypoint [getmarkerpos (selectRandom _goToAnywhere), 0]; _bluGroup04 addWaypoint [getmarkerpos (selectRandom _goToAnywhere), 1]; _bluGroup05 = [getmarkerpos (selectRandom _bluAllSpawns), BLUFOR, _bluVehHeavy,[],[],[],[],[],180] call BIS_fnc_spawnGroup; //This one will hold position (no waypoint). _bluGroup06 = [getmarkerpos (selectRandom _bluAllSpawns), BLUFOR, _bluVehHeavy,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _bluGroup06 addWaypoint [getmarkerpos (selectRandom _goToDestinyBlu), 0]; // ................................................................................................................................................ // OPFOR STRATEGY // All faction groups and destinations. _opGroup01 = [getmarkerpos (selectRandom _opAllSpawns), OPFOR, _opSquadLight,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _opGroup01 addWaypoint [getmarkerpos (selectRandom _goToSharedDestiny), 0]; _opGroup02 = [getmarkerpos (selectRandom _opAllSpawns), OPFOR, _opSquadRegular,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _opGroup02 addWaypoint [getmarkerpos (selectRandom _goToSharedDestiny), 0]; _opGroup02 addWaypoint [getmarkerpos (selectRandom _goToDestinyOp), 1]; _opGroup03 = [getmarkerpos (selectRandom _opAllSpawns), OPFOR, _opSquadHeavy,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _opGroup03 addWaypoint [getmarkerpos (selectRandom _goToDestinyOp), 0]; // ................................................................................................................................................ // INDEPENDENT STRATEGY // All faction groups and destinations. _indGroup01 = [getmarkerpos (selectRandom _indAllSpawns), INDEPENDENT, _indSquadLight,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _indGroup01 addWaypoint [getmarkerpos (selectRandom _goToSharedDestiny), 0]; _indGroup02 = [getmarkerpos (selectRandom _indAllSpawns), INDEPENDENT, _indSquadRegular,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _indGroup02 addWaypoint [getmarkerpos (selectRandom _goToSharedDestiny), 0]; _indGroup02 addWaypoint [getmarkerpos (selectRandom _goToDestinyInd), 1]; _indGroup02 addWaypoint [getmarkerpos (selectRandom _goToDestinyInd), 2]; _indGroup02 addWaypoint [getmarkerpos (selectRandom _goToSharedDestiny), 3]; _indGroup03 = [getmarkerpos (selectRandom _indAllSpawns), INDEPENDENT, _indSquadHeavy,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _indGroup03 addWaypoint [getmarkerpos (selectRandom _goToDestinyInd), 0]; _indGroup04 = [getmarkerpos (selectRandom _indAllSpawns), INDEPENDENT, _indVehHeavy,[],[],[],[],[],180] call BIS_fnc_spawnGroup; _indGroup04 addWaypoint [getmarkerpos (selectRandom _goToDestinyInd), 0]; -
Automatic eject via vehicle's init line
evokerzz posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
I created a vehicle init script a few months ago with the purpose of automatically making the plane auto-eject pilots when the damage to the plane exceeds a certain threshold while limiting the damage to .9 for a few seconds preventing it from blowing up instantly. After a recent arma update however the script stopped working so I'm hoping that maybe someone more experienced in arma scripting can help me out with it. My current revisions (seperated with a line) of the vehicle init with comments: https://pastebin.com/XSyXyES1 I'm trying to avoid using seperate script files to make this a simple copy-paste solution for everyone who isn't that familiar with mission editing. -
[SCRIPT] Automated Doors 2.5 - doors open and close automatically
Heeeere's johnny! posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Automated Doors - v2.5 Download v2.5 from Armaholic What? For each player on the map, this script creates and removes triggers on nearby buildings which open the door if a player intends to walk through it and closes it again, when he walks away. This script is configurable and customizable on both server and client side. Features: all doors open and close automatically usable in Singleplayer (client side) or in Multiplayer (server side only) support for dynamic locations where this script should only work support for side specific locations, where this script only works for players of the respective side actions for the following features: enable/disable automatically closing doors enable/disable "Automated Doors" completely irreversibly* remove all actions related to "Automated Doors" globally force doors to stay open, no matter what the player's actions say can be terminated and restarted without trigger-leftovers or action-leftovers minimized server load due to need-based dynamic object management available as script and as addon *) Actions will be available again, if you rejoin the server (MP) or restart ArmA (SP) respectively Supported maps: Altis/Stratis (combined in one file) Chernarus Takistan Zargabad Utes Why? At some point, I got annoyed of having to walk really close to a door and sometimes even having to scroll, if my default action is something different, to get the right action to finally open it. Maybe there's some people out there feeling similarly. How? Download the script here. (Armaholic, same link as above) execVM "automatedDoors.sqf" If you use Automated Doors on a map which is not listed above, but has buildings from one or more of these maps or if you want to override the script's default behavior, paste the respective map name(s) as parameter into the script like this: [["Altis", "Chernarus", "Takistan"]] execVM "automatedDoors.sqf" If you don't do so, the script will automatically take into account all maps. Singleplayer: Using the script: Execute the above line once upon mission start - that's it. Using the addon: Start ArmA 3 with startup parameter -mod=@automatedDoors - that's it. Multiplayer: Execute this script server side once upon mission start. Client side execution is prevented by "isServer" check. After joining a mission running this script, it might take a few seconds until it actually works for you as new player, because the sever runs the "scan loop" regularly, not taking into account JIP or just spawned players. Further Information "Automated Doors" has two optional parameters: maps -> (optional, default: "all") defines the buildings to be taken into account by this script -> e.g. ["altis", "chernarus"] means, all buildings from Altis and Chernarus will be taken into account doorsStayOpen -> (optional, default: false) global definition of door closing behavior - if true, doors will have to be closed manually, player action "Don't keep doors open" has no effect - if false, doors will close automatically, player action "Keep doors open" has an effect You can easily customize important values, like the size of the area of the door triggers, the time between each scan for surrounding buildings or the area to scan on each loop. Do that by changing the defines at the beginning of the file (after the comment block). Define locations: If you want this script to only work in certain areas, create locations of type "Name" and set their name with the prefix "doors". This script will check on each scan loop if such locations exist. If so, it will only manage these areas. If all "doors" locations are deleted, this script will handle the whole map again. Side specific locations: If you create a location as described above and setVariable ["locationSide", any side here] to it, the doors inside that location automatically open and close only for players of that side. Have a nice Play! Changelogs: -
Check if unit has a machine gun or automatic rifle
beno_83au posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
So, as title'd I need to determine if a unit has a machine gun/automatic rifle. At the moment I'm running with: _machineGuns = [ "MMG_02_base_F", "arifle_MX_SW_F", "LMG_Mk200_F", "LMG_Zafir_F", "MMG_01_base_F" ]; _gunCheck = {(primaryWeapon _unit) isKindOf [_x, configFile >> "CfgWeapons"]} count _machineGuns; if (_gunCheck != 0) then { //Code }; It works, but it would potentially require an edit to _machineGuns for any mod MGs, which detracts from it's user-friendliness. This is as basic as I was able to work out, so is there a better way? Please take note that I'm checking the weapon, not the unit. As an example, this is what I'm trying to achieve (script taken from VBS3): if ([configFile>>"CfgWeapons",(primaryWeapon _unit),"vbs2_mgun"] call fn_vbs_isKindOf) then { //Code }; So, in the example it's very convenient that "vbs2_mgun" covered everything, and thus requires no editing on the user's part. Cheers. -
Automated Doors - v2.5.a2 - doors open and close automatically
Heeeere's johnny! posted a topic in ARMA 2 & OA : MISSIONS - Editing & Scripting
Automated Doors - v2.5.a2 (ArmA 2 version) Download v2.5.a2 from Armaholic What? This is a backport of Automated Doors for ArmA 3 to ArmA 2. For each player on the map, this script creates and removes triggers on nearby buildings which open the door if a player intends to walk through it and closes it again, when he walks away. This script is configurable and customizable on both server and client side. Features: all doors open and close automatically usable in Singleplayer (client side) or in Multiplayer (server side only) support for dynamic locations where this script should only work support for side specific locations, where this script only works for players of the respective side actions for the following features:enable/disable automatically closing doors enable/disable "Automated Doors" completely irreversibly* remove all actions related to "Automated Doors" globally force doors to stay open, no matter what the player's actions say can be terminated and restarted without trigger-leftovers or action-leftovers minimized server load due to need-based dynamic object management *) Actions will be available again, if you rejoin the server (MP) or restart the mission (SP) respectively Supported maps: Altis/Stratis (combined in one file) Chernarus Takistan Zargabad Utes Why? At some point, I got annoyed of having to walk really close to a door and sometimes even having to scroll, if my default action is something different, to get the right action to finally open it. Maybe there's some people out there feeling similarly. How? Download the script here (Armaholic, same link as above). You need at least the following files: automatedDoors_a2.sqf or automatedDoors_a2oa.sqf removeAllActions.sqf setVariable.sqf one or more file(s) starting with "doors..." Execute one of the following lines depending on which file you're using: execVM "automatedDoors_a2.sqf" execVM "automatedDoors_a2oa.sqf" If you use Automated Doors on a map which is not listed above, but has buildings from one or more of these maps or if you want to override the script's default behavior, paste the respective map name(s) as parameter into the script like this: [["Chernarus", "Takistan", "Zargabad"]] execVM "automatedDoors_a2oa.sqf" If you don't do so, the script will automatically take into account all maps. Singleplayer: Execute the above line once upon mission start - that's it. Multiplayer: Execute this script server side once upon mission start. Client side execution is prevented by "isServer" check. After joining a mission running this script, it might take a few seconds until it actually works for you as new player, because the sever runs the "scan loop" regularly, not taking into account JIP or just spawned players. Further Information Note that there are two files, one compatible with ArmA 2 v1.06 or later and another one compatible with ArmA 2:OA v1.63 or later. The ArmA 2 version also works with OA, but not the other way around. Be aware that the version for OA is more efficient (faster) than the one for ArmA 2, so I'd recommend to use the version for the "normal" ArmA 2 only if necessary. "Automated Doors" has two optional parameters: maps -> (optional, default: "all") defines the buildings to be taken into account by this script - e.g. ["altis", "chernarus"] means, all buildings from Altis and Chernarus will be taken into account doorsStayOpen -> (optional, default: false) global definition of door closing behavior - if true, doors will have to be closed manually, player action "Don't keep doors open" has no effect - if false, doors will close automatically, player action "Keep doors open" has an effect You can easily customize important values, like the size of the area of the door triggers, the time between each scan for surrounding buildings or the area to scan on each loop. Do that by changing the defines at the beginning of the file (after the comment block). Define locations: If you want this script to only work in certain areas, create locations of type "Name" and set their name with the prefix "doors". This script will check on each scan loop if such locations exist. If so, it will only manage these areas. If all "doors" locations are deleted, this script will handle the whole map again. Side specific locations: If you create a location as described above and setVariable ["locationSide", any side here] to it, the doors inside that location automatically open and close only for players of that side. Changelogs will be posted in the original thread. Have a nice Play!