Jump to content

fn_Quiksilver

Member
  • Content Count

    2590
  • Joined

  • Last visited

  • Medals

Community Reputation

1524 Excellent

About fn_Quiksilver

  • Rank
    Warrant Officer

Recent Profile Visitors

4347 profile views
  1. 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. 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 {}; };
  2. fn_Quiksilver

    Apex Framework

    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.
  3. fn_Quiksilver

    Apex Framework

    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.
  4. fn_Quiksilver

    Apex Framework

    Is this related to side mission reward vehicles, or all vehicles? If just the reward vehicles, then its a known issue
  5. fn_Quiksilver

    Make agent attack players

    if its an agent you need to script it with move + animation commands
  6. fn_Quiksilver

    Band of brothers Missions

    i would appreciate fewer required mods. some of those are "nice to have" but not essentials
  7. fn_Quiksilver

    Band of brothers Missions

    thank you ! 🙂
  8. fn_Quiksilver

    Apex Framework

    it is a good place I use fn_clientEventRespawn.sqf to reset many variables but Killed event works too
  9. fn_Quiksilver

    cfgRemoteExec and its use.

    - 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
  10. fn_Quiksilver

    Apex Framework

    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.
  11. keep in mind this script will itself affect performance, especially with higher number of players. [] spawn { while {true} do { player setVariable ["DNI_PlayerFPS", floor diag_fps, true]; sleep 0.1; }; }; this block here will add quite a lot of network traffic with many connected clients.
  12. fn_Quiksilver

    Troubles with publicVariable..

    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]; };
  13. fn_Quiksilver

    Creating a QRF

    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.
  14. fn_Quiksilver

    Ladder Use Prevention

    Use the "AnimChanged" object event handler to detect the ladder anim, then execute the "ladderOff" action <unit> addEventHandler [ "AnimChanged", { params ['_unit','_anim']; if (_anim in [ladder animations]) then { _unit action ["ladderOff",<building object>]; }; } ];
  15. fn_Quiksilver

    Apex Framework

    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.
×