FUNKTION:
int AddLiquid(int Famount, mixed Fname, mixed Fdescr, int Fprice,
int Fheal, int Fstrength, int Fsoak, int Fweight, int Fnodrink);
DEFINIERT IN:
/sys/lcontainer.h
/std/lcontainer.c
ARGUMENTE:
Famount : amount of liquid to be added to container, if more ignored
or better the container will run over
Fname : name (id) of the liquid, if there is still something inside
the container, it it will be mixed (string or string*)
Fdescr : if somebody wants to look at the liquid he sees it if the
container is open; use some kind of WEM. (string or string*)
-- optional -- (all absolute values, not per litre or so)
Fprice : the price for the added liquid
Fheal : the healing abillity of the added liquid
Fstrength : the strength of the liquid
Fsoak : the soak value of the added liquid
Fweight : weight of the added liquid (if 1000g != 1 litre)
Fnodrink : liquid is undrinkable
BESCHREIBUNG:
Add something in the container:
The return value is amount of liquid successfully added.
A full or closed container returns 0.
If env() cant carry weight of liquid -1 is returned.
BEISPIELE:
- Im Raum kann man einen Lcontainer mit Wasser aus dem Bach fuellen
a) der Lcontainer wird randvoll gefuellt:
int GiveLiquid(string id, int am, object ob)
{
if (id != "wasser" && id != "bach") return 0;
return ob->AddLiquid(am, "wasser", "Wasser", am/10, 0, 0,
am/2);
}
b) nur schluckweises auffuellen (ein Schluck == 20 ml)
int GiveLiquid(string id, int am, object ob)
{
if (id != "wasser" && id != "fass") return 0;
if (wasser<=5)
{
wasser++;
return ob->AddLiquid(20, "wasser",
"Wasser", 2, 15, 0, 5);
}
write(break_string("Das Wasser scheint gerade "
"alle zu sein. Versuche es spaeter "
"wieder."));
return -2;
}
- Ein Haendler fuellt Flaschen mit Wasser:
#include <lcontainer.h>
...
string auffuellen();
...
void create()
{
AddInfo( "fuellst|fuellen|auffuellen&flasche|flaschen",
#'auffuellen);
}
string auffuellen()
{
int am;
object *flaschen, *leer;
flaschen = filter_objects(all_inventory(PL), "QueryProp",
P_LCNT_MAXCAPA);
if (!sizeof(flaschen))
return "sagt: Du hast keine geeignete Flasche bei "
"Dir.";
leer = filter_objects(flaschen, "IsEmpty");
if (!sizeof(leer))
return "sagt: Du hast keine leere Flasche bei Dir.";
am = leer[0]->QueryProp(P_LCNT_MAXCAPA);
if (!PL->AddMoney(QueryProp(P_CURRENCY), -200))
return "Der Haendler schaut Dich geringschaetzig an "
"und meint: Du hast nicht genug Geld bei Dir."
"\n";
if (leer[0]->AddLiquid(am, "wasser", "Wasser", am/10, 0, 0,
am/2))
return "oeffnet einen seiner Wasserschlaeuche und "
"fuellt Dir Deine Flasche mit frischem Wasser.";
return "sagt: Etwas geht nicht.";
}
- eine Tasse nur fuer Tee
int AddLiquid(int Famount, mixed Fname, mixed Fdescr, int Fprice,
int Fheal, int Fstrength, int Fsoak, int Fweight, int Fnodrink)
{
if (stringp(Fname)) Fname = ({Fname});
if (member(Fname, "tee") == -1)
{
write("Diese Tasse ist nur fuer Tee.\n");
return -2;
}
return ::AddLiquid(Famount, Fname, Fdescr, Fprice, Fheal,
Fstrength, Fsoak, Fweight, Fnodrink);
}
- ausserdem in /doc/beispiele/lcontainer
SIEHE AUCH:
lcontainer(STD), PourLiquid(L), GiveLiquid(L), FindLiquid(L),
GetLiquid(L), P_LCONTAINER, P_LCNT_OPENMSG, P_LCNT_DRINKMSG,
P_LCNT_CAPA, P_LCNT_MAXCAPA, P_LCNT_MINIMAL, P_LCNT_CLOSABLE,
IsEmpty(L), AddMoney(L)
|