Jnr4817 215 Posted October 19, 2016 Hello, I am using the Simple Vehicle Respawn Script by Tophe of OOPS. I am using this for several helo's that will respawn on a custom composition. Well, sometimes when the helo respawns it explodes. I know this is not a new issue. Can I improve the script any to make the respawning helo set damage to false during respawn then sleep for 1-2 seconds and reset as set damage true. Any other way would help. Here is the script /* ================================================================================================================== Simple Vehicle Respawn Script v1.81 for Arma 3 by Tophe of Östgöta Ops [OOPS] Put this in the vehicles init line: veh = [this] execVM "vehicle.sqf" Options: There are some optional settings. The format for these are: veh = [object, Delay, Deserted timer, Respawns, Effect, Dynamic] execVM "vehicle.sqf" Default respawn delay is 30 seconds, to set a custom respawn delay time, put that in the init as well. Like this: veh = [this, 15] execVM "vehicle.sqf" Default respawn time when vehicle is deserted, but not destroyed is 120 seconds. To set a custom timer for this first set respawn delay, then the deserted vehicle timer. (0 = disabled) Like this: veh = [this, 15, 10] execVM "vehicle.sqf" By default the number of respawns is infinite. To set a limit first set preceding values then the number of respawns you want (0 = infinite). Like this: veh = [this, 15, 10, 5] execVM "vehicle.sqf" Set this value to TRUE to add a special explosion effect to the wreck when respawning. Default value is FALSE, which will simply have the wreck disappear. Like this: veh = [this, 15, 10, 5, TRUE] execVM "vehicle.sqf" By default the vehicle will respawn to the point where it first was when the mission started (static). This can be changed to dynamic. Then the vehicle will respawn to the position where it was destroyed. First set all preceding values then set TRUE for dynamic or FALSE for static. Like this: veh = [this, 15, 10, 5, TRUE, TRUE] execVM "vehicle.sqf" If you you want to set the INIT field of the respawned vehicle, first set all other values, then set init commands. Those must be inside quotations. Like this: veh = [this, 15, 10, 5, TRUE, FALSE, "this setDammage 0.5"] execVM "vehicle.sqf" Default values of all settings are: veh = [this, 30, 120, 0, FALSE, FALSE] execVM "vehicle.sqf" Contact & Bugreport: cwadensten@gmail.com ================================================================================================================== */ if (!isServer) exitWith {}; // Define variables _unit = _this select 0; _delay = if (count _this > 1) then {_this select 1} else {30}; _deserted = if (count _this > 2) then {_this select 2} else {120}; _respawns = if (count _this > 3) then {_this select 3} else {0}; _explode = if (count _this > 4) then {_this select 4} else {false}; _dynamic = if (count _this > 5) then {_this select 5} else {false}; _unitinit = if (count _this > 6) then {_this select 6} else {}; _haveinit = if (count _this > 6) then {true} else {false}; _hasname = false; _unitname = vehicleVarName _unit; if (isNil _unitname) then {_hasname = false;} else {_hasname = true;}; _noend = true; _run = true; _rounds = 0; if (_delay < 0) then {_delay = 0}; if (_deserted < 0) then {_deserted = 0}; if (_respawns <= 0) then {_respawns= 0; _noend = true;}; if (_respawns > 0) then {_noend = false}; _dir = getDir _unit; _position = getPosASL _unit; _type = typeOf _unit; _dead = false; _nodelay = false; // Kronzky's code KRON_StrToArray = { private["_in","_i","_arr","_out"]; _in=_this select 0; _arr = toArray(_in); _out=[]; for "_i" from 0 to (count _arr)-1 do { _out=_out+[toString([_arr select _i])]; }; _out }; KRON_StrLen = { private["_in","_arr","_len"]; _in=_this select 0; _arr=[_in] call KRON_StrToArray; _len=count (_arr); _len }; KRON_Replace = { private["_str","_old","_new","_out","_tmp","_jm","_la","_lo","_ln","_i"]; _str=_this select 0; _arr=toArray(_str); _la=count _arr; _old=_this select 1; _new=_this select 2; _na=[_new] call KRON_StrToArray; _lo=[_old] call KRON_StrLen; _ln=[_new] call KRON_StrLen; _out=""; for "_i" from 0 to (count _arr)-1 do { _tmp=""; if (_i <= _la-_lo) then { for "_j" from _i to (_i+_lo-1) do { _tmp=_tmp + toString([_arr select _j]); }; }; if (_tmp==_old) then { _out=_out+_new; _i=_i+_lo-1; } else { _out=_out+toString([_arr select _i]); }; }; _out }; // End of Kronzky's code // Start monitoring the vehicle while {_run} do { sleep (2 + random 10); if ((getDammage _unit > 0.8) and ({alive _x} count crew _unit == 0)) then {_dead = true}; // Check if the vehicle is deserted. if (_deserted > 0) then { if ((getPosASL _unit distance _position > 10) and ({alive _x} count crew _unit == 0) and (getDammage _unit < 0.8)) then { _timeout = time + _deserted; sleep 0.1; waitUntil {_timeout < time or !alive _unit or {alive _x} count crew _unit > 0}; if ({alive _x} count crew _unit > 0) then {_dead = false}; if ({alive _x} count crew _unit == 0) then {_dead = true; _nodelay =true}; if !(alive _unit) then {_dead = true; _nodelay = false}; }; }; // Respawn vehicle if (_dead) then { if (_nodelay) then {sleep 0.1; _nodelay = false;} else {sleep _delay;}; if (_dynamic) then {_position = getPosASL _unit; _dir = getDir _unit;}; if (_explode) then {_effect = "M_AT" createVehicle getPosASL _unit; _effect setPosASL getPosASL _unit;}; sleep 0.1; deleteVehicle _unit; sleep 2; _unit = _type createVehicle _position; _unit setPosASL _position; _unit setDir _dir; if (_haveinit) then { //_unit setVehicleInit format ["%1;", _unitinit]; //processInitCommands; // Modified by BearBison private ["_IDunit", "_sCommand"]; _IDunit = format["(objectFromNetID '%1')", netID _unit]; _sCommand=[format["%1",_unitinit],"this",format["%1",_IDunit]] call KRON_Replace; // End of code modified by BearBison // Modified by naong and AgentRev [call compile format["[{%1}]",_sCommand], "BIS_fnc_spawn", true, true] spawn BIS_fnc_MP; }; if (_hasname) then { //_unit setVehicleInit format ["%1 = this; this setVehicleVarName ""%1""",_unitname]; //processInitCommands; private "_sCommand"; _sCommand = format["[{(objectFromNetID '%1') setVehicleVarName '%2';}]", netID _unit, _unitname]; [call compile format["%1",_sCommand],"BIS_fnc_spawn", true, true] spawn BIS_fnc_MP; _unit call compile format ["%1=_This; PublicVariable '%1'",_unitname]; }; // End of code modified by naong _dead = false; // Check respawn amount if !(_noend) then {_rounds = _rounds + 1}; if ((_rounds == _respawns) and !(_noend)) then {_run = false;}; }; }; Thank you Share this post Link to post Share on other sites
mikey74 169 Posted October 19, 2016 _position = [_position,0,150,10,0,0,0,[],[_position]] call BIS_fnc_findSafePos; Maybe try find safe Position. I had the same problem so I re wrote bis spawn script for some of my stuff. But BIS_fnc_findSafePos may fix your problem. Share this post Link to post Share on other sites
Fiddi 68 Posted October 20, 2016 Hello, I am using the Simple Vehicle Respawn Script by Tophe of OOPS. I am using this for several helo's that will respawn on a custom composition. Well, sometimes when the helo respawns it explodes. I know this is not a new issue. Can I improve the script any to make the respawning helo set damage to false during respawn then sleep for 1-2 seconds and reset as set damage true. Any other way would help. *SNIP* Thank you Question: You are not using ZBE_cache, are you? I've had that problem with vehicle's exploding on respawn, and I narrowed it down to ZBE_cache. It briefly disables simulation when the vehicle is spawned and when simulation is enabled again it could damage the vehicle. I have a custom vehicle respawn script, but it would require you to modify your mission a bit. I can give you a link if you want. I've used said script to respawn vehicles on a platform (which I made in eden) out in the sea with no problems. Share this post Link to post Share on other sites
Jnr4817 215 Posted October 20, 2016 No, we are not using zbe_cache that I'm aware of. I'd like to keep the script I'm using and just add some way to turn damage off have to helo respawn, then turn damage back on. Question: You are not using ZBE_cache, are you?I've had that problem with vehicle's exploding on respawn, and I narrowed it down to ZBE_cache.It briefly disables simulation when the vehicle is spawned and when simulation is enabled again it could damage the vehicle. I have a custom vehicle respawn script, but it would require you to modify your mission a bit. I can give you a link if you want.I've used said script to respawn vehicles on a platform (which I made in eden) out in the sea with no problems. Share this post Link to post Share on other sites
Fiddi 68 Posted October 21, 2016 Alright, under _unit = _type createVehicle _position; (line 159) add _unit allowDamage false; And under _dead = false; (line 183) add Sleep 0.5; <- You can adjust this to your liking. _unit allowDamage true; That might work. Oh, and about the vehicle ZBE_cache "turn off", I modified the original and added that feature myself. Share this post Link to post Share on other sites
Jnr4817 215 Posted October 21, 2016 /\ This did not work. Share this post Link to post Share on other sites
Persian MO 82 Posted October 22, 2016 Light Vehicle Respawn Script, try this, perhaps useful. Share this post Link to post Share on other sites
Fiddi 68 Posted October 22, 2016 /\ This did not work. Does the helicopter clip into the platform when it respawns? If so, try this: find: _unit = _type createVehicle _position; replace with: _unit = _type createVehicle ASLToAGL [0,0,10]; If that doesn't work: find: _unit setPosASL _position; replace with: _unit setPosASL _position vectorAdd [0,0,1]; // Replace 1 with a higher number if needed. If none of those work, then I don't think I can help you. Share this post Link to post Share on other sites
Jnr4817 215 Posted October 22, 2016 This seemed to work so far, Thanks Does the helicopter clip into the platform when it respawns? If so, try this: find: _unit = _type createVehicle _position; replace with: _unit = _type createVehicle ASLToAGL [0,0,10]; Share this post Link to post Share on other sites
Fiddi 68 Posted October 22, 2016 This seemed to work so far, Thanks Great, I've had a problem in the past with vehicles not starting, and it was because createVehicle uses AGL as position and that's quite a difference in height from ASL, so they were first spawned underwater which kills engines of vehicles, and explodes helicopters. A little thing to keep in mind. Share this post Link to post Share on other sites
Jnr4817 215 Posted October 23, 2016 Well, it almost worked. This solution has worked for all helicopters, but the blackfish is a different story. The blackfish still respawns and flys into the sky and explodes. Great, I've had a problem in the past with vehicles not starting, and it was because createVehicle uses AGL as position and that's quite a difference in height from ASL, so they were first spawned underwater which kills engines of vehicles, and explodes helicopters. A little thing to keep in mind. Share this post Link to post Share on other sites