Debuggen mit dtell()


Hallo,

die Funktion dtell() ist für das Debuggen von Code gedacht. Sie ist in der secure/simul_efun.c definiert.

Syntax: dtell(mixed wem,mixed was,string idt);

wem
Magiername oder Array mit mehreren Magiernamen
was
Array, String, Mapping etc.
idt
Optionaler String, der jeder Zeile vorangestellt ist

Mit dtell() kann man sich eigene Texte oder die Inhalte von Variablen anzeigen lassen. dtell() ist AnderLand spezifisch, in anderen MUDs mag es andere Lösungen geben.

Vorteile von dtell(): Mit dtell() kann es nicht passieren, dass der Code buggt, wenn der debuggende Magier nicht anwesend ist. Vor dtell() wurden oft solche Konstrukte benutzt:

  • tell_object(find_player(“magiername”),”Meine Debugmeldug.\n”);
    Buggt, wenn der Magier ‘magiername’ nicht im AnderLand ist. Die Abfrage nach der Anwesenheit des Magiers wird gerne mal unterschlagen (z.B. aus Faulheit).

  • DD(x) tell_object(find_player(“magiername”)||this_object(), x)
    Hat den Nachteil, dass man das irgendwo definieren muss. Hat man kein zentrales Header-File, muss man das immer wieder irgendwo eintragen.

Es gibt bestimmt noch etliche andere Lösungen, doch alle sind irgendwie umständlich oder fehleranfällig.

Mit dtell() kann man Debugging z.B. so realisieren:

public void test()
{
  int i,j;
  mapping map;
  string *arr;

   i = 1;
   j = 2;

   map = (["test": 3]);

   arr = ({1,2,3});

   // Eine Meldung an It
   dtell("it","Mal schauen, ob das Programm bis hierher kommt.");
     // Das sieht dann wie folgt aus:
     //  [DTELL] /players/it/test/test
     //  [DTELL] Mal schauen, ob das Programm bis hierher kommt.

   
   // Eine Meldung an It und Harrypotter
   dtell( ({"it","harrypotter"}),"Meldung an mehrere Magier.");

   // Man kann sich natürlich auch eine Variable anzeigen lassen:
   dtell( ({"it"}),i);
     // Das sieht dann wie folgt aus:
     //  [DTELL] /players/it/test/test
     //  [DTELL] 1

   // Oder auch mehr als eine Vatiable:
   dtell( ({"it"}), ({ i,j }) );
     // Das sieht dann wie folgt aus:
     //  [DTELL] /players/it/test/test
     //  [DTELL] ({ /* #1, size: 2 */
     //  [DTELL]   1,
     //  [DTELL]   2
     //  [DTELL] })

   // natürlich kann man auch Arrays wie Mappings anzeigen:
   dtell( ({"it"}), map);
    // Das sieht dann so aus:
    //  [DTELL] /players/it/test/test
    //  [DTELL] ([ /* #1 */
    //  [DTELL]   "test": 3
    //  [DTELL] ])

   // oder alles auf einmal, indem man diese Variablen ebenfalls in ein
   // Array packt und sich dieses anzeigen lässt:
   dtell( "it", ({i, j, map, arr}) );
     // Das sieht dann so aus:
     //  [DTELL] /players/it/test/test
     //  [DTELL] ({ /* #1, size: 4 */
     //  [DTELL]   1,
     //  [DTELL]   2,
     //  [DTELL]   ([ /* #2 */
     //  [DTELL]     "test": 3
     //  [DTELL]   ]),
     //  [DTELL]   ({ /* #3, size: 3 */
     //  [DTELL]     1,
     //  [DTELL]     2,
     //  [DTELL]     3
     //  [DTELL]   })
     //  [DTELL] })

}

Fazit: Nicht verzweifeln und öfters mal dtell() benutzen 🙂

Gruß,

– It –

Magier: Klassen im Anderland

Bild: Binär

Hallo zusammen!

Das Anderland hat, wie ihr natürlich schon lange wisst, ein recht großes Klassensystem. Dies wurde jetzt nochmal von It und mir erweitert. Die Manpages wurden auch entsprechend überarbeitet:

-> “man AddClass”, “man RemoveClass”, “man is_class_member”.

Ganz neu hierbei sind Klassen nach Bewegung: CL_WALKING, CL_FLYING etc. Dies könnte für kommende Dinge evtl. nicht ganz unwichtig sein. 😉

