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.......
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