slammandan 4 Posted August 3, 2018 On 8/1/2018 at 12:01 AM, pierremgi said: Probably a variable localization on server instead of clients. I can't test right now. Try to publicVariable the MGI_crate variable: Write: MGI_crate = true; publicVariable "MGI_crate"; for the 2 occurrences. I tried this. They still return to where supply module is and find a place to land. Here is the code. _veh = _this; if !(typeOf _veh in ["B_T_VTOL_01_vehicle_F","B_Heli_Transport_03_unarmed_F"]) exitWith {}; _home = getpos _this; _grpVeh = group _veh; sleep 3; _currentwpt = [_grpVeh, currentWaypoint _grpVeh]; _currentwptPos = waypointPosition _currentwpt; _currentwptdesc = waypointDescription _currentwpt; deleteWaypoint _currentwpt; _wpt = _grpVeh addWaypoint [_currentwptPos,0]; _wpt setWaypointDescription _currentwptdesc; _wpt setWaypointStatements ["TRUE", " if (isServer) then { [this, this getVariable 'BIS_SUPP_supportRunCoords', 'B_Parachute_02_F', ['B_T_MBT_01_cannon_F','B_T_LSV_01_armed_F'], this getVariable 'BIS_SUPP_selectedModule'] spawn { _pilot = _this select 0; _wpPos = _this select 1; _chuteType = _this select 2; _crates = _this select 3; _crateType = _crates select (vehicle _pilot isKindOf 'B_Heli_Transport_03_unarmed_F'); _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = 'F_20mm_Yellow' createvehicle getPosATL _this; _flare attachTo [_this,[0,0,-2]]; _fumi = 'smokeShellYellow' createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; _oldDist = _pilot distance _wpPos; while {_oldDist >= _pilot distance _wpPos} do { _oldDist = _pilot distance _wpPos; sleep 0.1 }; _pilot setVariable ['BIS_SUPP_supporting', FALSE]; private ['_chute1','_chute2','_chute3']; call { if (vehicle _pilot isKindOf 'B_T_VTOL_01_vehicle_F') exitWith { _chute1 = createVehicle [_chuteType, [0, 0, 200], [], 0, 'FLY']; _chute2 = createVehicle [_chuteType, [0, 0, 200], [], 0, 'FLY']; _chute3 = createVehicle [_chuteType, [0, 0, 200], [], 0, 'FLY']; _posRef = [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 50]; _chute1 setpos (_posRef vectorAdd [0.58,0,0]); _chute2 setpos (_posRef vectorAdd [-0.5,0.3,0]); _chute3 setpos (_posRef vectorAdd [-0.5,-0.3,0]); _crate = createVehicle [_crateType, position _chute1, [], 0, 'NONE']; _crate call _crateCode; _crate attachTo [_chute1,[0,1.5,-4]]; _chute2 attachTo [_chute1,[0,0,0]]; _chute3 attachTo [_chute1,[0,0,0]]; _chute1 setVectorUp [0.6,0,0.6]; _chute2 setVectorUp [-0.5,0.4,0.6]; _chute3 setVectorUp [-0.5,-0.4,0.6]; waitUntil {position _crate select 2 < 3 || isNull _chute1}; detach _crate; deleteVehicle _chute1; detach _chute3; detach _chute2; MGI_crate = true; publicVariable "MGI_crate"; _chute1 setVelocity [0,5,0]; }; for '_i' from 0 to 1 do { _chute1 = createVehicle [_chuteType, [100, 100, 200], [], 0, 'FLY']; _chute1 setPos [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 50]; _crate = createVehicle [_crateType, position _chute1, [], 0, 'NONE']; _crate call _crateCode; _crate attachTo [_chute1, [0, 0, 0]]; [_chute1,_crate] spawn { params ['_chute1','_crate']; waitUntil {position _crate select 2 < 3 || isNull _chute1}; detach _crate; _chute1 setVelocity [0,5,0]; }; sleep 1; }; }; MGI_crate = true; publicVariable "MGI_crate"; }; }; "]; _grpVeh setCurrentWaypoint _wpt; _wp2 = _grpVeh addWaypoint [_home, 0]; _wp2 setWaypointType "Move"; _wp2 setWaypointBehaviour "SAFE"; _wp2 setWaypointStatements ["TRUE", "vehicle this land 'LAND'"]; _veh land "none"; waitUntil {!isnil "MGI_crate"}; sleep 60; {deleteVehicle _x} forEach crew _veh; deleteVehicle _veh; MGI_crate = nil; On 5/20/2017 at 4:47 PM, Vanished00One said: Its working, VR supply vehicles are deleting themselves. There are two issues I've found. _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{'smokeShellYellow'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; // optional remove the _crateCode line if you don't want an arsenal Removing this optional line for arsenal also requires removal of _crate call _crateCode; Or you receive an error message Last issue is both crate and vehicle drops are deploying a vehicle. I have found a work around for this by simply adding another virtual supply drop set only with defaults of the module and it works. I also tried this as I am running my own arsenal code in crate ini. on supply module. Still same result. Only in mp. When I am by myself, everything works great Share this post Link to post Share on other sites
pierremgi 4900 Posted August 3, 2018 This should work fine, even in MP. Added a public variable linked to the helo, for helo deletion. I replaced the //comment by plain comment "" in the script (for those who'd like to spawn it straight in init vehicle). The dropping helo should disappear about one minute after being back for landing. It's better to choose your available helos (for any drop)by declaring them in the "vehicle types" field of the virtual module. If not, BI module decides what is available by default (medium - heavy helos). There is no reason to drop a vehicle instead of a crate if you pay attention for the class name(s) of your helo(s). With such line: if !(typeOf _veh in ["B_T_VTOL_01_vehicle_F","B_Heli_Transport_03_unarmed_F"]) exitWith {}; you decide what helos can drop something else than a standard crate (depending on the crate init field here). As the code exit, it's impossible to spawn a vehicle. Pay attention for this line. Classes array is case sensitive (used with "in"). 1 Share this post Link to post Share on other sites
slammandan 4 Posted August 4, 2018 5 hours ago, pierremgi said: This should work fine, even in MP. Added a public variable linked to the helo, for helo deletion. I replaced the //comment by plain comment "" in the script (for those who'd like to spawn it straight in init vehicle). The dropping helo should disappear about one minute after being back for landing. It's better to choose your available helos (for any drop)by declaring them in the "vehicle types" field of the virtual module. If not, BI module decides what is available by default (medium - heavy helos). There is no reason to drop a vehicle instead of a crate if you pay attention for the class name(s) of your helo(s). With such line: if !(typeOf _veh in ["B_T_VTOL_01_vehicle_F","B_Heli_Transport_03_unarmed_F"]) exitWith {}; you decide what helos can drop something else than a standard crate (depending on the crate init field here). As the code exit, it's impossible to spawn a vehicle. Pay attention for this line. Classes array is case sensitive (used with "in"). I feel so bad. This script and previous one works when I put them in new mission. Something else in my mission must be conflicting with the delete part of script. It works great in new mission. So sorry for the extra work I caused you. Thank You For Your Efforts Dan Share this post Link to post Share on other sites
slammandan 4 Posted August 4, 2018 Hello, I am back. After more testing, using your newest script from 8-3-18, I have two aircraft I can call ["B_T_VTOL_01_armed_F","B_T_VTOL_01_vehicle_F"] In Vehicle Init _this spawn MGI_fnc_dropVeh In Crate Init [_this,{ _this addAction ["<t color='#ffff11'>Arsenal</t>", {["Open",true] spawn BIS_fnc_arsenal},nil,10,false,true,"", ""]} ] remoteExec ["call"]; _flare = if (sunOrMoon <0.5) then [{"F_20mm_Yellow"},{"smokeShellYellow"}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]; In MGI_fnc_dropVeh.sqf _veh = _this; if !(_veh isKindOf "B_T_VTOL_01_armed_F") exitWith {}; comment "choose the helicopter class you want for car drop, the other ones will drop simple crates."; _home = getpos _this; _grpVeh = group _veh; sleep 3; _currentwpt = [_grpVeh, currentWaypoint _grpVeh]; _currentwptPos = waypointPosition _currentwpt; _currentwptdesc = waypointDescription _currentwpt; deleteWaypoint _currentwpt; _wpt = _grpVeh addWaypoint [_currentwptPos,0]; _wpt setWaypointDescription _currentwptdesc; _wpt setWaypointStatements ["TRUE", " if (isServer) then { [this, this getVariable 'BIS_SUPP_supportRunCoords', 'B_Parachute_02_F', 'B_MRAP_01_hmg_f', this getVariable 'BIS_SUPP_selectedModule'] spawn { _pilot = _this select 0; _wpPos = _this select 1; _chuteType = _this select 2; _crateType = _this select 3; _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{'smokeShellYellow'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; comment 'optional remove the _crateCode line if you dont want an arsenal'; _oldDist = _pilot distance _wpPos; while {_oldDist >= _pilot distance _wpPos} do { _oldDist = _pilot distance _wpPos; sleep 0.1 }; _pilot setVariable ['BIS_SUPP_supporting', FALSE]; _chute = createVehicle [_chuteType, [100, 100, 200], [], 0, 'FLY']; _chute setPos [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 50]; _crate = createVehicle [_crateType, position _chute, [], 0, 'NONE']; vehicle _pilot setVariable ['MGI_crate',_crate,true]; _crate call _crateCode; comment 'to be removed also, if the _crateCode line is removed above.'; _crate attachTo [_chute, [0, 0, 0]]; waitUntil {position _crate select 2 < 3 || isNull _chute}; detach _crate; _chute setVelocity [0,5,0]; vehicle _pilot setVariable ['MGI_crate',nil,true]; }; }; "]; _grpVeh setCurrentWaypoint _wpt; _wp2 = _grpVeh addWaypoint [_home, 0]; _wp2 setWaypointType "Move"; _wp2 setWaypointBehaviour "SAFE"; _wp2 setWaypointStatements ["TRUE", "vehicle this land 'LAND'"]; _veh land "none"; waitUntil {!isnil {_veh getVariable "MGI_crate"}}; sleep 60; {deleteVehicle _x} forEach crew _veh; deleteVehicle _veh; Just two Players. When host calls either aircraft it works perfect, the first one drops a vehicle, the second drops arsenal, fly back to start and delete. When client calls first (Vehicle Drop), Works perfect, aircraft drops vehicle flys back to start, deletes. But if he calls reg supply drop ("B_T_VTOL_01_vehicle_F") It flys over, drops arsenal, flys back to start and lands. Im sorry to be a bother. All of your help is very apreciated! Thank You Dan Share this post Link to post Share on other sites
pierremgi 4900 Posted August 4, 2018 No problem. I don't have time to check that today but I guess the problem doesn't come with this script because the regular supply drop exits the code at once. I'm thinking about the BI native module which could not delete your VTOL. Could you the same test, same aircraft with no code at all? Tks for your feedback anyway. Share this post Link to post Share on other sites
slammandan 4 Posted August 4, 2018 Ok, after more testing. No Mods, no code, just mission.sqf, two guys on malden with vanilla suppy drop. Host works fine, client every aircraft drops supplies, returns to start and lands. So it is a BI issue. I would like to use two aircraft for arsenal delivery the B_Heli_Transport_03_unarmed_F"", and ""B_T_VTOL_01_armed_F". Do you think I should make a trigger to detect if they are <2m and then delete them? Or????? Thanks again for all your help Dan Share this post Link to post Share on other sites
pierremgi 4900 Posted August 5, 2018 If my code runs, the aircraft will be deleted after 60 sec. (I hope). As you know, the code is made the drop a vehicle but you can drop a crate as well. It's just a class name question. For working around BI problem, we could determine what we want to drop along with vehicle classes. Instead of exiting the code if a crate is required, we can manage the couple type Of aircraft/type of "crate" (payload). _veh = _this; _vehPayloadArray = [["B_T_VTOL_01_armed_F","B_T_MBT_01_cannon_F"],["B_T_VTOL_01_vehicle_F","B_T_MBT_01_cannon_F"],["B_Heli_Transport_03_unarmed_F","B_supplyCrate_F"]]; comment "choose all your couples helo/crate on the line above and report all helos in vehicle type of the module"; _veh setVariable ["MGI_payload",(_vehPayloadArray select {(_x select 0) == typeOf _veh}) select 0 select 1,true]; _home = getpos _this; _grpVeh = group _veh; sleep 3; _currentwpt = [_grpVeh, currentWaypoint _grpVeh]; _currentwptPos = waypointPosition _currentwpt; _currentwptdesc = waypointDescription _currentwpt; deleteWaypoint _currentwpt; _wpt = _grpVeh addWaypoint [_currentwptPos,0]; _wpt setWaypointDescription _currentwptdesc; _wpt setWaypointStatements ["TRUE", " if (isServer) then { [this, this getVariable 'BIS_SUPP_supportRunCoords', 'B_Parachute_02_F', vehicle this getVariable 'MGI_payload' , this getVariable 'BIS_SUPP_selectedModule'] spawn { _pilot = _this select 0; _wpPos = _this select 1; _chuteType = _this select 2; _crateType = _this select 3; _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{'smokeShellYellow'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; comment 'optional remove the _crateCode line if you dont want an arsenal'; _oldDist = _pilot distance _wpPos; while {_oldDist >= _pilot distance _wpPos} do { _oldDist = _pilot distance _wpPos; sleep 0.1 }; _pilot setVariable ['BIS_SUPP_supporting', FALSE]; _chute = createVehicle [_chuteType, [100, 100, 200], [], 0, 'FLY']; _chute setPos [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 50]; _crate = createVehicle [_crateType, position _chute, [], 0, 'NONE']; vehicle _pilot setVariable ['MGI_crate',_crate,true]; _crate call _crateCode; comment 'to be removed also, if the _crateCode line is removed above.'; _crate attachTo [_chute, [0, 0, 0]]; waitUntil {position _crate select 2 < 3 || isNull _chute}; detach _crate; _chute setVelocity [0,5,0]; vehicle _pilot setVariable ['MGI_crate',nil,true]; }; }; "]; _grpVeh setCurrentWaypoint _wpt; _wp2 = _grpVeh addWaypoint [_home, 0]; _wp2 setWaypointType "Move"; _wp2 setWaypointBehaviour "SAFE"; _wp2 setWaypointStatements ["TRUE", "vehicle this land 'LAND'"]; _veh land "none"; waitUntil {!isnil {_veh getVariable "MGI_crate"}}; sleep 60; {deleteVehicle _x} forEach crew _veh; deleteVehicle _veh; Share this post Link to post Share on other sites
slammandan 4 Posted August 5, 2018 7 hours ago, pierremgi said: If my code runs, the aircraft will be deleted after 60 sec. (I hope). As you know, the code is made the drop a vehicle but you can drop a crate as well. It's just a class name question. For working around BI problem, we could determine what we want to drop along with vehicle classes. Instead of exiting the code if a crate is required, we can manage the couple type Of aircraft/type of "crate" (payload). _veh = _this; _vehPayloadArray = [["B_T_VTOL_01_armed_F","B_T_MBT_01_cannon_F"],["B_T_VTOL_01_vehicle_F","B_T_MBT_01_cannon_F"],["B_Heli_Transport_03_unarmed_F","B_supplyCrate_F"]]; comment "choose all your couples helo/crate on the line above and report all helos in vehicle type of the module"; _veh setVariable ["MGI_payload",(_vehPayloadArray select {(_x select 0) == typeOf _veh}) select 0 select 1,true]; _home = getpos _this; _grpVeh = group _veh; sleep 3; _currentwpt = [_grpVeh, currentWaypoint _grpVeh]; _currentwptPos = waypointPosition _currentwpt; _currentwptdesc = waypointDescription _currentwpt; deleteWaypoint _currentwpt; _wpt = _grpVeh addWaypoint [_currentwptPos,0]; _wpt setWaypointDescription _currentwptdesc; _wpt setWaypointStatements ["TRUE", " if (isServer) then { [this, this getVariable 'BIS_SUPP_supportRunCoords', 'B_Parachute_02_F', vehicle this getVariable 'MGI_payload' , this getVariable 'BIS_SUPP_selectedModule'] spawn { _pilot = _this select 0; _wpPos = _this select 1; _chuteType = _this select 2; _crateType = _this select 3; _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{'smokeShellYellow'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; comment 'optional remove the _crateCode line if you dont want an arsenal'; _oldDist = _pilot distance _wpPos; while {_oldDist >= _pilot distance _wpPos} do { _oldDist = _pilot distance _wpPos; sleep 0.1 }; _pilot setVariable ['BIS_SUPP_supporting', FALSE]; _chute = createVehicle [_chuteType, [100, 100, 200], [], 0, 'FLY']; _chute setPos [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 50]; _crate = createVehicle [_crateType, position _chute, [], 0, 'NONE']; vehicle _pilot setVariable ['MGI_crate',_crate,true]; _crate call _crateCode; comment 'to be removed also, if the _crateCode line is removed above.'; _crate attachTo [_chute, [0, 0, 0]]; waitUntil {position _crate select 2 < 3 || isNull _chute}; detach _crate; _chute setVelocity [0,5,0]; vehicle _pilot setVariable ['MGI_crate',nil,true]; }; }; "]; _grpVeh setCurrentWaypoint _wpt; _wp2 = _grpVeh addWaypoint [_home, 0]; _wp2 setWaypointType "Move"; _wp2 setWaypointBehaviour "SAFE"; _wp2 setWaypointStatements ["TRUE", "vehicle this land 'LAND'"]; _veh land "none"; waitUntil {!isnil {_veh getVariable "MGI_crate"}}; sleep 60; {deleteVehicle _x} forEach crew _veh; deleteVehicle _veh; This works! Works exactly like its supposed to. Now...I do have a few requests! LOL. 2 of the requests you had in your scripts before, and I liked them. 1. The 3 parachutes for heavy vehicles. 2. Ability to drop 2 vehicles from certain helo. and 3. If possible to do separate crate code for vehicles different than supply crate. I use chemlights and an ir strobe on my supply drop. To get them in correct position on supply drop makes them float in air a bit on vehicles. It just doesn't look too good. But, if that is too much a hassle, it is no biggie. Really like what you have now. I appreciate it ALOT! Thanks Dan Share this post Link to post Share on other sites
pierremgi 4900 Posted August 5, 2018 Yep! Need some time but feasible. Share this post Link to post Share on other sites
slammandan 4 Posted August 5, 2018 6 hours ago, pierremgi said: Yep! Need some time but feasible. _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'B_IRStrobe'},{'SmokeShell'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0, 0, 0.45 ]]; _flare2 = if (sunOrMoon <0.5) then [{'Chemlight_red'},{'SmokeShellRED'}]; _fumi2 = _flare2 createvehicle getPosATL _this; _fumi2 attachTo [_this,[0.4, 0, 0.45]]; _flare3 = if (sunOrMoon <0.5) then [{'Chemlight_blue'},{'SmokeShellBLUE'}]; _fumi3 = _flare3 createvehicle getPosATL _this; _fumi3 attachTo [_this,[-0.4, 0, 0.45]]; _flare4 = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{''}]; _fumi4 = _flare4 createvehicle getPosATL _this; _fumi4 attachTo [_this,[0, 0, 0.45 ]]""; comment 'optional remove the _crateCode line if you dont want an arsenal'; This Is the crate code I use for supply drop, I would like to use yours for vehicles. You Sir, Are Awesome! Dan Share this post Link to post Share on other sites
slammandan 4 Posted August 8, 2018 Ut Oh, Is this a difficult one? Share this post Link to post Share on other sites
pierremgi 4900 Posted August 8, 2018 3 hours ago, slammandan said: Ut Oh, Is this a difficult one? At BoraBora beach... yes. Share this post Link to post Share on other sites
slammandan 4 Posted August 8, 2018 1 hour ago, pierremgi said: At BoraBora beach... yes. NICE! Enjoy! 1 Share this post Link to post Share on other sites
pierremgi 4900 Posted August 18, 2018 Feel free to change the flare / smoke for the vehicle category (tank / APC / crate or car). You can modify /add a category. Make your choice and drop all you want. The array of load arrays is an example, of course. I preferred to hard code it in a line, rather than open a dialog. If someone is motivated... Spoiler MGI_fnc_dropVeh = { _veh = _this; _vehPayloadArray = [ ["B_Heli_Light_01_F","B_supplyCrate_F"], ["B_T_VTOL_01_armed_F","I_MRAP_03_F"], ["B_T_VTOL_01_vehicle_F","B_T_MBT_01_cannon_F"], ["I_Heli_Transport_02_F","B_supplyCrate_F","B_supplyCrate_F","B_supplyCrate_F"], ["B_T_VTOL_01_infantry_F","B_T_LSV_01_armed_F","O_LSV_02_armed_F","I_MRAP_03_F"], ["B_Heli_Transport_03_unarmed_F","B_T_MBT_01_cannon_F"] ]; comment "choose all your sub-arrays made of 1 helo/ x crate(s) in the lines above and report all helos in vehicle type of the module."; _veh setVariable ["MGI_dropChoice",(_vehPayloadArray select {(_x select 0) == typeOf _veh}) select 0,true]; _home = getpos _this; _grpVeh = group _veh; sleep 3; _currentwpt = [_grpVeh, currentWaypoint _grpVeh]; _currentwptPos = waypointPosition _currentwpt; _currentwptdesc = waypointDescription _currentwpt; deleteWaypoint _currentwpt; _wpt = _grpVeh addWaypoint [_currentwptPos,0]; _wpt setWaypointDescription _currentwptdesc; _wpt setWaypointStatements ["TRUE", " if (isServer) then { [this, this getVariable 'BIS_SUPP_supportRunCoords', 'B_Parachute_02_F', vehicle this getVariable 'MGI_dropChoice' , this getVariable 'BIS_SUPP_selectedModule'] spawn { _pilot = _this select 0; _wpPos = _this select 1; _chuteType = _this select 2; _loadArray = (_this select 3) select [1,count (_this select 3)]; _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{'smokeShellYellow'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; comment 'optional remove the _crateCode line if you dont want an arsenal'; _oldDist = _pilot distance _wpPos; while {_oldDist >= _pilot distance _wpPos} do { _oldDist = _pilot distance _wpPos; sleep 0.1 }; _pilot setVariable ['BIS_SUPP_supporting', FALSE]; private _chuteVeh1 = objNull; private _chuteVeh2 = objNull; private _chuteVeh3 = objNull; private _chuteVeh4 = objNull; private _chuteVeh5 = objNull; for '_i' from 0 to count _loadArray -1 do { _crateType = _loadArray select _i; call { if (getText (configfile >> 'CfgVehicles' >> _crateType >> 'editorSubcategory') isEqualTo 'EdSubcat_Tanks') exitWith { _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh2 = _chuteType createVehicle [0,0,0]; _chuteVeh3 = _chuteType createVehicle [0,0,0]; _chuteVeh4 = _chuteType createVehicle [0,0,0]; _chuteVeh5 = _chuteType createVehicle [0,0,0]; _chuteVeh1 setPosATL [position _pilot select 0,position _pilot select 1, (position _pilot select 2) - 20]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh2 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh3 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh4 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh5 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh1 setVectorUp [0,0,1]; _chuteVeh2 setVectorUp [0.5,0,0.6]; _chuteVeh3 setVectorUp [-0.5,0,0.6]; _chuteVeh4 setVectorUp [0,0.5,0.6]; _chuteVeh5 setVectorUp [0,-0.5,0.6]; }; if (getText (configfile >> 'CfgVehicles' >> _crateType >> 'editorSubcategory') isEqualTo 'EdSubcat_APCs') exitWith { _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh2 = _chuteType createVehicle [0,0,0]; _chuteVeh3 = _chuteType createVehicle [0,0,0]; _chuteVeh1 setPosATL [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 20]; _chuteVeh2 attachTo [_chuteveh1,[0,0,0]]; _chuteVeh3 attachTo [_chuteveh1,[0,0,0]]; _chuteVeh1 setVectorUp [0.6,0,0.6]; _chuteVeh2 setVectorUp [-0.5,0.4,0.6]; _chuteVeh3 setVectorUp [-0.5,-0.4,0.6]; }; _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh1 setPos [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 20]; }; _crate = createVehicle [_crateType, position _chuteVeh1, [], 0, 'FLY']; vehicle _pilot setVariable ['MGI_crate'+str _i,_crate,true]; _crate call _crateCode; comment 'to be removed also, if the _crateCode line is removed above.'; _crate attachTo [_chuteVeh1,[0,0,-4]]; [_crate,_chuteVeh1,_chuteVeh2,_chuteVeh3,_chuteVeh4,_chuteVeh5,_i,_pilot] spawn { params ['_crate','_chuteVeh1','_chuteVeh2','_chuteVeh3','_chuteVeh4','_chuteVeh5','_i','_pilot']; waitUntil {position _crate select 2 < 3 || isNull _chuteVeh1}; detach _crate; deleteVehicle _chuteVeh1; if (!isnull _chuteVeh2) then { detach _chuteVeh3; detach _chuteVeh2; }; if (!isnull _chuteVeh4) then { detach _chuteVeh4; detach _chuteVeh5; }; comment '_chuteVeh1 setVelocity [0,5,0]'; vehicle _pilot setVariable ['MGI_crate'+str _i,nil,true]; }; }; }; }; "]; _grpVeh setCurrentWaypoint _wpt; _wp2 = _grpVeh addWaypoint [_home, 0]; _wp2 setWaypointType "Move"; _wp2 setWaypointBehaviour "SAFE"; _wp2 setWaypointStatements ["TRUE", "vehicle this land 'LAND'"]; _veh land "none"; waitUntil {!isnil {_veh getVariable "MGI_crate"}}; sleep 60; {deleteVehicle _x} forEach crew _veh; deleteVehicle _veh; }; _this spawn MGI_fnc_dropVeh; 2 Share this post Link to post Share on other sites
slammandan 4 Posted August 19, 2018 19 hours ago, pierremgi said: Feel free to change the flare / smoke for the vehicle category (tank / APC / crate or car). You can modify /add a category. Make your choice and drop all you want. The array of load arrays is an example, of course. I preferred to hard code it in a line, rather than open a dialog. If someone is motivated... Hide contents MGI_fnc_dropVeh = { _veh = _this; _vehPayloadArray = [ ["B_Heli_Light_01_F","B_supplyCrate_F"], ["B_T_VTOL_01_armed_F","I_MRAP_03_F"], ["B_T_VTOL_01_vehicle_F","B_T_MBT_01_cannon_F"], ["I_Heli_Transport_02_F","B_supplyCrate_F","B_supplyCrate_F","B_supplyCrate_F"], ["B_T_VTOL_01_infantry_F","B_T_LSV_01_armed_F","O_LSV_02_armed_F","I_MRAP_03_F"], ["B_Heli_Transport_03_unarmed_F","B_T_MBT_01_cannon_F"] ]; comment "choose all your sub-arrays made of 1 helo/ x crate(s) in the lines above and report all helos in vehicle type of the module."; _veh setVariable ["MGI_dropChoice",(_vehPayloadArray select {(_x select 0) == typeOf _veh}) select 0,true]; _home = getpos _this; _grpVeh = group _veh; sleep 3; _currentwpt = [_grpVeh, currentWaypoint _grpVeh]; _currentwptPos = waypointPosition _currentwpt; _currentwptdesc = waypointDescription _currentwpt; deleteWaypoint _currentwpt; _wpt = _grpVeh addWaypoint [_currentwptPos,0]; _wpt setWaypointDescription _currentwptdesc; _wpt setWaypointStatements ["TRUE", " if (isServer) then { [this, this getVariable 'BIS_SUPP_supportRunCoords', 'B_Parachute_02_F', vehicle this getVariable 'MGI_dropChoice' , this getVariable 'BIS_SUPP_selectedModule'] spawn { _pilot = _this select 0; _wpPos = _this select 1; _chuteType = _this select 2; _loadArray = (_this select 3) select [1,count (_this select 3)]; _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{'smokeShellYellow'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; comment 'optional remove the _crateCode line if you dont want an arsenal'; _oldDist = _pilot distance _wpPos; while {_oldDist >= _pilot distance _wpPos} do { _oldDist = _pilot distance _wpPos; sleep 0.1 }; _pilot setVariable ['BIS_SUPP_supporting', FALSE]; private _chuteVeh1 = objNull; private _chuteVeh2 = objNull; private _chuteVeh3 = objNull; private _chuteVeh4 = objNull; private _chuteVeh5 = objNull; for '_i' from 0 to count _loadArray -1 do { _crateType = _loadArray select _i; call { if (getText (configfile >> 'CfgVehicles' >> _crateType >> 'editorSubcategory') isEqualTo 'EdSubcat_Tanks') exitWith { _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh2 = _chuteType createVehicle [0,0,0]; _chuteVeh3 = _chuteType createVehicle [0,0,0]; _chuteVeh4 = _chuteType createVehicle [0,0,0]; _chuteVeh5 = _chuteType createVehicle [0,0,0]; _chuteVeh1 setPosATL [position _pilot select 0,position _pilot select 1, (position _pilot select 2) - 20]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh2 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh3 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh4 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh5 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh1 setVectorUp [0,0,1]; _chuteVeh2 setVectorUp [0.5,0,0.6]; _chuteVeh3 setVectorUp [-0.5,0,0.6]; _chuteVeh4 setVectorUp [0,0.5,0.6]; _chuteVeh5 setVectorUp [0,-0.5,0.6]; }; if (getText (configfile >> 'CfgVehicles' >> _crateType >> 'editorSubcategory') isEqualTo 'EdSubcat_APCs') exitWith { _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh2 = _chuteType createVehicle [0,0,0]; _chuteVeh3 = _chuteType createVehicle [0,0,0]; _chuteVeh1 setPosATL [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 20]; _chuteVeh2 attachTo [_chuteveh1,[0,0,0]]; _chuteVeh3 attachTo [_chuteveh1,[0,0,0]]; _chuteVeh1 setVectorUp [0.6,0,0.6]; _chuteVeh2 setVectorUp [-0.5,0.4,0.6]; _chuteVeh3 setVectorUp [-0.5,-0.4,0.6]; }; _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh1 setPos [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 20]; }; _crate = createVehicle [_crateType, position _chuteVeh1, [], 0, 'FLY']; vehicle _pilot setVariable ['MGI_crate'+str _i,_crate,true]; _crate call _crateCode; comment 'to be removed also, if the _crateCode line is removed above.'; _crate attachTo [_chuteVeh1,[0,0,-4]]; [_crate,_chuteVeh1,_chuteVeh2,_chuteVeh3,_chuteVeh4,_chuteVeh5,_i,_pilot] spawn { params ['_crate','_chuteVeh1','_chuteVeh2','_chuteVeh3','_chuteVeh4','_chuteVeh5','_i','_pilot']; waitUntil {position _crate select 2 < 3 || isNull _chuteVeh1}; detach _crate; deleteVehicle _chuteVeh1; if (!isnull _chuteVeh2) then { detach _chuteVeh3; detach _chuteVeh2; }; if (!isnull _chuteVeh4) then { detach _chuteVeh4; detach _chuteVeh5; }; comment '_chuteVeh1 setVelocity [0,5,0]'; vehicle _pilot setVariable ['MGI_crate'+str _i,nil,true]; }; }; }; }; "]; _grpVeh setCurrentWaypoint _wpt; _wp2 = _grpVeh addWaypoint [_home, 0]; _wp2 setWaypointType "Move"; _wp2 setWaypointBehaviour "SAFE"; _wp2 setWaypointStatements ["TRUE", "vehicle this land 'LAND'"]; _veh land "none"; waitUntil {!isnil {_veh getVariable "MGI_crate"}}; sleep 60; {deleteVehicle _x} forEach crew _veh; deleteVehicle _veh; }; _this spawn MGI_fnc_dropVeh; pierremgi , Wow! This is perfect. Thank You So Much! Dan 1 Share this post Link to post Share on other sites
Jnr4817 215 Posted August 27, 2018 Very nice update. Thank you 1 Share this post Link to post Share on other sites
Jnr4817 215 Posted August 29, 2018 @pierremgi How do I add my code to the crate that we use for VAS and Arsenal, instead of the current arsenal code in your _cratecode= Currently I am using this code in the init field of a box or vehicle. veh = [this] execVM "SA\scripts\sa_respawnable_veh.sqf" Here is the script private ["_veh","_includeAmmoBox","_initRespawn"]; _veh = [_this,0] call BIS_fnc_param; _includeAmmoBox = [_this,1,true] call BIS_fnc_param; _initRespawn = [_this,2,true] call BIS_fnc_param; if(_includeAmmoBox) then { [_veh] call SA_fnc_makeVirtualAmmo; }; if(_initRespawn) then { if(_includeAmmoBox) then { [_veh, 30, 0, 0, FALSE, FALSE, "[this, true, false] execVM ""SA\scripts\sa_respawnable_veh.sqf"""] execVM "SA\scripts\vehicle.sqf"; } else { [_veh, 30, 0, 0, FALSE, FALSE, "[this, false, false] execVM ""SA\scripts\sa_respawnable_veh.sqf"""] execVM "SA\scripts\vehicle.sqf"; }; }; This is line of code I am trying to edit. _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{'smokeShellYellow'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; comment 'optional remove the _crateCode line if you dont want an arsenal'; Thank you so very much, Share this post Link to post Share on other sites
pierremgi 4900 Posted August 29, 2018 Not sure to understand how your script work. veh = [this] execVM "SA\scripts\sa_respawnable_veh.sqf doesn't make sense (veh?)... and [this] will pass the object in a single element array. So, where could come _includeammobox and _initrespawn from? Share this post Link to post Share on other sites
Jnr4817 215 Posted August 30, 2018 Here is the SA_fnc_makevirtualammo from the sa_respawnable.sqf /* Author: [SA] Duda Description: Update a task Parameters: 0: OBJECT - Object to add virtual ammo to Returns: BOOL */ private ["_obj"]; _obj = [_this,0] call BIS_fnc_param; [_obj] call VAS_fnc_createVasContainer; _obj addaction ["<t color='#ff1111'>Open Virtual Arsenal</t>", { ["Open",true] call BIS_fnc_arsenal; }]; It creates addactions for an arsenal and virtual ammo box. Also makes the box or vehicle respawn if destroyed. I guess I just need to call sa_fnc_makevirtualammo in your _cratecode, just not sure how. Share this post Link to post Share on other sites
pierremgi 4900 Posted September 1, 2018 just try: _crateCode = compile " "[ [_this],{_this call sa_fnc_makeVirtualammo}] remoteExec ['call']" "; 1 Share this post Link to post Share on other sites
Jnr4817 215 Posted September 3, 2018 works perfect. Share this post Link to post Share on other sites
Twiznak 57 Posted October 5, 2018 Another brilliant script! Thank you again! Share this post Link to post Share on other sites
GrimTidings (DayZ) 1 Posted March 18, 2019 (edited) can you post an example of how the init.sqf should look after adding the line: MGI_fnc_dropVeh = compileFinal preprocessFileLineNumbers "MGI_fnc_dropVeh.sqf"; I'm new to editing so i kind of need to be spoon fed lol. EDIT: Nvm, I just saw where you had it pre built as a module. Thanks. Edited March 18, 2019 by GrimTidings (DayZ) 1 Share this post Link to post Share on other sites
pierremgi 4900 Posted March 18, 2019 13 minutes ago, GrimTidings (DayZ) said: can you post an example of how the init.sqf should look after adding the line: MGI_fnc_dropVeh = compileFinal preprocessFileLineNumbers "MGI_fnc_dropVeh.sqf"; I'm new to editing so i kind of need to be spoon fed lol. EDIT: Nvm, I just saw where you had it pre built as a module. Thanks. Anyway, you can do like I wrote at the front page: add a simple calling code in the Vehicle init of the module (here vehicle is the helicopter, not the parcel!): _this spawn MGI_fnc_dropVeh; Share this post Link to post Share on other sites
Farkle 0 Posted May 20, 2019 On 8/18/2018 at 2:01 PM, pierremgi said: Feel free to change the flare / smoke for the vehicle category (tank / APC / crate or car). You can modify /add a category. Make your choice and drop all you want. The array of load arrays is an example, of course. I preferred to hard code it in a line, rather than open a dialog. If someone is motivated... Reveal hidden contents MGI_fnc_dropVeh = { _veh = _this; _vehPayloadArray = [ ["B_Heli_Light_01_F","B_supplyCrate_F"], ["B_T_VTOL_01_armed_F","I_MRAP_03_F"], ["B_T_VTOL_01_vehicle_F","B_T_MBT_01_cannon_F"], ["I_Heli_Transport_02_F","B_supplyCrate_F","B_supplyCrate_F","B_supplyCrate_F"], ["B_T_VTOL_01_infantry_F","B_T_LSV_01_armed_F","O_LSV_02_armed_F","I_MRAP_03_F"], ["B_Heli_Transport_03_unarmed_F","B_T_MBT_01_cannon_F"] ]; comment "choose all your sub-arrays made of 1 helo/ x crate(s) in the lines above and report all helos in vehicle type of the module."; _veh setVariable ["MGI_dropChoice",(_vehPayloadArray select {(_x select 0) == typeOf _veh}) select 0,true]; _home = getpos _this; _grpVeh = group _veh; sleep 3; _currentwpt = [_grpVeh, currentWaypoint _grpVeh]; _currentwptPos = waypointPosition _currentwpt; _currentwptdesc = waypointDescription _currentwpt; deleteWaypoint _currentwpt; _wpt = _grpVeh addWaypoint [_currentwptPos,0]; _wpt setWaypointDescription _currentwptdesc; _wpt setWaypointStatements ["TRUE", " if (isServer) then { [this, this getVariable 'BIS_SUPP_supportRunCoords', 'B_Parachute_02_F', vehicle this getVariable 'MGI_dropChoice' , this getVariable 'BIS_SUPP_selectedModule'] spawn { _pilot = _this select 0; _wpPos = _this select 1; _chuteType = _this select 2; _loadArray = (_this select 3) select [1,count (_this select 3)]; _crateCode = compile ""[_this,{_this addAction ['Arsenal',{['Open',true] spawn BIS_fnc_arsenal},nil,10,false,true,'', '']}] remoteExec ['call']; _flare = if (sunOrMoon <0.5) then [{'F_20mm_Yellow'},{'smokeShellYellow'}]; _fumi = _flare createvehicle getPosATL _this; _fumi attachTo [_this,[0,0,-2]]""; comment 'optional remove the _crateCode line if you dont want an arsenal'; _oldDist = _pilot distance _wpPos; while {_oldDist >= _pilot distance _wpPos} do { _oldDist = _pilot distance _wpPos; sleep 0.1 }; _pilot setVariable ['BIS_SUPP_supporting', FALSE]; private _chuteVeh1 = objNull; private _chuteVeh2 = objNull; private _chuteVeh3 = objNull; private _chuteVeh4 = objNull; private _chuteVeh5 = objNull; for '_i' from 0 to count _loadArray -1 do { _crateType = _loadArray select _i; call { if (getText (configfile >> 'CfgVehicles' >> _crateType >> 'editorSubcategory') isEqualTo 'EdSubcat_Tanks') exitWith { _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh2 = _chuteType createVehicle [0,0,0]; _chuteVeh3 = _chuteType createVehicle [0,0,0]; _chuteVeh4 = _chuteType createVehicle [0,0,0]; _chuteVeh5 = _chuteType createVehicle [0,0,0]; _chuteVeh1 setPosATL [position _pilot select 0,position _pilot select 1, (position _pilot select 2) - 20]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh2 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh3 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh4 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh5 attachTo [_chuteVeh1,[0,0,0]]; _chuteVeh1 setVectorUp [0,0,1]; _chuteVeh2 setVectorUp [0.5,0,0.6]; _chuteVeh3 setVectorUp [-0.5,0,0.6]; _chuteVeh4 setVectorUp [0,0.5,0.6]; _chuteVeh5 setVectorUp [0,-0.5,0.6]; }; if (getText (configfile >> 'CfgVehicles' >> _crateType >> 'editorSubcategory') isEqualTo 'EdSubcat_APCs') exitWith { _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh2 = _chuteType createVehicle [0,0,0]; _chuteVeh3 = _chuteType createVehicle [0,0,0]; _chuteVeh1 setPosATL [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 20]; _chuteVeh2 attachTo [_chuteveh1,[0,0,0]]; _chuteVeh3 attachTo [_chuteveh1,[0,0,0]]; _chuteVeh1 setVectorUp [0.6,0,0.6]; _chuteVeh2 setVectorUp [-0.5,0.4,0.6]; _chuteVeh3 setVectorUp [-0.5,-0.4,0.6]; }; _chuteVeh1 = _chuteType createVehicle [0,0,0]; _chuteVeh1 disableCollisionWith vehicle _pilot; _chuteVeh1 setPos [position _pilot select 0, position _pilot select 1, (position _pilot select 2) - 20]; }; _crate = createVehicle [_crateType, position _chuteVeh1, [], 0, 'FLY']; vehicle _pilot setVariable ['MGI_crate'+str _i,_crate,true]; _crate call _crateCode; comment 'to be removed also, if the _crateCode line is removed above.'; _crate attachTo [_chuteVeh1,[0,0,-4]]; [_crate,_chuteVeh1,_chuteVeh2,_chuteVeh3,_chuteVeh4,_chuteVeh5,_i,_pilot] spawn { params ['_crate','_chuteVeh1','_chuteVeh2','_chuteVeh3','_chuteVeh4','_chuteVeh5','_i','_pilot']; waitUntil {position _crate select 2 < 3 || isNull _chuteVeh1}; detach _crate; deleteVehicle _chuteVeh1; if (!isnull _chuteVeh2) then { detach _chuteVeh3; detach _chuteVeh2; }; if (!isnull _chuteVeh4) then { detach _chuteVeh4; detach _chuteVeh5; }; comment '_chuteVeh1 setVelocity [0,5,0]'; vehicle _pilot setVariable ['MGI_crate'+str _i,nil,true]; }; }; }; }; "]; _grpVeh setCurrentWaypoint _wpt; _wp2 = _grpVeh addWaypoint [_home, 0]; _wp2 setWaypointType "Move"; _wp2 setWaypointBehaviour "SAFE"; _wp2 setWaypointStatements ["TRUE", "vehicle this land 'LAND'"]; _veh land "none"; waitUntil {!isnil {_veh getVariable "MGI_crate"}}; sleep 60; {deleteVehicle _x} forEach crew _veh; deleteVehicle _veh; }; _this spawn MGI_fnc_dropVeh; When I use this script it all of the helicopters payloads are still supply crates, when some are supposed to be vehicles. Like B_T_VTOL_01_armed_F is supposed to spawn an I_MRAP_03_F Share this post Link to post Share on other sites