Platzhalter von AddToMenu() umgestellt.
Fuer bessere Wartbarkeit benutzt der Pub jetzt replace_personal() fuer
Platzhalter. Die alten funktionieren weiterhin, sollten aber nicht mehr
verwendet werden.
Change-Id: Iaf96d9b21ca47e1a921e58fbb612035cad4ecb5b
diff --git a/doc/lfun/AddToMenu b/doc/lfun/AddToMenu
index 82407f4..7ceacbb 100644
--- a/doc/lfun/AddToMenu
+++ b/doc/lfun/AddToMenu
@@ -127,6 +127,9 @@
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,
@@ -143,13 +146,13 @@
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.",
- "&& 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 &&."}) );
+ "Stueck aus dessen Keule und braet diese fuer @WEN1."}) );
}
1) Name der Speise (des Getraenks) auf der Karte (bei menue).
@@ -175,28 +178,11 @@
ben werden (also NICHT der Bestell-Text).
({"Du isst die Keule mit einem schlechten Gewissen.",
- "&& isst die Keule mit einem schlechten Gewissen."}),
+ "@WER1 isst die Keule mit einem schlechten Gewissen."}),
- Verfuegbare Platzhalter sind (pl = this_player()):
-
- && - 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))
+ 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
@@ -224,10 +210,31 @@
"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 &&."}));
+ "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()
+ RemoveFromMenu(), replace_personal()
----------------------------------------------------------------------------
Last modified: Sam, 01. Okt 2011, 23:40 by Arathorn
diff --git a/std/room/pub.c b/std/room/pub.c
index c15e33e..92eb9f8 100644
--- a/std/room/pub.c
+++ b/std/room/pub.c
@@ -71,6 +71,34 @@
set_next_reset(-1);
}
+// Die alten durch die neuen Platzhalter ersetzen
+private string replace_dummy(string str)
+{
+ switch(str)
+ {
+ case "&&": return "@WERU1";
+ case "&1&": return "@WERU1";
+ case "&2&": return "@WESSENU1";
+ case "&3&": return "@WEMU1";
+ case "&4& ": return "@WENU1";
+ case "&1#": return "@WERU1";
+ case "&2#": return "@WESSENU1";
+ case "&3#": return "@WEMU1";
+ case "&4# ": return "@WENU1";
+ case "&!": return "@WERQP1";
+ case "&5&": return "@WERQP1";
+ case "&6&": return "@WESSENQP1";
+ case "&7&": return "@WEMQP1";
+ case "&8&": return "@WENQP1";
+ case "&5#": return "@WERQP1";
+ case "&6#": return "@WESSENQP1";
+ case "&7#": return "@WEMQP1";
+ case "&8#": return "@WENQP1";
+ default: return str;
+ }
+ return str;
+}
+
/* Zur Syntax:
*
* menuetext - Der Text steht im Menue
@@ -136,6 +164,18 @@
for( i=sizeof(ids)-1;i>=0;i-- )
id_list += ([ ids[i] : ident ]);
+ if(pointerp(msg) && sizeof(msg)>=2)
+ {
+ msg[0]=regreplace(msg[0],"[&][1-8,&,#,!]*", #'replace_dummy, 1);
+ msg[1]=regreplace(msg[1],"[&][1-8,&,#,!]*", #'replace_dummy, 1);
+ }
+
+ if(pointerp(d_msg) && sizeof(d_msg)>=2)
+ {
+ d_msg[0]=regreplace(msg[0],"[&][1-8,&,#,!]*", #'replace_dummy, 1);
+ d_msg[1]=regreplace(msg[1],"[&][1-8,&,#,!]*", #'replace_dummy, 1);
+ }
+
if ( intp(refresh) && (refresh>0) )
refresh = ([ PR_ALL : refresh; 1 ]);
else if ( !mappingp(refresh) )
@@ -509,35 +549,16 @@
return 0;
}
-/* Hier hats jede Menge neue Platzhalter */
+
string mess(string str,object pl)
{
- string dummy1, dummy2;
-
if ( !pl )
pl=PL;
if ( !stringp(str) || str=="" )
return str;
- str=implode(explode(str,"&&"),pl->name(WER,2));
- str=implode(explode(str,"&1&"),pl->name(WER,2));
- str=implode(explode(str,"&2&"),pl->name(WESSEN,2));
- str=implode(explode(str,"&3&"),pl->name(WEM,2));
- str=implode(explode(str,"&4&"),pl->name(WEN,2));
- str=implode(explode(str,"&1#"),capitalize(pl->name(WER,2)));
- str=implode(explode(str,"&2#"),capitalize(pl->name(WESSEN,2)));
- str=implode(explode(str,"&3#"),capitalize(pl->name(WEM,2)));
- str=implode(explode(str,"&4#"),capitalize(pl->name(WEN,2)));
- str=implode(explode(str,"&!"),pl->QueryPronoun(WER));
- str=implode(explode(str,"&5&"),pl->QueryPronoun(WER));
- str=implode(explode(str,"&6&"),pl->QueryPronoun(WESSEN));
- str=implode(explode(str,"&7&"),pl->QueryPronoun(WEM));
- str=implode(explode(str,"&8&"),pl->QueryPronoun(WEN));
- str=implode(explode(str,"&5#"),capitalize(pl->QueryPronoun(WER)));
- str=implode(explode(str,"&6#"),capitalize(pl->QueryPronoun(WESSEN)));
- str=implode(explode(str,"&7#"),capitalize(pl->QueryPronoun(WEM)));
- str=implode(explode(str,"&8#"),capitalize(pl->QueryPronoun(WEN)));
+ str=replace_personal(str,({pl}),1);
return break_string(capitalize(str),78,"", BS_LEAVE_MY_LFS);
}