mrcurry 509 Posted May 27, 2010 The biki about the SecOps Manager is quite incomplete and I didn't find anything in an hour of searching on the forums so here goes. Is it possible to remove a Support Request (added with the BIS_SOM_addSupportRequestFunc function)? Share this post Link to post Share on other sites
meade95 0 Posted May 31, 2010 Does SECOP "create" enemies for you to fight? Or does it used already placed enemy AI, and replace them on your current map (for secondary objectives?). I'm trying to use the SECOPs Manager mod..for calling in Airstrikes....(and it keeps asking me to do other objectives....which is fine...I'm just curious as to how it creates these enemies). Share this post Link to post Share on other sites
wickedstigma 10 Posted May 31, 2010 (edited) The biki about the SecOps Manager is quite incomplete and I didn't find anything in an hour of searching on the forums so here goes.Is it possible to remove a Support Request (added with the BIS_SOM_addSupportRequestFunc function)? Yes you can, just delete the part of the support you dont want. For example, if you just want just the artillery just add: [["artillery_barrage"],player] call BIS_SOM_addSupportRequestFunc; If you want the CAS add: [["tactical_airstrike"],player] call BIS_SOM_addSupportRequestFunc; If you want to of them, for example CAS and Artillery add: [["tactical_airstrike", "artillery_barrage"], player] call BIS_SOM_addSupportRequestFunc; ---------- Post added at 04:14 AM ---------- Previous post was at 04:12 AM ---------- Does SECOP "create" enemies for you to fight? Or does it used already placed enemy AI, and replace them on your current map (for secondary objectives?).I'm trying to use the SECOPs Manager mod..for calling in Airstrikes....(and it keeps asking me to do other objectives....which is fine...I'm just curious as to how it creates these enemies). It does create the enemies for your second ops so you dont have to put any enemies on the map for SOM to work. To disable the Secondary Ops Missions just add to the SOM Module init line the following code: this setVariable ["settings", [[], true, nil, nil, false]]; This will not affect your support calls but will disable the secondary missions. Edited May 31, 2010 by wickedstigma Adding Info. Share this post Link to post Share on other sites
mrcurry 509 Posted June 4, 2010 (edited) Yes you can, just delete the part of the support you dont want. For example, if you just want just the artillery just add: [["artillery_barrage"],player] call BIS_SOM_addSupportRequestFunc; If you want the CAS add: [["tactical_airstrike"],player] call BIS_SOM_addSupportRequestFunc; If you want to of them, for example CAS and Artillery add: [["tactical_airstrike", "artillery_barrage"], player] call BIS_SOM_addSupportRequestFunc; My question was more if you could remove a Support Request that was already added to the Communication list, will your solution do that? As in 1. trigger adds artillery to the squad leaders communications radio. 2. the radioman dies meaning no artillery will be available until someone else pickup the radio i.e. artillery is removed from the list for the squad leader. 3. someone picks up the radio and the option is now readded. It doesn't really matter now, since I just wrote my own call arty script based on ExecuteTemplateMission when the SOM failed to deliver the customization I needed, but I would be interested in the knowledge :P Edited June 4, 2010 by mrCurry Share this post Link to post Share on other sites
meade95 0 Posted June 4, 2010 I still find calling in a "tactical airstrike" (via this method above using the SecOps) both very easy...while at the same time frustrating.....in that while you can call it up and get a confirmation......I can't figure out how to place / pick the spot I want the aircraft to "bomb" (there seems to be no ryme or reason to when I'm given the tactical crosshairs to assign where to point to). Share this post Link to post Share on other sites
wickedstigma 10 Posted June 6, 2010 My question was more if you could remove a Support Request that was already added to the Communication list, will your solution do that?As in 1. trigger adds artillery to the squad leaders communications radio. 2. the radioman dies meaning no artillery will be available until someone else pickup the radio i.e. artillery is removed from the list for the squad leader. 3. someone picks up the radio and the option is now readded. It doesn't really matter now, since I just wrote my own call arty script based on ExecuteTemplateMission when the SOM failed to deliver the customization I needed, but I would be interested in the knowledge :P I think all of those things could be done with a while "alive player" do {whatever} . But I will have to look into it to see if I can help. Btw, how you did made your own arty code? Im really looking forward to it since Im interested specially in adding more features to one of my codes, I mean, like for example when you call the Arty with SOM you know it gives you the option of the different rounds, the HE, the smoke and everything else. ---------- Post added at 05:51 PM ---------- Previous post was at 05:45 PM ---------- I still find calling in a "tactical airstrike" (via this method above using the SecOps) both very easy...while at the same time frustrating.....in that while you can call it up and get a confirmation......I can't figure out how to place / pick the spot I want the aircraft to "bomb" (there seems to be no ryme or reason to when I'm given the tactical crosshairs to assign where to point to). Just keep pointing to your target with your laser designator to the place you want the bomb placed until the place is bombed. It would be nice that the A10 also shoots his GAU-8 at the target. Share this post Link to post Share on other sites
mrcurry 509 Posted June 9, 2010 It's pretty simple actually :P What I do is I use several action menu entries each associated with an unique firemission which I forward (using publicVariable/addPublicVariableEventHandler)to the very neat BIS_ARTY_F_ExecuteTemplateMission funcion (The action menu does get quite crowded if you have alot of firemissions, was planning on rewriting for use of a dialog when I feel like it). ---enableArtillerySupport.sqf--- //---enableArtillerySupport.sqf--- //---Checks if a unit has a radio and adds/removes "call artillery" actions accordingly --- //---NOTE: Requires ACE2 and a FUNCTIONS MODULE placed in the editor --- //---Include in init.sqf --- //#include "scripts\enableArtillerySupport.sqf" //Defines (Default values can be overridden by defining them before they are included. #ifndef CUR_arty_reloadTime #define CUR_arty_reloadTime 90 //Time in seconds between splash and battery being available for new firemission. #endif #ifndef CUR_arty_numberOfSalvos #define CUR_arty_numberOfSalvos 7 //Number of available salvos. (Also limited by the total ammo of the battery) #endif CUR_arty_enableArtillerySupport = { /* --------------Parameters-------------- 1 - Unit - Object 2 - Artillery module - Artillery module sychronized with a battery (optional) 3 - Prefix - String, text added before each firemission title, default: "Call strike: " --------------Adding more firemissions-------------- 1. Create more firemissions according to the following template: ["Title",["Mission type","Ordnance",Delay, Duration/Round count] "Title" = Title as shown in the action menu (Note: Prefix will be added infront of the title of the firemission). "Mission type" = “IMMEDIATE†- complete after a requested number of rounds have been fired. “TIMED†- complete after a specific number of seconds have elapsed. "Ordnance" = “HE†- High Explosive “WP†- White Phosphorous “SADARM†- Search and Destroy Armor “LASER†- Laser guided artillery shell “ILLUM†- Flares “SMOKE†- Non-Incendiary Smoke Delay = The delay, in seconds, between each shot. Duration/Round count = For IMMEDIATE missions, the number of rounds to fire. For TIMED missions, the number of seconds to sustain fire. IMPORTANT: Make sure the battery can fire the selected ordnance! 2. Add the firemissiontemplates to the _templates array in reverse order (the last one will be the top one in the action menu). */ //----------------------------Firemissions---------------------------- private ["_templates"]; _templates = [ ["3 rnd SADARM",["IMMEDIATE","SADARM",3,3]], ["10 rnd HE",["IMMEDIATE","HE",0,10]] ]; //----------------------------Dont edit below this line---------------------------- waitUntil {!isnil "bis_fnc_init"}; sleep 1; //Init private ["_unit","_battery","_prefix"]; _unit = _this select 0; _battery = _this select 1; _prefix = if ( count _this > 2 ) then { _this select 2} else {"Call strike: "}; //Only available for the player during singleplayer if(!isMultiplayer && _unit != player) exitWith{}; //Only available to a local unit if(!local _unit) exitWith{}; _battery setVariable ["CUR_arty_bIsAvailable",true,true]; _battery setVariable ["CUR_arty_NumShots",CUR_arty_numberOfSalvos,true]; [_battery, false] call BIS_ARTY_F_SetShellSpawn; //While the unit is alive private ["_counter","_ids"]; while {true} do { //Wait until the unit has a radio waitUntil { ([_unit] call ACE_fnc_HasRadio) }; //Add actions for each firemission template _ids = []; _counter = 0.01; hint "Artillery available"; { private ["_id"]; _id = _unit addAction [ ((_prefix) + "<t color='#4444ff'>" + (_x select 0) + "</t>"), "scripts\callArtilleryStrike.sqf", [_battery,(_x select 1)], (1+_counter), false, true, "", format["(%1 getVariable 'CUR_arty_bIsAvailable') && ((%1 getVariable 'CUR_arty_NumShots') > 0) && (_this == _target)",_battery] //TODO: figure out how to call artillery from within a vehicle ]; _ids = _ids + [_id]; _counter = _counter + 0.01; } forEach _templates; //Wait until unit doesn't have a radio waitUntil{ !([_unit] call ACE_fnc_HasRadio) }; { _unit removeAction _x; } forEach _ids; }; }; CUR_arty_fireMissionTemplate = []; "CUR_arty_fireMissionTemplate" addPublicVariableEventHandler { if(3 == count (_this select 1)) then { if(isServer) then { (_this select 1) call BIS_ARTY_F_ExecuteTemplateMission; } else { [(_this select 1) select 0] call CUR_arty_displayProgress; }; }; }; CUR_arty_onMapClick = { onMapSingleClick ""; private ["_battery","_pos","_template"]; _battery = _this select 0; _pos = _this select 1; _template = _this select 2; _pos set[2,abs(_pos select 2)]; nul = (_this) call CUR_arty_targetMarker; CUR_arty_fireMissionTemplate = [_battery,_pos,_template]; CUR_arty_fireMissionTemplate call BIS_ARTY_F_ExecuteTemplateMission; }; CUR_arty_onMapClick_MP = { onMapSingleClick ""; private ["_battery","_pos","_template"]; _battery = _this select 0; _pos = _this select 1; _template = _this select 2; pos set[2,abs(_pos select 2)]; nul = (_this) call CUR_arty_targetMarker; CUR_arty_fireMissionTemplate = [_battery,_pos,_template]; publicVariable "CUR_arty_fireMissionTemplate"; }; CUR_arty_targetMarker = { private ["_battery","_pos","_template"]; _battery = _this select 0; _pos = _this select 1; _template = _this select 2; _markerstr = createMarker["CUR_arty_target",_pos]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "hd_destroy"; _markerstr setMarkerColor "ColorRed"; _markerstr setMarkerText format[" %1 strike",(_template select 1)]; }; CUR_arty_displayProgress = { private ["_battery"]; _battery = _this select 0; waitUntil {_battery getVariable "ARTY_ONMISSION"}; hint format["%1: Coordinates recieved",_battery]; waitUntil {(_battery getVariable "ARTY_SHOTCALLED") || (_battery getVariable "ARTY_BADTARGET")}; if (_battery getVariable "ARTY_BADTARGET") then { sleep 10; hint format["%1: \nBad target, aborting firemission.",_battery]; deleteMarker "CUR_arty_target"; } else { hintSilent format["%1: Shot out",_battery]; waitUntil {_battery getVariable "ARTY_COMPLETE"}; hintSilent format["%1: Rounds complete",_battery]; waitUntil {_battery getVariable "ARTY_SPLASH"}; hintSilent format["%1: Splash",_battery]; sleep 5; _battery setVariable ["CUR_arty_NumShots",(_battery getVariable "CUR_arty_NumShots")-1,true]; sleep (CUR_arty_reloadTime-5); deleteMarker "CUR_arty_target"; if(_battery getVariable "CUR_arty_NumShots" > 0) then { hint format["%2: \nArtillery reloaded, %1 salvos left",_battery getVariable "CUR_arty_NumShots",_battery]; } else { hint format["%1: No salvos left, \nArtillery packing up.",_battery]; }; }; }; ---callArtilleryStrike.sqf--- //callArtilleryStrike.sqf /* _unit addAction [ "Title", "scripts\callArtilleryStrike.sqf", [battery,firemissiontemplate], priority, bShowHud, bHideOnUse, "shortcut", "condition", ]; */ private ["_arguments","_battery","_template","_batPos","_ammo","_target"]; _arguments = _this select 3; _battery = _arguments select 0; _template = _arguments select 1; _batPos = getPosASL _battery; if (!(_battery getVariable "CUR_arty_bIsAvailable")) then { hint "The battery is on a mission."; } else { //Set arty availability _battery setVariable ["CUR_arty_bIsAvailable",false,true]; sleep 1; hint "Open map"; waitUntil {sleep 2; hintSilent "Open map"; visibleMap}; hint "Left click to define target for artillery strike."; if(isMultiplayer) then { //Multiplayer onMapSingleClick format["nul = [%1,_pos,%2] spawn CUR_arty_onMapClick_MP; true", format["%1",_battery],format["%1",_template]]; } else { //Singleplayer onMapSingleClick format["nul = [%1,_pos,%2] spawn CUR_arty_onMapClick; true", format["%1",_battery],format["%1",_template]]; }; [_battery] call CUR_arty_displayProgress; _battery setVariable ["CUR_arty_bIsAvailable",true,true]; }; Feel free to use this code in anyway you want. Credits to me are appreciated but not necessary. ;) Share this post Link to post Share on other sites