Register for your free account! | Forgot your password?

You last visited: Today at 07:40

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[HOWTO] Quest Debugging

Discussion on [HOWTO] Quest Debugging within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
Mastermonkey's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 146
Received Thanks: 196
Post [HOWTO] Quest Debugging

Heyho

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:
  1. DONT make WITH make!!
  2. syserr's live auslesen
  3. syserrs von Quests mit Zeilenangabe ansehen
  4. 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 
oder Vergleichbarem ihre Quests kompilieren.

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 
Falls ihr diesen Symlink nicht habt, legt ihn am besten gleich an!
PHP Code:
ln -/PFAD/ZU/MEINEN/FILES/share/locale/germany/quest /root/quest 
und kompiliere meine Quest so
PHP Code:
./qc Ordnername/Questname.quest 
Fazit:
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 -"\nalias syserr tail -f $MYPATH/*/*/syserr" >>/root/.cshrc ;
#In eine neue Shell wechseln, damit der alias funktioniert
su 
Nun habt ihr das live-Debugging vorbereitet und könnt es testen wenn euere Cores laufen.
Dazu gebt ihr einfach folgendes in eure Konsole ein:
PHP Code:
syserr 
(Abbrechen mit "Strg" + "c")

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:
SYSERRMay  5 20:32:07 :: RunStateLUA_ERRORlocale/germany/quest/object/state/dumper:23bad argument #1 to `foreach' (table expected, got string) 
Da viele ihren Quests nach belieben die Namen geben, wissen sie nicht direkt um welche quest es sich handelt.
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 
-/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 +/root/tools/quest_debug.sh ;
#Alias anlegen
echo -"\nalias qd /root/tools/quest_debug.sh" >>/root/.cshrc ;
#Symlink zu euren Files anlegen
ln -/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 
eingebt.
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 
man man man, das solltet ihr aufjedenfall beherrschen...

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.
Attached Files
File Type: rar quest_debug.rar (804 Bytes, 51 views)
File Type: rar Dumper.rar (433 Bytes, 37 views)
File Type: rar Beispiel.rar (493 Bytes, 26 views)
Mastermonkey is offline  
Thanks
23 Users
Old 05/05/2014, 23:44   #2
 
elite*gold: 0
Join Date: Apr 2014
Posts: 186
Received Thanks: 159
Da hat sich der kleine Flo im Affenkostüm wieder mal selbst übertroffen
.PsychoMantis™ is offline  
Thanks
2 Users
Old 05/05/2014, 23:52   #3

 
elite*gold: 0
Join Date: Dec 2008
Posts: 2,825
Received Thanks: 1,538
Auf den ersten Blick super.
Werds morgen mal ausprobieren
.Colossus. is offline  
Thanks
1 User
Old 05/06/2014, 00:37   #4
 
dstyl's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 428
Received Thanks: 192
Sieht sehr gut aus, nur bei dem Live-Debugging komm ich i-wie net klar was du jetzt genau meinst was man machen soll.
Ansonsten, alles durchgelesen und : WOW..
Hätte echt net gedacht das manches so "einfach" sein könnte..
Bspw. das mit dem ./qc PFAD/questname.quest , vielen Dank dafür.
Und ein Danke an BlaueShorts für den Lachflash am "frühen Morgen".
dstyl is offline  
Old 05/06/2014, 19:24   #5
 
elite*gold: 0
Join Date: Jul 2013
Posts: 77
Received Thanks: 30
Sehr Nice
SintoProduction is offline  
Old 11/23/2014, 16:41   #6
 
Mastermonkey's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 146
Received Thanks: 196
Wer hätte es gedacht, dass ich aufgrund eines mangelnden Backups selbst nochmal diesen Post zu lieben lerne.
Manchmal hat es auch einen Nutzen wenn man was bei epvp public macht und wenn es "nur" als Backup ist
Mastermonkey is offline  
Old 11/25/2014, 12:13   #7
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
Heyo,
gute Hinweise, helfen bestimmt einigen, allerdings muss man zu ein paar Punkten was dazu sagen; z.B. das Kompilieren von einzelnen Quests finde ich recht unnötig, da es bei mir schneller geht nur zu schreiben "sh quest.sh" (und - ich weiß nicht ob das bei manchen anders is, aber ist bei mir so - es dauert ca. 0.5 - 1 sekunde)^^ Kann man natürlich machen, aber sofern man die Quest unten in die locale_list einträgt wird ja sowieso diese Quest als letztes angezeigt
Und dazu, dass man in der sys_err erst "die passende Zeile finden muss" muss ich sagen: ich empfehle erstmal alle Fehler aus der sys_err zu beheben, dann gibts auch nix zum Suchen Natürlich hast du Recht, einige haben diese Fehler und sind zu Faul alles rauszusuchen wie sie es beheben können, nur vom Grundsatz her sollte es diese Fehler eigtl. gar nicht geben^^ Anyways, praktisch für einige, die öfter mal Fehler bei Quests haben & bisher nicht wussten, wie sie sie beheben können

Kind Regards
Lefloyd is offline  
Reply

Tags
debug, debugging, dump, quest, syserr


Similar Threads Similar Threads
HowTo - T2 Files Quest neuladen
11/28/2012 - Metin2 Private Server - 5 Replies
Hallo ich zeige euch mal kurz eine symple lösung :D downloadet euch die Datei im Anhang 'make.sh' und fügt sie in /usr/home/game/share/locale/germany/quest ein und dann könnt ihr die Quest neuladen mit ''cd /usr/home/game/share/locale/germany/quest && sh make.sh ohne Probleme =D
[HOWTO]Langweile quest
09/04/2012 - Metin2 PServer Guides & Strategies - 10 Replies
#Closed
The Movie HowTo Quest Bug.
04/05/2011 - 9Dragons - 21 Replies
clip0005.avi 1st Step : Start Quest 2nd Step : do the quest also kill monsters or find items thats is needed 3rd Step : Click Q Then find ur current quest, Then click Give up, 4th Step : You have he Cenel Window up, Then talk to the NPC to finish quest
[HowTo]Quest Übersetzen
03/15/2010 - Metin2 PServer Guides & Strategies - 2 Replies
Alles Kopiert von einem Anderen Forum Also bitte keine THX, Wenn es so einen Thread schon gibt kann der mod ihn ja löschen Also Bevor alle Kiddys sagen haste nicht selbs gemacht *blblalbla* Hab ich auch nicht vom anderen Forum und es gibt viele die das in E*Pvp nicht wissen wie mann ne Quest übersetz Ich weiss nicht ob es Funzt!, VG;!
[HOWTO]Umlaute im Quest
01/03/2010 - Metin2 PServer Guides & Strategies - 3 Replies
Hallo Epvp! Ihr kennt doch sicher das Problem das man statt Umlauten wie ä ö ü und auch ß Codes schreiben muss... Ich weiß wie es einfacher geht und man nicht diese umständlichen Codes in die Quest-Datei Packen muss.. Zuerst besorgt ihr euch Windows Office ( braucht ihr nur wenn ihr die Quest mit Google übersetzer oder so übersetzen wollt) Dann schreibt ihr den Quest ganz normal wie ihr ihn wollt und setzt ä ö ü und ß ganz normal ein. Wenn ihr es jetzt speichert und dann Ingame oder...



All times are GMT +2. The time now is 07:40.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.