Bedingungen für addAction setzen

  • Multiplayer

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bedingungen für addAction setzen

    Ich habe zwei Fragen:

    a) Ich möchte Restriktionen für Einträge im UserAction-Menü setzen, sodass eine Action nur für (einen) bestimmte(n) Spieler gezeigt wird
    b) und zwar auch dann, wenn diese Einheit(en) sich in einem Fahrzeug befindet/befinden.


    Zu a)
    Konkret: In einem MP-Szenario will ich Einträge einem Spieler zugänglich machen, der damit bestimmte Trigger/Skripts (hier: Helikopter-Wegpunkt aktivieren) auslösen kann. Dem Spieler habe ich in die Init-Box geschrieben

    Quellcode

    1. this AddAction ["<t color='#FF0000'>Helikopter los!",{HelicopterGo = true; publicVariable "HelicopterGo";}, [], 5.7, false, true, "", "", 1];

    Das funktioniert auch. Nur könnte jetzt ein anderer Spieler an mich herantreten und die UserAction verwenden, was ich nicht will. In der Syntax oben muss die Bedingung an der vorletzten Stelle im Array als String definiert werden. Default ist "true".
    Man kann hier laut Wiki "spezielle Variablen" ("_target", "_this" oder "_originalTarget") übergeben, aber ich verstehe nicht, wie das geht. Wo und wie muss ich sie definieren, damit sie wo übergeben werden? Ich verstehe schlicht die Erläuterung im Wiki zu den "Conditions" nicht.

    Muss ich von Anfang an lokal arbeiten?

    Quellcode

    1. _this AddAction ["<t color='#FF0000'>Helikopter los!",{HelicopterGo = true; publicVariable "HelicopterGo";}, [], 5.7, false, true, "", "", 1];

    Oder/und muss im String stehen "_this = true"? Also etwa so:

    Quellcode

    1. _this AddAction ["<t color='#FF0000'>Helikopter los!",{HelicopterGo = true; publicVariable "HelicopterGo";}, [], 5.7, false, true, "", "_this = true", 1];


    Zweitens sind diese Einträge nicht mehr verfügbar, wenn ich in ein Fahrzeug (in diesem Fall Classname: RHS_64AHD) einsteige. Gibt es da eine gute Lösung?

    Wahrscheinlich ist beides ganz einfach, aber ich komme an der Stelle nicht mit dem Wiki weiter...
  • Die lokalen Variablen _this, _target und _originalTarget sind in dem Condition String verfügbar. Das heißt:

    PHP-Quellcode

    1. this AddAction ["<t color='#FF0000'>Helikopter los!",{HelicopterGo = true; publicVariable "HelicopterGo";}, [], 5.7, false, true, "", "_target isEqualTo _this", 1];
    "_target isEqualTo _this" - damit wird geprüft ob _target (Spielereinheit mit addAction-Eintrag) das selbe Object wie _this (Spielereinheit welche den addAction-Eintrag sehen will) ist.

    Meines Wissens nach gibt es keine Möglichkeit Action-Menü Einträge, die an einem Spieler heften, in einem Fahrzeug sichtbar zumachen. Du kannst aber dem Fahrzeug eine Action hinzufügen die nur ein bestimmter Spieler sehen kann.
  • Fry schrieb:

    "_target isEqualTo _this" - damit wird geprüft ob _target (Spielereinheit mit addAction-Eintrag) das selbe Object wie _this (Spielereinheit welche den addAction-Eintrag sehen will) ist.
    Aaah, ok. Geht auch "==" oder "=" statt "isEqualTo"?

    Fry schrieb:

    Meines Wissens nach gibt es keine Möglichkeit Action-Menü Einträge, die an einem Spieler heften, in einem Fahrzeug sichtbar zumachen. Du kannst aber dem Fahrzeug eine Action hinzufügen die nur ein bestimmter Spieler sehen kann.
    Es scheint aber nur zu funktionieren, wenn man neben dem Fahrzeug steht. Im Fahrzeug habe ich keinen Zugriff. Aber vielleicht hatte ich den Radius falsch eingestellt. Ich probier das später nochmal.

    In diesem Fall wären _target und _this ja nicht identisch. Wir setze ich dann die Bedingung?

    Danke schonmal!
  • Du kannst auch "==" verwenden. "=" kannst du nicht verwenden da es ein Zuweisungsoperator ist. (Wenn einer Variablen ein Wert zugewiesen werden soll z.b. myVar = 5;)

    isEqualTo hat aber ein paar Vorteile. Ob die für dich relevant sind ist eine andere Frage. Im Wiki steht einiges dazu. Wiki: isEqualTo

    Die Condition für die Fahrzeug Action muss natürlich eine andere sein. An der Stelle gibst du der Einheit, welche die Action sehen darf, einen Namen z.b. p1.

    Dann sieht der Code dazu so aus

    PHP-Quellcode

    1. this AddAction ["<t color='#FF0000'>Helikopter los!",{HelicopterGo = true; publicVariable "HelicopterGo";}, [], 5.7, false, true, "", "p1 in _target", 5];

    Den Radius habe ich auf 5 Meter hoch genommen da man bei größeren Fahrzeugen nicht immer bis auf einen Meter an die Mitte heran kommt.