Bitte denkt weiterhin daran, in jedem neuen NPC die passenden Klassen zu setzen. Dies ist für die Spieler und das Spiel von großer Bedeutung.

Falls Euch auffällt, dass eine wichtige Klasse fehlt, sprecht uns bitte an.

Weiterhin viel Spaß beim Programmieren wünscht Euch

Torin

Magier: Freie Hände

Bild: Binär
Hallo zusammen!

Wieder eine neue Sache, diesmal mit einer kleinen Umstellung verbunden: die (freien) Hände werden neu/anders verwaltet.

Ab sofort solltet ihr, wenn ihr auf freie Hände testet, P_FREE_HANDS nutzen. P_USED_HANDS gibt es nämlich ab nächstem Reboot nicht mehr. 🙂 (Eure Objekte braucht ihr aber nicht zu ändern, das machen It und ich).

Weitere neue Funktionen in diesem Zusammenhang: UseHands() und FreeHands().

Neue Manpages: UseHands, FreeHands, P_HANDS_USED_BY, P_FREE_HANDS

Weiterhin viel Spaß beim Programmieren wünscht euch

Torin

Magier: Wie man als Magier versagt

Bild: AugeHallo,

Heute mal keine Ankündigung einer Änderung oder Weiterentwicklung sondern ein kleiner Artikel über erfolglose Magier.

Magier sind in AnderLand die Programmierer. Sie schreiben die Gegenden, Monster, Objekte wie Waffen und Rüstungen usw…

Im Laufe der Jahre habe ich immer wieder erlebt, wie Magier aufgeben oder ihre Arbeit nie fertig wird.

Hier ein paar Tipps, wie man als Magier so richtig versagt und die Mittel dagegen:

  1. Lege 100 Räume an und versuche, sie danach zu beschreiben. Du wirst feststellen, wie schnell man die Lust verlieren kann.
    Besser: Konzentriere dich auf eine kleine Anzahl von Räumen, mache am Anfang nicht mehr als 10, erweitern kann man immer noch.

     

  2. Nehme Dir gleich zu Anfang eine technisch anspruchsvolle Arbeit vor, obwohl du kaum bis gar nicht programmieren kannst.
    Besser: Mache einfache Sachen. Diese beschreibe aber schön, Stimmung und Inhalt sind fast immer spannender für Spieler als Technik.

     

  3. Du schreibst erstmal wochenlang an dein tolles Magier Tool, du arbeitest an ein ausgefeiltes Logging-System für deine Gegend, du baust dir ein zentrales Steuersystem für deine Gegend, damit du dort jeden Furz einstellen und kontrollieren kannst.
    Besser: Bevor du dich an solche Dinge verausgabst und deine Zeit verschwendest, fange an, deine Gegend zu schreiben!

     

  4. Du schreibst Code wirr, setzt die Klammern ungeschickt oder nur statistisch verteilt und Einrückungen kennst du gar nicht und wunderst dich, dass dir kein Mitmagier helfen will.
    Besser: Schreibe sauberen Code, setze Klammern, wo sie hin gehören, rücke anständig an, dann wird dir auch geholfen.

Mit diesen einfachen Tipps kann man als Magier wunderbar versagen, und glaubt mir, es gibt sehr viele davon, denen es so ergangen ist.

Gruß,

– It –

Magier: Erweiterung Virtueller Compiler

Bild: Binär
Hallo,

hier zur Abwechslung eine Änderung für Magier. Eine wichtige Änderung am virtuellen Compiler.

Früher war es lediglich möglich, einen Virtuellen Compiler in einem Verzeichnis zu haben. Da das AnderLand aber über drei verschiedene verfügt (den normalen virtual_compiler.c, den it_compiler.c und den lvc_compiler.c) kann man nun auch 3 verschiedene Compiler in einem Verzeichnis haben.

Dazu einfach die Namensgebung der Compiler benutzen. D.h.

  1. Für den It-Compiler von It: it_compiler.c
  2. Für den LVC-Compiler von Leika: lvc_compiler.c
  3. Für dem mormalen Virtual-Compiler: virtual_compiler.c oder v_compiler.c

Natürlich kann man auch die alte Namensgebung weiter benutzen und alle Compiler einfach virtual_compiler.c nennen. Für alte Sachen ändert sich also nichts und es ist auch keine Anpassung nötig.

Gruß,

– It –