hideobject global(?)
Hi Leute, ich habe bei 2 Maps im Multiplayer ein Problem mit dem hideobject-Befehl. Es geht darum, dass jeweils nur der ausführende Spieler (Caller?!) Sicht auf das aufgedeckte Objekt (bzw. die Objekte) bekommt. 1.Fall Eine Leiche (Erhängter Arzt/Name= leiche1) hängt an einem Baum, mit der Möglichkeit sie abzuhängen. InitZeile: this addAction ["Leichnam abhängen","scripts\leiche.sqf"]; leiche.sqf Zitat:
2.Fall Hierbei handelt es sich um ein Killhouse-Areal, in dem es per Laptop die Möglichkeit gibt zwischen Übung (Popups und Wertungsscheiben) und Ernstfall (feindliche KI) zu wechseln. Zweiteres funktioniert wie erwünscht. Objekt Laptop mit InitZeile: this setPos [getPos this select 0, getPos this select 1, 1.1]; ID01 = this addAction ["Aktiviere Killhouse-Areal 1 Übung","Scripts\Killhouses\KHA1a.sqf"]; ID02 = this addAction ["Aktiviere Killhouse-Areal 1 Ernstfall","Scripts\Killhouses\KHA1b.sqf"]; Problemscript KHA1a.sqf Zitat:
if (isServer) exitWith {} oder if (!isServer) exitWith {} oder if (isPlayer) exitWith {} oder if (isPlayer) then { _obj1 hideobject false; ..... }; oder if (isServer) then { _obj1 hideobject false; ..... }; oder if (isMultiplayer) then { _obj1 hideobject false ..... }; probiert, aber hatte leider keinen Erfolg und da ich nur unregelmäßig die Möglichkeit zum Hochladen und Testen habe und sich das jetzt schon über Monate zieht wollte ich euch um Rat bitten. Super wäre es auch, wenn der Hint vielleicht für jeden Spieler sichtbar wäre, das ist aber eher unwichtig.. ^^ Danke und Grüße |
Ich weiß zwar nicht, warum Leichensäcke nur für eine Person und nicht alle sichtbar sein sollen, aber an deiner Stelle würde ich es statt mit hideobject mal mit createVehicleLocal versuchen. ;)
|
Mist, ich sehe gerade, ich hab's vielleicht ein bisschen missverständlich beschrieben, danke trotzdem schonmal für eine Antwort ^^
Also ich meinte damit, dass das halt mein Problem ist, dass es nicht jeder sehen kann - also es soll jeder den Leichensack, bzw. die Popups/Wertungsscheiben sehen können, was momentan leider nicht der Fall ist. Dachte auch schon daran, den Leichensack einfach zu erstellen (also createvehicle anstatt createvehiclelocal), aber dann ist mir die Parallele zu dem Killhouse-Problem in den Sinn gekommen und ich dachte man könnte 2 Fliegen mit einer Klappe schlagen, wenn ich mir Hilfe hole. Würde bei Fall-1 (Leichensack) nicht auch gehen, wenn die erste Zeile im Script if (isServer) exitWith {}; lauten würde? |
Dann benutz definitiv createVehicle, das ist das sinnvollste.
hideObject hat immer nur dort Effekt, wo es ausgeführt wird. Dein Problem ist, dass die User-Action, die du mittels addAction dem Spieler gibst, auch nur bei diesem Spieler ausgeführt wird. Ergo wird nur auf dessen Rechner hideObject ausgeführt, auf den anderen verbundenen Rechnern nicht. Daher der unerwünschte Effekt. Bei dem anderen Script gehe ich davon aus, dass du einen Trigger benutzt, der dann auf allen verbundenen Rechnern feuert. Ergo wird hideObject auf allen Rechnern ausgeführt, und die Objekte auch überall sichtbar. Bei der addAction brauchst du nur hideObject durch einen entsprechenden createVehicle ersetzen, dann ist alles in Butter. Bei deinem Killhouse kannst du auch alles entsprechend ersetzen, allerdings an den Anfang des Scripts ein if (!isServer} exitWith {} um zu verhindern, dass das Script auf allen verbundenen Rechnern ausgeführt wird. |
Ok, für das Leichensack-Problem werde ich dann wohl einfach createVehicle nutzen, das ist dann wohl wirklich das simpelste, danke dir!
Für das Killhouse-Problem habe ich dann evtl doch noch eine bessere Lösung, wenn es geklappt hat schreibe ich diese hier rein! Grüße |
Ja, wollte nur kurz bescheid geben, dass jetzt alles wie erwünscht funktioniert.
Wollte erst über ne PublicVariable gehen, um das vielleicht auch Mal zu verstehen, aber du hattest natürlich schon recht ^^ Danke nochmal Terp! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias