Hallo,
habe dir das Script mal so angepasst, dass es bzgl. der Lokalitäten im MP korrekt ausgeführt wird. Auch die langen Sleep's sind im MP nicht vorteilhaft da die Zeit auf jeder Maschine unterschiedlich schnell vergeht. Daher "warten" die Clients jetzt darauf bis der Server seine Arbeit geleistet hat.
Grundsätzlicher Ablauf:
- alle (Server+Clients) starten das Script
- Server "schläft" und generiert das Wrack+Ausrüstung
- Server sendet publicVariable an Clients und Clients erhalten die Textnachricht
Der Ablauf ist so alles andere als optimiert aber das spielt hier keine Rolle. Zum Verständnis für dich sollte das aber so der beste Weg sein, da die einfachste Lösung.
Den Ablauf für das 2. Wrack musst du alleine implementieren.
Code:
// execute from server machine
if (isServer) then {
[] spawn {
// define public variables
crashSiteOneGenerated = false;
publicVariable "crashSiteOneGenerated";
crashSiteOneDeleted = false;
publicVariable "crashSiteOneDeleted";
Sleep 1200+(random 10800);
_spawnpos = [getmarkerpos "crashsitemarker", 100+(random 4000), (random 359)] call BIS_fnc_relPos;
crashsiteheli = "Land_Wreck_Heli_Attack_01_F" createVehicle _spawnpos;
crashsiteheli setPos [getPos crashsiteheli select 0, getPos crashsiteheli select 1,-0.1];
TheObject = "test_EmptyObjectForFireBig" createVehicle position crashsiteheli;
TheObject attachTo[crashsiteheli,[0,1.5,-1]];
gun2 = ["srifle_DMR_04_F","srifle_DMR_01_F","LMG_Mk200_F","arifle_Katiba_GL_F","arifle_MX_GL_F","srifle_DMR_04_F","srifle_GM6_camo_F"] call BIS_fnc_selectRandom;
Waffe1 = createVehicle ["groundweaponHolder",getmarkerpos "crashsiteMark",[], 0, "can_collide"];
Waffe1 addWeaponCargo [gun2,1];
Waffe1 setpos [(getpos Waffe1 select 0)+(random 1)-10,(getpos Waffe1 select 1)+(random 3)-14,0];
munition = ["10Rnd_762x54_Mag","200Rnd_65x39_cased_Box","30Rnd_65x39_caseless_mag","10Rnd_127x54_Mag","5Rnd_127x108_Mag"] call BIS_fnc_selectRandom;
Waffe1 = createVehicle ["groundweaponHolder",getmarkerpos "crashsiteMark",[], 0, "can_collide"];
Waffe1 addmagazinecargo [munition,2];
Waffe1 setpos [(getpos Waffe1 select 0)+(random 1)-10,(getpos Waffe1 select 1)+(random 3)-10,0];
munition2 = ["UGL_FlareRed_F","UGL_FlareGreen_F","UGL_FlareWhite_F","10Rnd_127x54_Mag","5Rnd_127x108_Mag"] call BIS_fnc_selectRandom;
Waffe1 = createVehicle ["groundweaponHolder",getmarkerpos "crashsiteMark",[], 0, "can_collide"];
Waffe1 addmagazinecargo [munition2,3];
Waffe1 setpos [(getpos Waffe1 select 0)+(random 2)-6,(getpos Waffe1 select 1)+(random 3)-6,0];
itemw = ["acc_pointer_IR","acc_flashlight","muzzle_snds_M","muzzle_snds_B","muzzle_snds_H_MG","Rangefinder"] call BIS_fnc_selectRandom;
Waffe1 = createVehicle ["groundweaponHolder",getmarkerpos "crashsiteMark",[], 0, "can_collide"];
Waffe1 additemcargo [itemw,1];
Waffe1 setpos [(getpos Waffe1 select 0)+(random 1)-8,(getpos Waffe1 select 1)+(random 3)-8,0];
itemw2 = ["optic_Arco","optic_Hamr","optic_SOS","optic_DMS","optic_LRPS","optic_AMS_khk","optic_KHS_tan"] call BIS_fnc_selectRandom;
Waffe1 = createVehicle ["groundweaponHolder",getmarkerpos "crashsiteMark",[], 0, "can_collide"];
Waffe1 additemcargo [itemw2,1];
Waffe1 setpos [(getpos Waffe1 select 0)+(random 1)-7,(getpos Waffe1 select 1)+(random 3)-7,0];
crashSiteOneGenerated = true;
publicVariable "crashSiteOneGenerated"; // signal for clients, Wrack generated
Sleep 295;
null = createMarker ["crashsite", crashsiteheli];
null setMarkerShape "RECTANGLE";
null setMarkerSize [800,800];
"Crashsite" setMarkerColor "ColorRed";
null = createMarker ["crashsiteMark", crashsiteheli];
"CrashsiteMark" setMarkerType "mil_warning";
"CrashsiteMark" setMarkerText "Absturzstelle PVP Zone";
Sleep 1800;
deleteVehicle crashsiteheli;
deleteMarker "crashsite";
deleteMarker "crashsiteMark";
{if (typeOf _x == "#particlesource") then {deleteVehicle _x}} forEach (TheObject nearObjects 5);
deleteVehicle TheObject;
crashSiteOneDeleted = true;
publicVariable "crashSiteOneDeleted"; // signal for clients, Wrack deleted
};
};
// execute from client machines
if (local player) then {
sleep 5;
if (crashSiteOneDeleted) exitWith {}; // exit for JIP's if task already completed
waitUntil {crashSiteOneGenerated};
hint"Ein Militärhelikopter sendete einen Notruf";
Sleep 300;
hint "Die Absturzstelle wurde markiert";
waitUntil {crashSiteOneDeleted};
hint "Das Helikopterwrack wurde geborgen";
};
Grüße