Doku: AddInfo und IsGuildMember korrigiert
* AddInfo durchgesehen und mit Beispiel versehen
* Code-Tag in IsGuildMember korrigiert
Change-Id: I709ac1178c59872cf2019e0ef2964edf224d5f08
diff --git a/doc/beispiele/AddInfo/goldklumpen.c b/doc/beispiele/AddInfo/goldklumpen.c
new file mode 100644
index 0000000..a1319e1
--- /dev/null
+++ b/doc/beispiele/AddInfo/goldklumpen.c
@@ -0,0 +1,22 @@
+#pragma strong_types, save_types, rtt_checks, pedantic
+inherit "/std/thing";
+
+#include <properties.h>
+
+protected void create() {
+ if(!clonep(this_object())) return;
+ ::create();
+
+ AddId(({"klumpen", "goldklumpen"}));
+
+ SetProp(P_NAME, "Goldklumpen");
+ SetProp(P_SHORT, "Ein Goldklumpen");
+ SetProp(P_LONG, break_string(
+ "Ein Klumpen Gold. Heb ihn doch auf und frage ein Monster "
+ "nach Gold.", 78));
+
+ SetProp(P_GENDER, MALE);
+ SetProp(P_WEIGHT, 200);
+ SetProp(P_VALUE, 0);
+ SetProp(P_MATERIAL, MAT_GOLD);
+}
diff --git a/doc/beispiele/AddInfo/keks.c b/doc/beispiele/AddInfo/keks.c
new file mode 100644
index 0000000..d0f2ea1
--- /dev/null
+++ b/doc/beispiele/AddInfo/keks.c
@@ -0,0 +1,24 @@
+#pragma strong_types, save_types, rtt_checks, pedantic
+inherit "/std/thing";
+
+#include <properties.h>
+
+protected void create() {
+ if(!clonep(this_object())) return;
+ ::create();
+
+ AddId(({"keks"}));
+
+ SetProp(P_NAME, "Keks");
+ SetProp(P_SHORT, "Ein Keks");
+ SetProp(P_LONG, break_string(
+ "Ein leckerer Keks. Gib ihn doch einem Monster.",78));
+
+ SetProp(P_GENDER, MALE);
+ SetProp(P_WEIGHT, 20);
+ SetProp(P_VALUE, 0);
+ SetProp(P_MATERIAL, MAT_MISC_PLANT);
+
+ AddCmd("iss|mampf|friss&@ID&\n", 0,
+ "Was willst du essen?|Sieht nicht lecker genug aus.^");
+}
diff --git a/doc/beispiele/AddInfo/monster.c b/doc/beispiele/AddInfo/monster.c
new file mode 100644
index 0000000..5ffe117
--- /dev/null
+++ b/doc/beispiele/AddInfo/monster.c
@@ -0,0 +1,99 @@
+#pragma strong_types, save_types, rtt_checks, pedantic
+inherit "std/npc";
+
+#include <properties.h>
+
+protected string query_kekse();
+protected string question_gold();
+
+protected void create() {
+ if (!clonep(this_object())) return;
+ ::create();
+
+ SetProp(P_SHORT, "Ein Monster");
+ SetProp(P_LONG, break_string(
+ "Das Monster sieht dich hungrig an. "
+ "Wahrscheinlich will es Geld oder Kekse.", 78));
+ SetProp(P_NAME, "Monster");
+ SetProp(P_GENDER, NEUTER);
+ AddId("monster");
+
+ SetProp(P_RACE, "Monster");
+ SetProp(P_XP, 0);
+ SetProp(P_BODY, 50);
+ SetProp(P_SIZE, random(20)+110);
+
+ // Beispiel 1
+ AddInfo(DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
+
+ // Beispiel 2
+ AddInfo(({"knete","kohle"}),
+ "sagt: ich habe so etwas nicht.");
+ AddInfo("geld",
+ "Ich habe zwar kein Geld, aber [...] blablabla [...] blub muh quak "
+ "lorem blupsum Umbruch now!",
+ "sagt: ");
+ AddInfo("muenzen",
+ "fluestert: Du willst Geld?",
+ 0,
+ "fluestert @WEM etwas zu.");
+
+ // Beispiel 3
+ AddInfo(({"keks","kekse"}),
+ #'query_kekse, // ein Verweis auf die Funktion
+ "sagt: ");
+
+ // Beispiel 5
+ AddInfo("gold", #'question_gold, "murmelt: ", 1);
+}
+
+protected string query_kekse() {
+ if(present("keks", this_object()))
+ return("Ich hab noch welche. Aetsch!");
+ else if(present("keks", environment()))
+ return("Da liegt einer!");
+ return("Menno. Keine mehr da!");
+}
+
+protected string question_gold() {
+ // wieviel Kohle hat der Spieler
+ int money = this_player()->QueryMoney();
+ string *y = map(deep_inventory(this_player()),
+ function string(object o) {
+ if(o->QueryMaterial(MAT_GOLD)>0 &&
+ strstr(object_name(o),"/items/money")<0 &&
+ o->QueryProp(P_NAME))
+ return o->name(WER,1);
+ })-({0});
+
+ // das geht an alle anderen im Raum, silent bietet sich hier
+ // nicht an, weil es mehrere Moeglichkeiten gibt
+ send_room(environment(),
+ (Name(WER,1)+" murmelt "+
+ this_player()->name(WEM,1)+
+ " etwas zu"+
+ ((money || sizeof(y))?
+ " und glotzt "+this_player()->QueryPronoun(WEN)+" gierig an.":
+ ".")),
+ MT_LOOK|MT_LISTEN,
+ MA_EMOTE, 0, ({this_player()}));
+
+ // und hier die Antwort an den Spieler selbst, mit vielen
+ // Verzweigungen fuer dessen Besitztum
+ return("Ich hab kein Gold bei mir."+
+ ((money || sizeof(y))?
+ " Aber du "+
+ (money?
+ "hast ja jede Menge Kohle bei dir, so etwa "+money+
+ " Muenzen."+
+ (sizeof(y)?
+ " Ausserdem "+
+ ((sizeof(y)==1)?"ist":"sind")+
+ " auch noch "+CountUp(y)+" aus Gold.":
+ ""):
+ (sizeof(y)?"hast ja ein paar Wertsachen dabei: "+
+ CountUp(y)+
+ (sizeof(y)==1?" ist":" sind")+
+ " aus Gold.":"")):
+ ""));
+}
\ No newline at end of file
diff --git a/doc/beispiele/AddInfo/raum.c b/doc/beispiele/AddInfo/raum.c
new file mode 100644
index 0000000..e1570c5
--- /dev/null
+++ b/doc/beispiele/AddInfo/raum.c
@@ -0,0 +1,20 @@
+#pragma strong_types, save_types, rtt_checks, pedantic, no_clone
+inherit "/std/room";
+
+#include <config.h>
+#include <properties.h>
+
+protected void create() {
+ ::create();
+
+ SetProp(P_INT_LONG, "Ein leerer Raum.\n");
+ SetProp(P_INT_SHORT, "Im leeren Raum");
+ SetProp(P_LIGHT, 1);
+
+ AddItem(__PATH__(0)"monster", REFRESH_REMOVE);
+ AddItem(__PATH__(0)"keks", REFRESH_REMOVE);
+ AddItem(__PATH__(0)"goldklumpen", REFRESH_REMOVE);
+ AddItem(__PATH__(0)"zuhoerer", REFRESH_REMOVE);
+
+ AddExit("gilde", "/gilden/abenteurer");
+}
diff --git a/doc/beispiele/AddInfo/zuhoerer.c b/doc/beispiele/AddInfo/zuhoerer.c
new file mode 100644
index 0000000..b46a59c
--- /dev/null
+++ b/doc/beispiele/AddInfo/zuhoerer.c
@@ -0,0 +1,47 @@
+#pragma strong_types, save_types, rtt_checks, pedantic
+inherit "std/npc";
+
+#include <properties.h>
+
+protected void create() {
+ if (!clonep(this_object())) return;
+ ::create();
+
+ SetProp(P_SHORT, "Ein Beobachter");
+ SetProp(P_LONG, break_string(
+ "Der Beobachter hoert und sieht zu.", 78));
+ SetProp(P_NAME, "Beobachter");
+ SetProp(P_GENDER, MALE);
+ AddId("beobachter");
+
+ SetProp(P_RACE, "Beobachter");
+ SetProp(P_XP, 0);
+ SetProp(P_BODY, 50);
+}
+
+private string buf = "";
+
+void empty_buffer() {
+ tell_room(environment(),
+ "\nDer Zuhoerer murmelt: 'Folgendes habe ich gesehen'\n***\n"+
+ buf+
+ "***\n",
+ ({this_object()}));
+ buf = "";
+}
+
+public varargs int ReceiveMsg(string msg, int msg_typ, string msg_action,
+ string msg_prefix, mixed origin) {
+ if (msg_typ & MSG_DONT_WRAP)
+ buf+=sprintf("%s%s", msg_prefix||"", msg);
+ else
+ buf+=sprintf("%s%s\n", msg_prefix||"", msg);
+ if(find_call_out("empty_buffer")<0)
+ call_out("empty_buffer", 1);
+}
+
+void catch_tell(string msg) {
+ buf+=msg;
+ if(find_call_out("empty_buffer")<0)
+ call_out("empty_buffer", 1);
+}