Artikel » MoHAA Tutorials » MoH: Debug-Info Artikel-Infos
   

MoHAA Tutorials   MoH: Debug-Info
28.01.2007 von haui // überarbeitet cubus

Dieses Tut richtet sich in
Erster Linie an die kaum noch
vorhandenen Neueinsteiger
in Sachen Moh-Triologie.

Haui hat in der Vergangenheit so einiges "Rund um die Fehlersuche" während des MoH-Moddings zusammengestellt. Wie man welche Methode am Besten anwendet, findet ihr im nachfolgenden Tutorial.......

Visario Infodatei

 

Map & Script-Debuginfo (von Haui http://www.felstroll.de )

 

Hier mal ein paar Tips wie man seine Scripte Debuggt (Fehler findet), eine Liste von Kommandos und Variablen erhält indem man die Befehle der Konsole nutzt und noch einiges mehr.

Für weiteres Vorschläge und Verbesserungen würde ich mich sehr freuen.

Was gibt es für Tools??

In der Konsole von MOHAA gibt es folgende 2 Befehle EDITSCRIPT und NOTEPAD eigentlich startet man mit beiden das selbe Programm, der Unterschied besteht darin das EDITSCRIPT automatisch das Script der aktuellen Map lädt.

Hier sollte man VORSICHTIG sein!!

Wenn du EDITSCRIPT benutzt und deine Änderungen speicherst, wird das File in ein lokales Verzeichnis geschrieben. Wenn man z.B. test_flak editiert wird das Script nach mohaa\main\maps\test_flsk.scr geschrieben. Wenn man dann die Map wieder lädt, benutzt mohaa nicht das Script aus der PK3 sonder das Lokal abgelegte.

Daher sollte man, wenn man Editscript benutzt hat, das lokal gespeicherte entweder löschen oder wenn man es weiter nutzen will in seine PK3 reinpacken.

Wenn man nun ein Script editiert hat, egal ob mit dem eingebauten Editor oder unter Windows muss man es ja wieder reinladen um es zu testen. Dazu die Konsole öffnen und RESTART eingeben. Damit wird das Script neugeladen und man sieht die Änderungen.

Was macht man vor dem Debuggen??

Wenn man seine Maps debugen will ist es angebracht Mohaa im Developer Mode zu starten. Dazu in der Konsole "developer 1" eingeben.

Einige Maps "suchen" nach der Debug Variablen daher sollte man als nächstes "debug 1" eingeben

Schließlich noch das Logfile starten in dem man "logfile 2" eingibt

Wenn man nun Mohaa verlässt und in das Mainverzeichnis geht findet man ein File das qconsole.log heißt. Dieses File mit Wordpad oder so aufmachen, dann hast du alle Fehler und Meldungen die während des Spiels in der Konsole auflaufen

Um nun seine eigenen Maps zu debuggen ist es angebracht das ' println "text" ' Kommando in seinem Script zu verwenden. Dieses Kommando sendet einen String an die Konsole und dieser wird im Logfile aufgezeichnet.

Dieses Kommando am Anfang und Ende eines Threads verwendet, oder in Schleifen.. und schon kann man sehen wie das Script abgearbeitet wird.

Man kann sogar Variablen ausgeben, das geht so:

println "Hier der Text blablabl"

println "Self = " self

println "Der Türsound ist " $mydoor.sound_open_start

println "THREAD mythread: Self = " self " und local.counter = " local.counter

Wenn man diese Kommandos in seinem Script benutzt sowie das Logfile, kann man seine fehler sehr schnell und einfach finden.

Verstecke Menüs in Mohaa

Es gibt verschiedene versteckte Menüs in Mohaa und die meisten sind Cheat geschützt. Die Liste gibt es in den PK3 Files. Suche hier nach den "*.URC" Files oder gib in der Konsole "listmenus" ein

Um ein Menü anzuzeigen gibt man folgendes ein:

pushmenu <menuname>

pushmenu controls

Um es zu verbergen:

popmenu <menuname>

popmenu controls

In den PK3 Files gibt es auch ein Haufen CFG Files in denen die key bindings festgelegt werden.einige davon sind für debugging Kommandos

Suche in den PK3 Files nach allen CFG Files und gebe dann in der Konsole folgendes ein:

exec <CFG filename>

exec decapitator

Am besten druckt man sich das editierte CFG File aus damit man die Tastenbelegung immer vor sich hat.

Alle Kommandos und Variablen:

Konsole aufmachen und folgendes eingeben:

logfile 2

cmdlist

cvarlist

"cmdlist" erzeugt die Liste aller Kommandos

"cvarlist" erzeut die Liste aller cvars

Der Konsolenoutput wird in das File mohaa\main\qconsole.log geschrieben. Wenn man das File nun mit Wordpad aufmacht hat man eine Liste aller Variablen und Kommandos!!. Dies sollte man einmal im Mainmenü, einmal in einem SP und einmal in einem MP Spiel machen da nicht alle Variablen und Kommandos immer zur Verfügung stehen.

Ein Startup File

Wenn man sich ein File startup.cfg erstellt das man automatisch mit dem Start von Mohaa lädt kann man das Spiel direkt in den Debug Modus versetzten.

Es werden alle Debug Funktionen angeschalten, man kann sie auch mit F11 wieder aus und einschalten.

// Das Debug Script

//Konsole in ein Logfile schreiben

bind F11 vstr dbg // die Taste F11 zum Umschalten benutzen

set dbg vstr debug_0

set developer 1

set debug 1

set logfile 2

set debug_1 "set dbg vstr debug_0;echo DEBUGMODE ON;developer 1;debug 1;logfile 2"

set debug_0 "set dbg vstr debug_1;echo DEBUGMODE OFF;developer 0;debug 0;logfile 0"

Erstelle eine Kopie deines Mohaa Desktopshortcuts und nenne diese z.b. Mohaa-Dev. Nun die Eigenschaften des Shortcuts öffnen und folgende Zeile eingeben:

C:\GAMES\MOHAA\MOHAA.exe +set thereisnomonkey 1 +set developer 1 + set cheats 1 +set ui_console 1 +set cl_playintro 0 +set ui_skip_eamovie 1 +set ui_skip_titlescreen 1 +set ui_skip_legalscreen 1 +exec startup.cfg

ACHTUNG: MOHAA Pfadangabe nicht immer in C:\Spiele..

Nun wird das STARTUP.CFG File geladen, alle Intros abgeschalten, die Konsole eingeblendet cheats verfügbar gemacht.

Threads für Script Debugging

Man erzeugt damit eine formartierte Konsolenausgabe

Im Script direkt nach "MAIN" folgende 2 Zeilen eingeben:

level.debug = 1

level.debugtime = 1

Diese 2 Zeilen aktivieren eine Time Nachricht und die Debuggzeilen in der Konsole. Die Time Nachricht ist für Benchmarking sehr nützlich um zusehen welche threads wie lange brauchen.

Am Anfang eines Thread muss dann folgendes stehen:

thread debugtextstart ("currentthreadname: self = " + self)

Am Ende des Threads :

thread debugtextend ("currentthreadname: self = " + self)

Im Thread z.b. in einer Schleife oder nach einem wichtigen Kommando gibt man dann folgende Zeile ein:

thread debugtext ("myvalue = " + local.myvalue)

// Die 3 folgenden Threads sollten am Ende des Map.Skriptes stehen:

debugtext local.text:

if (level.debug == NIL || level.debug != 1)

end

if (level.debugtime == 1)

local.text = (" Time: " + level.time + "> " + local.text)

else

local.text = (" " + local.text)

println local.text

end

debugtextstart local.text:

if (level.debug == NIL || level.debug != 1)

end

println " "

println "[-"

println "////////////////////////// START des THREADS //////////////////////"

local.text = ("// THREAD = " + local.text)

if (level.debugtime == 1)

local.text = (local.text + "\n// Time: " + level.time + "\n")

local.text = (local.text + "\n----------------")

println local.text

end

debugtextend local.text:

if (level.debug == NIL || level.debug != 1)

end

local.text = ("\\ THREAD = " + local.text)

local.text = ("----------------\n" + local.text)

if (level.debugtime == 1)

local.text = ("\\ Time: " + level.time + "\n" + local.text)

println local.text

println "\\\\\\\\\\\\\\\\\\\\\\\\\\ ENDE des THREADS \\\\\\\\\\\\\\\\\\\\\\\\"

println "-]"

println " "

end

 

Das bbmd-Team 01/2007

© 2002 by Haui



Druckansicht   druckbare Version anzeigen
Seite empfehlen   Seite empfehlen
Seitenanfang nach oben