Jump to content

mrcurry

Member
  • Content Count

    423
  • Joined

  • Last visited

  • Medals

Community Reputation

271 Excellent

About mrcurry

  • Rank
    Gunnery Sergeant

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Are you perhaps thinking about the "MenuPosition" respawn template? https://community.bistudio.com/wiki/Arma_3:_Respawn#Official_Templates Or do you just want to add markers to them on the map? If so any old "tracking marker"-script will do:
  2. It's not strange at all. What the curly brackets does is define a Code-data type block, a set of instructions that can be stored in a variable just like numbers or strings. There is no execution done by a {}-block because it's just data. If you look at a regular if () then {}-statement it's actually the "if-then" construct that makes the engine execute the data in the Code-block.
  3. { deleteVehicle _x } forEach ( getMissionLayerEntities "WeaponCache1_1" select 0 ); Is the objects in a Eden Editor Layer called WeaponCache1_1? @rkemsley
  4. Bit of a necro @sarogahtyp but you should revisit this one now in this year of our plague lord, 2021. Using the new(-ish) HashMaps to define the graph you ought be able to squeeze a fair bit more performance out of it and should allow you to add one way connections for "free". I'm sure this has crossed your mind but for A* handling 3D floors I'd say it's all about the right heuristic. You should be able to use this psuedo heuristic to bring the algorithm to the right floor fairly quickly: (_target distance2DSqr _x)*(1+_target heightDiff _x)
  5. mrcurry

    Trigger Question

    The problem doesn't seem to be in the code that you have provided. Show the officerAssignsJeep.sqf script code as well.
  6. Good looking stuff! Regarding this: See note in link: https://community.bistudio.com/wiki/isGamePaused In your function RYD_TI_ContourFlight put this... RYD_TI_ContourFlight = { if (isGamePaused) exitWith {}; /**** your code here ****/ }; ...or this... RYD_TI_ContourFlight = { if(not isGamePaused) then { /**** your code here ****/ }; }; ...which ever floats your flying boat.
  7. This will only remove the executing client's weapons, since player is parsed on the executing machine before being transfered. The first approach you mentioned is required: [[], {removeAllWeapons player}] remoteExec ["call"] -Edit- or better yet define a function in CfgFunctions: TAG_fnc_removePlayerWeapons = { removeAllWeapons player } and execute it like so [] remoteExec ["TAG_fnc_removePlayerWeapons"];
  8. Couple of issues with vDog Patrol when the dog is controlled by enemy AI (which is what I'd want to use this for) 1. When the player reveals themselves the dogs just stand there (tested on the included test mission). This seems to be because: if !(assignedTeam _dog isEqualTo "RED") then {_targetsAmount = 0;}; since assignedTeam will always return "" on AI-only groups. 2. I played around with adding "&& isPlayer _dogOwner" to the above condition and the dog started moving but only to it's owner. It still won't engage the player. 3. I might be missing something but when iterating over _nearHumans to find _targetHumans there's this: then {_targetHumans = _targetHumans + [_x]; _dog knowsabout _x; _dogOwner knowsabout _x;} This seems more appropriate: pushBack is more efficient and since the knowsAbout value isn't used I'm guessing you wish to reveal the target to the group instead: then {_targetHumans pushBack _x; group _dogOwner reveal _x; } I'd also recommend splitting the AI and player versions of vDog patrol up into 2 separat scripts. It'd would help minimize running code that isn't needed for each use case and help simplify troubleshooting for you as well. It might even be worth pulling the dog move code into it's own routine and have the dogs and let it act on some given parameters that could be controlled by the other scripts. It makes sense (to me anyway) that the locomotion of the dogs ought to be the same no matter if they are controlled by a player, an AI or are feral. Makes it easier to update and maintain even if you decide to change stuff around with their movement. Anyway that's my 2 cents. Great work so far! Carry on.
  9. Arrays are stored by reference. As long as you know which index A is stored in the answer is: no, where you put A in the B array has no bearing on the access time or memory allocation time. In any practical application "array select 0" and "array select n" are equal in speed.
  10. Sound like AI doesn't know how to return to regular animations after your anim is finished. If that's the case you'll have to manually put them back on track after your anim is done. As for moving while the anim is playing I don't know.
  11. TAG_fnc_loadClientData = { _this params ["_loadout", "_positionASL", "_dir"]; player setUnitLoadout _loadout; player setDir _dir; player setPosASL _positionASL; }; if(isServer) then { addMissionEventHandler [ "HandleDisconnect", { params ["_body", "_id", "_uid", "_name"]; if(!isNull _body) then { //Init storage var if(isNil "TAG_disconnectedLoadouts") then { TAG_disconnectedLoadouts = []; }; //Get data private _loadout = getUnitLoadout _body; private _position = getPos _body; private _direction = getDir _body; //Find in storage private _uidIndex = TAG_disconnectedLoadouts find _uid; if(_uidIndex > -1) then { //Found -> update private _loadoutIndex = _uidIndex + 1; TAG_disconnectedLoadouts set [_loadoutIndex, [_loadout, _position, _direction]]; } else { //Not found -> Add new TAG_disconnectedLoadouts pushBack _uid; TAG_disconnectedLoadouts pushBack [_loadout, _position, _direction]; }; }; false } ]; addMissionEventHandler [ "PlayerConnected", { params ["_id", "_uid", "_name", "_jip", "_owner"]; if(_jip) then { private _clientData = missionNamespace getVariable ["TAG_disconnectedLoadouts", []]; private _uidIndex = _clientData find _uid; if(_uidIndex > -1) then { private _loadoutIndex = _uidIndex + 1; (_clientData select _loadoutIndex) remoteExec ["TAG_fnc_loadClientData", _owner]; }; }; } ]; };
  12. Unfortunately that's only gonna return the comparison of the last marker in the list. Also _markerList is not defined in the condition scope. Instead use findIf for the condition: "alive _target And TAG_markerList findIf {_target distance2D getMarkerPos _x <= 40} >= 0" and make the list global: TAG_markerList = ["APF_1","APF_2","APF_3"];
  13. mrcurry

    Secure HVT using ACE

    Try using HandleDamage eh instead and return 0 in it. this addEventHandler ["HandleDamage", {this setDamage 0.7; this setvariable ["ACE_isUnconscious", true, true]; this setUnconscious true; 0}]; Note: Haven't tested this approach with ace before so not sure how that's gonna gel
  14. hideObject has local effect, execute with true on the client where you want to hide the object
  15. Sounds like a Life-problem, if so you're better off asking in the Life forums. If not provide more information.
×