Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 01.05.2016, 13:51   #1 (permalink)
Newbie
 
Registriert seit: 29.04.2016
Beiträge: 15
Icon5 Bräuchte Ratschlag zum crashsite Script.

Vorab, sorry dass ich es in den falschen Bereich gepostet habe, das sollte eigentlich in den Arma3 Bereich.
Wenn möglich bitte verschieben.

Hallo,
ich wollte für ein Altis Life Server ein Crashsite Script schreiben welches ein Heliwrack, Loot und Marker spawnt.
Nach einiger Zeit geschieht das gleiche noch einmal nur an anderer Stelle mit einem anderen Wrack.
Lokal und im MP funktioniert das Script einwandfrei, auf dem Server allerdings geschieht das heillose durcheinander.

Die Spieler bekommen unterschiedliche Hint Nachrichten, es spawnt statt einem Wrack mehrere, die Marker werden gelöscht und spawnen kurz darauf wo anders erneut usw.

Könntet ihr mir sagen was genau ich falsch gemacht habe und wie ich es Server tauglich bekomme?
Danke vorab für alle helfenden antworten.

Grüße Matze
Angehängte Dateien
Dateityp: rar crashsite.rar (1,3 KB, 13x aufgerufen)

Geändert von Matze_76 (01.05.2016 um 13:54 Uhr).
Matze_76 ist offline   Mit Zitat antworten
Alt 01.05.2016, 22:25   #2 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 10.10.2006
Beiträge: 263
Standard

Frage 1: hast du es selber Geschrieben?
Wenn ja dann Gratualationzum Script ist nicht perfekt aber lauffähig, wenn Nein , Nimm wo anders eins her

Zum Problem Was du vor hast st earten. o wie s geschrieben it darf es NUR der Server Starten und das 1x
Da du sagst Es kommen mehere Wracks und so weiter Starte es jeder Klient selber. Das Problem ist das der HINT nicht geht sondern Übertragen werden muss. Schaue dir dazu einfach mal die Broadcast datei als Funkton an die in Altis Life ist. Damit kanst du Hint an Alle oder Bestimmte schicken.
Nokman ist offline   Mit Zitat antworten
Alt 01.05.2016, 23:26   #3 (permalink)
Newbie
 
Registriert seit: 29.04.2016
Beiträge: 15
Standard

Ja, das ist das erste Script das ich von 0 auf selbst geschrieben habe, für mehr hat aber mein Wissen dazu nicht genügt

Ich starte das Script über die Init.sqf, würde es ausreichen es wie folgt zu starten?:

