o5_
-
Content Count
47 -
Joined
-
Last visited
-
Medals
Posts posted by o5_
-
-
ACC4I - Air Craft Command Control Computers Communications and Intelligence
This script/mod brings enhanced situational awareness and targeting capabilities for air Craft (something I feel the game is lacking).
+ adds an invisible UAV to serve as the targeting pod and laser
+ Interactive MFD
+ adds ability to interact with data links in real time
+ adds ability to interact with sensors in real time
+ TGP camera can lock to position or follow pilots view
+ TGP cam has night vision, IR+, and IR-
+ Adds navigational display
+ TGP cam and navigational display zoom
+ adds ability to cycle know targets present on data link and those known to pilot (I doubt the pilot would have knowledge of targets that the sensors don't). I plan to make the latter an option you can disable
+ while cycling system targets the TGP will lock to the current target, if in range (currently 3km)This is very much a work in progress, but I want to share it as a proof of concept to get feedback for suggestions and help if/where needed. Right now it's a set of scripts (easily hosted on a server and remote executed for clients). When it reaches a stable and near complete state I'll package it as a mod.
Controls (editable in game settings > controls > add-on settings)
Ctrl+z: toggle TGP cam mode
Ctrl+x: ACC4I action menu
Ctrl+c: MFD interaction
Ctrl+v: TGP/nav zoom out
Ctrl+b: TGP/nav zoom inCtrl+n: arm/desarm TGP laser
When you climb in a Air Craft you have to initialize ACC4I with Ctrl+x
- 2
-
ACC4I - Air Craft Command Control Computers Communications and Intelligence
This script/mod brings enhanced situational awareness and targeting capabilities for air Craft (something I feel the game is lacking).
+ adds an invisible UAV to serve as the targeting pod and laser
+ Interactive MFD
+ adds ability to interact with data links in real time
+ adds ability to interact with sensors in real time
+ TGP camera can lock to position or follow pilots view
+ TGP cam has night vision, IR+, and IR-
+ Adds navigational display
+ TGP cam and navigational display zoom
+ adds ability to cycle know targets present on data link and those known to pilot (I doubt the pilot would have knowledge of targets that the sensors don't). I plan to make the latter an option you can disable
+ while cycling system targets the TGP will lock to the current target, if in range (currently 3km)This is very much a work in progress, but I want to share it as a proof of concept to get feedback for suggestions and help if/where needed. Right now it's a set of scripts (easily hosted on a server and remote executed for clients). When it reaches a stable and near complete state I'll package it as a mod.
Controls (editable in game settings > controls > add-on settings)
Ctrl+z: toggle TGP cam mode
Ctrl+x: ACC4I action menu
Ctrl+c: MFD interaction
Ctrl+v: TGP/nav zoom out
Ctrl+b: TGP/nav zoom inCtrl+n: arm/disarm TGP laser
When you climb in a Air Craft you have to initialize ACC4I with Ctrl+x
- 1
-
Thanks man. I look into using config classes.
-
Gentlemen, greetings again. I created a display control to mimic a MFD screen with a map/nav page with the following code...
with uiNamespace do { disableSerialization; TGPMFD = findDisplay 46 ctrlCreate ["RscPicture", 89978]; TGPMFD ctrlSetPosition [ 0.69 * safezoneW + safezoneX, 0.578 * safezoneH + safezoneY, 0.31 * safezoneW, 0.415 * safezoneH ]; TGPMFD ctrlSetText "ACC4I\mfd.paa"; TGPNav = findDisplay 46 ctrlCreate ["RscMapControl", 89980]; TGPNav ctrlSetPosition [ 0.7205 * safezoneW + safezoneX, 0.619 * safezoneH + safezoneY, 0.2475 * safezoneW, 0.33 * safezoneH ]; };
I have it updating properly but I'll use this picture to describe the issue...
.
any ideas how I can fix this. I think I have to center the map on the center of the control.?.? Thank you!
-
Amazing, just what I was looking for! Thanks!
- 1
-
Hey George, thanks. I'm on my mobile and I'm having a hard time viewing the content in the link you sent. Is there a particular part that would benefit me? Again, thanks man.
Sent from my SM-G930F using Tapatalk- 1
-
If I spawn a random group not knowing how many vehicles are in it or how many dismounted soldiers it has in it (assuming there are both), what's the easiest way (code) to mount all dismounted soldiers in vacant vehicles positions? Thanks for the help guys.
Sent from my SM-G930F using Tapatalk
-
I suggest leaving out the postInits in functions. Cfg so I, as a mission maker, have the flexibility to add enable/disable in mission parameters. Thanks@genesis92x and@Freddo3000. Love vcom
Sent from my SM-G930F using Tapatalk -
Thanks for the reply grumpy
Sent from my SM-G930F using Tapatalk -
Is there a way to distinguish how a target is detected? I want to list targets picked up by my aircraft sensors exclusively, not just some vehicle detected visually. For example we can list tracks tracks sent over the datalink with listremotetargets. Anything similar for local targets? Or a workaround? Thanks.
Sent from my SM-G930F using Tapatalk
-
so I spend a lot of time playing arma by myself so this is something that I would enjoy. whats the best way to control the main gun as the pilot? I'll include a few ideas I had and hopefully someone can provide some insight towards a better solution.
#1.
private _laser = ("LaserTargetW" createVehicleLocal [0,0,0]); private _gunner = ((group player) createUnit ["B_soldier_F", [0,0,0], [], 0, "NONE"]); missionNamespace setVariable ["LASE", _laser]; missionNamespace setVariable ["GUN", _gunner]; _gunner moveInAny (vehicle player); hideObject _gunner; _gunner setSpeaker "NoVoice"; _gunner setSkill 1; _gunner disableAI "TARGET"; _gunner disableAI "AUTOTARGET"; _gunner disableAI "AUTOCOMBAT"; _gunner disableAI "FSM"; (group player) setBehaviour "COMBAT"; (group player) setCombatMode "BLUE"; [_laser,_gunner] spawn { _laser = (_this param [0]); _gunner = (_this param [1]); waitUntil { _laser setPos (AGLtoASL (screenToWorld [.5,.5])); //_gunner reveal _laser; //_gunner doTarget _laser; (not (missionNamespace getVariable "laserOn")) }; }; _gunner commandTarget _laser;
or use an actual laser
2.
animateSource:
AH99 animateSource ["MainTurret", -rad 90]; AH99 animateSource ["MainGun", rad 30];
what do you guys think? are there better ideas or methods? thanks.
- 2
-
Thanks for the reply. I'll certainly consider your recommendations and see what I can do.
Sent from my SM-G930F using Tapatalk -
So as the title states I'm curious what you all think about efficiency/optimizations when it comes to writing a lengthy script/mod for a mission. My current scripted mod is AC-C4I (Air Craft Command, Contol, Computers, Communications, & Intelligence). It has to do with sensors and targeting. The scripts have a lot of "waitUntil" commands for locking the targeting camera to screenToWorld amongst other functions. What would be the most efficient way to write this/integrate it into a mission. I can write the whole thing in one file and "call compile preprocessFileLineNumbers" on init. I can create a CfgFunctions.hpp and add it to the description.ext, or I could make it an FSM. I'd love to hear from you guys. Thanks.
-
if I had the darter I could lock the camera simply by doing-
_uav lockCameraTo [(screenToworld [0.5,0.5]), [0]];
and if I wanted to show an on screen PIP of the uav feed I create a camera object and place it like this-
_cam attachTo [_uav, [0,0,0], "PiP0_pos"];
how can I do both of these for the pilotCamera found on planes in the new jets DLC? Thanks guys.
-o5
-
it is. thank you so much!
Sent from my SM-G930F using Tapatalk -
how do I reference (through scripting) targets that have already been identified and tracked by the new sensors active radar?
Sent from my SM-G930F using Tapatalk
-
are there new commands with the jets dlc sensors? I'm trying to find a way to retrieve/reference targets that my vehicles radar has already identified. thanks ahead of time.
Sent from my SM-G930F using Tapatalk
-
I know its late but I appreciate the help! I see you on the forums frequently @grumpyoldman, can you help me with my most recent question/post? its regarding registering headless clients to an array as they initialize or join.
-
The other way I was using was...
{ if (_x isKindOf VRENTITYCLASSNAME) then { ... }; } forEach allEntities;
the only issue with this is with AI enabled if on of the virtual entities is controlled by AI and not a player (or PC) it will still show up in the list and break scripts
-
Yes they are. And I like to make my missions with AI enabled so my scripts don't fail when looking for variables (entities). With that said I wait for the player or headless client to initialize to avoid errors.
-
Here is what I currently use....
Init.sqf:
if ((not (hasInterface)) and (not (isDedicated))) then { [] spawn { waitUntil {!isNull player}; HC_init = (vehicle player); publicVariableServer "HC_init"; }; };
initServer.sqf:
missionNamespace setVariable ["HCs",[]]; "HC_init" addPublicVariableEventHandler { _hc_name = (_this select 1); _hc_id = (owner _hc_name); _hcs = (missionNamespace getVariable "HCs"); _hcs set [(count _hcs), [_hc_name,_hc_id]]; missionNamespace setVariable ["HCs",_hcs]; };
as the title says, is there a more efficient way to accomplish this? Thanks.
-
Any luck with this? I'm trying to do the same thing and I've tried syncing a side logic to the SectorTactic then syncing my spawned units to the side logic, syncing directly to the SectorTactic and to the spawnAI module. Its a great idea though.
EDIT: I found this in the functions viewer...
private["_module"]; _module = _this param [0,objNull,[objNull]]; /*-------------------------------------------------------------------------------------------------- RUN ONCE --------------------------------------------------------------------------------------------------*/ private["_initialized"]; _initialized = missionNamespace getVariable ["bis_fnc_moduleSpawnAISectorTactic_initialized",false]; //make sure the module script runs only once if (_initialized) exitWith {}; missionNamespace setVariable ["bis_fnc_moduleSpawnAISectorTactic_initialized",true]; /*-------------------------------------------------------------------------------------------------- LOAD FUNCTIONS --------------------------------------------------------------------------------------------------*/ _path = "\A3\Modules_F_Heli\Misc\Functions\ModuleSpawnAISectorTactic\"; [ _path, "bis_fnc_moduleSpawnAISectorTactic_", [ "enableAI", "disableAI", "startFSM", "initGroup", "copyGroup", "getNearTransportVehicle", "getGrpAvgMagazines", "execWidgetFSM", "deployLocValid", "getGroupIdVar", "resetEventHandlerFlags", "adjustGear", "widgetInit", "widgetUpdate", "isVehicleArmed", "getVehicleWeapons", "vehicleHit", "splitGroup", "unstuck", "getClosestSector", "main" ] ] call bis_fnc_loadFunctions; /*-------------------------------------------------------------------------------------------------- INITIALIZE EMITTERS --------------------------------------------------------------------------------------------------*/ private["_affectedEmitters","_allEmitters"]; _affectedEmitters = [_module,["ModuleSpawnAI_F"]] call bis_fnc_synchronizedObjects; _allEmitters = allMissionObjects "ModuleSpawnAI_F"; if (count _affectedEmitters == 0) then { _affectedEmitters =+ _allEmitters; }; { if (_x in _affectedEmitters) then { _x setVariable ["useSectorTactic",true]; } else { _x setVariable ["useSectorTactic",false]; }; } forEach _allEmitters; /*-------------------------------------------------------------------------------------------------- INITIALIZE SECTORS & AREAS & TRIGGERS --------------------------------------------------------------------------------------------------*/ private["_fn_onSectorCaptured"]; bis_fnc_moduleSpawnAISectorTactic_areas = []; bis_fnc_moduleSpawnAISectorTactic_sectors = [true] call bis_fnc_moduleSector; bis_fnc_moduleSpawnAISectorTactic_sectorsWest = []; bis_fnc_moduleSpawnAISectorTactic_sectorsEast = []; bis_fnc_moduleSpawnAISectorTactic_sectorsGuer = []; bis_fnc_moduleSpawnAISectorTactic_sectorsNonWest = []; bis_fnc_moduleSpawnAISectorTactic_sectorsNonEast = []; bis_fnc_moduleSpawnAISectorTactic_sectorsNonGuer = []; bis_fnc_moduleSpawnAISectorTactic_sectorsUnknown = []; _fn_onSectorCaptured = { private["_sector","_capper","_looser"]; _sector = _this param [0,objNull,[objNull]]; _capper = _this param [1,west,[west]]; _looser = _this param [2,west,[west]]; _capperSectors = missionNamespace getVariable [format["bis_fnc_moduleSpawnAISectorTactic_sectors%1",_capper],[]]; _looserSectors = missionNamespace getVariable [format["bis_fnc_moduleSpawnAISectorTactic_sectors%1",_looser],[]]; _capperSectors = _capperSectors + [_sector]; _looserSectors = _looserSectors - [_sector]; missionNamespace setVariable [format["bis_fnc_moduleSpawnAISectorTactic_sectors%1",_capper],_capperSectors]; missionNamespace setVariable [format["bis_fnc_moduleSpawnAISectorTactic_sectors%1",_looser],_looserSectors]; bis_fnc_moduleSpawnAISectorTactic_sectorsNonWest = bis_fnc_moduleSpawnAISectorTactic_sectors - bis_fnc_moduleSpawnAISectorTactic_sectorsWest; bis_fnc_moduleSpawnAISectorTactic_sectorsNonEast = bis_fnc_moduleSpawnAISectorTactic_sectors - bis_fnc_moduleSpawnAISectorTactic_sectorsEast; bis_fnc_moduleSpawnAISectorTactic_sectorsNonGuer = bis_fnc_moduleSpawnAISectorTactic_sectors - bis_fnc_moduleSpawnAISectorTactic_sectorsGuer; }; private["_area","_sector"]; { if (true) then { _sector = _x; //setup event handler for tracking changes of the sector ownership [_sector,"ownerChanged",_fn_onSectorCaptured] call bis_fnc_addScriptedEventHandler; //get area synced with the sector _area = [_sector, "LocationArea_F", true] call bis_fnc_synchronizedObjects; if (count _area == 0) exitWith { ["[x] No valid area is linked to the sector %1!", _sector] call bis_fnc_error; }; if (count _area > 1) exitWith { ["[x] More then 1 area is linked to the sector %1!", _sector] call bis_fnc_error; }; _area = _area select 0; _sector setVariable ["area",_area]; _sector setVariable ["position",getPos _area]; _area setVariable ["sector",_sector]; bis_fnc_moduleSpawnAISectorTactic_areas set [count bis_fnc_moduleSpawnAISectorTactic_areas, _area]; }; } forEach bis_fnc_moduleSpawnAISectorTactic_sectors; //initialize gvars with sector owners private["_sector","_owner","_sectors"]; { _sector = _x; _owner = _sector getVariable ["owner","Unknown"]; _sectors = missionNamespace getVariable format["bis_fnc_moduleSpawnAISectorTactic_sectors%1",_owner]; _sectors set [count _sectors, _sector]; } forEach bis_fnc_moduleSpawnAISectorTactic_sectors; bis_fnc_moduleSpawnAISectorTactic_sectorsNonWest = bis_fnc_moduleSpawnAISectorTactic_sectors - bis_fnc_moduleSpawnAISectorTactic_sectorsWest; bis_fnc_moduleSpawnAISectorTactic_sectorsNonEast = bis_fnc_moduleSpawnAISectorTactic_sectors - bis_fnc_moduleSpawnAISectorTactic_sectorsEast; bis_fnc_moduleSpawnAISectorTactic_sectorsNonGuer = bis_fnc_moduleSpawnAISectorTactic_sectors - bis_fnc_moduleSpawnAISectorTactic_sectorsGuer; private["_area","_triggers"]; //get all triggeres and store them in areas and sectors { _area = _x; _triggers = [_area,"EmptyDetector"] call bis_fnc_synchronizedObjects; _area setVariable ["triggers",_triggers]; (_area getVariable "sector") setVariable ["triggers",_triggers]; } forEach bis_fnc_moduleSpawnAISectorTactic_areas; /*-------------------------------------------------------------------------------------------------- START THE GROUP MONITOR --------------------------------------------------------------------------------------------------*/ [] spawn bis_fnc_moduleSpawnAISectorTactic_main;
anyone know how to do what LT.DANG is asking based on the code above? Thanks.
-
How does becti handle headless clients? And does it have any performance tweaks like caching or dynamic simulation? Would headless clients work on becti? Thanks guys.
Sent from my SM-G930F using Tapatalk -
Disregard I understand. Thanks
Sent from my SM-G930F using Tapatalk
AC-C4I - Air Craft Command Control Computers Communications and Intelligence
in ARMA 3 - ADDONS & MODS: DISCUSSION
Posted
Sorry gents. Should be fixed.