Einzelnen Beitrag anzeigen
Alt 06.08.2017, 20:01   #1 (permalink)
JSR
500 Beiträge1000 Beiträge
 
Registriert seit: 29.10.2008
Beiträge: 1.192
Standard EventHandler Multiplayer Scripting

Moinsen

Probiere mich grade mit Multiplayer Scripting aus und habe Code in die Init von Popup Zielen geschrieben. Kurz gesagt, Eventhandler geaddet.

Code:
this addEventHandler ["HitPart", {(_this select 0) select 0 setDamage 1; (_this select 0) select 0 animate ["terc", 1];}];
Da diese ja auf jedem PC im Netzwerk geladen werden (da ja init), hätte ich gedacht, dass der Eventhandler für jeden Schützen Effekt hat... also das Ziel unten bleibt, egal wer es trifft. Das passiert jedoch nicht. Nur ich als Host erziele den Effekt.

MPHit habe ich auch schon ausprobiert und hat den selben Effekt.

Teste das Ganze mit zweiter Instanz von Arma 3.

PS: Okay, MPHit fired anscheinend doch. Man muss aber statt das Ziel den Unterstand des Zieles treffen, weil es sonst wohl keinen Hit bzw. Schaden registriert.

Gibt es eine Möglichkeit, den HitPart im Multiplayer zu benutzen?


Auch stellen sich bei dem Script PopUp Ziele nur langsam auf, wenn der Script vom Client und nicht vom Host ausgelöst wurde. Irgendeiner eine Idee, woran das liegt?
Also im Script verschiebt er die Position mit 'setPos'. Die Ziele stehen außerhalb des Raumes. Geht man in den Raum rein, werden diese in den Raum gebeamt. Beim Host funktioniert es super schnell, man bekommt es gar nicht mit. Beim Client jedoch eher im Sekundentakt pro Ziel. Preprocessfile habe ich auch schon ausprobiert, keinen Effekt.

Initialscript für den Raum.
Code:
if (isServer) then {
	[] execVM "scripts\room1\setTargets.sqf";
};
setTargets.sqf
Code:
_hostiles = [t1,t2,t3,t4,t5];
_hostages = [h1,h2,h3,h4];
_positions = [rs1, rs1_1, rs1_2,rs1_3,rs1_4];

for "_i" from 0 to 4 do {
	_random = random [0,5,10];
	_hostile = selectRandom _hostiles;
	_hostage = selectRandom _hostages;
	_position = selectRandom _positions;
	_dir = 0;
	switch (_position) do { 
			case rs1 : {_dir = 180}; 
			case rs1_1 : {_dir = 50}; 
			case rs1_2 : {_dir = 95}; 
			case rs1_3 : {_dir = 95}; 
			case rs1_4 : {_dir = 60}; 
			default {_dir = 95}; 
		};

	if (_random > 5) then {
		_hostage setPos (getPos _position);
		_hostage setDir _dir;
		_hostage setDamage 0; _hostage animate["terc", 0];
		_hostages deleteAt (_hostages find _hostage);
	
	} else {
		_hostile setPos (getPos _position);
		_hostile setDir _dir;
		_hostile setDamage 0; _hostile animate["terc", 0];
		_hostiles deleteAt (_hostiles find _hostile);
	};

	_positions deleteAt (_positions find _position);
	
	
};

Komme irgendwie nicht weiter. Hilfe wäre angesagt!

Geändert von JSR (06.08.2017 um 20:51 Uhr).
JSR ist offline