Einzelnen Beitrag anzeigen
Alt 02.05.2016, 07:48   #4 (permalink)
Pfandgiraffe
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 38
Beiträge: 1.737
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

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
__________________
Niemand hat die Absicht eine Tüte zu bauen!
​​​​​​​
___<<<A3 Wounding System>>>___

Geändert von Pfandgiraffe (02.05.2016 um 07:52 Uhr).
Pfandgiraffe ist offline