Einzelnen Beitrag anzeigen
Alt 07.01.2012, 15:18   #1 (permalink)
Wesley Pipes
50 Beiträge
 
Registriert seit: 30.10.2009
Beiträge: 55
Standard Verständnisproblem #include / call compile ....

Hallo ich hoffe Ihr könnt mir bei einer Verständnisfrage weiterhelfen:

Ich habe eine setup.sqf angelegt, in der ich über verschiedene define-Schalter das Spiel entsprechend starten will. Im Moment sieht es so aus:

coa_setup.sqf:
Code:
coa_setup_done = false;

// Debug-System

// Einträge bestimmter Variablen-Werte in die Arma2OA.rpt zu Fehlersuche.
#define __debug_log__


coa_setup_done = true;
Meine init.sqf sieht wie folgt aus:
Code:
######################
# Initialisierung
######################
*/

//#include "Scripts\coa_setup.sqf";


waitUntil{!(isNil "BIS_fnc_init")};

sleep 0.5;


if (isNil "coa_setup_done") then {
    call compile preprocessFile "Scripts\coa_setup.sqf";
};

//waitUntil{!(isNil "coa_setup_done")};


    
#ifdef __debug_log__
    diag_Log "++++++++++++++++++++++++++++++++++";
    diag_log "Diagnose-Modus aktiv!";
    diag_log "++++++++++++++++++++++++++++++++++";    
#else
    diag_Log "++++++++++++++++++++++++++++++++++";
    diag_log "Normal-Modus aktiv!";
    diag_log "++++++++++++++++++++++++++++++++++";
#endif



_do = execVM "Scripts\coa_IntroText.sqf";
Gestartet wird Arma2OA mit -showscripterrors

So wenn ich in der init.sqf den #include auskommentiere, funktionieren die defines einwandfrei.

wenn ich #include kommentiere, dann hätte ich erwartet, dass geprüft wird, ob die Variable coa_setup_done NIL ist (ist sie auch habe ich mit einem Hint vor der call compile -Zeile überprüft) - in diesem fall kommt call compile preprocessFile (call compile preprocessFileLineNumbers wurde auch versucht) zum Einsatz und compiliert coa_setup.sqf vor.

Wenn ich es so ausführe (#include kommentiert) , dann wird zwar erkannt, dass coa_setup_done NIL ist aber es wird mir immer der Normal-Modus angezeigt. Und anschließend mit der Durchführung des nächsten Scripts fortgefahren. Also alles was zwischen der If-IsNIL-Abfrage und _do = excecVM... steht wird ignoriert. Selbst wenn ich da noch einen Hint ausgebe, wird dieser ignoriert und mit dem Ausführen des nächsten Scripts fortgefahren.

In der RPT - keine Fehlermeldung

Mache ich den #include - Aufruf in eine description.ext, dann crasht das Spiel mit dem Hinweis, dass der Member coa_setup_done schon definiert wurde (!?)

Ich hoffe ich hab´s nicht zu kompliziert beschrieben und mir kann jemand den entscheidenden Tip geben.

Das Vorgehen habe ich übrigens von xenos Dominations abgeguckt - fragt sich nur ob ich dabei was Entscheidendes übersehen hab.

Danke für Eure Hilfe

Grüße
Wes
Wesley Pipes ist offline   Mit Zitat antworten