PHP-Code:
if (isServerthen 
{
execVM "crashsite.sqf";
}; 
Zitat:

Schaue dir dazu einfach mal die Broadcast datei als Funkton an die in Altis Life ist.

Danke für den Tipp, das werde ich mir morgen einmal zu Gemüte führen.
Matze_76 ist offline   Mit Zitat antworten
Alt 02.05.2016, 08:48   #4 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 32
Beiträge: 1.729
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!

Geändert von Pfandgiraffe (02.05.2016 um 08:52 Uhr).
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 02.05.2016, 13:42   #5 (permalink)
Newbie
 
Registriert seit: 29.04.2016
Beiträge: 15
Standard

Wow, danke für die großartige Hilfe!
Ich versteh das Script soweit aber alleine wäre ich da glaube ich nicht drauf gekommen. Ich musste es noch etwas anpassen da der Loot nicht am Wrack sondern am Marker spawnt aber es klappt so wirklich sehr gut.

Was ich noch nicht ganz verstanden habe ist das [] spawn {...}. Was genau bewirkt das?
Matze_76 ist offline   Mit Zitat antworten
Alt 02.05.2016, 22:48   #6 (permalink)
Newbie
 
Registriert seit: 29.04.2016
Beiträge: 15
Standard

Ich habe das Script im Mp getestet und soweit eingestellt, jetzt habe ich aber ein weiteres Problem das ich nicht ganz nachvollziehen kann.

Die Items spawnen im MP direkt auf dem Boden, auf dem Server aber liegen sie im Boden drin.
Ich habe die Höhe angepasst und die Items 0.2 bis hin zu 2 Meter hoch gesetzt.
Zitat:

Waffe1 setpos [(getpos Waffe1 select 0)+(random 1)-12,(getpos Waffe1 select 1)+(random 3)-17,1];

Im MP werden die Items alle richtig gesetzt aber auf dem Server direkt passiert nichts.
Könnt ihr mir bei dem Problem weiter helfen, denn wie schon gesagt.. ich kann es wirklich nicht nachvollziehen.
Matze_76 ist offline   Mit Zitat antworten
Alt 03.05.2016, 08:13   #7 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 32
Beiträge: 1.729
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Das mit dem spawn {...} ist nur nötig falls du das Script als Host ausführst. Also wenn du zeitgleich Server als auch Client bist. Das Spawn erzeugt einen neuen Thread. Dieser wird dann abgearbeitet wie ein eigenes Script wobei das eigentliche Script weiter abgearbeitet wird.

Du könntest die beiden Teile des Scripts auch in einzelne Dateien schreiben und ausführen. Dann entfällt das Spawn.


Zu der Positionierung: keine Ahnung warum das so is aber versuchs mal mit setPosATL statt setPos. (ATL = above terrain level)

Auch nützlich zum Verständnis: https://community.bistudio.com/wiki/...on#PositionATL


Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen!

Geändert von Pfandgiraffe (03.05.2016 um 08:15 Uhr).
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 03.05.2016, 23:12   #8 (permalink)
Newbie
 
Registriert seit: 29.04.2016
Beiträge: 15
Standard

Die Seite hat mir weiter geholfen, leider nur nicht bei dem Script. Ich habe jetzt die Heli durch eine Kiste ersetzt und lass den Loot darin Spawnen.

Code:
if (isServer) then {
	[] spawn {
		crashSiteOneGenerated = false;
		publicVariable "crashSiteOneGenerated";
		crashSiteOneDeleted = false;
		publicVariable "crashSiteOneDeleted";
		
		Sleep 2700+(random 7200);		// <----------------- Zeit bis der Spawn beginnt
		_spawnpos = [getmarkerpos "crashsitemarker", 10+(random 4000), (random 359)] call BIS_fnc_relPos;
		crashsiteheli = "CargoNet_01_box_F" createVehicle _spawnpos;
		crashsiteheli setPos [getPos crashsiteheli select 0, getPos crashsiteheli select 1,-0.1];
		
		crashSiteOneGenerated = true;
		publicVariable "crashSiteOneGenerated";
		
		Sleep 360;		// <----------------- Zusätzliche Zeit bis die Marker und der Loot erstellt werden
		null = createMarker ["crashsite", crashsiteheli];
		null setMarkerShape "RECTANGLE";
		null setMarkerSize [800,800];
		"Crashsite" setMarkerColor "ColorRed";
		null = createMarker ["crashsiteMark", crashsiteheli];
		"CrashsiteMark" setMarkerType "mil_warning";
		"CrashsiteMark" setMarkerText "Frachtkiste PVP Zone";
		_smoke="SmokeShellGreen" createVehicle getMarkerPos "CrashsiteMark";
		_smoke setPos [getPos _smoke select 0,getPos _smoke select 1,240];
		
// Loottable Anfang
		_gun = ["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;  
		crashsiteheli addItemCargoGlobal [_gun,1];
		_munition = ["10Rnd_762x54_Mag","200Rnd_65x39_cased_Box","30Rnd_65x39_caseless_mag","10Rnd_127x54_Mag","5Rnd_127x108_Mag"] call BIS_fnc_selectRandom;
		crashsiteheli addItemCargoGlobal [_munition,2];
		_munition2 = ["UGL_FlareRed_F","UGL_FlareGreen_F","UGL_FlareWhite_F","10Rnd_127x54_Mag","5Rnd_127x108_Mag"] call BIS_fnc_selectRandom;
		crashsiteheli addItemCargoGlobal [_munition2,3];
		_itemw = ["acc_pointer_IR","acc_flashlight","muzzle_snds_M","muzzle_snds_B","muzzle_snds_H_MG","Rangefinder"] call BIS_fnc_selectRandom;
		crashsiteheli addItemCargoGlobal [_itemw,1];
		_itemw2 = ["optic_Arco","optic_Hamr","optic_SOS","optic_DMS","optic_LRPS","optic_AMS_khk","optic_KHS_tan"] call BIS_fnc_selectRandom;
		crashsiteheli addItemCargoGlobal [_itemw2,1];
		_itemw3 = ["V_PlateCarrierIA2_dgtl","V_PlateCarrierIA1_dgtl","V_TacVestCamo_khk","V_TacVest_khk","V_PlateCarrier1_rgr","H_HelmetB_light_grass","H_HelmetB_grass"] call BIS_fnc_selectRandom;
		crashsiteheli addItemCargoGlobal [_itemw3,1];
// Loottable Ende
		
		Sleep 2700;		// <----------------- Zeit Bevor Kiste und Marker gelöscht werden
		deleteVehicle crashsiteheli;
		deleteMarker "crashsite";
		deleteMarker "crashsiteMark";
		
		crashSiteOneDeleted = true;
		publicVariable "crashSiteOneDeleted";
	};
};

if (local player) then {
	sleep 5;
	if (crashSiteOneDeleted) exitWith {};
	waitUntil {crashSiteOneGenerated};
	hint"Ein Militärhelikopter sendete einen Notruf";
	Sleep 361;      // <-----------------Diese Zeit sollte die selbe sein wie die in Zeile 15
	hint "Eine Frachtkiste wurde abgeworfen!";
	waitUntil {crashSiteOneDeleted};
	hint "Die Frachtkiste wurde geborgen";
};
Hat auf anhieb geklappt :-)
Ich Danke aber noch einmal recht Herzlich für die Hilfe!

Grüße Matze
Matze_76 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bräuchte Hilfe beim Script überprüfen niels001 Editing & Scripting 6 02.05.2016 09:03
Beta-Patch für OpA erschienen det99 Community 1429 18.07.2014 17:51
T8 Units - Einheiten Spawn Script T-800a Editing & Scripting 2 07.03.2014 21:46
Day & Weather Script Moerderhoschi Editing & Scripting 13 02.12.2012 11:29
marker über script erzeugen hypercop Editing & Scripting 2 28.08.2010 23:40


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116