Search the Community
Showing results for tags 'function'.
Found 57 results
-
Just thinking... Which one is faster, generally? Of course, considering the same code into the loopings. TAG_fnc_functionName = { // Doc string... // Returns nothing. params ["_something"]; private ["_varPrivate1"]; // code that's need to be checked many, many times... // CPU breath: sleep 1; // Restart the function in a new branch: [_something] spawn TAG_fnc_functionName; // Return: true; }; true; Or while { _someCondTrue } do { // code that's need to be checked many, many times... // CPU breath: sleep 1; }; 🧐
-
Guys, dudes, folks, Can you help me to make my function a little bit more elegant to save server performance? I feel my snippet is not even a good way to do this: I want to call a function that will check an array of a couple of classnames (it should be only vehicles BUT mission editors can make mistakes). So, to verify this, the function will analyze if each classname corresponds to some of those object types. Calling: _itShouldBeOnlyVehiclesClassnames = ["B_G_Offroad_01_armed_F", "B_Soldier_F", "B_Heli_Light_01_dynamicLoadout_F"]; _isValid = [_itShouldBeOnlyVehiclesClassnames, ["Car", "Motorcycle", "Tank", "WheeledAPC", "TrackedAPC", "Helicopter"]] call TAG_fnc_is_valid_classnames_type; if _isValid then { /* a lot of things happen! */ }; The function itself: TAG_fnc_is_valid_classnames_type = { // This function checks if each classname in an array is one of the classname types allowed to be valid. // Returns _isValid. Bool. params ["_classnames", "_allowedTypes"]; private ["_isValid", "_classnamesOk", "_classnamesAmount", "_eachAllowedType"]; // Initial values: _isValid = true; _classnamesOk = []; // Declarations: _classnamesAmount = count _classnames; // Main function: { _eachAllowedType = _x; { // If the classname is an allowed type, include this valid classname in another array: if ( _x isKindOf _eachAllowedType ) then { _classnamesOk pushBack _x }; } forEach _classnames; } forEach _allowedTypes; // If there's difference between the size of both arrays, it's coz some classname is not an allowed type: if ( count _classnames isNotEqualTo count _classnamesOk ) then { // Update the validation flag: _isValid = false; }; // Return: _isValid; }; Small challenge: Print out an error message indicating exactly which classname(s) is/are not part of the "allowed type of objects".
-
Guys, folks, dudes, What: Here is where I make my day: I built a function where a specific group finds out a building, goes there and, after a while, they find a new building and go there too, over and over again. If a member of this group stays behind, this member is removed from the group. After being removed, that lone wolf will be allowed to find out their own buildings and go there too. Issue: The lone wolf unit, after being transferred to a new empty group (so they're the leader) the unit stands still, facing their newest waypoint over a building (so the step_one function ran), but is not allowed to move there, just sometimes shaking head and weapon but completely stuck. If I drop a enemy around, the lone wolf will engage, but never change their position. No clue what's happening here. No mods on. Only Arma 3. Unit (soldier) stuck even with waypoints and speaking on the radio. Context: DynamicSimulation is false in this case and I already tried to apply doMove, enableAI "PATH", but the lone wolf unit stays there, stuck. Structure example I am using: THY_fnc_step_one = { // This function makes a group find a building and, after that, move there. // Return nothing. params [...]; private [...]; // <DELETE OLD WAYPOINTS AND GIVE A NEW ONE STRAIGHT TO THE BUILDING> // If the group close enough to the building, execute "step_two". [...] spawn THY_fnc_step_two; // <CODE CODE CODE> // Return: true; }; THY_fnc_step_two = { // This function makes a group, right after the arrival at the building, they wait a while before execute the "step_one" again. // Return nothing. params [...]; private [...]; // If some group's unit stay behind, remove the unit from the group: [...] spawn THY_fnc_remove_from_the_group; // If this original group arrive at the building as planned, take a break and execute again the "step_one": [...] spawn THY_fnc_step_one; // <CODE CODE CODE> // Return: true; }; THY_fnc_remove_from_the_group = { // This function makes a single abandoned unit to be a lonewolf group leader allowed to find out their own buildings to visit. // Return nothing. params ["_faction", "_unit"]; private [...]; _newGrp = createGroup [_faction, true]; [_unit] joinSilent _newGrp; [_faction, _unit] spawn THY_fnc_step_one; // Return: true; };
- 16 replies
-
Help required with passing params to function using BIS_fnc_holdActionAdd .
sekurlsa posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Hello community, I'm trying to optimize the code and further expand the functionality of a MP mission I've made: HazardZone The idea is to create an Apex's hold action by passing couple of params, issue is I really can't figure out how to pass them - especially line 4, 8 and 9 For example, I just put params ["_sample", "_unit"]; in lines 10-13 and it works like a charm, but is there anyway to do it for the rest or for the whole function without specifying params on each line? Hold Action Function: createSample = { params ["_sample", "_unit"]; [_sample, // Name of the object "Collect a sample", //title of the action "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa", "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa", "_unit distance _sample < 5", // The condition for the Action to be shown "_unit distance _sample < 5", // The condition for the Action to progress {}, // The code executed when the action starts {}, // The code executed on every progress tick {}, // The Code which is executed on action completion {}, // The code which is executed when the player is interrrupted or stops interaction [], // No idea! Some arguments... 5, // The duration how long will it take for the action to be completed in seconds 0, // Priority false, // Remove the action once it has been completed false // show Unconsious state ] remoteExec ["BIS_fnc_holdActionAdd", [0,-2] select isDedicated, true]; }; // This is how the function will be called [objVar, playerVar] call createSample; I really would really appreciate the help. Thank you!- 5 replies
-
- bis_fnc_holdactionadd
- function
-
(and 3 more)
Tagged with:
-
script [Ombra] Vehicle Drop Script/Function
Ombra_ita posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
Does it work in multiplayer? Yes, MultiPlayer and SinglePlayer. What does this script/function do? This script requests a standard vehicle (unarmed) airdrop for moving purposes on player position. If there is enough space on the airdrop plane, it parachutes 2 vehicles. Supported factions and vehicles BLUFOR NATO (Blackfish NATO Apex Expansion, this place can only fit 1 Hunter or 2 Prowlers as unarmed vehicles) BLU_F BLU_T_F BLU_W_F → 1 Hunter or 2 Prowlers (random) BLUFOR RHS FACTIONS (cargo comes in a C-130 of RHS USAF mod) rhs_faction_usarmy_d rhs_faction_usmc_d rhs_faction_usarmy_wd rhs_faction_usmc_wd → 2 Unarmed Humvee INDEPENDENT (Blackfish NATO Apex Expansion) IND_F IND_E_F → 1 Strider OPFOR CSAT (Y-32 Xi'an Apex Expansion, this plane it only fits one vehicle) OPF_F OPF_T_F OPF_R_F → 1 Qilin (unarmed) OPFOR RHS FACTIONS (cargo comes in a Blackfish NATO Apex Expansion as there is no RHS AFRF plane for cargo (Y-32 Xi'an did not fit GAZ vehicle)) rhs_faction_msv rhs_faction_vdv → 1 GAZ (unarmed, green) How do I call the script? [player] execVM "vehicleDrop.sqf"; vehicleDrop.sqf //Uncomment following if used as function //_unit = param[0]; //Uncomment following if used as script _unit = _this select 0; _unitPos = position _unit; _randomTransportPos = [[_unitPos select 0, _unitPos select 1, 800], 3000, random 360] call BIS_fnc_relPos; _sideUnit = side _unit; _factionUnit = faction _unit; _vehicleType = 0; _transportType = "B_T_VTOL_01_vehicle_F"; switch(_factionUnit) do { //Vanilla units case "BLU_F": { _vehicleType = ["B_MRAP_01_F","B_LSV_01_unarmed_F"] call BIS_fnc_selectRandom; }; case "BLU_T_F"; case "BLU_W_F": { _vehicleType = ["B_T_MRAP_01_F","B_T_LSV_01_unarmed_F"] call BIS_fnc_selectRandom; }; case "OPF_F": { _vehicleType = "O_LSV_02_unarmed_F"; _transportType = "O_T_VTOL_02_vehicle_dynamicLoadout_F"; }; case "OPF_T_F"; case "OPF_R_F": { _vehicleType = "O_T_LSV_02_unarmed_F"; _transportType = "O_T_VTOL_02_vehicle_dynamicLoadout_F"; }; case "IND_F ": { _vehicleType = "I_MRAP_03_F"; }; case "IND_E_F": { _vehicleType = "I_E_Van_02_vehicle_F"; }; //RHS units case "rhs_faction_usarmy_d"; case "rhs_faction_usmc_d": { _vehicleType = "rhsusf_m1043_d"; _transportType = "RHS_C130J_Cargo"; }; case "rhs_faction_usarmy_wd"; case "rhs_faction_usmc_wd": { _vehicleType = "rhsusf_m1043_w"; _transportType = "RHS_C130J_Cargo"; }; case "rhs_faction_msv"; case "rhs_faction_vdv": { _vehicleType = "rhs_tigr_msv"; }; }; //Creating transport for cargo drop _transportArray = [_randomTransportPos, random 360, _transportType, _sideUnit] call BIS_fnc_spawnVehicle; _transportVeh = _transportArray select 0; _transportGrp = _transportArray select 2; //Support call _unit sideChat format["Crossroad this is %1 requesting vehicle drop at grid %2. Over.", name _unit, mapGridPosition _unitPos]; sleep 5; [_sideUnit, "HQ"] sideChat format["Solid copy %1, Buzzard it's 1 click out. ETA 1 minute.", name _unit]; //Spawning cargo and loading _cargoVehicle = _vehicleType createVehicle [0,0,1000]; _transportVeh setVehicleCargo _cargoVehicle; _cargoVehicle2 = _vehicleType createVehicle [20,20,1000]; if ((_transportVeh canVehicleCargo _cargoVehicle2) select 1) then { _transportVeh setVehicleCargo _cargoVehicle2; } else { deleteVehicle _cargoVehicle2; }; //Setting waypoints _waypoint = _transportGrp addWaypoint [_unitPos, 0]; _waypoint setWaypointBehaviour "CARELESS"; _waypoint setWaypointCombatMode "NOCHANGE"; _waypoint setWaypointSpeed "FULL"; _waypoint setWaypointType "MOVE"; _waypoint setWaypointStatements ["_transportVeh flyInHeight 200",""]; //Go to drop zone _transportGrp setCurrentWaypoint [_transportGrp, 0]; waitUntil { (_transportVeh distance _unitPos) < 200 }; //Drop cargo _transportVeh sideChat "Buzzard is making the drop. Code is purple, Good luck guys."; _transportVeh setVehicleCargo objNull; _transportVeh setVehicleCargo objNull; //Go away _waypoint2 = _transportGrp addWaypoint [[0,0,1000], 1]; _waypoint2 setWaypointBehaviour "CARELESS"; _waypoint2 setWaypointCombatMode "NOCHANGE"; _waypoint2 setWaypointSpeed "FULL"; _waypoint2 setWaypointType "MOVE"; _waypoint2 setWaypointStatements ["true",""]; _transportGrp setCurrentWaypoint [_transportGrp, 1]; waitUntil { (getPosATL _cargoVehicle) select 2 < 10 }; Signal = "SmokeShellPurple" createVehicle position _cargoVehicle; Signal = "SmokeShellPurple" createVehicle position _cargoVehicle2; sleep 30; //Cleanup {deleteVehicle _x} forEach (crew _transportVeh) + [_transportVeh]; -
script [Ombra] Random Minefield Script/function
Ombra_ita posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
What does this script do? This script creates a minefield with a random number of mines and IED, positioning them in a random way inside the given area. Does not include APERSTripMine (mines with cable) Does it work in multiplayer? Yes, it works in MultiPlayer and SinglePlayer Parameters _area → Marker → Set a marker area with the size you like in editor _minMinesCount → int → Minimum number of mines you want in the area _maxMinesCount → int → Maximum number of mines you want in the area How do I call the script? Just get into your init.sqf and place it like this, has to be server only. If you have multiple minefields you have to add multiple lines with each marker and number of mines. if (isServer) { ["MarkerName", 10, 30] execVM "randomMinefield.sqf"; }; Next improvements - Will use marker position and specified range manually instead of marker size which is not very handy. randomMinefield.sqf (thanks to Hypoxic125 for the error feedback) //Uncomment following if used as function //params["_area", "_minMinesCount", "_maxMinesCount"]; //Uncomment following if used as script _area = _this select 0; _minMinesCount = _this select 1; _maxMinesCount = _this select 2; _minesArray = ["ATMine","APERSBoundingMine","APERSMine","IEDLandBig_F","IEDUrbanBig_F","IEDUrbanSmall_F","IEDLandSmall_F"]; _minesCountInArea = random[_minMinesCount, _maxMinesCount/2, _maxMinesCount]; _areaDimensions = getMarkerSize _markerArea; _minesPositionRange = _areaDimensions select 0; //Creating random position and spawning mines for "_i" from 0 to _minesCountInArea - 1 do { _randomPos = [[_markerArea], []] call BIS_fnc_randomPos; _randomPos set [2, 0]; createMine[selectRandom _minesArray, _randomPos, [], 0]; } -
script [Ombra] Spawn Reinforcements Script/Function
Ombra_ita posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
What does this script do? This script spawns random reinforcements (group from 4 to 10 men) of the desired faction at the given position, and they will automatically redirect to players position (at the moment of script call, as Last Known Position). Does it work in multiplayer? Yes, it works in MultiPlayer and SinglePlayer Parameters _faction → String → Faction (see below) _sideReinforcements → Side → Side of reinforcements of which can be → west, east, independent _spawnPosition → Position → Center position of where you want to spawn reinforcements _rangeOfSpawn → int → Range of spawn from spawnPosition (if you like to narrow spawn just set this as 1) _addVehicle → Bool → Add a support vehicle Do you think side can be redundant? Maybe, but faction has been added secondly as I didn't want plain CSAT reinforcements when I'm playing on Livonia with Specnaz units, you know? I know not all RHS units have been added, I probably will, no guarantee. If you do script, you can.. Just look at the code, it's easy. Supported Factions SUPPORTED VANILLA FACTIONS: BLU_F NATO (standard) OPF_F CSAT (standard) IND_F AAF (standard) BLU_T_F NATO (Apex, pacific) OPF_T_F CSAT (Apex, pacific) IND_C_F Syndikat (Apex) BLU_W_F NATO Woodland (Contact) OPF_R_F Specnaz (Contact) IND_E_F LDF (Contact) SUPPORTED MODS FACTIONS: rhs_faction_usarmy_d RHS USAF (USA Army D OCP) rhs_faction_usarmy_wd RHS USAF (USA Army D UCP) rhs_faction_usmc_d RHS USAF (USA Army D MARPAT) rhs_faction_usmc_wd RHS USAF (USA Army WD MARPAT) rhs_faction_msv RHS AFRF (Russia MSV EMR) rhs_faction_vdv RHS AFRF (Russia VDV DES) rhssaf_faction_army RHS SAF (KOV Digital) Tban EricJ Taliban Units Edit: Added Syndikat faction IND_C_F (26/02/2022) How do I call the script? Let's say I am a BLUFOR player and I call for reinforcements, just put the following line in a activation trigger line: ["BLU_F", west, getMarkerPos "spawnMarkerPoint", 1, true] execVM "reinforcements.sqf"; Let's say RHS AFRF (Russians) enemy called reinforcements instead, those reinforcement will proceed to my position to engage: ["rhs_faction_msv", east, getMarkerPos "russianReinforcementsSpawnMarker", 1, false] execVM "reinforcements.sqf"; reinforcements.sqf //Uncomment following if used as function //params["_faction","_sideReinforcements","_spawnPosition", "_rangeOfSpawn","_addVehicle"]; //Uncomment following if used as script _faction = _this select 0; _sideReinforcements = _this select 1; _spawnPosition = _this select 2; _rangeOfSpawn = _this select 3; _addVehicle = _this select 4; _unitsArray = []; _vehicleArray = []; _unitsArrayToSpawn = []; _counter = 0; //Parsing factions switch (_faction) do { //Vanilla case "BLU_F": //NATO (standard) { _unitsArray = [ "B_Soldier_SL_F", "B_Medic_F", "B_Soldier_GL_F", "B_Soldier_F", "B_HeavyGunner_F", "B_Soldier_LAT_F", "B_Soldier_M_F", "B_Soldier_AR_F", "B_Soldier_LAT2_F", "B_Soldier_UAV_F" ]; _vehicleArray = [ "B_MRAP_01_hmg_F" ]; }; case "OPF_F": //CSAT (standard) { _unitsArray = [ "O_Soldier_SL_F", "O_Medic_F", "O_Soldier_HAT_F", "O_Soldier_GL_F", "O_Soldier_F", "O_HeavyGunner_F", "O_Soldier_F", "O_Soldier_M_F", "O_Soldier_AR_F", "O_Soldier_UAV_F" ]; _vehicleArray = [ "O_MRAP_02_hmg_F" ]; }; case "IND_F": //AAF units { _unitsArray = [ "I_Soldier_SL_F", "I_Medic_F", "I_Soldier_GL_F", "I_Soldier_F", "I_Soldier_AR_F", "I_Soldier_F", "I_Soldier_AT_F", "I_Soldier_AA_F", "I_Soldier_M_F", "I_Soldier_UAV_F" ]; _vehicleArray = [ "I_MRAP_03_hmg_F" ]; }; case "IND_C_F": //Syndikat units { _unitsArray = [ "I_C_Soldier_Para_1_F", "I_C_Soldier_Para_2_F", "I_C_Soldier_Bandit_7_F", "I_C_Soldier_Bandit_1_F", "I_C_Soldier_Para_5_F", "I_C_Soldier_Bandit_6_F", "I_C_Soldier_Bandit_5_F", "I_C_Soldier_Bandit_4_F", "I_C_Soldier_Para_6_F", "I_C_Soldier_Para_3_F" ]; _vehicleArray = [ "I_C_Offroad_02_AT_F" ]; }; case "OPF_T_F": //Chinese CSAT (Apex) { _unitsArray = [ "O_T_Soldier_SL_F", "O_T_Medic_F", "O_T_Soldier_HAT_F", "O_T_Soldier_GL_F", "O_T_Soldier_F", "O_T_HeavyGunner_F", "O_T_Soldier_F", "O_T_Soldier_M_F", "O_T_Soldier_AR_F", "O_T_Soldier_UAV_F" ]; _vehicleArray = [ "O_T_MRAP_02_hmg_ghex_F" ]; }; case "BLU_T_F": //NATO Pacific (Apex) { _unitsArray = [ "B_T_Soldier_SL_F", "B_T_Medic_F", "B_T_Soldier_GL_F", "B_T_Soldier_F", "B_T_HeavyGunner_F", "B_T_Soldier_LAT_F", "B_T_Soldier_M_F", "B_T_Soldier_AR_F", "B_T_Soldier_LAT2_F", "B_T_Soldier_UAV_F" ]; _vehicleArray = [ "B_T_MRAP_01_hmg_F" ]; }; case "BLU_W_F": //NATO (Contact) { _unitsArray = [ "B_W_Soldier_SL_F", "B_W_Medic_F", "B_W_Soldier_GL_F", "B_W_Soldier_F", "B_W_HeavyGunner_F", "B_W_Soldier_LAT_F", "B_W_Soldier_M_F", "B_W_Soldier_AR_F", "B_W_Soldier_LAT2_F", "B_W_Soldier_UAV_F" ]; _vehicleArray = [ "B_T_MRAP_01_hmg_F" ]; }; case "OPF_R_F": //Specnaz (Contact) { _unitsArray = [ "O_R_Soldier_SL_F", "O_R_Medic_F", "O_R_Soldier_LAT_F", "O_R_Soldier_GL_F", "O_R_JTAC_F", "O_R_JTAC_F", "O_R_JTAC_F", "O_R_Soldier_M_F", "O_R_Soldier_AR_F", "O_R_JTAC_F" ]; _vehicleArray = [ "O_T_LSV_02_armed_F" ]; }; case "INF_E_F": //LDF (Contact) { _unitsArray = [ "I_E_Soldier_TL_F", "I_E_Medic_F", "I_E_Soldier_GL_F", "I_E_Soldier_F", "I_E_Soldier_AR_F", "I_E_Soldier_F", "I_E_Soldier_AT_F", "I_E_Soldier_AA_F", "I_E_Soldier_M_F", "I_E_Soldier_UAV_F" ]; _vehicleArray = [ "I_E_Offroad_01_covered_F" ]; }; case "rhs_faction_usarmy_d": //RHS USAF (USA Army D OCP) { _unitsArray = [ "rhsusf_army_ocp_squadleader", "rhsusf_army_ocp_medic", "rhsusf_army_ocp_grenadier", "rhsusf_army_ocp_rifleman", "rhsusf_army_ocp_autorifleman", "rhsusf_army_ocp_rifleman", "rhsusf_army_ocp_javelin", "rhsusf_army_ocp_marksman", "rhsusf_army_ocp_aa", "rhsusf_army_ocp_uav" ]; _vehicleArray = [ "rhsusf_m1025_d_m2" ]; }; case "rhs_faction_usarmy_wd": //RHS USAF (USA Army W UCP) { _unitsArray = [ "rhsusf_army_ucp_squadleader", "rhsusf_army_ucp_medic", "rhsusf_army_ucp_grenadier", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_autorifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_javelin", "rhsusf_army_ucp_marksman", "rhsusf_army_ucp_aa", "rhsusf_army_ucp_uav" ]; _vehicleArray = [ "rhsusf_m1025_w_m2" ]; }; case "rhs_faction_usmc_d": //RHS USAF (USMC D) { _unitsArray = [ "rhsusf_usmc_marpat_d_squadleader", "rhsusf_navy_sarc_d_fast", "rhsusf_usmc_marpat_d_grenadier", "rhsusf_usmc_marpat_d_rifleman", "rhsusf_usmc_marpat_d_autorifleman", "rhsusf_usmc_marpat_d_rifleman", "rhsusf_usmc_marpat_d_javelin", "rhsusf_usmc_marpat_d_marksman", "rhsusf_usmc_marpat_d_stinger", "rhsusf_usmc_marpat_d_uav" ]; _vehicleArray = [ "rhsusf_m1025_d_s_m2" ]; }; case "rhs_faction_usmc_wd": //RHS USAF (USMC WD MARPAT) { _unitsArray = [ "rhsusf_usmc_marpat_wd_squadleader", "rhsusf_navy_sarc_wd_fast", "rhsusf_usmc_marpat_wd_grenadier", "rhsusf_usmc_marpat_wd_rifleman", "rhsusf_usmc_marpat_wd_autorifleman", "rhsusf_usmc_marpat_wd_rifleman", "rhsusf_usmc_marpat_wd_javelin", "rhsusf_usmc_marpat_wd_marksman", "rhsusf_usmc_marpat_wd_stinger", "rhsusf_usmc_marpat_wd_uav" ]; _vehicleArray = [ "rhsusf_m1025_w_s_m2" ]; }; case "rhs_faction_msv": { _unitsArray = [ "rhs_msv_emr_sergeant", "rhs_msv_emr_medic", "rhs_msv_emr_grenadier_rpg", "rhs_msv_emr_rifleman", "rhs_msv_emr_arifleman_rpk", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_aa", "rhs_msv_emr_LAT", "rhs_msv_emr_marksman" ]; _vehicleArray = [ "rhs_tigr_sts_msv" ]; }; case "rhs_faction_vdv": { _unitsArray = [ "rhs_vdv_des_sergeant", "rhs_vdv_des_medic", "rhs_vdv_des_grenadier_rpg", "rhs_vdv_des_rifleman", "rhs_vdv_des_arifleman_rpk", "rhs_vdv_des_rifleman", "rhs_vdv_des_rifleman", "rhs_vdv_des_LAT", "rhs_vdv_des_aa", "rhs_vdv_des_marksman" ]; _vehicleArray = [ "rhs_tigr_sts_3camo_msv" ]; }; case "Tban": { _unitsArray = [ "TBan_Fighter6", "TBan_Fighter5", "TBan_Fighter4", "TBan_Fighter3NH", "TBan_Fighter2NH", "TBan_Fighter1NH", "TBan_Fighter3", "TBan_Fighter2", "TBan_Fighter1" ]; _vehicleArray = [ "Tban_O_Offroad_01_F" ]; }; case "rhssaf_faction_army": { _unitsArray = [ "rhssaf_army_m10_digital_sq_Lead", "rhssaf_army_m10_digital_medic", "rhssaf_army_m10_digital_gl", "rhssaf_army_m10_digital_rifleman_m70", "rhssaf_army_m10_digital_mgun_m84", "rhssaf_army_m10_digital_rifleman_m70", "rhssaf_army_m10_digital_rifleman_m70", "rhssaf_army_m10_digital_spec_aa", "rhssaf_army_m10_digital_spec_at", "rhssaf_army_m10_digital_sniper_m76" ]; _vehicleArray = [ "rhssaf_m1151_olive_pkm" ]; }; }; _groupSize = [4,10] call BIS_fnc_randomInt; _unitsArray resize _groupSize; //Random position around given position _randomSpawnPosition = [_spawnPosition, random _rangeOfSpawn, random 360] call BIS_fnc_relPos; //Spawning group _spawnedGroup = [_randomSpawnPosition, _sideReinforcements, _unitsArray] call BIS_fnc_spawnGroup; _waypoint = _spawnedGroup addWaypoint [position (allPlayers select 0), 0]; _waypoint setWaypointBehaviour "AWARE"; _waypoint setWaypointCombatMode "RED"; _waypoint setWaypointSpeed "FULL"; _waypoint setWaypointType "MOVE"; _waypoint setWaypointStatements ["true",""]; _spawnedGroup setCurrentWaypoint [_spawnedGroup, 0]; //Spawning vehicle if (_addVehicle) then { _vehGroup = [_randomSpawnPosition, _sideReinforcements, _vehicleArray] call BIS_fnc_spawnGroup; _wp = _vehGroup addWaypoint [position (allPlayers select 0), 0]; _wp setWaypointBehaviour "AWARE"; _wp setWaypointCombatMode "RED"; _wp setWaypointSpeed "FULL"; _wp setWaypointType "MOVE"; _wp setWaypointStatements ["true",""]; _vehGroup setCurrentWaypoint [_vehGroup, 0]; }; -
script [Ombra] Simple IED Script/Function
Ombra_ita posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
Hello, there are many ways to create an IED script but many things involve public or external variables, triggers and many stuff that makes it complex. This is a simple script that you also can use as function for multiple objects and triggers the IED automatically with just one script line inside the object you'd like to blow up. Does this work in multiplayer? Yes, it works in MultiPlayer and SinglePlayer How does this script work? As soon as AI or a player walks near it, it just explodes, leaving scripted debriefs and craters based on explosion intensity. Parameters It accept 3 parameters: - currentObject → it is the object in the editor that you trigger to explode; - iedIntensity → It used 3 level of intensity (how big is the blast), obviously you can put 1, 2 or 3. - isCar → boolean value (true, false) if is a car, if true keeps wreck of the vehicle. How do I call the script? Just open the object you'd like to have an IED and put the following line: [this, 1, true] execVM "iedBlast.sqf"; iedBlast.sqf //Uncomment following if used as function //params["_currentObject","_iedIntensity","_isCar"]; //Uncomment following if used as script _currentObject = _this select 0; _iedIntensity = _this select 1; _isCar = _this select 2; _positionCrater = getPosATL(_currentObject); _debriesCount = 0; _exploded = false; while { !_exploded } do { //Check if players are around { if((_x distance _currentObject) < 5) then { _exploded = true; }; } forEach allUnits; if(_exploded) then { switch(_iedIntensity) do { case 1: { _bombType = "M_Titan_AT" createVehicle (getPos _currentObject); soilCrater = "Land_ShellCrater_01_F" createVehicle ([0,0,0]); _debriesCount = 3; }; case 2: { _bombType = "Bo_Mk82" createVehicle (getPos _currentObject); soilCrater = "Land_ShellCrater_02_small_F" createVehicle ([0,0,0]); _debriesCount = 10; }; case 3: { _bombType = "IEDLandBig_Remote_Ammo" createVehicle (getPos _currentObject); soilCrater = "Land_ShellCrater_02_large_F" createVehicle ([0,0,0]); _debriesCount = 15; }; }; soilCrater setPos _positionCrater; //---Keep Car Wreck--- if(!_isCar) then { deletevehicle _currentObject; } else { _currentObject setDammage 1; }; //---Spawning debries--- //Land_ShellCrater_02_debris_F for "_i" from 1 to _debriesCount do { _distance = [2, _debriesCount] call BIS_fnc_randomInt; _direction = [0,359] call BIS_fnc_randomInt; _randomPos = [_positionCrater, _distance, _direction] call BIS_fnc_relPos; "Land_ShellCrater_02_debris_F" createVehicle _randomPos; }; }; }; -
script [Ombra] Simple HALO with map click Script/function
Ombra_ita posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
Hello, this is a simple script to halo jump a player. Does it work in Multiplayer? Yes, MultiPlayer and SinglePlayer. What does this script do? This script allows a player to HALO on a given point on a map. How do I use this script? Place the script in Select an object on the editor and place the following line into its init to allow HALO from the action menu: (remove <t color='#37A9E7'></t> to show it as plain white like any other action) //If script is in scenario root directory this addAction["<t color='#37A9E7'>H.A.L.O. Jump</t>","[player] execVM 'halo.sqf';"]; //If script is in other scenario directory this addAction["<t color='#37A9E7'>H.A.L.O. Jump</t>","[player] execVM 'yourFolder\halo.sqf';"]; halo.sqf //Uncomment following line if used as function //_unit = param[0]; //Uncomment following line if used as script _unit = _this select 0; _haloAltitude = 1000; //Opening map and handling click openMap true; mapclick = false; onMapSingleClick "clickpos = _pos; mapclick = true; onMapSingleClick """";true;"; waituntil {mapclick}; _haloLocation = clickpos; _unitLoadout = getUnitLoadout _unit; cutText ["H.A.L.O. in progress...", "BLACK OUT", 1]; sleep 1; openMap false; _unit setPos _haloLocation; _unit addBackpack "B_Parachute"; //Halo [_unit, _haloAltitude] call bis_fnc_halo; sleep 2; cutText ["", "BLACK IN", 1]; waitUntil {(getpos _unit select 2) < 2}; //Giving loadout back sleep 1; _unit setUnitLoadout _unitLoadout; -
script [Ombra] Numerical Superiority Script/function
Ombra_ita posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
Hello everyone, I've created this 2 scripts/functions because I was bored to find (for an hour) and kill the last enemy in a sector to get control of it, even though I had a hundred allies in it. I recommend to use both scripts as functions and not scripts, because both can be called multiple times and having functions can be a lot more handy if you guys are scripting. Does it work in multiplayer? Yes, MultiPlayer and SinglePlayer. What does this script/function do? This script accepts 2 parameters: - Position (center position of the sector) - Range (Ellipse range in meters) It calculates (by counting infantry of each side inside the sector) which side is owning the given sector and returns it as text. How does it calculate the infantry inside? It calls a second script which is getUnitsCount. This script can be also called by itself if you need it somewhere else, it accepts 3 parameters: - Position - Range - Side → of which you want to get the units count inside the area. If AI vehicles are inside the area, crew will be calculated. getUnitsCount returns the sum of the units, therefore an integer value. Return values - "west" → If BLUFOR are owning the sector; - "east" → If OPFOR are owning the sector; - "independent" → If Independents are owning the sector; - "civilian" → If no-one is owning the sector, which means not a single west, east or independent unit is inside the area, therefore civilians own it or it's currently contended (same units for each side) How do I call the script? [_positionParameter, _rangeInMeters] execVM "getCurrentOwnership.sqf"; How do I use it in a trigger? Simply put a trigger with the following condition, obviously on the right hand side instead of west you can use civilian, independent or east if you'd like to check if the given side has ownership of the area. It can be also called from other script if you like to do so. Make sure the trigger is ServerOnly!!!!! ([_positionParameter, _rangeInMeters] execVM "getCurrentOwnership.sqf") == "west" ----------------- SCRIPTS ----------------- getUnitsCount.sqf //Uncomment following if using as function //params [ "_position", "_distance", "_side" ]; //Uncomment following if using as script _position = _this select 0; _distance = _this select 1; _side = _this select 3; _infantrycount = 0; _countedvehicles = 0; _vehiclecrewcount = 0; _infantrycount = _side countSide ( [ _position nearEntities [ "Man", _distance],{ !(captive _x) && ((getpos _x) select 2 < 100) }] call BIS_fnc_conditionalSelect ); _countedvehicles = [ ( _position nearEntities [ ["Car", "Tank", "Air"], _distance] ), { ((getpos _x) select 2 < 750) && count (crew _x) > 0 } ] call BIS_fnc_conditionalSelect; _vehiclecrewcount = 0; { _vehiclecrewcount = _vehiclecrewcount + (_side countSide (crew _x)) } foreach _countedvehicles; //Return value (_infantrycount + _vehiclecrewcount) getCurrentOwnership.sqf (updated 08 march 2023) //Uncomment following if using as function //params["_position","_range"]; //Uncomment following if using as script _position = _this select 0; _range = _this select 1; _westCount = [_position, _range, west] call OFF_fnc_getUnitsCount; _eastCount = [_position, _range, east] call OFF_fnc_getUnitsCount; _indeCount = [_position, _range, independent] call OFF_fnc_getUnitsCount; _result = 0; if (_westCount > _eastCount && _westCount > _indeCount) then { _result = "west"; }; if (_westCount > _eastCount && _westCount < _indeCount) then { _result = "independent"; }; if (_eastCount > _westCount && _eastCount > _indeCount) then { _result = "east"; }; if (_eastCount > _westCount && _eastCount < _indeCount) then { _result = "independent"; }; if (_indeCount > _westCount && _indeCount > _eastCount) then { _result = "independent"; }; if (_indeCount > _westCount && _indeCount < _eastCount) then { _result = "east"; }; _result; -
script [Ombra] Random weather script/function
Ombra_ita posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
Hi everyone, I've created this script to create a random weather and random forecasts each time you start a mission. It automatically passes all weather data to clients. The script is able to filter different kinds of weather based on supported terrain position: - Mediterranean islands; - Europe; - Middle east; Just put the script in the mission directory with the name you prefer and call it from the init.sqf file with the following. init.sqf if (isServer) then { [] execVM "nameYouPrefer.sqf"; }; Hope you enjoy. randomWeather.sqf /* Sets random weather and forecasts based on "real" world positioning. It supports add-ons maps. * Ombra 12/06/2020 * latest update 18/02/2022 */ CONST_MAX_RAIN_LEVEL = 0.6; //To avoid fps issues CONST_MAX_FOG_LEVEL = 0.6; //To prevent annoying fog _currentMap = worldName; _probabilityFog = random[0,0.5,1]; _probabilityRain = random[0,0.5,1]; //Declaring variables _currentOvercastCoef = 0; _forecastOvercastCoef = 0; _currentRainCoef = 0; _forecastRainCoef = 0; _currentFogCoef = 0; _forecastFogCoef = 0; _windSpeedN = 0; _windSpeedE = 0; _windDirection = 0; switch (_currentMap) do { //Calculating weather for desert terrains case "MCN_Aliabad"; case "takistan"; case "zargabad"; case "Mountains_ACR"; case "fallujah"; case "kunduz"; case "Shapur_BAF": { //Probability of 30% for deserts to encounter overcast (and therefore rain) if (_probabilityRain > 0.7) then { _currentOvercastCoef = random[0,0.5,1]; } else { _currentOvercastCoef = random[0,0.2,0.5]; }; _forecastOvercastCoef = random[0,0.5,1]; //Current rain only if overcast > 0.6 if (_currentOvercastCoef > 0.6) then { _currentRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; } else { _currentRainCoef = 0; }; _forecastRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; _currentFogCoef = 0; _forecastFogCoef = 0; //Some wind like sandstorms _windSpeedN = random[0,10,30]; _windSpeedE = random[0,10,30]; _windDirection = random[0, 180, 360]; }; //Calculating weather for european terrains (Vanilla and CUP) case "Bootcamp_ACR"; case "Woodland_ACR"; case "chernarus"; case "chernarus_summer"; case "Chernarus_Winter"; case "ProvingGrounds_PMC"; case "Enoch": { //Probability of 60% for northern EU to encounter overcast (and therefore rain) if (_probabilityRain > 0.4) then { _currentOvercastCoef = random[0,0.5,1]; } else { _currentOvercastCoef = random[0,0.2,0.5]; }; _currentOvercastCoef = random[0,0.5,1]; _forecastOvercastCoef = random[0,0.5,1]; if (_currentOvercastCoef > 0.6) then { _currentRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; } else { _currentRainCoef = 0; }; _forecastRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; //Probability of 30% for northern EU to encounter fog if (_probabilityFog > 0.7) then { _currentFogCoef = random[0, CONST_MAX_FOG_LEVEL/2, CONST_MAX_FOG_LEVEL]; } else { _currentFogCoef = 0; }; _forecastFogCoef = random[0, CONST_MAX_FOG_LEVEL/2, CONST_MAX_FOG_LEVEL]; //Not much wind in continental land _windSpeedN = random[0,10,20]; _windSpeedE = random[0,10,20]; _windDirection = random[0, 180, 360]; }; //Calculating weather for mediterranean terrains case "Stratis"; case "Altis"; case "Malden": { //Probability of 50% for northern EU to encounter overcast (and therefore rain) if (_probabilityRain > 0.5) then { _currentOvercastCoef = random[0,0.5,1]; } else { _currentOvercastCoef = random[0,0.2,0.5]; }; _currentOvercastCoef = random[0,0.5,1]; _forecastOvercastCoef = random[0,0.5,1]; if (_currentOvercastCoef > 0.6) then { _currentRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; } else { _currentRainCoef = 0; }; _forecastRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; _currentFogCoef = random[0, CONST_MAX_FOG_LEVEL/2, CONST_MAX_FOG_LEVEL]; _forecastFogCoef = random[0, CONST_MAX_FOG_LEVEL/2, CONST_MAX_FOG_LEVEL]; //Islands are windy _windSpeedN = random[0,20,40]; _windSpeedE = random[0,20,40]; _windDirection = random[0, 180, 360]; }; case "Tanoa": { //Probability of 80% for jungle areas to encounter overcast (and therefore rain) if (_probabilityRain > 0.2) then { _currentOvercastCoef = random[0,0.5,1]; } else { _currentOvercastCoef = random[0,0.2,0.5]; }; _currentOvercastCoef = random[0,0.5,1]; _forecastOvercastCoef = random[0,0.5,1]; if (_currentOvercastCoef > 0.5) then { _currentRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; } else { _currentRainCoef = 0; }; _forecastRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; //Probability of 20% for jungle areas to encounter fog if (_probabilityFog > 0.8) then { _currentFogCoef = random[0, CONST_MAX_FOG_LEVEL/2, CONST_MAX_FOG_LEVEL]; } else { _currentFogCoef = 0; }; _forecastFogCoef = random[0, CONST_MAX_FOG_LEVEL/2, CONST_MAX_FOG_LEVEL]; //Islands are windy _windSpeedN = random[0,20,40]; _windSpeedE = random[0,20,40]; _windDirection = random[0, 180, 360]; }; default { //Probability of 50% as default if (_probabilityRain > 0.5) then { _currentOvercastCoef = random[0,0.5,1]; } else { _currentOvercastCoef = random[0,0.2,0.5]; }; _currentOvercastCoef = random[0,0.5,1]; _forecastOvercastCoef = random[0,0.5,1]; if (_currentOvercastCoef > 0.5) then { _currentRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; } else { _currentRainCoef = 0; }; _forecastRainCoef = random[0, CONST_MAX_RAIN_LEVEL/2, CONST_MAX_RAIN_LEVEL]; //Probability of 30% to encounter fog if (_probabilityFog > 0.7) then { _currentFogCoef = random[0, CONST_MAX_FOG_LEVEL/2, CONST_MAX_FOG_LEVEL]; } else { _currentFogCoef = 0; }; _forecastFogCoef = random[0, CONST_MAX_FOG_LEVEL/2, CONST_MAX_FOG_LEVEL]; _windSpeedN = random[0,10,20]; _windSpeedE = random[0,10,20]; _windDirection = random[0, 180, 360]; }; }; //Setting weather 0 setOvercast _currentOvercastCoef; 0 setRain _currentRainCoef; 0 setFog _currentFogCoef; setWind [_windSpeedN, _windSpeedE, false]; 0 setWindDir _windDirection; forceWeatherChange; //Setting forecast 3600 setOvercast _forecastOvercastCoef; 3600 setRain _forecastRainCoef; 3600 setFog _forecastFogCoef; Up here it is posted as script but it can also be used as function: [] spawn YourTAG_fnc_randomWeather; Call the script file fn_randomWeather.sqf and place it in a scenario subfolder names functions. Then edit the description.ext file by putting standard function declaring: description.ext class CfgFunctions { class YourTAG { tag = "YourTAG"; class functions { file = "functions"; class randomWeather {}; }; }; }; If you use it in a function way you MUST call it from init.sqf in this way: if (isServer) then { [] spawn OFF_fnc_randomWeather; }; -
Calling a Function from a Mission File
Captinlarry posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
I had a Function wrote by a friend that I need to call in a MP mission file. The Function is saved in the file already in a sub folder called functions and is called fn_MoveObject.sqf How would I go about calling this function in an SQF? Also is there a better way to call an sqf on a MP mission than "call{Ham addaction [ "Check in with the Sergeant", { "HamTalk.sqf" remoteExec ["execVM", 2];}];};" -
garage Virtual Garage Custom List not working for BIS_fnc_garage
npmproductions13 posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
I cannot seem to get the custom/filtered list working for the BIS_fnc_garage function. The documentation for the function does not seem to work when I add the BIS_fnc_garage_data which takes an array of whitelisted vehicles. Official Docs: https://community.bistudio.com/wiki/BIS_fnc_garage Here is my code: I put this together with an example from Larow and the documentation if memory serves me right. Any help with getting this working would be appreciated. 👍 -
This script adds every unit placed, by one of the four BLUFOR Curators, to every BLUFOR Curator on the map. I was wondering how I would make it so that this script would add Curator-placed units to all allied Curators on the map. For example, if I had three teams, who are all enemies, (BLUFOR, OPFOR and Independent) and each team has three players (ZeusBLUFOR001_Curator for BLUFOR, ZeusOPFOR001_Curator for OPFOR and so on). How would I add these players to a "group" which can then be used in the above script to add each placed unit by one of the players to all their allies? Do I need to create three arrays and add the Curators (so if I plan to create or remove Curators, I can adjust appropriately), and if so, how? Something like: Array 1 - Curator_west Array 2 - Curator_east Array 3 - Curator_independent Then I was hoping I could write: Then addCuratorEditableObjects to the Curators which are in their associated array (group).
-
[Solved]Adding/Removing Opposide Side Units
rkemsley posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
In its simplest form, is to add/remove the ability for different curators to interact with man/unmanned vehicles. Let us say that the FIA player (BLUFOR) has placed a turret in the trees for an ambush on the AAF player (Independent). While the turret is controlled by the FIA player, the AAF player is unable to interact with it in curator mode. As soon as the FIA unit manning the turret dies (or is told to leave it), the turret can now be accessed by all curators on the map while they are in curator mode (e.g. moved, deleted…). If the AAF player decides that he wants to man the turret, while controlled by the AAF player, no other curator can interact with it while they are in curator mode. In simplest terms, an unmanned vehicle is shown to all curators with the yellow circle in-game. Once the vehicle’s ownership has changed, it no longer shows up to all curators until it is empty again. I have put together the start of the script, but my knowledge of scripting is limited (still learning really). Was wondering if anyone could give me a hand/advice? -
What I am trying to do is create a flag capturing system using the BIS_fnc_holdActionAdd. So I am currently testing to see if, while playing as an FIA BLUFOR unit, I can take an AAF flag down from a flagpole and swap it with an FIA flag. I am hoping I can get the animation of the flag coming down the pole, then once it has reached the bottom, swap with an FIA flag, then rise back up the pole, all while using the hold action button. If the unit lets go of the action button, the flag goes back to the top as if nothing has changed. If the flag is already an FIA flag, then the hold action button should not appear. This should be the same if I am playing an AFF Independent unit, except it is only FIA flags that can be captured. I currently have the hold action working, I am just not sure about how to use the BIS_fnc_animateFlag to move the flag down, swap it, then move it back up to the top.
- 2 replies
-
- bis_fnc_holdactionadd
- capture
- (and 10 more)
-
Create Config.cpp with function liberay
MBMC posted a topic in ARMA 3 - ADDONS - CONFIGS & SCRIPTING
Hello, I have a problem with my config.cpp. I want to create a mod in which I add functions to the function library. I have already looked at and tried many posts and github mods, but all variants end up with the same problem. The functions are not found after Arma start. (Warning Message: Script beo_mod_serv_db\fnc\save\fn_dbSaveAct.sqf not found) THE PROBLEM IS SOLVED !!! LOOK AT THE END OF THE POST I will now enter a variant as an example that seems to me the most sensible of the approx. 40 variants that I have tried. config.cpp: class CfgPatches { class beo_mod_serv_db { author = "MBMC"; requiredAddons[] = {}; requiredVersion = 0.1; units[] = {}; weapons[] = {}; }; }; class CfgFunctions { class mbmc { class beo_mod_serv_db_save { file = "addons\beo_mod_serv_db\fnc\save"; // I forgot the addons\ folder class dbSaveAct{}; class dbSaveAm{}; class dbSaveAmPylon{}; class dbSaveBui{}; class dbSaveCargo{}; class dbSaveFiller{}; class dbSaveFobObj{}; class dbSaveGarage{}; class dbSaveGearVeh{}; class dbSaveLoc{}; class dbSaveMark{}; class dbSaveMarkUser{}; class dbSaveMhq{}; class dbSaveMineF{}; class dbSaveSani{}; class dbSaveSup{}; class dbSaveVar{}; class dbSaveVeh{}; }; class beo_mod_serv_db_save_ini { file = "addons\beo_mod_serv_db\fnc\save\ini"; // I forgot the addons\ folder class dbIniAryNum{}; class dbIniArySize{}; class dbIniD{}; class dbIniDelete{}; class dbIniM{}; class dbIniS{}; class dbIniSave{}; class dbIniSin{}; }; class beo_mod_serv_db_load { file = "addons\beo_mod_serv_db\fnc\load"; // I forgot the addons\ folder class dbLoadAct{}; class dbLoadAm{}; class dbLoadAmPylon{}; class dbLoadStatic{}; class dbLoadBui{}; class dbLoadCargo{}; class dbLoadComp{}; class dbLoadFiller{}; class dbLoadFlag{}; class dbLoadFob{}; class dbLoadGarage{}; class dbLoadLoc{}; class dbLoadMain{}; class dbLoadMark{}; class dbLoadMarkFin{}; class dbLoadMhq{}; class dbLoadMis{}; class dbLoadSani{}; class dbLoadSup{}; class dbLoadVeh{}; }; class beo_mod_serv_db_load_ini { file = "addons\beo_mod_serv_db\fnc\load\ini"; // I forgot the addons\ folder class dbIniL{}; class dbIniLd{}; class dbIniLm{}; class dbIniLmd{}; class dbIniLoadUser{}; class dbIniLs{}; }; }; }; Mod Structure: @beo_server >> addons >> beo_serv_db >> inside folder "beo_serv_db": config.cpp folder name: fnc inside folder "fnc": folder name: save >> lot of functions: fn_dbSaveAct,fn_dbSaveAm,fn_dbSaveAmPylon..... etc. and another folder: ini >> also lot of functions: fn_dbIniAryNum,fn_dbIniArySize.....etc folder name: load >> lot of functions: fn_dbLoadAct,fn_dbLoadAm,fn_dbLoadAmPylon.....etc. and another folder: ini >> also lot of functions: fn_dbIniL,fn_dbIniLd......etc I test it also with only one function in only one fnc folder but I cant get it to work. https://community.bistudio.com/wiki/Arma_3:_Functions_Library#:~:text=Arma 3 Functions Library is,Functions manager to be present. In this wiki post I test both variants File Path and Folder Path but same results. I create the mod with Arma 3 Tools and Addon Builder. I hope someone can help me. Thanks in advance. MBMC SOLUTION: After another 2 days of testing, I found the solution. So if anyone has the same problem here is the solution: config.cpp: I forgot the "addons" folder. So the file path must be: file = "addons\beo_mod_serv_db\fnc\save"; file = "addons\yourModPBOname\FolderOfYourFunctions\SubFolderIfYouNeed"; So this post can be closed.-
- config.cpp
- config
-
(and 7 more)
Tagged with:
-
Hello everyone, Here is a small project that may be helpful to everyone that doesn't always have access to internet/the wiki, or to everyone needing the biki when it is down. With the support of peeps in the #community_wiki Arma 3 Discord channel, I managed to extract wiki data to make a COMREF (Operation Flashpoint flashbacks intensify) This is basically offline documentation for commands and functions in all Arma titles - note that some glitches are still present, but the data is pretty much usable. newest version: 2022-08-17 COMREF (before BIKI update - v2.08) old versions: - 2020-11-23 COMREF (update after 2.00) - 2020-06-12 COMREF (added messagebox colours and better parsing) - 2020-06-10 COMREF (first version) My little helpers: @Grezvany13, @Dedmen, @x39, @optix, @Heyoxe, @A3_Stickie
- 10 replies
-
- 19
-
-
-
-
function Time management function [Sharing]
ZaellixA posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Hey all, just came up with an idea of a function and implemented it. I kinda liked the idea and thought it would be nice to share it here :). So, the function takes as arguments the desired duration of the ArmA day in real-life hours, the day-to-night ratio (how many times the day is bigger than the night) and the (ArmA) date. It returns the needed multipliers (for the desired day and night duration in respect to the total duration of the day) as well as the sunrise and sunset times for that specific day (this is somewhat redundant since you could get them from BIS_fnc_sunriseSunsetTime, but since this function is used inside my function I thought it would be nice to return them). A simple use example would be // The function will be called myTag_fnc_timeVals for this example but you can name it whatever you want // Set variables (most probably you will get them from somewhere such as a mission parameter with "BIS_fnc_getParamValue" private _dayDur = 0.3; // Duration of ArmA day in real-life hours (half an hour in real life corresponds to one full ArmA day) private _dnFac = 1.5; // Day lasts 1.5 times the duration of the night // Get day multiplier, night multiplier, sunrise (ArmA) time and sunset (ArmA) time for the current (ArmA) day given by command "date" _timeVals = [_dayDur, _dnFac, date] call myTag_fnc_timeVals; // Handle the time in a "continuous" manner while{true} do { // Check time of day if(daytime > (_timeVals select 3) || {daytime < (_timeVals select 2)}) then { setTimeMultiplier (_timeVals select 1); // Use night multiplier } else { setTimeMultiplier (_timeVals select 0); // Use day multiplier }; // Sleep (a lot...) sleep 120; }; Below is the implementation of the function. I would like to apologise in advance though, for the cluttering with posting all the code here. I thought it could be a convenience for anyone who would like to use it. The function can also be found in this GitLab repository. In the code posted here, I have skipped parameter checks which you can implement yourself or copy the code from the provided link. NOTE: Due to the fact that the function will force the day and the night to have the given relation (given by the fraction), and due to the fact that possibly the "natural" day has different duration than the "natural" night, setting the ratio to 1 does not mean that the time multipliers will be 1. If you want to return to "normal" time use directly setTimeMultiplier command. Finally, please feel free to suggest (or implement yourself and share back) any improvements, or changes :). /* ---------------------------------------------------------------------------------------------------- * Inputs * ---------- * dayDur [Number] (Optional): Duration of the whole day in real hours (defaults to 24) * dnFac [Number] (Optional): The day-to-night ratio (defaults to 1) * dayOfYear [date] (Optional): The day of the year for which the multipliers will be * calculated (defaults to the current ArmA date) * ---------------------------------------------------------------------------------------------------- * Output * ---------- * data [Array]: - _this select 0 [Number]: Day multiplier * - _this select 1 [Number]: Night multiplier * - _this select 2 [Number]: Sunrise time * - _this select 3 [Number]: Sunset time * * ---------------------------------------------------------------------------------------------------- */ // Get input variables params[["_dayDur", 24, [24]], // Total duration of day ["_dnFac", 1, [1]], // Day-to-Night factor ["_dayOfYear", date, [date]]]; // Asked date // Declare some variables private _riseSet = _dayOfYear call BIS_fnc_sunriseSunsetTime; // Get the sunrise and sunset times of the day private _durs = [nil, nil]; // Calculate day and night duration (in real life hours) _durs set[0, (_riseSet select 1) - (_riseSet select 0)]; // Calculate day duration _durs set[1, 24 - (_durs select 0)]; // Calculate night duration // Calculate multipliers /* Solve simultaneously: * * dayDur * dayMul + nightDur * nightMul = 24 (1) * (dayDur * dayMul)/(nightDur * nightMul) = dayNightFrac (2) * * The result is: * * dayMul = 24/(nightDur * (1 + dayNightFrac)) * nightMul = (nightDur * dayNightFrac * dayMul)/dayDur */ private _dMul = 24/((_durs select 1) * (1 + _dnFac)); // Calculate the day multiplier private _nMul = ((_durs select 1) * _dnFac * _dMul)/(_durs select 0); // Calculate the night multiplier // Multiply with "global multiplier" _dMul = _dMul * 24/_dayDur; // Final day multiplier _nMul = _nMul * 24/_dayDur; // Final night multiplier // Return and exit [_dMul, _nMul, _riseSet select 0, _riseSet select 1] Hope this will be useful to someone. Take care, have fun and ArmA a lot :). EDIT: Corrected the code. A "total multiplier" was missing and day and night multipliers needed corrections. Now works correctly (I hope)... EDIT: A couple of bug fixes... Sorry ;( -
Changing all regular ammo to Tracer ammunition
LSValmont posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Dear follow Arma addicts, can anyone point me towards a performance conscious script for: 1) Replacing all the non tracer ammunition from both player and ai with tracer ammunition, both at their weapons and inventories. 2) I believe tracer ammunition effects only happens when the magazine is almost empty. Is there any way to make every round have (or simulate) tracer effects? Basically I want to simulate old school battlefield games (BF2, BF3) were all rounds have tracer like effects that help players identify the origin and location that fire is coming from. (I need to up the feedback and gameplay friendliness of my mission while compromising some realism). Thank you in advanced!- 7 replies
-
- tracer
- ammunition
-
(and 2 more)
Tagged with:
-
Hey guys just tested a mission and came up with an issue. I am using this code: ["init", [y, "images\spoilers.jpg", "Spoilers"]] call BIS_fnc_initLeaflet; ["init", [x, "images\spoilers.jpg", "Spoilers"]] call BIS_fnc_initLeaflet; in an MP mission. All worked fine but one thing. The action to see the leaflet both times was only visible to the host. Clients could not even see the action. How can I make the above action visible to all in MP please?
-
Hi everyone and happy new year! Introduction This is my first script in 2020. @Ori150418 posted a request about a marker searching system and this piqued my interest so I got to work. This script adds a searchable list with all markers to the right side of the map (see video below). Features Adds list with all markers Markers are searchable by their text Updates positions periodically Updates markers when opening the map Includes user made markers List is hideable Note: The performance might suffer in missions with a lot of markers. The example mission has a small test built into it which generates 100 markers randomly on the map. I'd appreciate feedback about the performance as I have a good enough system to not notice a difference. Usage Copy the file "fn_markersearch.sqf" to your mission directory Add the following line to your init.sqf/initPlayerLocal.sqf: ["init"] execVM "path\to\file\fn_markersearch.sqf" Video Downloads https://github.com/7erra/marker_search Have fun!
-
scripting [SOLVED]Using BIS_fnc_isCuratorEditable
rkemsley posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Does anyone have any idea how to use the function "BIS_fnc_isCuratorEditable" to kill curator editable units when they enter a trigger. I am trying to create a restriction zone around my map which kills the player and curator units when they enter the zone but will allow none curator units to pass through (so I can simulate reinforcements entering the region after a certain amount of time). I have been running some tests to get an idea on how the "BIS_fnc_isCuratorEditable" function works. I currently have four triggers around the map which tell me through a hint whether a unit is curator editable or not. I am now trying to work out how to change it from giving me a hint which is either true or false, to killing the unit if true or allow the unit through if false. Something along the lines of... Just can not seem to work it out. Also tried this to no avail...- 2 replies
-
- arma 3
- bis_fnc_iscuratoreditable
-
(and 3 more)
Tagged with:
-
Calling functions when Player respawns
GhostJumperHD posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
So I have made "script" for myself that I put in the Player Init. This only executes once. But I want it to execute every time I spawn/respawn (so everytime the player starts existing). The script works great if I put it in the Init of the Player. But i wanted to make a .sqf file I could call/execute so I wont have to put everything in every Player. But the scipt is not working/compiling. The code I put in to the Init: varPlayer=this; spawnPos=getPos varPlayer; telePos=getPos varPlayer; [varPlayer, 3] call BIS_fnc_traceBullets; varPlayer addAction["<t color='#59b300'>Arsenal</t>", {["Open",true] spawn BIS_fnc_arsenal;}]; varPlayer addAction["<t color='#d9006c'>Go to Spawn</t>", {varPlayer setPos spawnPos;}]; varPlayer addAction["<t color='#bfff00'>Teleport</t>", {varPlayer setPos telePos;}]; varPlayer addAction["<t color='#4cffff'>set Teleport</t>", {telePos=getPos varPlayer;}]; varPlayer addAction["<t color='#0080ff'>Teleport with Map</t>", "teleport.sqf"]; The code I put in to the .sqf: _spawnPos=getPos _this; _telePos=getPos _this; [_this, 3] call BIS_fnc_traceBullets; _this addAction["<t color='#59b300'>Arsenal</t>", {["Open",true] spawn BIS_fnc_arsenal;}]; _this addAction["<t color='#d9006c'>Go to Spawn</t>", {_this setPos _spawnPos;}]; _this addAction["<t color='#bfff00'>Teleport</t>", {_this setPos _telePos;}]; _this addAction["<t color='#4cffff'>set Teleport</t>", {telePos=getPos _this;}]; _this addAction["<t color='#0080ff'>Teleport with Map</t>", "teleport.sqf"]; How I called it in the Init: _nul = []execVM "myFunction.sqf"; It wont run, but why? So for short. What i need help with is: finding the problem with the sqf executing the sqf every time the player starts existing Thx for reading my crap and I hope you can help me. :) -
You know the vehicles I'm talking about - the HEMTT ammo / fuel / repair truck, the Huron containers, Taru pods, Zamaks, etc... you drive up to it and it just automatically repairs / refuels or rearms you, as is the case. I've searched high and low through the functions and config files, and I can't find the scripting that is making this effect happen. Does anyone know what it is, or where it can be found? Please don't answer with references to your own or other's Rearm / Refuel / Repair scripts, I have a ton of those but that's not what I'm asking - thank you! Why am I looking for this, specifically? 1. Vehicle rearming, with turrets and especially with dynamic loadouts, is especially problematic. I challenge you to reload 13 out of 19 rockets, exactly, on a rocket pod that's not on the vanilla configuration of a dynamic loadout aircraft. The vehicle rearm script on the Huron pod just works, it an cosmetically appealing way: the numbers just increase while you're next to the rearming source, until you're fully reloaded, and it doesn't seem to care whether it's a vanilla loadout or a dynamic one, whether the turret is local or not, etc. 2. There's no way to adjust the "flow rate" of vehicle rearming, repairs, or refueling. 3. The effect itself is capricious. Sometimes it works as intended (drive up to the box/ car/ whatever) and the vehicle resupplies as intended. Sometimes it doesn't, but it provides you with an action (complete with a lovely icon) to perform it. And sometimes it doesn't work at all. Thank you in advance! Ryko