=== help abs() ===================================
Syntax: abs (num <x>) => num
=== help acos() ==================================
Syntax: acos (FLOAT <x>) => FLOAT
=== help add_property() ============================
Syntax: add_property (obj <object>, str <prop-name>, <value>, list <info>) => none
=== help add_verb() ===============================
Syntax: add_verb (obj <object>, list <info>, list <args>) => none
If <object> is not valid, or <info> does not specify a legitimate owner and permission bits, or <args> is not a legitimate syntax specification, then `E_INVARG' is retuned.
If the programmer does not have write permission on <object> or if the owner specified by <info> is not the programmer and the programmer is not a wizard, then `E_PERM' is returned.
=== help asin() ===================================
Syntax: asin (FLOAT <x>) => FLOAT
=== help atan() ===================================
Syntax: atan (FLOAT <y> [, FLOAT <x>]) => FLOAT
=== help binary_hash() =============================
Syntax: binary_hash (STR bin-string) => STR
string_hash (STR text) => STR
string_hash(x) == string_hash(y)
then, almost certainly equal(x, y)
This can be useful, for example, in certain networking applications: after sending a large piece of text across a connection, also send across the result of applying string_hash() to the text; if the destination site also applies string_hash() to the text and gets the same result, you can be quite confident that the large text has arrived unchanged.
=== help boot_player() =============================
Syntax: boot_player (obj <player>) => none
If there was a currently-active connection, then the following two verb calls are made before the connection is closed:
<player>:disfunc() <player>.location:disfunc(<player>)It is not an error if either of these verbs do not exist; the corresponding call is simply skipped.
=== help buffered_output_length() =====================
Syntax: buffered_output_length ([OBJ conn]) => INT
=== help builtin-index ==============================
Retorna a lista de comandos do Server Built-in Functions (#1020) - mostrada no início deste documento. C=== help call_function() =============================
Syntax: call_function (STR func-name, arg, ...) => value
=== help caller_perms() ============================
Syntax: caller_perms () => obj
=== help callers() =================================
Syntax: callers () => list
{<this>, <verb-name>, <programmer>, <verb-loc>, <player>}where <this> is the initial value of the variable `this' in that verb, <verb-name> is the name used to invoke that verb, <programmer> is the player with whose permissions that verb is running, <verb-loc> is the object on which that verb is defined, and <player> is the initial value of the variable `player' in that verb.
The first element of the list returned by `callers()' gives information on the verb that called the currently-executing verb, the second element describes the verb that called that one, and so on. The last element of the list describes the first verb called in this task.
=== help ceil() ===================================
Syntax: ceil (FLOAT <x>) => FLOAT
=== help children() ================================
Syntax: parent (obj <object>) => obj
children (obj <object>) => list
=== help chparent() ===============================
Syntax: chparent (obj <object>, obj <new-parent>) => none
Changing an object's parent can have the effect of removing some properties from and adding some other properties to that object and all of its descendants (i.e., its children and its children's children, etc.).
Let <common> be the nearest ancestor that <object> and <new-parent> have in common before the parent of <object> is changed.
Then all properties defined by ancestors of <object> under <common> (that is, those ancestors of <object> that are in turn descendants of <common>) are removed from <object> and all of its descendants.
All properties defined by <new-parent> or its ancestors under <common> are added to <object> and all of its descendants.
As with `create()', the newly-added properties are given the same permission bits as they have on <new-parent>, the owner of each added property is either the owner of the object it's added to (if the `c' permissions bit is set) or the owner of that property on <new-parent>, and the value of each added property is "clear"; see the description of the built-in function `clear_property()' for details. All properties that are not removed or added in the reparenting process are completely unchanged.
=== help clear_property() ===========================
Syntax: clear_property (obj <object>, str <prop-name>) => none
is_clear_property (obj <object>, str <prop-name>) => boolean
If a property is clear, then when the value of that property is queried the value of the parent's property of the same name is returned.
If the parent's property is clear, then the parent's parent's value is examined, and so on.
If <object> is the definer of the property <prop-name>, as opposed to an inheritor of the property, then `clear_property()' returns `E_INVARG'.
=== help connected_players() ========================
Syntax: connected_players () => list
=== help connected_seconds =========================
Syntax: connected_seconds (obj <player>) => num
idle_seconds (obj <player>) => num
=== help connection_name() =========================
Syntax: connection_name (obj <player>) => str
For the BSD UNIX network implementation (the only publicly-available one as of this writing), the string has the form
"<number> from <host>"where <number> is a remarkably uninteresting internal server index and <host> is either the name or decimal TCP address of the host from which the player is connected.
=== help connection_option() ========================
Syntax: connection_option (OBJ conn, STR name) => value
=== help connection_options() =======================
Syntax: connection_options (OBJ conn, STR name) => LIST
Syntax: cos (FLOAT x) => FLOAT sin (FLOAT x) => FLOAT tan (FLOAT x) => FLOATReturns the cosine, sine, or tangent of <x>, respectively.
=== help cosh() ==================================
Syntax: cosh (FLOAT x) => FLOAT
sinh (FLOAT x) => FLOAT
tanh (FLOAT x) => FLOAT
=== help create() =================================
Syntax: create (obj <parent> [, obj <owner>]) => obj
The new object is assigned the least non-negative object number that has not yet been used for a created object. Note that no object number is ever reused, even if the object with that number is recycled.
The owner of the new object is either the programmer (if <owner> is not provided), the new object itself (if <owner> was given as `#-1'), or <owner> (otherwise).
The other built-in properties of the new object are initialized as follows:
name "" location #-1 contents {} programmer 0 wizard 0 r 0 w 0 f 0In addition, the new object inherits all of the other properties on <parent>. These properties have the same permission bits as on <parent>.
If the intended owner of the new object has a property named `ownership_quota' and the value of that property is a number, then `create()' treats that value as a "quota".
If the quota is less than or equal to zero, then the quota is considered to be exhausted and `create()' returns `E_QUOTA' instead of creating an object. Otherwise, the quota is decremented and stored back into the `ownership_quota' property as a part of the creation of the new object.
=== help crypt() ==================================
Syntax: crypt (str <text> [, str <salt>]) => str
Aside from the possibly-random selection of the salt, the encryption algorithm is entirely deterministic. In particular, you can test whether or not a given string is the same as the one used to produced a given piece of encrypted text; simply extract the first two characters of the encrypted text and pass the candidate string and those two characters to `crypt()'.
If the result is identical to the given encrypted text, then you've got a match.
crypt("foobar") => "J3fSFQfgkp26w" crypt("foobar", "J3") => "J3fSFQfgkp26w" crypt("mumble", "J3") => "J3D0.dh.jjmWQ" crypt("foobar", "J4") => "J4AcPxOJ4ncq2"
=== help ctime() ==================================
Syntax: ctime ([num <time>]) => str
Mon Aug 13 19:13:20 1990 PDTIf the current day of the month is less than 10, then an extra blank appears between the month and the day:
Mon Apr 1 14:10:43 1991 PSTIf <time> is not provided, then the current time is used.
Note that `ctime()' interprets <time> for the local time zone of the computer on which the MOO server is running.
=== help db_disk_size() ============================
Syntax: db_disk_size() => INT
=== help decode_binary() ===========================
Syntax: decode_binary (STR bin-string [, fully]) => LIST
If <fully> is proved and true, the list contains only integers, one for each byte represented in lt;bin-string>. Raises E_INVARG if lt;bin-string> is not a properly-formed binary string. (See the LambdaMOO programmer's manual on MOO value types for a full description of binary strings.)
decode_binary("foo") => {"foo"} decode_binary("~~foo") => {"~foo"} decode_binary("foo~0D~0A") => {"foo", 13, 10} decode_binary("foo~0Abar~0Abaz") => {"foo", 10, "bar", 10, "baz"} decode_binary("foo~0D~0A", 1) => {102, 111, 111, 13, 10}
=== help delete_property() ==========================
Syntax: delete_property (obj <object>, str <prop-name>) => none
=== help delete_verb() =============================
Syntax: delete_verb (obj <object>, str <verb-name>) => none
=== help disassemble() =============================
Syntax: disassemble (OBJ object, STR verb-desc) => LIST
If <object> is not valid, then E_INVARG is raised. If <object> does not define a verb as specified by <verb-desc>, then E_VERBNF is raised. If the programmer does not have read permission on the verb in question, then disassemble() raises E_PERM.
=== help dump_database() ==========================
Syntax: dump_database () => none
=== help encode_binary() ===========================
Syntax: encode_binary(arg, ...) => STR
encode_binary("~foo") => "~7Efoo" encode_binary({"foo", 10}, {"bar", 13}) => "foo~0Abar~0D" encode_binary("foo", 10, "bar", 13) => "foo~0Abar~0D"
=== help equal() ==================================
Syntax: equal(value1, value2) => INT
Raises E_ARGS if none, one, or more than two arguments are given.
equal(1, 2) => 0 equal("ChIcKeN", "chicken") => 0 equal("ABC123", "ABC123") => 1
=== help eval() ==================================
Syntax: eval (str <string>) => list
When the fictional verb is invoked, the various built-in variables have values as shown below:
player the same as in the calling verb this #-1 caller the same as the initial value of `this' in the calling verb args {} argstr "" verb "" dobjstr "" dobj #-1 prepstr "" iobjstr "" iobj #-1The fictional verb runs with the permissions of the programmer and as if its `d' permissions bit were on.
eval("return 3 + 4;") => {1, 7}
=== help exp() ===================================
Syntax: exp (FLOAT x) => FLOAT
=== help floatstr() ================================
Syntax: floatstr (FLOAT x, INT precision [, scientific]) => STR
=== help floor() ==================================
Syntax: floor (FLOAT x) => FLOAT
=== help flush_input() =============================
Syntax: flush_input (OBJ conn [, show-messages]) => none
=== help force_input() =============================
Syntax: force_input (OBJ conn, STR line [, at-front]) => none
=== help function_info() ============================
Syntax: function_info ([STR name]) => LIST
=== help idle_seconds() ============================
Syntax: connected_seconds (obj <player>) => num
idle_seconds (obj <player>) => num
=== help index() =================================
Syntax: index (str <str1>, str <str2> [, <case-matters>]) => nu
rindex (str <str1>, str <str2> [, <case-matters>]) => num
index("foobar", "o") => 2 rindex("foobar", "o") => 3 index("foobar", "x") => 0 index("foobar", "oba") => 3 index("Foobar", "foo", 1) => 0
=== help is_clear_property() ========================
Syntax: clear_property (obj <object>, str <prop-name>) => none
is_clear_property (obj <object>, str <prop-name>) => boolean
=== help is_member ==============================
Syntax: is_member (ANY value, LIST list) => INT
Raises E_ARGS if two values are given or if more than two values are given. Raises E_TYPE if the second argument is not a list. Otherwise returns the index of <value> in <list>, or 0 if it's not in there.
is_member(3, {3, 10, 11}) => 1 is_member("a", {"A", "B", "C"}) => 0 is_member("XyZ", {"XYZ", "xyz", "XyZ"}) => 3Each function description is a list of the following form:
{<name>, <min-args>, <max-args>, <types>}where <name> is the name of the built-in function, <min-args> is the minimumnumber of arguments that must be to the function, <max-args> is the maximumnumber of arguments that can be provided to the function or -1 if there is nomaximum, and <types> is a list of <max-args> integers (or <min-args> if <max-args> is -1), each of which represents the type of argument required in the corresponding position.
{"listdelete", 2, 2, {4, 0}} {"suspend", 0, 1, {0}} {"server_log", 1, 2, {2, -1}} {"max", 1, -1, {-2}} {"tostr", 0, -1, {}}`Listdelete()' takes exactly 2 arguments, of which the first must be a list (LIST == 4) and the second must be an integer (INT == 0). `Suspend()' has one optional argument that, if provided, must be an integer. `Server_log()' has one required argument that must be a string (STR == 2) and one optional argument that, if provided, may be of any type. `Max()' requires at least one argument but can take any number above that, and the first argument must be either an integer or a floating-point number; the type(s) required for any other arguments can't be determined from this description. Finally, `tostr()' takes any number of arguments at all, but it can't be determined from this description which argument types would be acceptable in which positions.
=== help is_player() ==============================
Syntax: is_player (obj <object>) => num