[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
An object is comprised of something called functions and variables. A function is a set of instructions you can reference by a name. A variable is a kind of container you can store data in for use by the functions. Some functions are already defined by the gamedriver, they are called external functions, or efuns. Functions defined in LPC code are called local functions, or lfuns. To confuse matters further there is a set of functions that count as efuns, but are written in LPC. These functions are called simulated efuns or sfuns.
An efun basically is a function that is impossible to create in LPC.
Take for example the function write()
that allows you to
present text on the screen of a player. It's impossible to make that
up from other functions in LPC, so it has to be in the
gamedriver. This efun is available in all LPC programs. Efuns
also have no idea about what environment they are used in. They don't
care one bit if they are used to simulate strawberry tasting, or as
part of a game.
A function like add_exit()
on the other hand, that adds an exit
in a room is only available in room type objects. It is written in
LPC. The lfuns as a rule are part of the makeup of the environment in
which the objects are used. The example add_exit()
for instance
is well aware of such ideas as directions and travel costs, a very
limited and specific concept.
The function creator()
is a good example of the third
case. It's a function that is available in every object, it returns
information about who created a certain object. This information is
very specific to the environment since it deals with such
notions as code localization. This kind of function is easy to write
in LPC but on the other hand it must be available in all objects, as
if it was an efun. Due to this fact the special object
`/secure/simul_efun.c' is made to be automatically available from
all other objects in the game, you'll find all sfuns in there. This
functionality is perfectly transparent to you; you just use them as
you use any other efun and you don't have to be aware of that it
really is an sfun.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |