Jump to content
🛡️FORUMS ARE IN READ-ONLY MODE Read more... ×

thy_

Member
  • Content Count

    377
  • Joined

  • Last visited

  • Medals

Everything posted by thy_

  1. ETHICS is a full solution script for ARMA 3 that provides wide creation and management over statics kill zones like minefields, UXO zones, and trap zones. Built for single-player and multiplayer, ETHICS include kill zone doctrines such as land anti-personnel, land anti-materiel, naval anti-materiel, unexploded ordnance, and booby-trap. How to install / Documentation: https://github.com/aldolammel/Arma-3-Ethics-Minefields-Script/blob/main/_ETH_Script_Documentation.pdf What to expect from ETHICS script:   Drag and drop a marker on Eden to create a full and unique kill zone such as minefields; Also easy to build naval minefields, Unexploded ordnance zones (UXO), and Trap zones; Ethics control (ON/OFF) to avoid planting explosive devices through civilian areas; Topography control (ON/OFF) to avoid planting over rock clusters and mountains; UXO doesn't respect Ethics or topography rules, and can be dropped under the water; Boobs-trap doesn't respect topography rules and they are always hidden, never in the open; Anti-personnel (AP) landmines avoid roads and streets; Anti-materiel (AM) landmines can be planted (ON/OFF) only on roads and streets; Classic minefields can also be hybrid, bringing AP and AM mines features; Customize each doctrine's explosive with devices from RHS, CUP, or any mod; Set (or not) for each kill zone has a faction owner; Set (or not) for each kill zone a percentage of presence, controlling the kill zone spawn probability; Easy explosive devices amount management through the global intensity presets: lowest, low, mid, high, or extreme; Easy way to hide all markers on the map (ON/OFF), even to kill zone owners; Debugging: friendly error handling; Debugging: a hint monitor, and systemChat feedbacks for the mission editor; Debugging: full documentation available. Video demo: Soon. Script config: Dependencies: None 😉 Download: On GitHub: https://github.com/aldolammel/Arma-3-Ethics-Minefields-Script On Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=2926204522 Missions using it: Escape from Kherson: https://steamcommunity.com/sharedfiles/filedetails/?id=2878171355 Sharia in Raqqa: https://steamcommunity.com/sharedfiles/filedetails/?id=1849325560 Adsumus: https://steamcommunity.com/sharedfiles/filedetails/?id=1838939661 Tank hunting: https://steamcommunity.com/sharedfiles/filedetails/?id=2468255648 - - - - - - - - - - - Changelog: Nov, 16th 2024 | v1.9: news, fixes and notes. Known issues: UXO cosmetic smokes are not working properly on Dedicated Server (WIP); Dynamic Simulation looks not work properly with mines; Mines is not editable by the Zeus module yet;
  2. CSWR is an Arma 3 script that allows you to spawn AI groups and vehicles how and wherever you want, making them automatically move through the easily defined map regions without the need for scripting knowledge. CSWR almost doesn't change original AI behaviors, saving server performance and Arma 3 integrity. CSWR Steps for the Basic Editors: Download and open the documentation; Install the script (10 seconds); Turn "TRUE" which side(s) CSWR takes care; Define how many groups and vehicles should be spawned; On the map, drag and drop the markers for spawns and destinations; Play. CSWR Extra steps for the Advanced Editors: Which language and ethnicity does the side belong to; Define when each group/vehicle should spawn; Customize the loadout of infantry, marines, snipers, and heavy crew; Define the list of forbidden items that AI cannot have; And more. 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: No dependencies from other mods or scripts; Run flawlessly for multiplayer and single-player missions; Manually set which markers the side can use as spawn-points; Create unlimited and different types of spawn-points: Infantry Spawn-points; Marines Spawn-points; NEW v7 Ground vehicle spawn-points; Nautical and amphibious spawn-points; NEW v7 Helicopter spawn-points; Air Paradrop for vehicle spawn-points; Air Paradrop for people spawn-points; Spawn-points can be triggered by: Mission starts; Trigger activation; Timer; Object Target; Boolean flag; NEW v7.2 There is no re-spawn. Death is death for units and vehicles spawned by CSWR; Create unlimited and different types of destinations: Move Restrict; Move Public; Move Any; Nautical Move Restrict; NEW v7 Nautical Move Public; NEW v7 Nautical Move Any; NEW v7 Special > Move Watch; Special > Move Hold; Special > Move Occupy; Special > Move Extraction; NEW v7.2 Special > Move Transport; NEW v7.2 Set which vehicles a side will use (including helicopters and boats); Set which units a side will use (regardless of the original faction or side); Set how large is each group-type of a side; Customize the loadout of: Infantry; Snipers; Paratroops; Crewmen; Marines; NEW v7 Set those segments of a side can use Night-Vision-Goggles: Only Infantry; Only Snipers; Only Paratroops; Only Marines; NEW v7 All of them; No one; Set if a side has Flashlights as an alternative to Night-visions absence; Deeper customization: Side ethnicity; NEW v7 Automatic faces selection; Automatic language selection; Language customization; NEW v7 Set what behavior each group and vehicle start the game: Safe; Aware; Combat; Stealth; Chaos; Set if all vehicles and units spawned by CSWR are editable by Zeus; Set if the CSWR should wait for another script load first on the server; Debugging: Friendly error handling; Hint monitor to control some numbers; Full documentation is available (including videos). Video demo: https://www.youtube.com/watch?v=-zvXtVUg2LU Check the file above on GitHub. Check the file above on GitHub. Link on this post header. Link on this post footer. (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: Basically all my missions on Steam Workshop. - - - - - - - - - - - Changelog: Jan, 18th 2025 | v7.2: news, fixes and notes. Known issues: Arma 3 issue > Amphibious vehicles don't start their engines when spawned in water if their waypoint is over 3.2km long [reported!]; Arma 3 issue > Diver uniforms are bugged if the unit is created by scripting, and it asks the unit to leave the water (it gets stuck in swimming animation even on dry land) [reported!]; - Watch > Sniper groups still not considering buildings when there are 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 (playlist):
  3. The script and its information in the main post have been updated! Jan, 18th 2025 | v7.2: IMPORTANT 1: the script folder inside the mission as renamed from "CSWRandomizr" to "CSWR"; IMPORTANT 2: the 1_Management, 2_Population and 3_Loadout files received a prefix number in their names to help editors to get the best sequence of file edition; IMPORTANT 3: the description.ext code was updated; Added > Helicopters > Through Population file, with helicopters use destination-type "_move_EXTRACTION" to schedule a extration that always bring you to the base (helicopter spawn-point); Added > Helicopters > Through Population file, with helicopters use destination-type "_move_TRANSPORT" to request an air transport to take your group to another area of your choice; Added > Helicopters > New helicopter class supported: Medium class with their own altitude (medium altitude editable too, perfect for transport/extraction helicopters); Added > Spawn delay > Just like 'by Trigger', 'by Object Target' and 'by Timer', now you can spawn something using 'Boolean flag', perfect for external scripts or codes with triggers; Added > Groups > One more formation options (three in total) for BluFor, OpFor, and Independent. Civilian still with two options; Added > Loadout customization > Now you can select two or more uniforms, for example, for infantry and randomize them automatically, perfect to create militia and PMC factions; Added > Vehicle cargo items > In Management file, the option 'CSWR_removeItemsCargo', if true, removes all cargo items from vehicles spawned by CSWR; Fixed > Coding > Two global variables weren't declared correctly, causing log error messages for servers; Fixed > Spawns > CSWR anti-spawn-blockers was deleting even the Player's AI members if they were over a vehicle spawn-point position. For those objects, only a warning message; Fixed > Spawns > CSWR anti-spawn-blockers was deleting custom helipads (those placed by you); Tweaked > Ethnicity > People from Civilian doesn't use camo face paint anymore, no matter what ethnicity is chosen; Improved > A few performance improvements; Documentation has been updated. New specialized destination type: _move_EXTRACTION New specialized destination type: _move_TRANSPORT New Spawn-Delay option: Boolean flag!
  4. Thanks. So, in this case, following the @pierremgi said, this is the new try and looks it's working finally: Both in CSWR_globalFunctions.sqf: THY_fnc_CSWR_TRANSPORT_provide_pos_using_map = { // Returns _data: hashMap/array. params ["_data", "_grpCaller", "_grpVeh", "_veh", "_basePos", "_minDisCall"]; private [...]; // Initial values: _requestedPos = []; // Main function: while { alive _veh && alive driver _veh && alive leader _grpCaller} do { // Internal initial values: leader _grpCaller setVariable ["whereToGoPos", [], true]; // For caller group leader's machine: _requestedPos = [_grpCaller] call THY_fnc_CSWR_TRANSPORT_caller_pos; // Waiting for caller to provide position: waitUntil { sleep 1; !alive leader _grpCaller || _requestedPos isNotEqualTo [] }; // Validations // code... // Approved to leave the loop: if (conditions...) then { break }; }; // Code... // Preparing to return: _data set ["whereToGoPos", _requestedPos]; // Return: _data; }; THY_fnc_CSWR_TRANSPORT_caller_pos = { // Returns _pos: array. Positon where the caller group leader wants to go. params ["_grpCaller"]; private ["_pos"]; // Making sure player exist in multiplayer: waitUntil { sleep 0.1; !isNull player }; // Initial values: _pos = []; // Escape > If the machine has no interface, or the player is dead, or the player is not the caller group leader, abort: if ( !hasInterface || !alive player || player isNotEqualTo leader _grpCaller ) exitWith { _pos }; // Forcing player to open map: openMap [true, true]; // Check the click pos on map: addMissionEventHandler [ "MapSingleClick", { params ["_units", "_pos", "_alt", "_shift"]; // Defining: player setVariable ["whereToGoPos", _pos, true]; // Closes the player map normally: openMap [false, false]; // Ends the event handler: removeMissionEventHandler ["MapSingleClick", _thisEventHandler]; } ]; // Waiting for caller to provide position: waitUntil { sleep 1; !alive player || (leader _grpCaller getVariable "whereToGoPos") isNotEqualTo [] }; // prepare to return: _pos = leader _grpCaller getVariable "whereToGoPos"; // Return: _pos; };
  5. Oi. I need help with: To set correctly that Global Var "TRANSP_GROUP", using a Namespace that doesn't compromise other players using the same Air transport service! What my script already does on single-player: Once the player requests the service, the server creates and sends a helicopter to the player's position. As soon as the helicopter lands over there, the player provides what position they wanna go. After the helicopter delivery, it returns to base and it's deleted, ending that service. Below is what happens when a player gets in the helicopter (pretty sure it will not work in MP if more than one player group requests the service to the server. // IMPORTANT: code running only on server! openMap [true, false]; // Defining the server AI group that will provide the support with its helicopter: TRANSP_GROUP = _supportGrp; // The coordenates that some side player will provide, clicking over their map: TRANSP_COORDS = []; // I would like to specify this event is attached ONLY to the player-leader of _grpAskedResrc group: addMissionEventHandler ["MapSingleClick", { // Not sure if it can help me here: params ["_units", "_pos", "_alt", "_shift"]; // I'm consern because another player in other part of the map can be requesting Transport too and this global var "TRANSP_GROUP" brings a mess: private _supportGrp = missionNamespace getVariable "TRANSP_GROUP"; // Defining the coordenates provided by some side player using this Transport resource: TRANSP_COORDS = (findDisplay 12 displayCtrl 51) ctrlMapScreenToWorld getMousePosition; private _wp = _supportGrp addWaypoint [TRANSP_COORDS, 0]; _wp setWaypointType 'MOVE'; _supportGrp setCurrentWaypoint _wp; removeMissionEventHandler ["MapSingleClick", _thisEventHandler]; openMap false; vehicle leader _supportGrp vehicleChat "Let's go!"; }]; // Wait until the helicopter gets the coordenates: waitUntil { sleep 1; TRANSP_COORDS isNotEqualTo []; }; systemChat "IT'S WORKING!"; I tried to setVariable to the group (namespace) to "isolate" that var changes from other groups but it didn't work.
  6. To make clear, all these functions are in the file named CSWR_globalFunctions.sqf where its "access" is through THY_CSWR_functions. That said, the header of the CSWR_globalFunctions.sqf has NO restrictions about hasInterface or isServer because - may I be wrong - only the server can read these CSWR_globalFunctions.sqf functions... description.ext: THY_CSWR_functions.hpp: So, when I listen to someone much more experienced advise me literally to use the player command in a multiplayer context (yeap, multiple positions could be provided simultaneously), it makes a mess in my mind, "forcing" to use remoteExec hehe. Okay, got it about setVariable being more "straight" to the point: Do you mean... something like this below? Again, in my understanding, I cannot even see the possibility of a player machine reading this function to make the hasInterface needed. An honest question by something thinking hard: this solution below (transferring data by hashMap) is that bad, or, worst, doesn't make sense? I'm here to learn with you, guys... so bring it on hehe! Both functions in CSWR_globalFunctions.sqf: @pierremgi, I am trying but I cannot see the north you provided in my code. Can you post here a few lines of the change?
  7. But how to get back the information that the leader-player clicked on their map? Storing in a var, is it enough? _dataPlus = [] remoteExec ["THY_fnc_CSWR_TRANSPORT_caller_pos", leader _grpCaller]; This solution is working for single-player, but not sure for multiplayer. What do you think? Server-side: Client-side: THY_fnc_CSWR_TRANSPORT_caller_pos = { // CLIENT-SIDE FUNCTION called by THY_fnc_CSWR_TRANSPORT_provide_pos_using_map. // This function asks for the leader of caller group its cursor position over the map by click. // Returns _dataPlus: hashMap/array. If empty ????????????? //params ["", "", "", ""]; private ["_dataPlus"]; // Initial values: _dataPlus = createHashMap; // Escape: if ( !alive player || player isNotEqualTo leader (group player) ) exitWith { _dataPlus }; // Forcing player to open map: openMap [true, true]; // Check the click pos on map: addMissionEventHandler ["MapSingleClick",{ params ["_units", "_pos", "_alt", "_shift"]; // Defining: _thisArgs params ["_callerRequestData"]; _callerRequestData set ["whereToGoPos", _pos]; _callerRequestData set ["isDone", true]; // Closes the player map normally: openMap [false, false]; // Ends the event handler: removeMissionEventHandler ["MapSingleClick", _thisEventHandler]; }, // Return > Where _thisArgs stores to be used out of EH scope: [_dataPlus] ]; // Waiting for caller to provide position: waitUntil { sleep 1; _dataPlus getOrDefault ["isDone", false] }; // Return: _dataPlus; };
  8. Do you mean: should I do a remoteExec to add the addMissionEventHandler for the leader of the caller group? I don't think I got it because I wouldn't even know how to do that. Because if EventHandlers are local, it means it's running just on server once my entire script just use the server side. EDITED: forget it. I found the Larrow solution, working the addMissionEventHandler through remoteExec 😉.
  9. I'm building one independently because it will integrate natively the CSWR script. Thanks anyway!
  10. A question: How do I force addMissionEventHandler to consider only the caller group leader (always a player)? _data = createHashMap; addMissionEventhandler [ "MapSingleClick", { _thisArgs params ["_returnData"]; _returnData set ["some key", "some value"]; //Return whatever you need }, [ _data] //Important ]; waitUntil { count _data > 0 }; systemChat "map clicked!"; PS: I loved this way of "extracting" data from an EH.
  11. Soon in v7.2, CSWR will provide Air transport/extraction automatically as soon as the player requests. The prototype is already working, and now, after initial tests in single and multiplayer, I'm refactoring it for this new logic.
  12. What a great command this createHashMapFromArray. And I didn't know about the get command either. This will help me A LOT.
  13. I'm sure there's a smarter and maybe lighter way to broadcast organized data (as in this case, in arrays) that will change during the game! (from 0 to 10 times, but probably never 20 times per side in multiplayer games. For single-player this number is reduced drastically, around 0-2) Can you suggest a better way to broadcast the example seen through both functions below? THY_fnc_bananasCounter = { params [...]; private [...]; // Initial values: _cntr = []; // Addressing each side-array in THY_allBananas = [[blu], [opf], [ind], [civ]] = [[0],[0],[0],[0]] switch (side _player) do { case BLUFOR: { _cntr = THY_allBananas # 0 }; case OPFOR: { _cntr = THY_allBananas # 1 }; case INDEPENDENT: { _cntr = THY_allBananas # 2 }; case CIVILIAN: { _cntr = THY_allBananas # 3 }; }; // Increasing the side amount: if (...) then { _cntr = [(_cntr # 0) + 1]; }; switch (side _player) do { case BLUFOR: { THY_allBananas = [_cntr, THY_allBananas # 1, THY_allBananas # 2, THY_allBananas # 3] }; case OPFOR: { THY_allBananas = [THY_allBananas # 0, _cntr, THY_allBananas # 2, THY_allBananas # 3] }; case INDEPENDENT: { THY_allBananas = [THY_allBananas # 0, THY_allBananas # 1, _cntr, THY_allBananas # 3] }; case CIVILIAN: { THY_allBananas = [THY_allBananas # 0, THY_allBananas # 1, THY_allBananas # 2, _cntr] }; }; // Broadcasting the new value: publicVariable "THY_allBananas"; // Return: true }; THY_fnc_reportingBananasAmount = { params [...]; private [...]; // Initial values: _cntr = []; // Addressing each side-array in THY_allBananas = [[blu], [opf], [ind], [civ]] = [[0],[0],[0],[0]] switch (side _player) do { case BLUFOR: { _cntr = THY_allBananas # 0 }; case OPFOR: { _cntr = THY_allBananas # 1 }; case INDEPENDENT: { _cntr = THY_allBananas # 2 }; case CIVILIAN: { _cntr = THY_allBananas # 3 }; }; // Showing the bananas amount by side: systemChat format ["The %1 side has %2 banana(s) available!", side _player, _cntr # 0]; // Return: true }; I tried the setVariable / getVariable logic, but I'm unsure if it would work like that or if I'm tripping because I don't understand Namespaces yet.
  14. DISCLAIMER: I don't care about politics. I do what I do just because I love to play in a real context. If this mission below hurts you, you can try this one or just turn off the internet for a while. Download, Mission briefing, loadout, and more: https://steamcommunity.com/sharedfiles/filedetails/?id=3365964800 Languages supported: English and Portuguese. Support ACE Medical and ACRE2 Radios: More info on the Steam link above. This mission AI was dynamically built by CSWR:
  15. Now supporting single-player too. Cheers.
  16. Not sure if this issue was already reported about the current ARMA version, but is quite specific and the result is always the same! Loaded: === Active Addons === A3_Characters_F A3_Armor_F_EPB Tested with APCs and IFVs that support seven passengers; Tested in Livonia Map and Virtual Reality Map; Same results! mission.sqm download: 2kb https://drive.google.com/file/d/1f6ueIvYRKHNOz-Zq14C2517aYEr4_REF/view?usp=drive_link - - - - - - - - - - - - - - - - What to do, Test 1: Ask for units number 2 and 3 to get in the vehicle; Go and get gunner position; Ask for 4 and 5 to get in too (as passengers); Don't move the vehicle; Ask for 4 and 5 to disembark; Wait for them to reach their formation position; KEEP DO NOT MOVING THE VEHICLE; Ask for 4 and 5 to get in again; they get in. Result: they get in as expected. - - - - - - - - - - - - - - - - What to do, Test 2: Ask for units number 2 and 3 to get in the vehicle; Go and get gunner position; Ask for 4 and 5 to get in too (as passengers); Don't move the vehicle; Ask for 4 and 5 to disembark; Wait for them to reach their formation position; MOVE THE VEHICLE A METER FORWARD; Ask for 4 and 5 to get in again; they don't get in. Result: They get stuck a few meters from the vehicle's rear! PS1: if you ask for those AI to "STOP" when they are "stuck" out of the vehicle, those units get in immediately without you asking them to "get in" again. PS2: if you change your seat to the DRIVER one, and ask for those AI to disembark, move the vehicle, and then ask them to get in again, they get in the vehicle as passengers flawlessly. - - - - - - - - - - - - - - - - What to do, Test 3: Ask for units number 2 and 3 to get in the vehicle; Go and get gunner position BUT CHANGE TO THE COMMANDER ONE; Ask for 4 and 5 to get in too (as passengers); Don't move the vehicle; Ask for 4 and 5 to disembark; Wait for them to reach their formation position; KEEP DO NOT MOVING THE VEHICLE; Ask for 4 and 5 to get in again; they get in. Result: they get in as expected. - - - - - - - - - - - - - - - - What to do, Test 4: Ask for units number 2 and 3 to get in the vehicle; Go and get gunner position BUT CHANGE TO THE COMMANDER ONE; Ask for 4 and 5 to get in too (as passengers); Don't move the vehicle; Ask for 4 and 5 to disembark; Wait for them to reach their formation position; MOVE THE VEHICLE A METER FORWARD; Ask for 4 and 5 to get in again; they don't get in. Result: They get stuck a few meters from the vehicle's rear! - - - - - - - - - - - - - - - - What to do, Test 5: Ask for units number 2 and 3 to get in the vehicle; Go and get gunner position BUT CHANGE TO THE DRIVER ONE; Ask for 4 and 5 to get in too (as passengers); Don't move the vehicle; Ask for 4 and 5 to disembark; Wait for them to reach their formation position; KEEP DO NOT MOVING THE VEHICLE; Ask for 4 and 5 to get in again; they get in. Result: they get in as expected. - - - - - - - - - - - - - - - - What to do, Test 6: Ask for units number 2 and 3 to get in the vehicle; Go and get gunner position BUT CHANGE TO THE DRIVER ONE; Ask for 4 and 5 to get in too (as passengers); Don't move the vehicle; Ask for 4 and 5 to disembark; Wait for them to reach their formation position; MOVE THE VEHICLE A METER FORWARD; Ask for 4 and 5 to get in again; they get in. Result: they get in as expected. - - - - - - - - - - - - - - - - In conclusion, there's a stopgap solution: It is currently (since 2019?) frustrating to play Arma 3 as Mechanized Infantry using AI in the player's group, where the AI would play the role of the infantry that boards and disembarks the IFV/APC multiple times. The only way the AI unit members of the Player's group don't get stuck out of the group APC/IFV is if the player asks them to get in from the driver position OR give them the order to STOP when they are stuck, making those units (somehow) to get in the vehicle. Scripting: the same behaviors happen using scripts with the assignTeam to help to separate who does what, and following the AI Group Vehicle Management rules.
  17. thy_

    AI wont get in vehicle

    @Maff, probably you didn't execute exactly what makes the bug take place as @kagenekosamareported. Below, I explain in detail a step by step to reproduce what is happening. And yes, it looks like a true bug which makes it frustrating to use mechanized infantry between player and AI in the same group. The "solution" for keeping your Commander or Gunner position and ordering the AI members to get in again is to ask them to STOP when they are stuck right in the vehicle's rear. Immediately you ask them to stop, they get in the vehicle hehe. Ticket already open in BIS Bug Tracker: https://feedback.bistudio.com/T187980
  18. DAP is an Arma 3 script that allows the Mission Editor (you) to create real (or virtual) artillery/mortar fire-missions faster and smarter for one or multiple sides, using Eden marker’s positions and an external fire-missions list where you plan the caliber, ammo type, rounds, cycle of repetition and more. DAP doesn't change any original Arma AI behavior, saving server performance, and preserving the Arma integrity and compatibility with any mod. Why use DAP to manage artillery: unlike other scripts, DAP does not require the editor to specify artillery-pieces for each fire-mission. As soon as a fire-mission is triggered, DAP searches for artillery-pieces available at that time that fit the requested caliber, the requested ammunition-type, and have range to the target. This means that for the same target, DAP can use different pieces on the map; just as the same an artillery-piece can be used for multiple fire-missions with different targets. And DAP is absolutely scalable. How to install / Documentation: https://github.com/aldolammel/Arma-3-Dynamic-Artillery-Pieces-Script/blob/main/_DAP_Script_Documentation.pdf What you set for each fire mission with DAP: Real or virtual fire mission; The side that owns each fire-mission; Potential target sectors (Eden markers); How many artillery-pieces you want in each fire-mission; What caliber these pieces will be (Light, Medium, Heavy, Super Heavy or Combined); Ammunition type (HE, Cluster, Smoke, Flare etc); Control the volume of rounds per piece; How many repetition cycles does a fire mission have; Triggers will release the fire-mission (trigger activation, timer, kill/destruction). What you set globally with DAP: Custom callsign for each artillery side; Which piece calibers can use CommandChat to report (On/Off); Infinite ammunition (On/Off); Prevent artillery-pieces self-propelled to change position (On/Off); Prevent artillery-pieces from starting match with no magazines (On/Off); NEW! Fire-mission areas visible on the player map (On/Off); Custom cooldown by caliber among cycles of fire-mission repetition; Pre-defined whitelist of pieces working (Arma, DLCs, CDLCs, RHS, CUP, etc); Pre-defined whitelist of ammunition working (Arma, DLCs, CDLCs, RHS, CUP, etc); Pre-defined blacklist of currently bugged vehicles/static turrets; Pre-defined blacklist of currently bugged ammunition; Debug mode with simple or deep detailing; Etc… Automatically DAP Library supports content from: Arma 3; Expansion Apex; DLC Tanks; DLC Contact; CDLC Western Sahara; CDLC Reaction Forces; CDLC Expeditionary Forces; CDLC Global Mobilization; Mod RHS; Mod CUP. How DAP works technically: Before installation for advanced editors’ valuation, there's a workflow in the first pages of the documentation. Video demo: Soon! Check the file above on GitHub. Check the file above on GitHub. Documentation, link on this post header. Dependencies: None 😉 Download: - On GitHub: https://github.com/aldolammel/Arma-3-Dynamic-Artillery-Pieces-Script - On Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=3371824030 Missions using it: - Soon. - - - - - - - - - - - Changelog: Dec, 6th 2024 | v1.5.2: news, fixes and notes. Known issues: - If you delete some original artillery crew (the driver, for example), it will print out an error (WIP). So, use the original crew of vehicles you want to use; - - - - - - - - - - - Video tutorials (playlist): - Soon in my secret YouTube channel hehe
  19. The script and its information in the main post have been updated! Jan 5th 2025 | v1.5.5: HOTFIX > Map markers error message in Single-player; Improved > Small performance improvements; Documentation updated.
  20. DISCLAIMER: I don't care about politics. I do what I do just because I love to play in a real context. If this mission below hurts you, you can try this one or just turn off the internet for a while. Download, Mission briefing, loadout, and more: https://steamcommunity.com/sharedfiles/filedetails/?id=2728537885 Languages supported: English and Portuguese. Support ACE Medical: More info on the Steam link above. This mission AI was dynamically built by CSWR:
  21. Download, Mission briefing, loadout, and more: https://steamcommunity.com/sharedfiles/filedetails/?id=3399901901 Languages supported: English and Portuguese. Support ACE Medical and ACRE2 Radios: More info on the Steam link above. This mission AI was dynamically built by CSWR:
  22. 5K hours in editor and it's the first time I got stuck in Eden in many years hehe. Thanks!
  23. Happy New Year, gentlemen. I'm studying how to use the CfgCommunicationMenu in-game and I got stuck! Here below is what I got based on BIKI example. // File: /mission_folder/description.ext class CfgCommunicationMenu { class request_ext_by_air { text = "Request Air Extraction"; ... expression = "player setVariable ['BIS_SUPP_request', ['Artillery', _pos]];"; // Code executed upon activation ... enable = "1"; // Simple expression condition for enabling the item removeAfterExpressionCall = 1; }; }; // Calling it by scripting or Eden trigger, e.g: [player,"request_ext_by_air"] call BIS_fnc_addCommMenuItem; Here is the function that I want to call in-game, using the support menu: // file: /mission_folder/support_request_heli.sqf params ["_vehToUse", "_posToGo"]; private ["_wp"]; _wp = group (driver _vehToUse) addWaypoint [_posToGo, 0]; _wp setCurrentWaypoint _wp; // return: true; Back in the description.ext, this line is the answer but my brain doesn't help as I need... How can I call the custom function above through this line below? expression = "player setVariable ['BIS_SUPP_request', ['Artillery', _pos]];"; // Code executed upon activation
×