HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Bombe trifft vehicle player - Frage zur Lokalität (https://hx3.de/editing-scripting-187/bombe-trifft-vehicle-player-frage-lokalitaet-24731/)

Wolkenbeisser 24.03.2015 12:51

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)
AKT:
Code:

if (isServer) then {Bombe="Bo_GBU12_LGB" createVehicle position vehicle player}
Ich denke das BED-Feld ist nicht das Problem. Aber beim AKT-Feld befürchte ich, dass der Server zwei Bomben wirft, wenn z.B. zwei Spieler in einem Auto in den Auslöser fahren (da ja jeder der beiden Clients vom Server für 'seinen' player eine Bombe anfordert). Stimmt meine Annahme?

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?

Drunken Officer 24.03.2015 13:39

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

Wolkenbeisser 26.03.2015 10:02

@ 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).

Drunken Officer 26.03.2015 13:33

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) )
Der Code fragt ab, ob
- 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

Wolkenbeisser 26.03.2015 14:56

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:

Drunken Officer 26.03.2015 17:02

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.

lucullus 27.03.2015 19:19

Denke daran, beim DediServer ist player = null.

Drunken Officer 27.03.2015 20:01

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)

lucullus 27.03.2015 20:18

Akt: if (isServer) then {blafasel irgendwas mit vehicle player};
funktioniert nur auf ServerClient mit diesen einen Spieler. Der Dedi kennt kein player.

Drunken Officer 28.03.2015 11:06

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

lucullus 28.03.2015 13:50

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.

Drunken Officer 28.03.2015 17:34

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

Wolkenbeisser 04.04.2015 08:35

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))
AKT:
Code:

Bombe="Bo_GBU12_LGB" createVehicle position vehicle player
Was bewirken die beiden Striche || im Bedingungsfeld? Ich habe die noch nie in A3-Code gesehen...

Sobald ich aus den Ferien zurück bin, teste ich das mal.

lucullus 04.04.2015 08:57

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

Wolkenbeisser 04.04.2015 14:56

Ist damit...
Code:

.....&& player == driver (vehicle player)
...auch ein Player zu Fuss betroffen? Fussgänger müssten nämlich auch getroffen werden.

Wie auch immer: Ab nächster Woche kann ich das testen.

lucullus 04.04.2015 15:05

ja

Wolkenbeisser 04.04.2015 20:57

alles klar, werde es genau so testen :daumen:

Wolkenbeisser 17.04.2015 07:48

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


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 117 118 119