Jump to content

Grumpy Old Man

  • Content count

  • Joined

  • Last visited

  • Medals

Community Reputation

1451 Excellent

About Grumpy Old Man

  • Rank
    Warrant Officer


  • Occupation
    Audio Engineer

Profile Information

  1. How many soldiers can form a squad

    You can have up to 288 groups per side. Units per group does not seem to have a limit (besides CPU/GPU). Managed to spawn 3000+ agents on the entire Takistan map, only issue seems to be GPU memory being flooded pretty fast if you want to render more than 1000 at a time. That was before buying the gtx 1080 though. Screenshot shows ~250 AIs in Nagara, fps was around 50 with my old gtx 770. Cheers
  2. Took a quick glance at @Gunter Severlohs glorious collection, couldn't spot something similar so I made something from scratch. This can be quirky and depends on quite a few factors to work reliably. Usually make sure that the sniper can actually fire at the target and has a clear line of sight as well as an appropriate firearm, which apparently isn't an issue in your situation, just worth mentioning. This snippet will make the sniper target and shoot at the VIP, if successful the sniper will move 1500m facing away from the VIPs current position and ignore further engagements if possible: //put this into init.sqf or where you seem fit GOM_fnc_sniperKillTarget = { params ["_sniper","_target",["_debug",true]]; if (_debug) then { systemchat format ["%1 attempting to shoot %2.",typeof _sniper, typeof _target]; }; while {alive _sniper AND alive _target} do { sleep 3; _sniper reveal [_target,4]; _sniper doFire _target; }; if (!alive _sniper AND _debug) exitWith {systemchat "The sniper got killed!"}; {group _sniper forgetTarget _x} forEach (_sniper targets [true,0]);//remove all targets from snipers memory _sniper disableAI "AUTOCOMBAT"; _sniper setBehaviour "AWARE"; _sniper setCombatMode "GREEN";//allows firing for defense only, adjust or remove this _sniper setUnitPos "UP"; _awayPos = _sniper getRelPos [1500,_target getRelDir _sniper]; //move 1500 away from target if (!alive _target AND _debug) then {systemchat format ["The target got eliminated! Moving to grid %1!",mapGridPosition _awayPos]}; _sniper doMove _awayPos; true }; //to spawn the function from a trigger or where you seem fit, turn off debug if not needed: _debug = true; _shoot = [mysniper,myVIP,_debug] spawn GOM_fnc_sniperKillTarget; If the target is moving, and the further the target is away from the sniper, the harder it is for AI to kill only the designated target. Best space out the units and make them stand still when starting the snippet for best results, also make sure to set the snipers skill to 1, since the most recent AI "refactoring" the precision of editor placed units with default settings has gone down a lot. Cheers
  3. Script ban

    Yeah, some detail is always nice. Cheers
  4. 40mm grenades need a real buff

    Always wondered about this, group of opfors, 3-4 not too much spaced out, launch a 40mm right in the middle of them, they shrug it off. In reality this would have severe injuries as a consequence, in game best represented by killing the unit. Especially opfors armor and explosive resistance on gear makes 40mm grenades look like nothing. Cheers
  5. unit first/last name

    They're found under CfgWorlds: configfile >> "CfgWorlds" >> "GenericNames" >> _x >> "FirstNames" Cheers
  6. Or alternatively (and probably easier to read: _distance = random 1000; _dir = random 360; _relpos = player getRelPos [_distance, _dir]; Will return a position within 1000m somewhere around the player. Cheers
  7. Helicopter loop

    Did you try contacting @dreadedentity via PM? I see you already tried to contact him via steam. Changing an existing script without being the author would probably take more time than to write it from scratch. Cheers
  8. altis V5

    Does this look like the Altis Life Forum to you? Cheers
  9. Addaction Gate Animation

    Enable the showscripterrors feature in your launcher, quotation marks throwing the error here: addAction ["Open Gate One (Perimeter)", "Gate_DOC_121 animate ['Door_1_Move', 1]"] Cheers
  10. It's the same reason they switched to the new forum software: Cheers
  11. Having issues with AI patrolling

    You can also use lockWP for this, when set to true the waypoints will remain but will be ignored by the AI. Cheers
  12. Same here, though it seems some tickets have been processed without leaving comments/changing the state (vehicle license plates etc). The layout of the new tracker is extremely confusing and goes in the opposite direction of what has been before. Cheers
  13. Helicopter loop

    Roughly 20 minutes with a few testruns included. Cheers
  14. Helicopter loop

    I quickly threw this one together: GOM_fnc_ambientHelipad = { //parameters: //_landingpad: does not have to be a landingpad, but an object where the chopper will try to land //_minspawndistance: the chopper will spawn this distance away from the pad //_timeonground: how many seconds on average the chopper will idle after landing, before departing again //_timeToNextChopper: how many seconds on average it will take for the next chopper to spawn, after the last one departed from the pad //_loop: spawns choppers all the time params [["_side",west],["_landingPad",objnull],["_minspawndistance",10000],["_timeonground",90],["_timeToNextChopper",90],["_loop",true],["_debug",true]]; //this is needed to not have choppers spawn at once during mission start sleep round random 180; _sideID = _side call BIS_fnc_sideID; _validChoppers = (format ["getNumber (_x >> 'transportSoldier') >= 2 AND getNumber (_x >> 'side') == %1 AND configname _x isKindof 'Helicopter' AND getnumber (_x >> 'scope') >= 2",_sideID] configClasses (configFile >> "CfgVehicles")); _rndChopper = configName (selectRandom _validChoppers); _chopper = createVehicle [_rndChopper,[0,0,800],[],0,"FLY"]; createVehicleCrew _chopper; if (_debug) then { systemchat format ["Created %1",_rndChopper] }; _rndPos = _landingPad getRelPos [_minspawndistance,random 360]; //make chopper spawn at least 200m above ground or water if (surfaceIsWater _rndPos) then { _rndPos set [2,((_rndPos select 2) + 200)]; _chopper setPosASL _rndPos; if (_debug) then { systemchat format ["Spawnposition on land",_rndChopper] }; } else { _rndPos set [2,200]; if (_debug) then { systemchat format ["Spawnposition on water",_rndChopper] }; _chopper setPosASL _rndPos; }; group driver _chopper move getposatl _landingpad; if (_debug) then { systemchat format ["Moving to %1",_landingpad] }; waituntil {unitReady driver _chopper OR !alive driver _chopper OR !alive _chopper}; if (!alive driver _chopper or !alive _chopper) exitWith { if (_debug) then {systemchat format ["Chopper destroyed",_rndChopper]}; }; dostop _chopper; _chopper land "LAND"; if (_debug) then { systemchat format ["%1 arrived at %2, landing.",_rndChopper,_landingpad] }; waituntil {getposatl _chopper select 2 < 1 AND (alive driver _chopper OR alive _chopper)}; if (!alive driver _chopper or !alive _chopper) exitWith { if (_debug) then { systemchat format ["Chopper destroyed",_rndChopper] }; }; if (_debug) then { systemchat format ["%1 touched down at %2.",_rndChopper,_landingpad] }; _waittime = round random [_timeonground / 2, _timeonground, _timeonground * 2]; if (_debug) then { systemchat format ["%1 waiting for %2 seconds at %3.",_rndChopper,_waittime,_landingpad] }; sleep _waittime; if (_debug) then { systemchat format ["%1 preparing for departure, starting engines.",_rndChopper] }; //start engine and wait for a few seconds to be more authentic _chopper engineOn true; sleep random [20,30,60]; _bearing = round random 360; _rndDeparture = _chopper getRelPos [20000,_bearing]; _chopper dofollow leader group _chopper; group driver _chopper move _rndDeparture; if (_debug) then { systemchat format ["%1 departing from %2, bearing %3.",_rndChopper,_landingpad,_bearing] }; if (_loop) then { _newChopper = _this spawn { _delay = round random [_delay / 2,_delay,_delay * 2]; _this spawn GOM_fnc_ambientHelipad; }; }; waituntil {_chopper distance2d _rndDeparture < 500}; {deletevehicle _x} forEach [_chopper] + crew _chopper; }; //params to use _side = west; _spawndistance = 500; _timeonground = 120; _timeToNextChopper = 90; _loop = true; _debug = true; { _ambient = [_side,_x,_spawndistance,_timeonground,_timeToNextChopper,_loop,_debug] spawn GOM_fnc_ambientHelipad; } forEach [pad1,pad2,pad3,pad4,pad5,pad6]; Make sure you call this only once for each pad. As a demo place 6 pads properly spaced out, name them pad1-pad6, put the above in the init.sqf and watch. Will spawn choppers for placed landing pads, with proper time intervals inbetween. Random choppers of a side that are able to transport more than 2 people (to filter out uavs etc) will approach the landing pads, when arrived they will land, stay a certain amount of time (randomized) on ground, power up the engines and depart in a random direction and finally will be deleted. After a chopper departed from a pad the function will wait a few seconds and spawn another chopper for the pad. Enjoy. Cheers
  15. [Release] GOM - Aircraft Loadout V1.34

    Did you try it in an empty mission? Your initplayerlocal.sqf example basically adds the function twice. All planes are showing up for me. Hard to tell without an example mission. As long as the vehicles are configured for the new pylon system, yes. Cheers