heute möchte ich ein Teil meines Wissens mit euch teilen und euch
ein paar Tipps und Tricks verraten, wie ihr eure Quests ganz einfach debuggen könnt.
Eines Vorab, das hier soll kein weiterer Questhilfethread werden,
sondern lediglich Informationen liefern, wie ihr euch selber,
aber einfacher die Lösungen erarbeiten könnt!
Wikipedia Debugger:
- DONT make WITH make!!
- syserr's live auslesen
- syserrs von Quests mit Zeilenangabe ansehen
- Ingame Dump-Funktion für Tabellen
1.) DONT make WITH make!!
Bei einer Umfrage habe ich von 90% der Leute gehört, dass sie beim programmieren jedesmal mit
PHP Code:
make
python make.py
sh make.sh
Kurzer Exkurs (Funktionsweise make):
Wenn ich also eine Quest bearbeite, dann kann ich es mir schenken alle anderen Quests (die funktionieren (sollten )) auch nochmal zu kompilieren!
An denen hat sich normalerweise nichts geändert.
Wie kompiliere ich nun meine quest?
Ich wechsel in den quest Ordner
PHP Code:
cd /root/quest
PHP Code:
ln -s /PFAD/ZU/MEINEN/FILES/share/locale/germany/quest /root/quest
PHP Code:
./qc Ordnername/Questname.quest
Ich spare Zeit!!
Die Ausgabe ist übersichtlich(er).
2.) syserr's live auslesen
Erschreckenderweise ist meine Umfrage hier ähnlich schlecht verlaufen.
(Ja, ok ich habe nur 9 andere gefragt und mich selbst hinzugezählt )
Also 70% laden die syserr Datei jedesmal umständlich mit Filezilla oder ähnlichen FTP-Programmen runter.
10% wussten nichtmal das es eine syserr gibt, schönen Gruß an BlaueShorts!
Mit ein paar Schritten zum live-Debugging:
PHP Code:
MYPATH="/PFAD/ZU/MEINEN/FILES"; #Hier den PFAD ersetzen, danach nichtmehr
#Pfad anlegen
mkdir -p $MYPATH/share/logs ;
#Fakesyserr anlegen (sonst macht ihr eure Shell kaputt)
touch $MYPATH/share/logs/syserr ;
#alias anlegen
echo -e "\nalias syserr tail -f $MYPATH/*/*/syserr" >>/root/.cshrc ;
#In eine neue Shell wechseln, damit der alias funktioniert
su ;
Dazu gebt ihr einfach folgendes in eure Konsole ein:
PHP Code:
syserr
Fazit:
Mit der Liveansicht sehe ich direkt wenn ich Ingame was anklicke, ob es einen Fehler erzeugt!
Wenn dort durchgehend neue Zeilen kommen, habt ihr nicht nur einen Fehler
3.) syserrs von Quests mit Zeilenangabe ansehen
Ich habe zum Verständnis mal einen solchen Fehler reproduziert:
PHP Code:
SYSERR: May 5 20:32:07 :: RunState: LUA_ERROR: locale/germany/quest/object/state/dumper:23: bad argument #1 to `foreach' (table expected, got string)
Viele denken auch, dass sie in ihrer ausgedachte.quest Datei den Fehler an Zeile 23 finden würden.
Dem ist natürlich nicht so. Der Fehler ist in der kompilierten Datei an Zeile 23, das kann in eurem Original aber auch Zeile 30 sein.
Damit ihr leicht rausfindet was in dieser Zeile steht, können wir uns wieder ein Werkzeug zur Hilfe nehmen:
Das quest_debug.sh!
Einbau in wenigen Schritten:
PHP Code:
#Wir brauchen "bash" und den symlink (Standardkonfiguration ist passend)
cd /usr/ports/shells/bash && make install clean
ln -s /usr/local/bin/bash /bin/bash
#Ordner erstellen
mkdir /root/tools ;
#TODO: Ladet das quest_debug.sh in diesen Ordner -> /root/tools
#Rechte vergeben
chmod +x /root/tools/quest_debug.sh ;
#Alias anlegen
echo -e "\nalias qd /root/tools/quest_debug.sh" >>/root/.cshrc ;
#Symlink zu euren Files anlegen
ln -s /PFAD/ZU/MEINEN/FILES /root/mt2;
su ; #Ihr wisst wofür..
Wie benutze ich dieses Werkzeug nun?
Eine kurze Anleitung steht dort wenn ihr
PHP Code:
qd
Auf unser Beispiel bezogen sieht der Aufruf so aus:
Fazit:
Man spart Zeit, da man sich nicht erst die entsprechende Datei per Filezilla runterladen muss und dann noch die passende Zeile suchen...
4.) Ingame Dump-Funktion für Tabellen
Ich selber habe bei komplizierten Tabellen oftmals ein Problem, dass ich nicht weiß,
an welcher Stelle sich jetzt das von mir gesuchte Objekt befindet und da ich Ratespielchen nicht mag,
habe ich ein weiteres Werkzeug speziell hierfür gebaut:
Dumper.quest
Vorbereitung:
In die quest_functions eintragen:
Die Quest Dumper.quest in den Questordner und in der locale_list eintragen und kompilieren.
PHP Code:
cd /root/quest/;
./qc Dumper.quest
echo "Dumper.quest" >>locale_list
Beispielquest zum Test der Funktion:
Meine Frage an euch: Welche Farbe hat mein Auto?
Fazit:
Ich sehe auf einen Blick welche Punkte sich in meiner Tabelle befinden.
Das beste: Ich weiß auch direkt wie ich sie Aufrufen kann
Abschlussworte:
Ich hoffe ich konnte euch ein paar interessante Infos mitteilen,
oder euch zumindest ein wenig erheitern
Sollten noch Fragen offen sein, beantworte ich diese gerne.
Ich habe natürlich noch viel mehr solcher nützlichen Tools,
also bin ich auf euer Feedback gespannt wie es so ankommt.