Jump to content

fn_Quiksilver

Member
  • Content Count

    2697
  • Joined

  • Last visited

  • Medals

Posts posted by fn_Quiksilver


  1. Updated to 1.1.9

    Removed real_date.dll extension dependency, AI tweaks, bug fixes

    - [ADDED] New script commands (systemTime, getAttackTarget, etc).
    - [TWEAKED] Vehicle Active Protection System to improve player-vehicle protection from enemy AI-fired projectiles. 
    - [TWEAKED] AI awareness of hostile (player occupied) buildings.
    - [TWEAKED] Added civilian Tractor to easter eggs
    - [TWEAKED] Enemy MG towers no longer spawn on roads, probably.
    - [TWEAKED] Server security to A3 2.00 compatibility.
    - [FIXED] Friendly AI vehicles could spawn at some enemy objectives.
    - [FIXED] Custom terrain structures will no longer delete at the start of Defend missions/end of AO when players are nearby.
    - [REMOVED] real_date.dll extension dependency

     

    Server admins no longer need to use the real_date.dll extension to have built-in mission restart functionality. In addition, some AI improvements and general bug fixes.

     

    Next update will introduce player sandbag deployment, AI brain improvements, and some mission content. ETA 4 weeks.

    • Like 1

  2. On 10/14/2020 at 2:36 PM, Sertica said:

    I'm trying to get a grasp on two matters to get a mission loop running properly.

    1.  What is the difference between call and spawn?  According to https://community.bistudio.com/wiki/Scheduler#Scheduled_Environment I'm taking it to mean that the only difference is code running in spawn is limited to 3ms bursts.

    
    call compileFinal preprocessFile "main.sqf";
    call main;
    
    main = {
    	onEachFrame {
    		hint "test"; // game engine loop going in parallel with this
    	};
    };

    2.  Is calling only scripts compiled in init.sqf, as above, all you need to get best possible speed?  Is there a way to compile all sqf files in the mission folder tree as opposed to adding all lines manually to init?

     

    What I am aiming for now as I start to gather my test missions into a real mission is having typical game loop for mission with frequency sections like this:

    
    main = {
    	_frameCount = 1; // start on frame 1
    	onEachFrame {
    		if (_frameCount > 500) then { _frameCount = 1; }; // reset after 500 frames
    			/* High Frequency */
    		call highFreqMethod; // execute these every frame; ~0.02 interval
    			/* Medium Frequency */
    		_remainder = _frameCount % 20;
    		if (_remainder == 0) then { // execute these every 20 frames; ~0.4 second interval
    			call medFreqMethod;
    		};
    			/* Low Frequency */
    		_remainder = _frameCount % 500;
    			if (_remainder == 0) then { // execute these every 500 frames; ~10 seconds interval
    			call lowFreqMethod;
    		};
    		_frameCount = _frameCount + 1; //
    	};
    };

    A strategic decision making script would go in the low freq section for call at ~ 10 second interval.  Scouts trying to spot enemies could go in medium or high depending on how much precision can be afforded with current frame rate.

     

     

    as a general rule for optimization, call/execute/evaluate code as infrequently as possible while still accomplishing the task.

     

    very few things need to be executed each frame, examples being visual things like GUI. Things that aren't seen by the player dont need to be updated very frequently

    • Like 1

  3. Finding flat spots in forests is tricky, since most of the built in SQF commands like isFlatEmpty will fail due to the object/tree density.

     

    18 hours ago, Rydygier said:

    As for dynamic camps etc. placement, you can get nice results with these:

     

    isFlatEmpty

    findEmptyPosition

    BIS_fnc_findSafePos

    selectBestPlaces

     

    Some of them should solve your problem with slopes by ensuring, picked position will be flat/level enough.

     

    Those won't really help him.

     

    A function like getTerrainHeightASL is more useful for solving this problem.

     

    You'll need to test different positions for flatness (within a radius).

     

    A way to do that is to get a reference position (random position), then get 6-12 radial positions around it in all directions. Then calculate the angle of the Z-axis (height) delta of each of those positions from the reference position. If some of those radial positions Z-axis are much different from the Z of the reference position, then a slope exists at that site.

     

    Iterate over the random pos code until you've found a position where the Z axis is consistent.

     

    here is how I attempted it:

     

    https://github.com/auQuiksilver/Apex-Framework/blob/master/Apex_framework.terrain/code/functions/fn_areaGradient.sqf

     

    https://github.com/auQuiksilver/Apex-Framework/blob/master/Apex_framework.terrain/code/functions/fn_terrainGradAngle.sqf

     

    And in practice, I used it to find a Forested + Flat position with a block like this:

     

    https://github.com/auQuiksilver/Apex-Framework/blob/master/Apex_framework.terrain/code/functions/fn_SMregenerator.sqf#L21-L41

     

     

    _bestPlaces = '(1 + forest) * (1 - houses)';
    private _nearestTerrainObjects = [];
    _basePosition = markerPos 'QS_marker_base_marker';
    _baseRadius = 1500;
    _fobPosition = markerPos 'QS_marker_module_fob';
    _fobRadius = 300;
    _posGradient = 0;
    for '_x' from 0 to 99 step 1 do {
    	_spawnPosition = ['WORLD',-1,-1,'LAND',[1.5,0,0.1,3,0,FALSE,objNull],TRUE,[[0,0,0],300,_bestPlaces,15,3],[],FALSE] call (missionNamespace getVariable 'QS_fnc_findRandomPos');
    	_posGradient = [_spawnPosition,12] call (missionNamespace getVariable 'QS_fnc_areaGradient');
    	if (
    		((_usedPositions inAreaArray [_spawnPosition,500,500,0,FALSE]) isEqualTo []) &&
    		((_allPlayers inAreaArray [_spawnPosition,500,500,0,FALSE]) isEqualTo []) &&
    		(!([_spawnPosition,150,8] call (missionNamespace getVariable 'QS_fnc_waterInRadius'))) &&
    		((_spawnPosition distance2D _basePosition) > _baseRadius) &&
    		((_spawnPosition distance2D _fobPosition) > _fobRadius) &&
    		((_spawnPosition distance2D (missionNamespace getVariable 'QS_aoPos')) > 1000) &&
    		((_posGradient < 5) && (_posGradient > -5)) &&
    		(((_spawnPosition select [0,2]) nearRoads 100) isEqualTo [])
    	) exitWith {};
    };

     

    • Like 4
    • Thanks 1

  4. On 6/10/2020 at 1:39 AM, strayer49 said:

    How to change the maximum team size,anyone know? 50 people in a team, and they're all talking on the team channel, which is confusing, so I thought I'd change it. Each team can only hold 10-15 people. But I can't find the file about the maximum team size. 

     

     

    https://community.bistudio.com/wiki/Arma_3_Dynamic_Groups

     

    The mission uses the vanilla Dynamic Groups system. 

     

    I don't believe it's possible to configure a maximum group size, although I could be wrong.

     


  5. 11 hours ago, acebelew said:

    Can be any vehicle,  they despawn without any real reason that I can see.

     

    looking into it now.

     

    around base the vehicle respawn distance is quite small for all vehicles.

     

    away from base, it depends on the type of vehicle. 

     

    for instance a helicopter, will search for nearby pilots. If there aren't any pilots within the radius, the helo will despawn (even if there are non-pilots nearby).

     

    for land vehicles it is more simple, checking for any players nearby.

     

    this helicopter detail is to prevent situations where helis are abandoned in the field but dont respawn due to infantry players being nearby. in some cases--where lots of helis go down in the combat area--this will ensure that there are helicopters available at base.

     

     


  6. On 10/15/2019 at 3:12 AM, acebelew said:

    I am using QS 1.18
    Looking at QS_data_vehicles.sqf most of my vehicle abandonment distance is set to 150 (at base) and 500 (away from base), but very often when the player gets out of a vehicle either at base of at the AO the vehicle respawn immediately (3-5 seconds).  Is there another value I need to be looking at for vehicle cleanup.  My _QS_cleanup_delay in fn_core.sqf is set at the default of 45.

     

    Is this related to side mission reward vehicles, or all vehicles?

     

    If just the reward vehicles, then its a known issue


  7. On 10/16/2019 at 3:50 AM, acebelew said:

    I added my lines to fn_clientEventKilled.sqf  if this is not a good location let me know ~

     

    it is a good place

     

    I use fn_clientEventRespawn.sqf to reset many variables but Killed event works too


  8. - CfgRemoteExec handles only "from client" executions.

     

    - Best bet is to whitelist only non-destructive commands, the ones that aren't normally used in cheat scripts. Or better yet, dont whitelist any.

     

    https://github.com/auQuiksilver/Apex-Framework/blob/master/Apex_framework.terrain/description.ext#L178-L208

     

    - Instead, create your own script function with which you have more control over the execution, like logging and context-based sanity checks.

     

    https://github.com/auQuiksilver/Apex-Framework/blob/master/Apex_framework.terrain/code/functions/fn_remoteExecCmd.sqf

     

     

    Heres an example of filtered vs unfiltered

    // Unfiltered
    [_vehicle,1] remoteExec ['setVehicleAmmo',_vehicle];
    
    
    
    // Remote Exec script function
    QS_fnc_remoteExecCmd = {
    	params ['_type','_1','_2'];
    	if (_type isEqualTo 'setVehicleAmmo') exitWith {
    		if (player is in the vehicle service area) then {
    			_1 setVehicleAmmo _2;
    		};
    	};
    };
    
    
    // Filtered with sanity checks (in the above function)
    ['setVehicleAmmo',_vehicle,1] remoteExec ['QS_fnc_remoteExecCmd',_vehicle];

     

    If a cheater wanted to remote-exec "setvehicleammo" then, they would have to use the script function, which would only allow the setvehicleammo if the player is in the service/rearm area.

     

    If you're looking at security improvements, dont overlook this one:

     

    https://community.bistudio.com/wiki/Arma_3_CfgDisabledCommands

    • Thanks 1

  9. On 9/16/2019 at 3:55 PM, Wei Zhao said:

    How can I use VCOM?

     

    VCOM will interfere with the built in AI, its highly recommended not to use. Is there any feature in particular that you want VCOM for?

     

    If you insist on using it, it should be as simple as plugging it in as a server mod, however you will likely experience adverse results with AI navigation due to conflict with built in logic.


  10. I find using the remoteExec framework and discarding the publicvariable/addpublicvariableeventhandler/publicvariableserver/publicvariableclient system entirely, to be the simplest.

     

    for example

     

    private _counter = 0;
    while {true} do {
    	sleep 10;
    	systemChat "Update";
    	_counter = _counter + 1;
    	// remoteExec instead of publicVariable
    	[
    		Counter,
    		{
    			if (hasInterface) then {
    				hint str _this;
    			};
    		}
    	] remoteExec ['call',0];
    };

     


  11. you can simplify this by simply moving them into the vehicle instead of relying on the getin waypoint. i guess it depends on whether players would be able to see the vehicle at its starting point.

     

    next, create a separate group for the vehicle driver, and give him a "transport unload" waypoint

     

    next, add a move waypoint to the QRF group. discard the "Getout" waypoint, as they will disembark via the "transport unload" waypoint.

     


  12. On 9/3/2019 at 8:00 PM, Halandar said:

    Hi, 

     

    first of all thank you for this! This is amazing. 

     

    Question: is there an option or a plan for Headless Clients? I did not find any info on it. 

     

    Thank you!

    Cheers Michael

     

     

     

    Hi,

     

    thank you!

     

    No plans at the moment for Headless Client.

     

    There was past work done to facilitate HC but it is a complex task which I don't have the time to tackle these days. It may come back into focus in the future, but not in the near future.


  13. On 8/23/2019 at 6:12 PM, pognivet said:

    i don't see why you think it's that crazy of a concept to just use attachto and play some animations, move a guy 20 feet and do moveincargo with the wounded guy while cancelling the animations. i just need some way of making it not look stupid.

     

    and yes quicksilver that is essentially what i have in mind. but why clear the terrain and make the helo land on top of the wounded? there's a function in arma for finding the nearest safest landing spot that's flat. i forget what it's called. the helicopter can dynamically find a safe lz (in theory), but i just need some mechanism to physically move that wounded man to that lz. i assumed that just doing attachto with drag animations like ace does for dragging would be simple enough, but i have no idea how to make an ai drag someone, only a player. the medevac helo can land with a medic ai whose sole job is to perform the dragging so it's not too much of an issue to try to find someone to drag them in a dynamic way.

     

    the other solution is to have some sort of ambulance take them to the lz, but this might be difficult owing to the behavior of driving ai in rough terrain.

     

    one mod, i forget which, had a stretcher "vehicle" which could be crewed by two people and used in this strange way. i think it was the swedish mod.

     

    you've had 10 months to come up with something, lets see it.

     

     

     

    here is a simple medevac concept, but i dont leave the AI in charge of navigation, it is all remote controlled. 

     

     

    ^ even just that little bit at the end where the medics heal the retrieved wounded, that is not a simple thing. here is the code used to power just that small bit:

     

    https://github.com/auQuiksilver/Apex-Framework/blob/master/Apex_framework.terrain/code/functions/fn_clientAIBehaviours.sqf

     

    spend more time working on your concept and less time brainstorming/thinking/pondering/talking about it. as i said, its been 10 months

    • Like 2
    • Thanks 1

  14. Updated to 1.1.7 (Hotfix 2)

    Bug fixes & more bug fixes

    - [ADDED] AI re-arming.
    - [TWEAKED] T140 Angara improved APS, but extended minimum effective range.
    - [TWEAKED] Commander no longer required for Active Protection System to work.
    - [TWEAKED] @Apex servermod, added override for BIS_fnc_setCustomSoundController running on server.
    - [TWEAKED] Removed enemy UGV from defend missions due to potential server crash.
    - [FIXED] "Edit Inventory" menu was broken by the arma update. (Thanks Fitz)
    - [FIXED] Robocop kick+ban features were broken by the arma update. (Thanks Fitz)
    - [FIXED] "Escort Vehicle" side mission was not available on Livonia.
    - [FIXED] Script error in AI suppressive fire system
    - [FIXED] Script error in AI countermeasure system
    - [FIXED] Shotgun magazines added to Arsenal whitelist. (Thanks Fitz)
    - [FIXED] Side mission rewards were not spawning on Livonia. (Thanks Mynar)
    - [FIXED] APS UI color was switching to red and not switching back to white.
    - [FIXED] APS UI visible only when in correct vehicle role.
    - [FIXED] Cancel action remained after reviving/healing.
    - [FIXED] "Edit Inventory" user action was broken by a recent arma update.
    - [FIXED] Auto-cancel of Treat action not working when heal target moved out of range.
    - [FIXED] AI units have ammo for incorrect gun (leaving limited space for ammo for correct gun).
    - [FIXED] Missions spawning outside map area (Livonia)
    - [FIXED] Script error in Sector Control mode, causing some AI to become invincible.

    • Like 1
    • Thanks 2

  15. On 7/25/2019 at 7:14 AM, mickeymen said:

     

    Perhaps you `re right, I noticed it too!

     

    Unfortunately, AI does not recognize other settings inside Waypoint either.

     

    I have already reported this for two years, but it looks like it doesn’t bother anyone, I am very saddened by this fact 😞

     

    I will try say it again - The AI in Arma3 will ignore the settings completion radius inside the any waypoint and this is a huge problem!

    The completion radius will always work only for the player, while the AI will ignore this setting! This not normal. There can be no reason why a player can have a waypoint completion, and the AI will ignore this waypoint setting! Before, I saw that it worked fine in Arma3, but in one of the updates it was broken - this is 100%! As a result, now the player cannot complete the necessary AI  waypoints quickly (without heavy scripting).This is a problem for many players who do not speak the programming language.

     

    Other settings which have been noticed by me inside/outside the waypoint that the AI will ignore:

     

    a) Careless behavior will not take speed/stance settings into account.  Any careless AI will anytime and anywhere  go only slowly! As a result, the player cannot create a cowardly (running under enemy fire AI)! This is also a huge omission.

     

    b) DESMISS waypoint cannot be skipped by trigger to the other waypoint.

     

     

    its reasonably easy to create "coward" AI running away.

     

    just use the newer "disableAI" options, like "TARGET","AUTOTARGET","AUTOCOMBAT"


  16. y62JvBz.jpg

    Updated to 1.1.7 "Contact"

    Contact DLC & vehicle active protection

    - [ADDED] Contact DLC Integration.

    - [ADDED] Livonia.
    - [ADDED] QS Active Protection System, for armored vehicles. Based on Israeli "Trophy" and Russian "Afghanit" systems.
    - [ADDED] FOBs to Malden.
    - [ADDED] Medical cabinets to FOBs (all terrains).
    - [ADDED] DLC gear to scripted Arsenal.
    - [ADDED] New enemy static weapon emplacement in AOs.

    - [TWEAKED] Overhaul of FOB compositions.
    - [TWEAKED] Improved enemy loadout randomization.
    - [TWEAKED] FOB'ified the main mission types for Malden (AOs split into regions).
    - [TWEAKED] Added ability to disregard "is respawn position clear" parameter for Vehicle Respawn (set near entities check radius to -1).
    - [TWEAKED] Prisoners converted from object type 'agent' (more resources) to 'vehicle' (less resources) when placed into Prison.
    - [TWEAKED] Contact DLC objects can be dragged/carried when appropriate.
    - [TWEAKED] Integrated new & improved A3 1.94 script commands.
    - [FIXED] Player vehicle event handlers were not unloading properly on player death.
    - [FIXED] "FOB Status" user action had no maximum radius.
    - [FIXED] Fighter pilot was unable to properly use Aircraft radio channel.
    - [FIXED] Engineer was unable to disarm landmines.
    - [FIXED] Enemy forces were unaware of where their own minefields were.
    - [FIXED] Script error in Towing Release script.
    - [FIXED] Fixed potential script error in AO Defend mission.

    • Like 2
    • Thanks 1
×