Einzelnen Beitrag anzeigen
Alt 31.01.2009, 10:35   #4 (permalink)
Xeno
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

Zitat von Hercules-HH Beitrag anzeigen

wie meinst du das jetzt? Ich hab das jetzt so verstanden, dass der Auslöser den Namen Triggerliste haben muss. Oder tap ich da im Dunkeln?

Wenn Du dem Auslöser den Namen Triggerliste gibst, dann musst Du nach dem forEach noch list hinzufügen, also } forEach list Triggerliste. Du kannst aber als Parameter für den Aufruf des Scriptes auch z.B. die thislist des Triggers übergeben.

Zitat von Hercules-HH Beitrag anzeigen

Ich hab das jetzt jedenfalls so gemacht und

  • Auslöser Von Opfor
  • bei Aktivierung steht: this exec "Muni-A.sqs" (Datei-Name)
  • Name: Triggerliste
Da kommt ein Fehler:
Sleep 0.01
Error Allgemeiner Fehler im Ausdruck
Da es sich um ein sqf Script handelt und nicht um sqs ist der Aufruf mit exec falsch. Bitte execVM benutzen, z.B. handle = [] execVM "meinscript.sqf".

Zitat von Hercules-HH Beitrag anzeigen

Ich hab bis her immer ~0.1 benutzt, weil ich auch gar nicht so richtig den unterschied verstehe: ~30 bedeutet, dass er 30 Sekunden runter zählt bis er weiter machen kann, doch bei sleep 30 muss er doch auch 30 Sekunden warten, also muss er doch auch die Zeit zählen. Wie soll man das schlafen verstehen?

~x = sqs
sleep x; = sqf
Das Script wartet/schläft x Sekunden, bis es weitermacht.

Zitat von Hercules-HH Beitrag anzeigen

Hier oben legst du also fest, wo was eingesetzt wird

Code:
_addMags = {
    private ["_unit","_magtype","_how_many"];
    _unit = _this select 0;
    _magtype = _this select 1;
    _how_many = _this select 2;
    for "_i" from 1 to _how_many do {
        _unit addMagazine [_magtype];
    };
};
Das ist eine Funktion innerhalb des Scripts (salopp ausgedrückt ein kleines Unterprogramm), in diesem Falle eine private Funktion die nur innerhalb des Scriptes eingesetzt werden kann (auch noch woanders, wenn man z.B. das Script zu einem Array hinzufügt).

Zitat von Hercules-HH Beitrag anzeigen

und hier kann man das einsetzten - wie man das vom starten/verweisen auf ein Skript kennt.

Code:
[_x,"30Rnd_545x39_AK",8] call _addMags;
Mit call ruft man eine Funktion auf. Eine Funktion kann auch einen Wert zurückliefern, muss aber nicht (also sie liefert immer etwas zurück, nur werten wir das in diesem Falle nicht aus). Die Parameterübergabe erfolgt analog der eines Scriptaufrufes.

Zitat von Hercules-HH Beitrag anzeigen

Doch ich verstehe nicht was das hier genau bedeutet:
[code] for "_i" from 1 to _how_many do {
_unit addMagazine [_magtype];

Soll er etwa acht mal das gleiche machen?
Einheit addMagazine "30Rnd_545x39_AK"
Einheit addMagazine "30Rnd_545x39_AK"
Einheit addMagazine "30Rnd_545x39_AK"
Einheit addMagazine "30Rnd_545x39_AK"
Einheit addMagazine "30Rnd_545x39_AK"
Einheit addMagazine "30Rnd_545x39_AK"
Einheit addMagazine "30Rnd_545x39_AK"
Einheit addMagazine "30Rnd_545x39_AK"

Genau. Einfacher als das acht mal hinzuschreiben und flexibler, da ja in der Funktion die Einheit, der Magazintyp und die Anzahl der Magazine frei wählbar durch die Parameterübergabe ist.

Zitat von Hercules-HH Beitrag anzeigen

Was passiert da genau mit dem "_i"
for "_i" from 1 to _how_many

Mit der Variable _i passiert in dieser for Schleife nichts. Der Befehl erfordert aber eine Variable. Die Variable gibt innerhalb der for Schleife den momentanen Zyklusstand der Schleife zurück (und ist natürlich wie jede andere Variable auch ganz normal verwendbar innerhalb der Schleife).

Zitat von Hercules-HH Beitrag anzeigen

Hast du eine Ausbildung/ein Studium gemacht oder warum kannst du das so gut???

Ich habe an der staatlichen Universität zu Paraiso promoviert

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.
Xeno ist offline   Mit Zitat antworten