LSValmont 789 Posted March 4, 2019 I really need some help here guys, this script has been keeping me up for the last 6 days and nothing seems to make it work correctly when called by Clients connected the my Hosted Server (No errors thou): The first part when executed on the server (host player) works perfectly, I left it in inside the If (isServer) as a reference to the simplest version that works for the server. Then under the If (!isServer) is the reworked script that I made for the clients. Lots of options that I tried are now with // just as reference to what I tried with no success. Spoiler if (isServer) then { _codeName = ""; _mainBase = getMarkerPos "BASE"; _markerName = ""; // VIRTUAL HELIPAD OBJECT NAME = HHH _nameAirTransport_1 = "SKY-RANGER (UH-80 Ghosthawk)"; _nameAirTransport_2 = "BLACKBIRD (UH-80 Ghosthawk)"; _nameAirTransport_3 = "LITTLE-BIRD (MH-6 Little Bird)"; _nameAirTransport_4 = "ANGEL-MEDEVAC (CH-49 Mohawk)"; _nameAirCAS_1 = "REAPER (AH-99 Blackfoot)"; missionNamespace setVariable [(str Skyranger) + "heliName", _nameAirTransport_1]; missionNamespace setVariable [(str Blackbird) + "heliName", _nameAirTransport_2]; missionNamespace setVariable [(str Littlebird) + "heliName", _nameAirTransport_3]; missionNamespace setVariable [(str Angel) + "heliName", _nameAirTransport_4]; missionNamespace setVariable [(str Reaper) + "heliName", _nameAirCAS_1]; if (transportHeli == Skyranger) then {_markerName = _nameAirTransport_1; _codeName = "SKY-RANGER"}; if (transportHeli == Blackbird) then {_markerName = _nameAirTransport_2; _codeName = "BLACKBIRD"}; if (transportHeli == Littlebird) then {_markerName = _nameAirTransport_3; _codeName = "LITTLE-BIRD"}; if (transportHeli == Angel) then {_markerName = _nameAirTransport_4; _codeName = "ANGEL-MEDEVAC"}; _transportHeli = transportHeli; transportHeliGroup = (group _transportHeli); publicVariable "transportHeliGroup"; transportHeliGroup setSpeedMode "FULL"; _outOfService = _codeName + " is out of service"; if (!alive _transportHeli) exitWith {hint _outOfService}; deleteMarker _codeName; _heliMarker = createMarker [_codeName, getPos _transportHeli]; _heliMarker setMarkerColor "ColorGreen"; _heliMarker setMarkerShape "ICON"; _heliMarker setMarkerType "mil_dot"; _heliMarker setMarkerText _codeName; if (heliOrder == 1) then { player sidechat _codeName+" requesting a DROP OFF at... "; }; if (heliOrder == 2) then { player sidechat _codeName+" requesting a PICK UP at... "; }; if (heliOrder == 3) then { player sidechat _codeName+" proceed to and wait for further instruction... "; }; if (heliOrder == 4) then { player sidechat _codeName+" RETURN TO BASE"; 0 = [_codeName] Spawn { playMusic "RadioAmbient30"; sleep 3; [west, "HQ"] sideChat "Copy that HunterZ, Air Transport is RTB..."; }; }; // SENDING TO DESTINATION if (heliOrder != 4) then { openMap true; MapClicked = false; onMapSingleClick "HHH setPos [_pos select 0,_pos select 1, 0] ;(group transportHeli) move _pos; MapClicked = true; onMapSingleClick ''; true;"; waitUntil {sleep 1; MapClicked}; _transportHeli setVariable ["LZ", (getPos HHH), true]; _destination = _transportHeli getVariable "LZ"; _heliMarker setMarkerPos _destination; if (heliOrder == 1) then { _heliMarker setMarkerText _codeName+" DROP POINT"; _heliMarker setMarkerType "mil_start"; 0 = [] Spawn { playMusic "RadioAmbient30"; sleep 3; [west, "HQ"] sideChat "Coordinates received HunterZ, buckle up for DROP OFF..."; }; }; if (heliOrder == 2) then { _heliMarker setMarkerText _codeName+" PICK UP"; _heliMarker setMarkerType "mil_pickup"; 0 = [] Spawn { playMusic "RadioAmbient30"; sleep 3; [west, "HQ"] sideChat "Coordinates received HunterZ, Air Transport Inbound..."; }; }; if (heliOrder == 3) then { _heliMarker setMarkerText _codeName+" WAIT"; 0 = [] Spawn { playMusic "RadioAmbient30"; sleep 3; [west, "HQ"] sideChat "Coordinates received HunterZ, in route for location..."; }; }; if (heliOrder == 4) then { }; waitUntil {sleep 1; !visibleMap}; sleep 3; _transportHeli setBehaviour "CARELESS"; waitUntil {sleep 1; (_transportHeli distance _destination) < 1200}; (group _transportHeli) setSpeedMode "NORMAL"; waitUntil {sleep 1; (_transportHeli distance _destination) < 800}; (group _transportHeli) setSpeedMode "LIMITED"; hint format["%1 has reached destination",_codeName]; _heliMarker setMarkerType "Empty"; while {((alive _transportHeli) && !(unitReady _transportHeli))} do {sleep 1}; }; // IF DROP OFF REQUEST if (heliOrder == 1) then { _transportHeli land "GET OUT"; waitUntil {sleep 1; {_x in _transportHeli} count (units (group player)) == 0}; sleep 10; //TEST DELAY TO NOT KILL SQUAD WHILE TAKING OFF }; // IF PICK UP REQUEST if (heliOrder == 2) then { _transportHeli land "GET IN"; waitUntil {sleep 1; {_x in _transportHeli} count (units (group player)) == count (units (group player))}; }; //RETURN TO BASE if (heliOrder != 3) then { (group _transportHeli) move _mainBase; (group _transportHeli) setSpeedMode "FULL"; _heliMarker setMarkerPos _mainBase; _heliMarker setMarkerType "Empty"; waitUntil {sleep 1; (_transportHeli distance _mainBase) < 1200}; (group _transportHeli) setSpeedMode "NORMAL"; waitUntil {sleep 1; (_transportHeli distance _mainBase) < 800}; (group _transportHeli) setSpeedMode "LIMITED"; while {((alive _transportHeli) && !(unitReady _transportHeli))} do {sleep 1}; _transportHeli land "LAND"; while {(count (waypoints (group _transportHeli))) > 0} do {deleteWaypoint ((waypoints (group _transportHeli)) select 0)}; }; }; if (isServer) exitWith {}; if (!isServer) then { _codeName = ""; mainBase = getMarkerPos "BASE"; publicVariable "mainBase"; _markerName = ""; // VIRTUAL HELIPAD OBJECT NAME = HHH _nameAirTransport_1 = "SKY-RANGER (UH-80 Ghosthawk)"; _nameAirTransport_2 = "BLACKBIRD (UH-80 Ghosthawk)"; _nameAirTransport_3 = "LITTLE-BIRD (MH-6 Little Bird)"; _nameAirTransport_4 = "ANGEL-MEDEVAC (CH-49 Mohawk)"; _nameAirCAS_1 = "REAPER (AH-99 Blackfoot)"; missionNamespace setVariable [(str Skyranger) + "heliName", _nameAirTransport_1]; missionNamespace setVariable [(str Blackbird) + "heliName", _nameAirTransport_2]; missionNamespace setVariable [(str Littlebird) + "heliName", _nameAirTransport_3]; missionNamespace setVariable [(str Angel) + "heliName", _nameAirTransport_4]; missionNamespace setVariable [(str Reaper) + "heliName", _nameAirCAS_1]; if (transportHeli == Skyranger) then {_markerName = _nameAirTransport_1; _codeName = "SKY-RANGER"}; if (transportHeli == Blackbird) then {_markerName = _nameAirTransport_2; _codeName = "BLACKBIRD"}; if (transportHeli == Littlebird) then {_markerName = _nameAirTransport_3; _codeName = "LITTLE-BIRD"}; if (transportHeli == Angel) then {_markerName = _nameAirTransport_4; _codeName = "ANGEL-MEDEVAC"}; publicVariable "transportHeli"; transportHeliGroup = (group transportHeli); publicVariable "transportHeliGroup"; transportHeliGroup setSpeedMode "FULL"; heliTransCaller = player; publicVariable "heliTransCaller"; _outOfService = _codeName + " is out of service"; if (!alive transportHeli) exitWith {hint _outOfService}; deleteMarker _codeName; heliMarker = createMarker [_codeName, getPos transportHeli]; heliMarker setMarkerColor "ColorGreen"; heliMarker setMarkerShape "ICON"; heliMarker setMarkerType "mil_dot"; heliMarker setMarkerText _codeName; publicVariable "heliMarker"; if (heliOrder == 1) then { heliTransCaller sidechat _codeName+" requesting a DROP OFF at... "; }; if (heliOrder == 2) then { heliTransCaller sidechat _codeName+" requesting a PICK UP at... "; }; if (heliOrder == 3) then { heliTransCaller sidechat _codeName+" proceed to and wait for further instruction... "; }; if (heliOrder == 4) then { heliTransCaller sidechat _codeName+" RETURN TO BASE"; 0 = [_codeName] Spawn { playMusic "RadioAmbient30"; sleep 3; [west, "HQ"] sideChat "Copy that HunterZ, Air Transport is RTB..."; }; }; // SENDING TO DESTINATION if (heliOrder == 1) then { if ({_x in transportHeli} count (units (group heliTransCaller)) == 0) exitWith {Hint "No one in the Transport Heli for DROP OFF"}; }; if (heliOrder != 4) then { openMap true; MapClicked = false; publicVariable "MapClicked"; onMapSingleClick " heliTransPos = _pos; publicVariable 'heliTransPos'; [HHH,[heliTransPos select 0,heliTransPos select 1, 0]] remoteExec ['setPos', 2]; {(group transportHeli) move [getPos HHH select 0,getPos HHH select 1,0]; LZ = (getPos HHH); publicVariable 'LZ'; transportHeli setVariable ['LZ', (getPos HHH), true];} remoteExec ['bis_fnc_spawn', 2]; MapClicked = true; onMapSingleClick ''; true; "; waitUntil {sleep 1; MapClicked}; destination = transportHeli getVariable "LZ"; publicVariable "destination"; heliMarker setMarkerPos destination; if (heliOrder == 1) then { heliMarker setMarkerText _codeName+" DROP POINT"; heliMarker setMarkerType "mil_start"; 0 = [] Spawn { playMusic "RadioAmbient30"; sleep 3; [west, "HQ"] sideChat "Coordinates received HunterZ, buckle up for DROP OFF..."; }; }; if (heliOrder == 2) then { heliMarker setMarkerText _codeName+" PICK UP"; heliMarker setMarkerType "mil_pickup"; 0 = [] Spawn { playMusic "RadioAmbient30"; sleep 3; [west, "HQ"] sideChat "Coordinates received HunterZ, Air Transport Inbound..."; }; }; if (heliOrder == 3) then { heliMarker setMarkerText _codeName+" WAIT"; 0 = [] Spawn { playMusic "RadioAmbient30"; sleep 3; [west, "HQ"] sideChat "Coordinates received HunterZ, in route for location..."; }; }; waitUntil {sleep 1; !visibleMap}; sleep 3; transportHeli setBehaviour "CARELESS"; waitUntil {sleep 1; (transportHeli distance destination) < 1000}; (group transportHeli) setSpeedMode "NORMAL"; waitUntil {sleep 1; (transportHeli distance destination) < 600}; (group transportHeli) setSpeedMode "LIMITED"; hint format["%1 has reached destination",_codeName]; heliMarker setMarkerType "Empty"; //while {((alive transportHeli) && !(unitReady transportHeli))} do {sleep 1}; //if (!isServer) then { { while {((alive transportHeli) && !(unitReady transportHeli))} do {sleep 1}; } remoteExec ["bis_fnc_spawn", 0]; }; }; // IF DROP OFF REQUEST if (heliOrder == 1) then { waitUntil {sleep 1; unitready transportHeli}; transportHeli land "GET OUT"; waitUntil{sleep 1; isTouchingGround transportHeli}; /* { // _wp1 = (group transportHeli) addWaypoint [(getPos HHH), 0]; // _wp1 setWaypointType "MOVE"; // _wp1 setWaypointSpeed "NORMAL"; // _wp1 setwaypointstatements ["true", "transportHeli LAND 'GET OUT';"]; transportHeli land "LAND"; } remoteExec ["bis_fnc_spawn", 0]; [transportHeli,["LAND"]] remoteExec ["LAND", 2]; */ waitUntil {sleep 1; {_x in transportHeli} count (units (group heliTransCaller)) == 0}; sleep 10; //TEST DELAY TO NOT KILL SQUAD WHILE TAKING OFF }; // IF PICK UP REQUEST if (heliOrder == 2) then { waitUntil {sleep 1; unitready transportHeli}; transportHeli land "GET IN"; waitUntil{sleep 1; isTouchingGround transportHeli}; /* { // _wp1 = (group transportHeli) addWaypoint [(getPos HHH), 0]; // _wp1 setWaypointType "MOVE"; // _wp1 setWaypointSpeed "NORMAL"; // _wp1 setwaypointstatements ["true", "transportHeli LAND 'GET IN';"]; transportHeli land "LAND"; } remoteExec ["bis_fnc_spawn", 0]; [transportHeli,["LAND"]] remoteExec ["LAND", 2]; */ waitUntil {sleep 1; {_x in transportHeli} count (units (group heliTransCaller)) == count (units (group heliTransCaller))}; }; //RETURN TO BASE if (heliOrder != 3) then { [(group transportHeli),["getMarkerPos mainBase"]] remoteExec ["move", transportHeli]; //(group transportHeli) move mainBase; (group transportHeli) setSpeedMode "FULL"; heliMarker setMarkerPos mainBase; heliMarker setMarkerType "Empty"; waitUntil {sleep 1; (transportHeli distance mainBase) < 1000}; (group transportHeli) setSpeedMode "NORMAL"; waitUntil {sleep 1; (transportHeli distance mainBase) < 600}; (group transportHeli) setSpeedMode "LIMITED"; //while {((alive transportHeli) && !(unitReady transportHeli))} do {sleep 1}; waitUntil {sleep 1; unitready transportHeli}; transportHeli land "LAND"; /* { (group transportHeli) move mainBase; (group transportHeli) setSpeedMode "FULL"; // _wp1 = (group transportHeli) addWaypoint [(getMarkerPos mainBase), 0]; // _wp1 setWaypointType "MOVE"; // _wp1 setWaypointSpeed "NORMAL"; // _wp1 setwaypointstatements ["true", "transportHeli LAND 'LAND';"]; transportHeli land "LAND"; //while {sleep 1; (count (waypoints (group transportHeli))) > 0} do {deleteWaypoint ((waypoints (group transportHeli)) select 0)}; } remoteExec ["bis_fnc_spawn", 0]; */ //while {sleep 1; (count (waypoints (group transportHeli))) > 0} do {deleteWaypoint ((waypoints (group transportHeli)) select 0)}; }; }; The problem is that when called by the clients and using the heliOrders 1 or 2 (Drop of/Pick Up requests) the helicopter gets to the location but never lands on the designed location (at that point if I issue the same command transportHeli land "GET IN"; but via console the Heli lands just fine. If called by the server the whole scripts works perfectly. I've been delaying the release of my mission for a week now because I can't seem to be able to solve this issue no matter what I try so if someone would be kind enough to point me in the right direction I would be most thankful. Share this post Link to post Share on other sites