Jump to content

genesis92x

Member
  • Content Count

    941
  • Joined

  • Last visited

  • Medals

Everything posted by genesis92x

  1. genesis92x

    FSM vs SQF

    I'm no expert, but isn't it a little more complicated than that? FSM condition evaluation is on each frame and unscheduled. Do you mean that they somehow run on a 3ms schedule, but the code contained within the FSM is executed in an unscheduled environment? You are not allowed to use sleep/waituntil in an FSM.
  2. Gen_VirtualCargo Hey all, I made this simple function in about ~2 hours for a mission of mine and thought the community as a whole might get some use out of it. It is a lightweight, mod compatible, easy-to-use, virtual cargo system that allows vehicles to "carry" objects/other vehicles around and deploy them dynamically across the battlefield. Including ammo crates and etc. The function pulls how much each vehicle can hold from it's config. A simple but intuitive UI. It also allows for dynamic placement of objects into the world. Features - Store objects into vehicles - Deploy objects from vehicles using a line-of-sight system - Prevents using objects to "punt" or destroy other objects (restrictive placement system) - Light weight - Easy to mod - Supports modded vehicles - Keeps inventories and damage states of transported objects. - avoids using attachto due to FPS hit by attachto Bugs I made it in ~2 hours, there will be a few bugs. How to use? Usage is fairly simple. Download the folder below, and copy the description.ext into your mission and the folder Gen_VirtualCargo. Place this code in the init for any vehicle you wish to be affected by this script. if (isServer) then { [ [CargoVehicle1], { if !(hasInterface) exitWith {}; params ["_Veh"]; _Veh addAction ["Cargo Access", {params ["_target", "_caller", "_actionId", "_arguments"];[_target] spawn GEN_fnc_VirtualCargo;},[],0.5,false,true,"(alive _target)"]; } ] remoteExecCall ["BIS_fnc_call",0,CargoVehicle1]; }; Have fun! https://www.dropbox.com/s/vywsoaixcr4ihyo/Gen_VirtualCargo.7z?dl=0
  3. genesis92x

    Adding cargo to vehicles

    Should almost be treated like one. When I began scripting long ago - I found it rather silly and the 'helpful' applications of it seemed to be outweighed by the helpful applications of it. Much easier to just create a little script to handle unit init's instead of editor based init's
  4. genesis92x

    Adding cargo to vehicles

    Keep in mind (unless this has been fixed?) that if you add that command to a units init, it will execute everytime a player joins. So if you have a JIP mission, take that into consideration. It might help to name the units and add those commands into the init.sqf inside a if (isserver) then {};
  5. I have generally stayed away from AI boats due to terrible experiences I have had with them. With that said, off the top of my head, there may be some things that (could) help? I'm at the office here, so I can't test anything. On the init of the vehicle, you could try a limitspeed command this limitspeed 10; Sure it won't make the boat "zoom" around, but it may give them just enough "control" to not beach their boat? You could try splitting the driver/gunners into two separate groups and give the driver careless behavior, or possibly settings the whole group to careless and looping a suppressivefire command once they detect the players. Worst comes to worst, you can make the boat not take damage, and occasionally check if the boat is beached with issurfacewater, and then setvelocity back into the water or setpos it.
  6. The move command fails in MP most likely due to the helicopter1 group not being local to the computer that is executing the command. In mulitplayer/ a dedicated environment you will want to use remoteexec to assure the unit gets his movement order correctly - or have the addaction call a function that is ran server side that will run all the code you need.
  7. genesis92x

    [Release] Enhanced UAV Intel

    What a cool idea 🙂 Thanks for sharing this
  8. genesis92x

    RemoteExec on a global scale

    You're right. It's not a magic bullet. It's a valuable tool that requires some practice in using. I will definitely take the time in figuring out how to use remoteexec in the most efficient ways - it's a great solution for missions for resolving a lot of locality issues. Keep in mind, depending on the magical circumstances of the ArmA 3 engine, remoteexec may not be 100% precise in executing the code. remoteexec is also great for a quick solution for JIP addactions, as you can tie it to the object the addaction is added to - and upon deletion of that object it removes itself from the JIP list.
  9. Stupid question here, what purpose does "force force" do? Here is the default CBA config and userconfig from Vcom, they look different - perhaps the issues can be found there [] spawn { sleep 1; waitUntil {!(isNil "CBAACT")}; if (CBAACT && VCM_USECBASETTINGS) then { [ "VCM_ActivateAI", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Vcom Active", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true, // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_ActivateAI = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; //VCM_USECBASETTINGS = true; If CBA is enabled on the host, use the CBA default settings. If false, use the filepatching settings instead. [ "VCM_USECBASETTINGS", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Use CBA-Vcom Settings?", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true, // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_USECBASETTINGS = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_Debug", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Enable Debug Mode. Mostly systemchat messages.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. false,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_Debug = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_SIDEENABLED", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "LIST", // setting type "Sides impacted by Vcom.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [[[west,east,resistance],[west,east],[west],[east],[resistance],[resistance,west],[resistance,east]],[["West, East, Resistance"],["West, East"],["West"],["East"],["Resistance"],["Resistance, West"],["Resistance, East"]],0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_SIDEENABLED = _this; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_ARTYENABLE", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Enable AI use of Artillery", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true, // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_ARTYENABLE = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_ARTYSIDES", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "LIST", // setting type "Sides that will use VCOM Artillery", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [[[west,east,resistance],[west,east],[west],[east],[resistance],[resistance,west],[resistance,east]],[["West, East, Resistance"],["West, East"],["West"],["East"],["Resistance"],["Resistance, West"],["Resistance, East"]],0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_ARTYSIDES = _this; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_CARGOCHNG", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Vcom handling of disembark/embarking for AI?", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_CARGOCHNG = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_TURRETUNLOAD", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Disembark from turret positions?", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_TURRETUNLOAD = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_DISEMBARKRANGE", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Distance AI disembark from the enemy?", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [50,1000,200,0], // data for this setting: [min, max, default, number of shown trailing decimals] true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_DISEMBARKRANGE = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_StealVeh", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "AI steal empty/unlocked vehicles?", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_StealVeh = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_ClassSteal", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Class restriction for stealing vehicles", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_ClassSteal = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_ForceSpeed", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Enforce AI Speed 'FULL'?", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_FullSpeed = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_ADVANCEDMOVEMENT", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "AI generate new waypoints to flank.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_ADVANCEDMOVEMENT = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_FRMCHANGE", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "AI change formations based on location.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_FRMCHANGE = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_SKILLCHANGE", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "AI impacted by Vcom skill settings.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_SKILLCHANGE = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_AIDISTANCEVEHPATH", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Distance AI will steal vehicles from.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [0,1000,100,0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_AIDISTANCEVEHPATH = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_RAGDOLL", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "AI Ragdoll when hit?", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_RAGDOLL = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_RAGDOLLCHC", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Chance for AI to ragdoll when hit.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [0,100,100,0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_RAGDOLLCHC = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_HEARINGDISTANCE", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Distance AI can hear gunfire.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [0,10000,1200,0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_HEARINGDISTANCE = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_WARNDIST", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Distance AI will call for reinforcements from.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [0,10000,1000,0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_WARNDIST = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_WARNDELAY", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Time (seconds) AI wait before support called.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [0,10000,30,0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_WARNDELAY = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_STATICARMT", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Time (seconds) AI stay on unarmed Static Weapons", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [0,10000,300,0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_STATICARMT = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_MINECHANCE", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Chance for AI to place a mine, once in combat.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [0,100,75,0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_MINECHANCE = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_ARTYDELAY", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Delay before artillery requests. SIDE BASED.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [0,5000,30,0], // data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_ARTYDELAY = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_AIMagLimit", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "SLIDER", // setting type "Mag count AI begin to look for additional mags.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. [2,10,5,0], // data for this setting: [min, max, default, number of shown trailing decimals] true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_AIMagLimit = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_AISNIPERS", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Special marksman/sniper AI", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_AISNIPERS = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_AISUPPRESS", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "AI attempt to suppress enemies more, and at a further range.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_AISUPPRESS = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "VCM_ADVANCEDMOVEMENT", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "AI generate new waypoints to flank.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; VCM_ADVANCEDMOVEMENT = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "Vcm_DrivingActivated", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Experimental Improvements to AI driving.", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. false,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; Vcm_DrivingActivated = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; [ "Vcm_PlayerAISkills", // Internal setting name, should always contain a tag! This will be the global variable which takes the value of the setting. "CHECKBOX", // setting type "Player AI recieve unique skill settings", // Pretty name shown inside the ingame settings menu. Can be stringtable entry. "VCOM SETTINGS", // Pretty name of the category where the setting can be found. Can be stringtable entry. true,// data for this setting: true, // "_isGlobal" flag. Set this to true to always have this setting synchronized between all clients in multiplayer { params ["_value"]; Vcm_PlayerAISkills = _value; } // function that will be executed once on mission start and every time the setting is changed. ] call CBA_Settings_fnc_init; }; diag_log "VCOM: Loaded CBA settings"; }; Defaul userconfig settings Vcm_Settings = { /* ADDITIONAL COMMANDS (group this) setVariable ["VCM_NOFLANK",true]; //This command will stop the AI squad from executing advanced movement maneuvers. (group this) setVariable ["VCM_NORESCUE",true]; //This command will stop the AI squad from responding to calls for backup. (group this) setVariable ["VCM_TOUGHSQUAD",true]; //This command will stop the AI squad from calling for backup. (group this) setVariable ["Vcm_Disable",true]; //This command will disable Vcom AI on a group entirely. (group this) setVariable ["VCM_DisableForm",true]; //This command will disable AI group from changing formations. (group this) setVariable ["VCM_Skilldisable",true]; //This command will disable an AI group from being impacted by Vcom AI skill changes. */ Vcm_ActivateAI = true; //Set this to false to disable VcomAI. It can be set to true at any time to re-enable Vcom AI VcmAI_ActiveList = []; //Leave this alone. Vcm_ArtilleryArray = []; //Leave this alone //VCOM ARTILLERY. Only one kind of advanced artillery can be used at a time. VCM_ARTYENABLE = true; //Enable improved artillery handling from Vcom. VCM_ARTYLST = []; //List of all AI inside of artillery pieces, leave this alone. VCM_ARTYDELAY = 30; //Delay between squads requesting artillery VCM_ARTYWT = -(VCM_ARTYDELAY); VCM_ARTYET = -(VCM_ARTYDELAY); VCM_ARTYRT = -(VCM_ARTYDELAY); VCM_ARTYSIDES = [west,east,resistance]; //Sides that will use VCOM/FFE artillery VCM_AIMagLimit = 5; //Number of mags remaining before AI looks for ammo. VCM_Debug = false; //Enable debug mode. VCM_MINECHANCE = 75; //Chance to lay a mine VCM_SIDEENABLED = [west,east,resistance]; //Sides that will activate Vcom AI VCM_RAGDOLL = true; //Should AI ragdoll when hit VCM_RAGDOLLCHC = 100; //CHANCE AI RAGDOLL VCM_FullSpeed = true; //Enforce full speedmode during combat (Does not reset after combat end) VCM_HEARINGDISTANCE = 1200; //Distance AI hear unsuppressed gunshots. VCM_WARNDIST = 1000; //How far AI can request help from other groups. VCM_WARNDELAY = 30; //How long the AI have to survive before they can call in for support. This activates once the AI enter combat. VCM_STATICARMT = 300; //How long AI stay on static weapons when initially arming them. This is just for AI WITHOUT static bags. They will stay for this duration when NO ENEMIES ARE SEEN, or their group gets FAR away. VCM_StealVeh = true; //Will the AI steal vehicles. VCM_ClassSteal = true; //If true, crewmen are required to steal tracked vehicles. Pilots are required to steal aircraft. false = anyone can steal any vehicle. VCM_AIDISTANCEVEHPATH = 100; //Distance AI check from the squad leader to steal vehicles VCM_ADVANCEDMOVEMENT = true; //True means AI will actively generate waypoints if no other waypoints are generated for the AI group (2 or more). False disables this advanced movements. VCM_FRMCHANGE = true; //AI GROUPS WILL CHANGE FORMATIONS TO THEIR BEST GUESS. VCM_SKILLCHANGE = true; //AI Groups will have their skills changed by Vcom. VCM_USECBASETTINGS = true;//If CBA is enabled on the host, use the CBA default settings. If false, use the filepatching settings instead. VCM_CARGOCHNG = true; //If true, Vcom will handle disembarking/re-embarking orders instead of vanilla. This is with the intention to prevent the endless embark/disembark loops AI are given. VCM_TURRETUNLOAD = true;//If true, AI will automatically disembark turret positions in vehicles, if the vehicle is badly damaged. This is to prevent AI leaving a tank, when the tracks are damaged. VCM_DISEMBARKRANGE = 200; //How far AI will disembark from their enemies. If the vehicle is damaged, they will disembark. VCM_AISNIPERS = true; //Special sniper AI VCM_AISUPPRESS = true; //AI will attack from further away with primary weapons to suppress enemies Vcm_DrivingActivated = false; //AI will use experimental driving improvements. Vcm_PlayerAISkills = true; //AI in a group, that a players leads, can have their skills changed separately. //AI SKILL SETTINGS HERE!!!!!!!!!!!! //LOW DIFFICULTY //VCM_AIDIFA = [['aimingAccuracy',0.15],['aimingShake',0.1],['aimingSpeed',0.25],['commanding',1],['courage',1],['endurance',1],['general',0.5],['reloadSpeed',1],['spotDistance',0.8],['spotTime',0.8]]; //MEDIUM DIFFICULTY VCM_AIDIFA = [['aimingAccuracy',0.25],['aimingShake',0.15],['aimingSpeed',0.35],['commanding',0.85],['courage',0.5],['general',1],['reloadSpeed',1],['spotDistance',0.85],['spotTime',0.85]]; //HIGH DIFFICULTY //VCM_AIDIFA = [['aimingAccuracy',0.35],['aimingShake',0.4],['aimingSpeed',0.45],['commanding',1],['courage',1],['endurance',1],['general',0.5],['reloadSpeed',1],['spotDistance',0.8],['spotTime',0.8]]; //SIDE SPECIFIC VCM_AIDIFWEST = [['aimingAccuracy',0.25],['aimingShake',0.15],['aimingSpeed',0.35],['commanding',0.85],['courage',0.5],['general',1],['reloadSpeed',1],['spotDistance',0.85],['spotTime',0.85]]; VCM_AIDIFEAST = [['aimingAccuracy',0.25],['aimingShake',0.15],['aimingSpeed',0.35],['commanding',0.85],['courage',0.5],['general',1],['reloadSpeed',1],['spotDistance',0.85],['spotTime',0.85]]; VCM_AIDIFRESISTANCE = [['aimingAccuracy',0.25],['aimingShake',0.15],['aimingSpeed',0.35],['commanding',0.85],['courage',0.5],['general',1],['reloadSpeed',1],['spotDistance',0.85],['spotTime',0.85]]; //PLAYER SQUAD SPECIFIC VCM_PSQUADW= [['aimingAccuracy',0.25],['aimingShake',0.15],['aimingSpeed',0.35],['commanding',0.85],['courage',0.5],['general',1],['reloadSpeed',1],['spotDistance',0.85],['spotTime',0.85]]; VCM_PSQUADE= [['aimingAccuracy',0.25],['aimingShake',0.15],['aimingSpeed',0.35],['commanding',0.85],['courage',0.5],['general',1],['reloadSpeed',1],['spotDistance',0.85],['spotTime',0.85]]; VCM_PSQUADR= [['aimingAccuracy',0.25],['aimingShake',0.15],['aimingSpeed',0.35],['commanding',0.85],['courage',0.5],['general',1],['reloadSpeed',1],['spotDistance',0.85],['spotTime',0.85]]; VCM_AISIDESPEC = { private _Side = (side (group _this)); switch (_Side) do { case west: { { _this setSkill _x; } forEach VCM_AIDIFWEST; }; case east: { { _this setSkill _x; } forEach VCM_AIDIFEAST; }; case resistance: { { _this setSkill _x; } forEach VCM_AIDIFRESISTANCE; }; }; }; VCM_CLASSNAMESPECIFIC = false; //Do you want the AI to have classname specific skill settings? VCM_SIDESPECIFICSKILL = false; //Do you want the AI to have side specific skill settings? This overrides classname specific skills. VCM_SKILL_CLASSNAMES = []; //Here you can assign certain unit classnames to specific skill levels. This will override the AI skill level above. /* EXAMPLE FOR VCM_SKILL_CLASSNAMES VCM_SKILL_CLASSNAMES = [["Classname1",[aimingaccuracy,aimingshake,spotdistance,spottime,courage,commanding,aimingspeed,general,endurance,reloadspeed]],["Classname2",[aimingaccuracy,aimingshake,spotdistance,spottime,courage,commanding,aimingspeed,general,endurance,reloadspeed]]]; VCM_SKILL_CLASSNAMES = [ ["B_GEN_Soldier_F",[0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1]], ["B_G_Soldier_AR_F",[0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1]] ]; */ VCM_AIDIFSET = { { private _unit = _x; _unit setSkill 0.9; _unit allowFleeing 0; { _unit setSkill _x; } forEach VCM_AIDIFA; if (VCM_CLASSNAMESPECIFIC && {count VCM_SKILL_CLASSNAMES > 0}) then { { if (typeOf _unit isEqualTo (_x select 0)) exitWith { _ClassnameSet = true; _unit setSkill ["aimingAccuracy",((_x select 1) select 0)];_unit setSkill ["aimingShake",((_x select 1) select 1)];_unit setSkill ["spotDistance",((_x select 1) select 2)];_unit setSkill ["spotTime",((_x select 1) select 3)];_unit setSkill ["courage",((_x select 1) select 4)];_unit setSkill ["commanding",((_x select 1) select 5)]; _unit setSkill ["aimingSpeed",((_x select 1) select 6)];_unit setSkill ["general",((_x select 1) select 7)];_unit setSkill ["endurance",((_x select 1) select 8)];_unit setSkill ["reloadSpeed",((_x select 1) select 9)]; }; } foreach VCM_SKILL_CLASSNAMES; }; if (VCM_SIDESPECIFICSKILL) then { _unit call VCM_AISIDESPEC; }; } forEach (units _this); }; diag_log "VCOM: Loaded Default Settings"; if (VCM_USECBASETTINGS) then { [] call VCM_fnc_CBASettings; }; };
  10. I can take a look at this sometime next week - a busy week for me unfortunately currently they go idle at where they were called IF they have 8 waypoints already, they will switch to combat mode and will not generate/switch to new waypoints - as long as another script does not interfere. Vcom kicks in as soon as the squad is in combat mode - so while they won't generate new waypoints, they may still seek cover in buildings/deploy static/place mines, and etc. looks like some kind of CBA error with the vcom settings. I would double check the installation, I have not encountered this yet
  11. Could you post your groups framework?
  12. genesis92x

    Need help with VCOM AI

    Feel free to make a post in the Vcom thread! Although more information is needed. How does it conflict? What is the 'error' behavior? What is the expected behavior?
  13. Looking at it today, there is an error with the GEN_ChangeVoices function, replace GEN_ChangeVoices with this GEN_ChangeVoices = { params ["_passedparam","_Style"]; _passedparam params ["_control"]; if (_Style isEqualTo "Russian") then { s01 setspeaker "male01rus"; s02 setspeaker "male02rus"; s03 setspeaker "male03rus"; } else { s01 setspeaker "male01gre"; s02 setspeaker "male02gre"; s03 setspeaker "male03gre"; }; _display = ctrlParent _control; _display closedisplay 2; }; I believe that should work. Currently _control is returning [_control], it needs to just be _control.
  14. genesis92x

    GUI behavior (Dialog)

    Does this happen with any dialog? I might have to try creating one once I get home and see the effect you described occurs...that's a strange thing
  15. Here's an example that I just created, so it might not be perfect This could go at the end of your init.sqf, for example. [] spawn { waituntil {time > 1}; private _display = findDisplay 46 createDisplay "RscDisplayEmpty"; GEN_ChangeVoices = { params ["_control","_Style"]; if (_Style isEqualTo "Russian") then { Bobby1 setspeaker "SomethingRussianHere1"; Bobby2 setspeaker "SomethingRussianHere2"; Bobby3 setspeaker "SomethingRussianHere3"; } else { Bobby1 setspeaker "SomethingHere1"; Bobby2 setspeaker "SomethingHere2"; Bobby3 setspeaker "SomethingHere3"; }; _display = ctrlParent _control; _display closedisplay 2; }; private _ButtonLeft = _display ctrlCreate ["RscButton", 7803]; _ButtonLeft ctrlSetPosition [(0.2 * safezoneW + safezoneX),(0.5 * safezoneH + safezoneY),(0.05 * safezoneW),(0.025* safezoneH)]; _ButtonLeft ctrlSetBackgroundColor [1,1,1,1]; _ButtonLeft ctrlCommit 0; _ButtonLeft ctrlSetText "Russian Voices"; _ButtonLeft ctrlAddEventHandler ["ButtonClick","[_this,'Russian'] call GEN_ChangeVoices"]; private _ButtonRight = _display ctrlCreate ["RscButton", 7803]; _ButtonRight ctrlSetPosition [(0.4 * safezoneW + safezoneX),(0.5 * safezoneH + safezoneY),(0.05 * safezoneW),(0.025* safezoneH)]; _ButtonRight ctrlSetBackgroundColor [1,1,1,1]; _ButtonRight ctrlCommit 0; _ButtonRight ctrlSetText "American Voices"; _ButtonRight ctrlAddEventHandler ["ButtonClick","[_this,'American'] call GEN_ChangeVoices"]; }; EDIT: Fixed an obvious bug
  16. I'd like to think that in the init.sqf, you could try using this setspeaker with a simple dialog created by ctrlCreate with two buttons that the player can choose from?
  17. Nice work! I love seeing more love put into the pylon system
  18. Definitely possible. There are many variables at play, so it gets difficult to track it all down. Especially if many mods are involved. I typically play mostly vanilla , so fringe cases or errors that occur due to mods will most likely not be found until they are reported on GitHub. Most commonly drastic FPS losses occur when there is an error that is repeating indefinitely and having to be logged to an .rpt file. Of course, FPS drops are crazy in ArmA during combat, the engine isn't built for it. And no, it just isn't the particle effects and pathing causing most of the FPS drop Try this weird experiment that I tried a few days ago, see if you get similar results. Load up 100% vanilla ArmA 3, load of Altis and with Zeus. Enable steam FPS counter/find a way to monitor your FPS. Note your FPS. Spawn a massive amount of AI on blufor and opfor at the salt flats. (I think I did around ~200 - ~250 per side). Note your FPS. Now make every squad engage at once Note your FPS (Should be an expected drastic drop in FPS) Now, kill every unit on the map by selecting them with and pressing the END key with Zeus. Note your FPS. Now, delete every dead body Note your FPS. *Make sure to hit backspace to get rid of the Zeus interface when getting your average FPS, as this causes massive FPS hit with lots of units due to draw calls. This highly un-scientific experiment was repeatable for me and showed surprising results and possible issues with the ArmA 3 engine. To elaborate: To not use exact numbers, as I am typing this away from my computer, the FPS did go down with over 300 idle AI standing around, although not by as much as I expected. Once battle started, my FPS expectedly tanked. Here's the weird thing, you would expect that once everyone was killed (not deleted), the FPS would return to some decent numbers. But it doesn't (at least for me), it stays low. Without a single AI pathing, shooting, commanding, or even animating. It didn't even return back to the 300 idle AI FPS like I expected it to. The FPS stayed extremely low. This only changed once I deleted all the AI. Why is this? My guess is that it has something to do with the engine targetknowledge system? AI that are dead do not remain as ragdolls...so it can't be a physX thing? Keep in mind, this was 100% vanilla AI/ArmA. (With one exception of CBA...hopefully that wasn't causing this issue.)
  19. genesis92x

    Arma 3 DLC - CONTACT

    Just alien tech at a glance it seems - you are mostly paying for a new story campaign and an island. Don't get me wrong the alien entities are neat-o, but...yeah.
  20. genesis92x

    Arma 3 DLC - CONTACT

    Steams says about 9 hours for the release. I just want the free content.
  21. Nice work! I will keep this in mind when future issues arise for others. Thank you tortuosit 🙂
  22. Same code - no real performance difference. Mod applies the code to EVERY mission - script allows it to be applied to specific missions
  23. You can launch it from the init.sqf. Currently for settings it goes in this order CBA -> userconfig folder -> defaultsettings.sqf I will be improving the implementation of the settings for the next version
  24. Most likely, but it should be off by default in the userconfig folder, CBA settings, and default settings - at least with the current dev version I am looking at right now
  25. genesis92x

    debug console breaks systemchat?

    Wow! You figured out the same issue I was having, I never put much thought into it...a very frustrating thing at times. To fix this in testing you can have a spooky loop of showchat true; and that will resolve your issue while you are debugging 🙂
×