Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 14.06.2009, 22:01   #1 (permalink)
Newbie
 
Registriert seit: 11.06.2009
Beiträge: 8
Icon5 Funktion funktioniert nicht.

Einen guten Abend zusammen,

ich scheitere gerade ein "Wenig" an der grundlegenden Umsetzung einer Funktion. Es geht um folgende Scripte:

Init.sqs:
Code:
Nachricht = compile preprocessFile "Nachricht.sqf";
Nachricht.sqf:
Code:
_wahl = _this select 0;  Nachricht = switch (_wahl) do {
  Case 1: {"eins"};
  Case 2: {"zwei"};
  Case 3: {"drei"};
  Case 4: {"vier"};
  Case 5: {"fünf"};
  };
Reden.sqs
Code:
_wahl = _this select 0;  _text = [_wahl] call Nachricht;
  Hint format ["Ich sage %1",_text];
Mit hilfe der Zeile:
Code:
[1] exec "Reden.sqs"
erhalte ich dann das traurige Ergebnis: Ich sage <null>. Wünschenswert wäre allerdings in diesem Fall: Ich sage eins gewesen.

Wo genau liegt mein Fehler? Ich schließe mal als Einziges die Init.sqs aus; denn bei der habe ich mich exakt an Mr. Murrays Angaben gehalten (und bei einer Zeile kann wohl auch nicht sonderlich viel schief gehen... sagte er und staunte). Der Rest ist mehr oder weniger ein Konglomerat aus der aktuellen Befehlsreferenz und ein paar Bezügen aus anderen Programmiersprachen. Vor allem was die Übergabe des Ergebnisses aus der Funktion in die Variable Nachricht angeht... da habe ich nämlich auch so meine Zweifel. Nur habe ich da leider nichts Detaillierteres im Guide gefunden.

Oder können gar nur Integer über eine Funktion ausgegeben werden? Und wenn ja... wie modifiziere ich dann die switch-do-Anweisung auf sqs um? Das hat nämlich auch nicht funktioniert. Oder muss ich im Fall der Fälle auf etliche IF-Abfragen zurückgreifen?

Ich würde mich über Hilfe freuen.

Geändert von Aemulus (14.06.2009 um 22:26 Uhr).
Aemulus ist offline   Mit Zitat antworten
Alt 14.06.2009, 22:47   #2 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

"Ich sage <null>" kommt deswegen, weil die Variable _text nicht deklariert ist!

Schreib mal deine Nachricht.sqf so um:
Code:
_wahl = _this select 0;  
Nachricht = switch (_wahl) do {
  Case 1: {text = "eins"};
  Case 2: {text = "zwei"};
  Case 3: {text = "drei"};
  Case 4: {text = "vier"};
  Case 5: {text = "fünf"};
  };
Und deine Reden.sqs:
Code:
_wahl = _this select 0;
temp = [_wahl] call Nachricht;
  Hint format ["Ich sage %1",text];
Gibt natürlich auch noch andere Lösungsmöglichkeiten. Dies aber eine davon
Cyborg11 ist offline   Mit Zitat antworten
Alt 14.06.2009, 23:11   #3 (permalink)
Newbie
 
Registriert seit: 11.06.2009
Beiträge: 8
Standard Hmmm...

Danke für die schnelle Antwort aber...

ich verstehe dann den Sinn einer Funktion nicht. In jeder anderen Programmiersprache charakterisiert sich eine Funktion dadurch, dass sie direkt als eine Art Variable angesprochen werden kann. So erhält man etwa in der Mathematik für f(2) den Wert 7 wenn die Funktion als f(x) = 2x + 3 definiert ist. So müsste also in meinem Beispiel in der "Variable" Nachricht(1) bzw. per Definition [1] call Nachricht der Text "eins" stehen. Wenn das jedoch bei Arma 2 nicht der Fall ist und man dennoch eine weitere Variable, wie in Deinem Beispiel text deklarieren muss, erübrigt sich der Einsatz der sqf in meinen Augen, da eine sqs doch genauso vorausgeladen werden kann.

Außerdem verstehe ich dann den Einsatz von _text = [_wahl] call Nachricht nicht (Mr. Murrays Guide: _variable = [Daten] call SearchLight). Was genau steht denn dann nach diesem Aufruf in der Variable _text (bzw. _variable) oder bei Dir in der Variable temp? Wozu eine Variable deklarieren, wenn nichts übergeben wird?

Das ist alles etwas verwirrend für mich.
Aemulus ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Autosave funktioniert nicht mehr, Spiel lässt sich nicht beenden puni2412 Technische Fragen & Probleme 1 04.06.2009 21:35
Bauen funktioniert nicht im MP Hotkey Technische Fragen & Probleme 2 01.06.2009 00:50
Senden an - Funktion nicht mehr sichtbar Lee-on Hilfe 7 23.09.2005 19:20


Kontakt - HX3.de - Archiv - Nach oben

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