Undefinierte Variable? What

  • Vanilla

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

  • Undefinierte Variable? What

    Hallo zusammen,

    ich habe das Problem das Arma mir vorwirft meine Variable _rdmmoney nicht definiert zu haben, wie ihr jedoch sehen könnt ist sie definiert?
    Ich bin ein wenig überfordert, ich hoffe mir kann jemand helfen.

    Quellcode

    1. _object = _this select 0;
    2. _object removeAction 0;
    3. private _rdmmoney = random [500, 1200, 1750];
    4. //Start ProgressBar
    5. [] spawn {
    6. for "_ia" from 1 to 10 do { 2 cutText ["Breaking ATM","PLAIN"]; sleep 1; }; 2 cutText [(format["You have found %1$!",_rdmmoney]),"PLAIN"]; sleep 1; 2 cutText ["","PLAIN"];
    7. };
    8. sleep 1;
    9. money = money + _rdmmoney;
    Alles anzeigen


    LG. Philipp
  • Erstmal habe ich die Formatierung repariert, weil so wie das geschrieben wurde seh ich auch nicht was hier passiert.


    Ich habe als Kommentare dazu geschrieben, bei welcher Einrückung es sich um welche Skriptinstanz handelt. Der Codeblock nach dem spawn-Befehl startet eine völlig neue Skript-Instanz, welche u.A. auch nach dem Rest des Skripts ausgeführt wird. Also erst führt das Spiel Zeile 22 aus und erst ungefähr einen Frame später Zeile 9. Dabei wartet die zweite Skript-Instanz jedoch nicht die 1 Sekunde aus Zeile 22, denn das ist ja der Sinn von Skript-Instanzen/spawn.

    Lokale Variablen werden nicht in die neue Skript-Instanz übernommen, da lokale Variablen nur innerhalb ihrer Skript-Instanz definiert sind. Die Variable muss also als Argument übergeben werden. Das macht man so:

    Quellcode

    1. private _var = 127;
    2. [_var] spawn {
    3. params ["_var"];
    4. systemChat str _var;
    5. };
    Also müsste das behobene Skript so aussehen:



    Allerdings hierzu noch ein Paar andere Anmerkungen/Fehler:

    In Zeile 3 entfernst du die Aktion mit ID 0. Du hast aber keine Ahnung was das für eine Aktion ist. Die ID ist nur geraten und es kann sich um eine völlig andere Aktion handeln als du denkst, wenn ein weiteres Skript Aktionen zu deinem Skript hinzufügt. Du solltest die ID, welche von addAction kommt in einer Object-Namespace Variable speichern, und dann diese abfragen und entfernen. Ohne das Skript, welche die Aktion hinzufügt kann ich das aber nicht zeigen.

    In Zeile 10, 14 und 20 passiert das gleiche mit den Cut-Layern. 100%ig ist die 2 bereits durch einen pp-Effekt im Basisspiel vergeben. Das könnte die Vignette durch Erschöpfung vom Rennen sein, Das Verschwimmen beim Tauchen, oder Blut bei Treffern/Wunden. Du solltest besser die Variante mit String nehmen und etwas eindeutig dir zuzuordnendes Schreiben, am besten mit OFPEC-Tag.

    random gibt rationale Zahlen zurück, aber Geld gibt es nur in ganzen Zahlen, bzw. auf Cent-Beträge gebrochen.