Bombe trifft vehicle player - Frage zur Lokalität
Hallo zusammen
Ich kämpfe zurzeit mit einem Auslöser der MP-tauglich sein soll (vehicle Player wird von einer Bombe getroffen, wenn er in den Auslöserbereich eindringt). Ich möchte versuchen ihn schon möglichst 'gut funktionierend' zu haben, bevor ich einen Kumpel aufbiete für einen MP-Test. Ich bitte daher um Unterstützung bei der Frage, was der folgende Auslöser genau macht: Auslöser: Jeder, Vorhanden, Mehrfach, Zeit zwischen 6 und 8 Sekunden BED: Code:
this and (vehicle Player in thislist and getPos vehicle player select 2 < 2) Code:
if (isServer) then {Bombe="Bo_GBU12_LGB" createVehicle position vehicle player} Wenn zwei vehicle player separat in den Bereich eindringen, muss jeder von ihnen von einer Bombe getroffen werden. Wenn sie jedoch zusammen in einem Fahrzeug sitzen, sollte es nur eine Bombe geben. Wie könnt man das lösen? |
Kann das Fahrzeug über eine KI gesteuert werden? Wenn nein, dann mache es abhängig vom Fahrer
ungetestet Code:
this && player == driver (vehicle player) && vehicle player in thislist && getpos vehicle player select 2 < 2 Dann wird nur ausgelöst, wenn der Spieler als Fahrer in diesen Bereich kommt. Falls KI fahren kann, bitte bescheid geben, dass mußt du es über count lösen |
@ Drunken Officer:
Nein, die KI fährt nicht. Noch eine Frage zu deiner Bedingung (ich kann das Ganze leider erst nach Ostern testen, da ich ab Morgen für eine Woche weg bin): Vehicle Player betrifft normalerweise sowohl den Player zur Fuss (der gilt offenbar auch als vehicle), als auch den Player im Auto. Wenn Du nun die Bedingung stellst 'player == driver... etc.' erfüllt dann ein Fussgänger die Bedingung immer noch? Oder hat ein 'Zu-Fuss-vehicle-player' gar keinen driver-slot (dann könnte er den Auslöser nicht zünden)? Ziel ist es, dass sowohl Fussgänger, als auch Spieler in Fahrzeugen getroffen werden (das ist mit meinem vehicle player gegeben, aber evtl. eben nicht mehr, wenn man die Bedingung 'player == driver' einbaut). |
Für was brauchst du eigentlich die Höhenangabe? Falls ein Flugzeug landet?
Dann versuche es so: Code:
this && getpos vehicle player select 2 < 2 && vehicle player in thislist && ( player == vehicle player || player != vehicle player && player == driver (vehicle player) ) - Höhe unter 2 - das Objekt Player (egal ob Fuss oder Auto) im Trigger ist - prüfe ob Spieler gleich Spieler oder Spieler im Fahrzeug und wenn ja ob spieler gleich Fahrer ist |
Die Höhenangabe brauche ich, weil ich nicht möchte, dass Flugzeuge getroffen werden (es sei denn sie landen). Eigentlich ist der Auslöser so eine Art Minenfeld, der es den Spielern zu 100% verunmöglichen soll, es zu durchqueren (es sei denn sie benutzen ein Flugzeug). Mein Minenfeld soll unbedingt ein paar Unterschiede zum Modul-Minenfeld haben:
1. Die Spieler sollen immer getroffen werden, solange sie nicht in einem Flugzeug sind (beim Modul könnte man Glück haben bei der Durchquerung des Feldes - je nach Menge/Zustand der vorhandenen Minen). 2. Es wird auch jemand getroffen, der dort durch das Gebiet geht/fährt, wo vorher schon ein Anderer war (beim Modul sind dort die Minen schon explodiert und man gefahrlos hindurch). 3. Und das ist der grösste Unterschied: Mein Minenfeld zieht sich an der engsten Stelle von Altis quer über die ganze Insel. Wollte man so ein Minenfeld mit dem Modul erstellen müsste man jenes mit ca. 10'000 Minen befüllen. Ich hab's probiert... hatte beim Test noch eine Framerate von ca. 1-2 Bildern pro Sekunde. Der Auslöser ist hier wesentlich performanter. Ich werde den von Dir genannten Code nach meiner Abwesenheit gerne testen, danke. :daumen: |
Im Editor hat es funktioniert.
Dein Ziel ist also ein 100%ige Durchquerungssperre, außer Flugzeuge. Okay. Ich habe das bei der Operation Paladin mit einer Gaswolke dargestellt. Einen farbigen MArker als Markierung drüber. Und dann mit setDammage 1 alles an Spieler getötet die reinkamen. |
Denke daran, beim DediServer ist player = null.
|
nicht unbedingt.
Der Trigger wirkt zwar lokal, aber Jeder lädt es, weil es auf der KArte ist. Also Clienten und Server. Aber du hast Recht, es muss noch die lokale abfrage rein. (local player) |
Akt: if (isServer) then {blafasel irgendwas mit vehicle player};
funktioniert nur auf ServerClient mit diesen einen Spieler. Der Dedi kennt kein player. |
Richtig, läßt man auf dem Dedi-Server das Kommando Player bla bla ausführen, funzt es nicht.
Aber nochmals, hast du auf der Karte einen Trigger (50/50, Blau, einmal) so hat ihn JEDER, Server und Clienten. Läßt du in diesem Trigger das Kommando player setDammage 1 ausführen, würde dieses Kommando so auch ausgeführt. Da so nicht bekannt ist, welcher Spieler sterben soll, sterben alle. Deswegen (local player) mit in die Bedingung, dann ist bekannt, dass nur der Spieler den Trigger auslösen soll, welcher reingerannt ist. (ich weiß man könnte auch mit player in thislist arbeiten, es soll nur ein Beispiel sein) JIP ist eine andere Geschichte. Deswegen Trigger nach einmaiger Auslösung löschen oder garnicht erst mit Triggern arbeiten, wenn möglich. Aber Player i.V.m. Dedi-Server funktioniert 100%, weil ich selber beim Betreten eines Lager einen Trigger gesetzt habe, welcher lokal den Spieler etwas anzeigt. Es kommt darauf an, wo man es einsetzt und wie. In einem Script, welches allein der Server verwaltet klappt es nicht |
Worauf ich hinauswollte:
Du setzt eine Bedingung die nur auf die verschiedenen Klienten zutrifft. Der Trigger kann also nicht auf dem Dedi auslösen, nur auf dem ServerClient oder den Clienten. Wenn du bei Aktivierung die Clienten ausschließt (isServer) dann funktioniert dieser Trigger also nur noch mit dem ServerClient, der Dedi ist ja schon in der Bedingung raus. Nehme in der Aktivierung die if (isServer) Bedingung heraus, damit ist dein Auslöser MP-tauglich. Der createVehicle Befehl ist Global, der Effekt wird also auf jeden Clienten sichtbar sein. Nachtrag: Bleibt noch das mehrere-Spieler-in-einem-Fahrzeug-Problem. |
das Problem mit mehr als einem Spieler im Fahrzeug ist eigentlich geklärt.
Jo jetzt weiß ich was du meinst. Er hat es in der Aktivierung stehen. Jo das muss raus, da der Triggern local gezündet wird |
Ihr meint also so?
BED: Code:
this && getpos vehicle player select 2 < 2 && vehicle player in thislist && (player == vehicle player || player != vehicle player && player == driver (vehicle player)) Code:
Bombe="Bo_GBU12_LGB" createVehicle position vehicle player Sobald ich aus den Ferien zurück bin, teste ich das mal. |
Bed:
this && getpos vehicle player select 2 < 2 && vehicle player in thislist && player == driver (vehicle player) Akt: Bombe="Bo_GBU12_LGB" createVehicle position vehicle player Die Abfrage player == vehicle player || player != vehicle player fliegt raus, die trifft nämlich immer zu. && = and, || = or |
Ist damit...
Code:
.....&& player == driver (vehicle player) Wie auch immer: Ab nächster Woche kann ich das testen. |
ja
|
alles klar, werde es genau so testen :daumen:
|
Wollte nur noch schnell melden: Scheint alles perfekt zu funktionieren. Vielen Dank für alle, die bei der Lösung mitgeholfen haben. :daumen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias