| |
| AddToMenu() |
| *********** |
| |
| |
| FUNKTION |
| ======== |
| |
| varargs string AddToMenu(string menuetext, |
| mixed ids, |
| mapping minfo, |
| mixed rate, |
| mixed msg, |
| mixed refresh, |
| mixed delay, |
| mixed d_msg); |
| |
| |
| DEFINIERT IN |
| ============ |
| |
| /std/pub.c |
| |
| |
| ARGUMENTE |
| ========= |
| |
| Die Erlaeuterung der Parameter beschraenkt sich im Folgenden |
| zunaechst auf die Grundfunktionalitaet bei Verwendung fester |
| Werte. Die Moeglichkeiten zur Realisierung dynamischen Verhaltens |
| sind in den Fussnoten zu den einzelnen Parametern beschrieben. |
| |
| menuetext |
| Der Text steht als kurze Beschreibung im Menue. |
| ids |
| String oder Array von Strings, mit denen sich die Speise bzw. das |
| Getraenk beim Bestellen ansprechen laesst. |
| minfo |
| Mapping mit Eintraegen fuer: |
| P_HP LP-Heilung in Punkten [*] |
| P_SP KP-Heilung in Punkten [*] |
| P_FOOD Saettigungswirkung der Speise [*] |
| P_DRINK Saettigungswirkung des Getraenks [*] |
| P_ALCOHOL Alkoholgehalt des Getraenks [*] |
| P_VALUE Preis der Speise bzw. des Getraenks [*] |
| rate [*] |
| Heilrate in Punkten pro HeartBeat. |
| msg [**] |
| Meldung beim Essen: |
| Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere. |
| Verfuegbare Platzhalter sind weiter unten im Abschnitt "Beispiel" |
| dokumentiert. |
| refresh |
| Mapping mit Eintraegen fuer: |
| PR_USER (Kontingent fuer einzelnen Spieler) [*] |
| PR_ALL (Zusatzkontingent fuer alle) [*] |
| Alternativ: 0 fuer unbegrenzte Verfuegbarkeit |
| Einem Key muessen dabei zwei Werte zugeordnet werden: |
| Der Erste gibt die Hoehe des Kontingents an, der Zweite legt |
| fest, alle wieviel reset()s das Kontingent wieder aufgefuellt |
| wird. |
| Verwendung des Mappings erfordert Inkludieren von pub.h. |
| delay [*] |
| Zahl der Sekunden, um die verzoegert die Heilung eintritt, |
| z.B. weil das Essen erst zubereitet werden muss. |
| d_msg [**] |
| Meldung beim Bestellen, falls die Heilung verzoegert wird |
| Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere. |
| |
| |
| |
| [*] Dieser Parameter kann statt eines festen Zahlenwerts mit |
| folgenden Werten gefuellt werden: |
| |
| 1) Mapping <racemodifier> der Form: |
| ([ 0 : <standardwert> , |
| <rasse_1> : <wert_1>, |
| ... , |
| <rasse_n> : <wert_n> ]). |
| Die Eintraege in diesem Mapping werden gegen die Rasse des |
| bestellenden Spielers geprueft und entsprechend die |
| zugehoerigen Werte verwendet. |
| 2) string <func>: Aufruf erfolgt mittels |
| call_other(this_object(), func, empfaenger); |
| gerufen (aber: siehe Hinweise). |
| 3) closure <func>: Aufruf erfolgt mittels |
| funcall(func, empfaenger); |
| 4) Array der Form ({string <obj>, string <func>}) oder |
| ({object <obj>, string <func>}) |
| Aufruf erfolgt mittels |
| call_other(obj, func, empfaenger); |
| (aber: siehe Hinweise). <obj> ist folglich als Objektpointer |
| oder dessen object_name() anzugeben. <func> wird mittels |
| function_exists() auf Existenz ueberprueft. |
| |
| HINWEISE: im Falle von Lieferverzoegerung ("delay") und |
| Preis (P_VALUE) wird bei allen Funktionsaufrufen NICHT der |
| Empfaenger, sondern der Zahler uebergeben. |
| Im Falle der Kontingent-Liste ("refresh") kann nur die |
| verfuegbare Menge modifiziert werden, nicht die Zeit |
| bis zum Wieder-Auffuellen. |
| |
| [**] Zur Erzeugung variabler Meldungen koennen folgende Werte |
| eingetragen werden: |
| |
| 1) closure <func>: Aufruf erfolgt mittels |
| funcall(func, zahler, empfaenger, ident, minfo); |
| 2) string <func>: Aufruf erfolgt mittels |
| call_other(this_object(), func, zahler, empfaenger, |
| ident, minfo); |
| <func> bekommt Zahler und Empfaenger als Objektpointer, |
| ident als String und minfo als Mapping mit den |
| jeweiligen Heilwerten uebergeben. minfo entspricht hierbei |
| den Daten, die als dritter Parameter an AddToMenu() |
| uebergeben wurden. |
| HINWEIS: wenn in das minfo-Mapping keine int-Festwerte |
| eingetragen wurden, werden diese gemaess den Regeln unter [*] |
| geprueft; Funktionen/Closures werden ggf. ausgewertet und |
| deren Rueckgabewerte an die Funktion <func> uebergeben. |
| WICHTIG: Die Rueckgabewerte der Funktion werden nicht |
| ausgewertet. Jeder, der anstatt einer Meldung einen |
| Funktionsaufruf programmiert, muss fuer die Ausgabe der |
| Meldungen selbst sorgen. |
| |
| |
| BESCHREIBUNG |
| ============ |
| |
| Mit dieser Funktion werden Speisen oder Getraenke in die Karte |
| von Kneipen und Restaurants eingefuegt. |
| |
| |
| RUECKGABEWERT |
| ============= |
| |
| Rueckgabewert ist ein String "menuentry%d", wobei %d eine Nummer |
| ist, die darueber Auskunft gibt, den wievielten Eintrag in die |
| interne Karte der Kneipe diese Speise bzw. dieses Getraenk |
| darstellt. Im Prinzip handelt es sich bei dem String um einen Key |
| fuer ein Mapping, in dem die Speisen bzw. Getraenke gespeichert |
| sind. |
| |
| |
| BEMERKUNGEN |
| =========== |
| |
| Die aelteren Funktionen 'AddDrink' bzw. 'AddFood' werden zwar mithilfe |
| dieser maechtigeren Funktion aus Gruenden der Abwaertskompatibilitaet |
| simuliert, sollen aber nicht mehr eingesetzt werden. |
| |
| |
| |
| Die alten Platzhalter && etc. (s.u.) werden weiterhin unterstuetzt, |
| sollten aber fuer bessere Wartbarkeit nicht mehr verwendet werden. |
| |
| |
| |
| Fuer das Testen der Kneipe gibt es in jeder Kneipe den Befehl |
| 'pubinit'. Hiermit lassen sich die Speisen und Getraenke durch- |
| checken. Steht in der Ausgabe bei einem Getraenk/Essen ein FAIL, |
| so wird die entsprechende Speise (oder Getraenk) NICHT an Spieler |
| verkauft. Ausnahmen fuer Speisen/Getraenke mit hoeheren maximalen |
| Werten sind durch Balance-EM zu genehmigen. |
| |
| |
| BEISPIEL |
| ======== |
| |
| include <pub.h> |
| |
| create() |
| { |
| AddToMenu("'Opa's Drachenkeule'",({"drachenkeule","keule"}), |
| ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]), 5, |
| ({"Du isst die Keule mit einem schlechten Gewissen.", |
| "@WER1 isst die Keule mit einem schlechten Gewissen."}), |
| ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]), 9, |
| ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses " |
| "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss " |
| "wohl ein Tippfehler auf der Karte gewesen sein.", |
| "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein " |
| "Stueck aus dessen Keule und braet diese fuer @WEN1."}) ); |
| } |
| |
| 1) Name der Speise (des Getraenks) auf der Karte (bei menue). |
| |
| AddToMenu("'Opa's Drachenkeule'", |
| |
| 2) ids mit denen sich bestellen laesst (z.B. "kaufe keule"). |
| |
| ({"drachen","drachenkeule","keule"}), |
| |
| 3) Heilung fuer LP und KP, Saettigung (P_FOOD oder P_DRINK, |
| P_ALCOHOL nach Belieben setzen), Preis (P_VALUE). |
| HP und SP muessen nicht gleich sein. Speisen und Getraenke, |
| die nur eines von beiden heilen, sind auch moeglich. |
| |
| ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]), |
| |
| 4) Heilung pro Heartbeat (in diesem Beispiel je 5 KP/LP). |
| |
| |
| |
| 5, |
| |
| 5) Meldungen fuer Spieler und Umstehende die bei Genuss ausgege- |
| ben werden (also NICHT der Bestell-Text). |
| |
| ({"Du isst die Keule mit einem schlechten Gewissen.", |
| "@WER1 isst die Keule mit einem schlechten Gewissen."}), |
| |
| Die Ausgabe-Strings werden vor der Ausgabe mit dem Empfaenger |
| als Objekt an replace_personal() uebergeben. Fuer die |
| moeglichen Platzhalter siehe dort. |
| |
| |
| |
| 6) Die Speise ist in ihrer Anzahl begrenzt. Fuer jeden Spieler |
| sind 4 Keulen pro reset() da. Ausserdem gibt es noch einen |
| "Notvorrat" von 20 Keulen, der alle 3 reset()s aufgefuellt |
| wird. Aus diesem (so noch vorhanden) werden die Spieler |
| versorgt, wenn ihr "persoenlicher Vorrat" aufgebraucht ist. |
| |
| ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]), |
| |
| |
| |
| HINWEIS: bei Benutzung des Mappings muss <pub.h> inkludiert |
| werden! |
| |
| |
| |
| Wenn man keine reset-abhaengigen Speisen haben moechte, traegt |
| man hier eine 0 ein. |
| |
| 7) Die Zahl ist die Wartezeit in Sekunden, die der Wirt z.B. fuer |
| die Zubereitung und Auslieferung an den Spieler braucht. |
| |
| 9, |
| |
| |
| |
| 8) Letztendlich die Meldungen an Spieler und Umstehende, die bei Be- |
| stellung (hier 'kaufe keule') ausgegeben werden. |
| |
| ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses " |
| "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss " |
| "wohl ein Tippfehler auf der Karte gewesen sein.", |
| "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein " |
| "Stueck aus dessen Keule und braet diese fuer @WEN1."})); |
| |
| |
| LISTE DER ALTEN PLATZHALTER (DEPRECATED): |
| ========================================= |
| |
| :: |
| && - pl->name(WER,2) &1& - pl->name(WER,2) &2& - |
| pl->name(WESSEN,2) &3& - pl->name(WEM,2) &4& - pl->name(WEN,2) &1# |
| - capitalize(pl->name(WER,2)) &2# - capitalize(pl->name(WESSEN,2)) |
| &3# - capitalize(pl->name(WEM,2)) &4# - capitalize(pl->name(WEN,2)) |
| &! - pl->QueryPronoun(WER) &5& - pl->QueryPronoun(WE); &6& - |
| pl->QueryPronoun(WESSEN) &7& - pl->QueryPronoun(WEM) &8& - |
| pl->QueryPronoun(WEN) &5# - capitalize(pl->QueryPronoun(WER)) &6# - |
| capitalize(pl->QueryPronoun(WESSEN)) &7# - |
| capitalize(pl->QueryPronoun(WEM)) &8# - |
| capitalize(pl->QueryPronoun(WEN)) |
| |
| |
| SIEHE AUCH |
| ========== |
| |
| AddFood(), AddDrink(), /sys/pub.h |
| RemoveFromMenu(), replace_personal() |
| |
| Last modified: Sam, 01. Okt 2011, 23:40 by Arathorn |