From the NannyMUD documentation
2001-12-11
line_control - The controller for a stdline.
/std/basic.c
/std/line/line.h
/include/level.h
set_linename set_default_columns set_line_cost set_lineto_cost add_object
query_linename query_default_columns query_line_cost query_lineto_cost query_local_objects query_entry query_special query_offline
remove_object apply_remote_object do_line_cost send_line_message add_reviewer print_offline_status treat_message reset set_entry set_special set_offline cmd_line cmd_lineto cmd_reply cmd_simple_online cmd_simple_offline cmd_online cmd_offline cmd_linewho cmd_review remote_do_line_cost remote_pass_offline_message remote_treat_message remote_check_one_player remote_reinit remote_prevent_init remote_init remote_prevent_exit remote_exit remote_block_send remote_block_lineto remote_do_lineto
PROPERTY NAME
no_soul - Don't clone a soul in the line's initial setup.DESCRIPTION
Don't clone a soul in the line's initial setup.PROPERTY NAME
__remote - Sets the remote object.DESCRIPTION
Sets the remote object.PROPERTY NAME
wizard_linecost - Wizards must pay to use the line.DESCRIPTION
Wizards must pay to use the line.PROPERTY NAME
prevent_cost_modifiers - Don't check the value_line_cost_hook.DESCRIPTION
Don't check the value_line_cost_hook.PROPERTY NAME
linename_low - Alternate linename for low-priority messages.DESCRIPTION
Alternate linename for low-priority messages.PROPERTY NAME
linename_pri - Alternate linename for high-priority messages.DESCRIPTION
Alternate linename for high-priority messages.PROPERTY NAME
linename_tell - Alternate linename for linetos.DESCRIPTION
Alternate linename for linetos.PROPERTY NAME
alternate_lineplayer - Clone this instead of the standard line player.DESCRIPTION
Clone this instead of the standard line player.PROPERTY NAME
use_reviewer - Use alternate reviewerDESCRIPTION
What add_reviewer() should use instead of the default reviewer; can be either a filename or an object.PROPERTY NAME
level_reports - Default reporting of level advancement and deaths.DESCRIPTION
Use the default reporting of level advancement and deaths.PROPERTY NAME
connect_reports - Default reporting of login and logout.DESCRIPTION
Use the default reporting of login and logout.PROPERTY NAME
line_reports - Default reporting of off-/on-line.DESCRIPTION
Use the default reporting of off-/on-line.NOTE
This is only for simple_online/offline.PROPERTY NAME
ld_reports - Default reporting related to linkdeath.DESCRIPTION
Use the default reporting related to linkdeath (including crumbling).PROPERTY NAME
pk_reports - Default reporting related to playerkilling.DESCRIPTION
Use the default reporting related to playerkilling.PROPERTY NAME
no_feelings - The line does not allow feelings.DESCRIPTION
The line does not allow feelings.PROPERTY NAME
no_emote - The line does not allow emotes.DESCRIPTION
The line does not allow emotes.PROPERTY NAME
no_free_linetos - Paragons don't get free linetos.DESCRIPTION
Paragons don't get free linetos.PROPERTY NAME
no_check_away - Don't check away message when sending a lineto.DESCRIPTION
Don't check a player's away message when sending a lineto.PROPERTY NAME
no_set_reply_to - Don't set the reply-to when sending a lineto or a reply.DESCRIPTION
Don't set the reply-to value when sending a lineto or a reply.
DESCRIPTION
This is the master object for a line-- the controller. All setup of the line happens here.
FUNCTION
NAME
quit_hook - The player logs out.SYNTAX
-DESCRIPTION
This report type also calls a function called remote_signal_login, as a remote function if possible and as a local function otherwise. This function is used by connect_reports.NOTE
All of these functions are executed in the remote object if it exists so if it's different from the line control, you will have to define your own functions instead.NOTE
The init() function in this object has been dummied out; the only way to access the commands linked by add_command() is through the line_inherit facility of calling do_cmd() directly.SEE ALSO
value_line_cost_hook in hooks/value_line_cost_hook
FUNCTION
NAME
connection_hook - A player loses/regains connection.DESCRIPTION
This function is used by ld_reports.NOTE
See the notes from quit_hook().
FUNCTION
NAME
kill_hook - A player kills something.SYNTAX
-DESCRIPTION
This function is used by pk_reports.NOTE
See the notes from quit_hook().
FUNCTION
NAME
die_hook - A player is killed.SYNTAX
-DESCRIPTION
This function is used by pk_reports, or if pk_reports didn't use it, by level_reports.NOTE
See the notes from quit_hook().
FUNCTION
NAME
changed_level_hook - A player advances.SYNTAX
-DESCRIPTION
This function is used by level_reports.NOTE
See the notes from quit_hook().
FUNCTION
NAME
set_linename - Set the name for a line.SYNTAX
void set_linename(string name)DESCRIPTION
This function sets the string that prefaces all text sent on the line.NOTE
The query_linename() function is run through eval(), so you can have a name that periodically changes, if you wish. This feature has not been well-tested though, so you will need to do so before adding this to your line.NOTE
Note that certain messages will only use the name set by this function if the alternate linenames are not set. (see the descriptions of the linename_* properties below)NOTE
Would yield messages like: [Test] Beldin: Hi there. Note the space in set_linename().NOTE
Would result in: [Test]Beldin: Hi there.EXAMPLE
set_linename("[Test] ");EXAMPLE
set_linename("[Test]");
FUNCTION
NAME
query_linename - Show the name for a line.SYNTAX
string query_linename()DESCRIPTION
This returns the linename set by set_linename(), as processed by the eval() function.
FUNCTION
NAME
set_default_columns - Set the line's default column width.SYNTAX
void set_default_columns(int val)DESCRIPTION
This function is probably hardly ever useful. If a player's column data is not set, or is set to a value too low to be meaningful, then the value set by set_default_columns is used to linebreak the messages that come across the line.
FUNCTION
NAME
query_default_columns - Show the line's default column width.SYNTAX
int query_default_columns()DESCRIPTION
Simply returns the default column width for the line. This is not routed through eval.
FUNCTION
NAME
set_line_cost - Set the cost for sending a message.SYNTAX
void set_line_cost(int val|string eval_call)DESCRIPTION
This function sets the cost for sending a message on a line. The line cost is run through eval(). If this is not enough versatility for what you need, the do_line_cost function gives you a couple of ways to further modify the cost of sending a message over the line.NOTE
There are rules on what the minimum cost of sending a message on the line can be. These are mentioned in the RULES section of the helpsystem.SEE ALSO
guilds in RULES/guildsSEE ALSO
clubs in RULES/clubs
FUNCTION
NAME
query_line_cost - Show the cost of sending a message.SYNTAX
int query_line_cost()DESCRIPTION
Show the cost of sending a message, parsed by eval.
FUNCTION
NAME
set_lineto_cost - Set the cost of a 'sendto' message.SYNTAX
void set_lineto_cost(int val|string eval_call)DESCRIPTION
This sets the cost of sending a tell to another player across the line. The cost is run through eval(). Like with the set_line_cost function, you can further modify the cost of a lineto with the do_line_cost() alternatives, if the eval call doesn't give you what you need.NOTE
This is used for replies across the line as well as simple tells, if the reply feature is enabled.
FUNCTION
NAME
query_lineto_cost - Get the cost of a 'sendto' message.SYNTAX
int query_lineto_cost()DESCRIPTION
Show the cost of sending a lineto, parsed by eval().
FUNCTION
NAME
add_object - Add a resident object.SYNTAX
void add_object(mixed ob)DESCRIPTION
Given a filename, this function will clone that object every reset and move it into the line, unless the object is still in the line. You can also give an already cloned object to 'add_object', this is meaningless unless you need to do so to leave the object as a placeholder for your query_local_objects() array.NOTE
You are not able to add objects from /std/lib as in the /std/room analog of this function; likewise, since the line is not subject to clean_up, all of the clean_up related features of add_object used in /std/room are not replicated here.NOTE
You need a ::reset(arg) first in you reset(arg) for this function to work. Also, calling this function _every_ reset will make you wind up with a lot of objects in your room, so don't do that.NOTE
Usually, you want to have the add_object() call in the part of reset executed when the room is created, i.e. reset(0). If then reset is called again with an argument of 0, you get yet another object added.NOTE
This usually happens when some wizard patches reset, without knowing what he/she/it is doing.EXAMPLE
add_object("@add_reviewer(25)");EXAMPLE
add_object("/guilds/foo/mark/guild_feelings");EXAMPLE
add_property("no_soul"); // don't add a default soul add_object("@my_soul()"); // clones and patches a soul
FUNCTION
NAME
remove_object - Removes a resident object.SYNTAX
void remove_object(mixed ob)DESCRIPTION
This function removes a file from the list to clone every reset. Note that it does not destruct already cloned objects.
FUNCTION
NAME
query_local_objects - Show resident objects.SYNTAX
mixed *query_local_objects()DESCRIPTION
Show the list of objects to clone every reset. Note that the array contains both the filename AND the object cloned, if any. See the code itself for information on how this array is ordered.
FUNCTION
NAME
reset - Facilitate add_object() and default setup code.SYNTAX
void reset(int arg)DESCRIPTION
The stdline needs a couple of default features on setup. One of these is just a set_light(1), just in case some code depends on the 'sendroom' being light. The other is to add a soul to the room, unless the property 'no_soul' is set. Objects cloned by add_object() are also restocked at this point, if they have somehow been destructed.NOTE
Your line_control's reset function needs to call ::reset(arg); for the default behaviors described above to work properly.
FUNCTION
NAME
apply_remote_object - Run a remote function.SYNTAX
static varargs mixed apply_remote_object(string function, mixed arg1, mixed arg2, mixed arg3)DESCRIPTION
Run a function in the remote object, if any exists. Actually this function isn't necessary, it was just added to the code to make the use of remote functions in functions more readable.NOTE
The first argument supplied to every remote function is the line controller itself.NOTE
When the remote function is called, the string 'remote_' is added at the head of the function name. For example: apply_remote_object("init",this_player()); gets run as: __remote->remote_init(this_object(),this_player()); but it is only run _if_ a valid remote object exists. Otherwise 0 is returned.NOTE
This function is declared static for security.
FUNCTION
NAME
set_entry - Set a player's line data entry.SYNTAX
void set_entry(object player,mixed *entry)DESCRIPTION
Set a player's line data. The size and construction of the 'entry' array is defined by line.h; read it to see how the data is constructed, and be aware that elements may be added to the array at a later date, if the need arises.NOTE
Calling set_entry() does not call check_one_entry(). In fact, the opposite is the case. So if you do decide to redefine set_entry() to add some security to it, don't call check_one_entry(), or for that matter any other function from line_control which is capable of changing line data.NOTE
Calling set_entry() with a 0 as the second argument will delete a player's data from the database. More importantly, it will do this WITHOUT destructing the line_player or doing any other kind of clean up on the player. The best way to remove a player from the line is by destructing his line mark.NOTE
Handle this function with care! If set_entry determines the data passed to it to be bad, the call will be thrown out! Unless you're _exactly_ sure of what you're doing, it's best to only use set_entry when the second argument is simply an entry you got by using query_entry() and modifying it.
FUNCTION
NAME
query_entry - Show a player's line data.SYNTAX
mixed *query_entry(object player)DESCRIPTION
Return the player's entry in the line database.NOTE
The entry returned is a pointer, not a copy-- be aware of this as you make modifications.
FUNCTION
NAME
set_special - Set a special value for the player.SYNTAX
void set_special(object player,mixed name,mixed value)DESCRIPTION
Set a special value for the player in the database. The only special value used by the default line_control is 'linecursed'. This is just a means of storing internal data for your club/guild which is related to the line. For example, with proper use of some remote functions, you could use set_special to store the number of times a player has sent a message across the line, this login.NOTE
When set_special is run, if the old list of special entries is not a mapping, the old copy of the list is saved in the special value 'old_data'. This is probably not useful, but it's been added just in case.NOTE
The linecursed entry, when set to a true value, prevents the player from sending or receiving messages on the line.NOTE
There is no remove_special, and therefore no way to actually delete an entry other than just setting the value to 0. There is also no way to determine if an entry with a value of 0 has been added to the list. Actually, in both cases, query_entry() can be used to get this data. But it's still clumsier than a remove_special would be. Maybe one will be added someday, if there is a real need.EXAMPLE
set_special(find_player("pyro"),"linecursed",1); // cursedEXAMPLE
set_special(find_player("pyro"),"linecursed",0); // uncursed
FUNCTION
NAME
query_special - Show a special value for a player.SYNTAX
mixed query_special(object player,mixed name)DESCRIPTION
Show the value of a special entry for the player.NOTE
There is no way to distinguish between a 0 resulting from 'no such entry' and a 0 that was set by set_special.NOTE
Arrays, mappings, and possibly strings returned by query_special are shared; this could present a security issue in certain places.
FUNCTION
NAME
set_offline - Set a player's offline status.SYNTAX
varargs void set_offline(object player,int value[,int level])DESCRIPTION
This function is used to set a player's offline status. Offline is handled two ways in stdline. The first of these is to allow players to go entirely offline (except for tells) or entirely online. The second way is to let players turn off certain aspects of the line, but not others. The second way uses values for line messages: tells normal messages low-priority messages high priority messages All of these can be turned off individually, although using the default online and offline commands, mortals can not turn off the high priority messages. In any case, the functioning of those commands is discussed further in the descriptions of each individual function. The way the set_offline function works is this: The first argument is the player to go offline. The second argument is a 1 or a 0. If it's a 1, the player is to go offline. 0 means online. The third argument is optional. If it is not given, then the 1 or 0 means totally offline (except for tells) or totally online, respectively. Otherwise, it is a specific level of messages which are turned off or on. This is accomplished by the use of a bit-flag. The valid values for the third argument to set_offline are defined in line.h; use the tokens provided instead of the actual number, so that if the numbers change your code doesn't break. The tokens are, at the time of this writing: OFFLINE_LOW OFFLINE_PRI OFFLINE_STD OFFLINE_TELL OFFLINE_ALL There is an OFFLINE_NONE token, but this is for internal use only; don't use it in set_offline or query_offline.NOTE
The effect of providing a third argument other than a correct usage of the OFFLINE* tokens is undefined.NOTE
The effect of set_offline can be accomplished without sanity checks by using set_entry instead. As will all other applications of set_entry, use at your own risk!EXAMPLE
set_offline(this_player(),1,OFFLINE_LOW); Turns off low-priority messages like login messages.EXAMPLE
set_offline(this_player(),0); Go totally online.EXAMPLE
set_offline(this_player(),1,OFFLINE_ALL) Go _totally_ offline, even tells.
FUNCTION
NAME
query_offline - Check a player's offline status.SYNTAX
varargs int query_offline(object player[,int level])DESCRIPTION
Returns the offline value for a player. If the optional second argument is provided (e.g. OFFLINE_LOW), then 1 is returned if the player is offline toward that priority level of messages, and 0 is returned otherwise. If the second argument is not given, then the actual value of the offline flag is returned. This will be a number between 0 and OFFLINE_ALL. It is the result of all the offline flags ORed together by the | operator.NOTE
If you're using the simple online and offline commands, then you don't need to give the second argument to query_offline; barring interference through commands like patch, the only value other than 0 that you should get is OFFLINE_ALL.NOTE
A message can get through even if the player is offline, if the remote function remote_pass_offline_message() allows it.NOTE
If the second argument is given and it is something other than a correct usage of the OFFLINE_* tokens, the result from this function may not be meaningful.
FUNCTION
NAME
do_line_cost - Extract a cost for using the line.SYNTAX
int do_line_cost(object player,int cost,string message)DESCRIPTION
This function extracts a cost from the player for using the line. A true result means that the cost was successfully extracted, and a result of 0 means that the player was not able to pay some or all of the costs necessary to use the line, and that proper notify_fail messages have been set. Wizards pay no cost unless the property wizard_linecost has been set. For tells only, paragons pay no cost if the no_free_linetos property has not been set (although that property is checked in cmd_lineto, not do_line_cost). After those two properties have been checked, the remote function remote_do_line_cost is called (see the description of that function). The player may be asked to pay optional, mandatory, or alternative costs at this point. Once the remote_do_line_cost has been dealt with, if the property prevent_cost_modifiers has not been set, then the value_line_cost_hook is evaluated; this works in a similar fashion to remote_do_line_cost (and is documented in the help for hooks), but allows guilds, objects, and other items to require the player to pay extra mandatory, optional, or even alternative costs (for example, the Khorne guild could use a hook that lets their members spend hp instead of sp). Finally, after all the properties, remote functions, and hooks have been checked, if the player has the sp to pay for the message, they do so.
FUNCTION
NAME
remote_do_line_cost - Remote function for do_line_cost.SYNTAX
int remote_do_line_cost(object line, object player, int cost, string message)DESCRIPTION
This is the remote function for do_line_cost. It lets the programmer implement special costs either as an alternative for spell points or above and beyond spell points. Do whatever you need to in this code to handle the line costs; there are three possible results from this function.RETURN VALUES
0: A line cost might have been paid, but the player is still expected to owe spell points. Just keep going.1: The player paid a line cost, and they don't owe sp or anything else. We're finished, let the player send the message.-1: The player was not able to pay a cost that they are required to pay. Don't allow the player to send the message. You must use your own notify_fail() here; no other will be sent.
FUNCTION
NAME
treat_message - Process a message to be sent to a player.SYNTAX
varargs mixed treat_message(string message, object player, int is_tell)DESCRIPTION
This is the function where most of the text processing for messages sent across the line happens. Priority levels of messages are determined and handled here, linebreaking happens here, preventing linecursed players from hearing anything that goes across the line happens here, and other miscellaneous processing of messages (like the old Sadclub's converting of all :), :-), etc to :(, :-(, etc) is also handled here. Other than basic things like addressing message priority levels, linecursing, and offline values, two hooks and three properties are used here. The properties are the alternate linenames used for low priority messages, high priority messages, and incoming linetos. For example, you could have something like this: (Test) Beldinjr enters the game. [Test] Beldin: Hi there. [Test] Beldinjr tells you: this is really an emoteBeldinjr tells you: but this is a real tell [Test] Test Daemon: The pub is now restocked. By doing: set_linename("[Test] "); add_property("linename_low","(Test) "); add_property("linename_tell"," "); add_property("linename_pri","[Test] Test Daemon: "); And all that is handled in treat_message(). The first remote function is remote_pass_offline_message. This does exactly what you might think-- passes a message to a player even though they are offline in respect to that type of message. For example, a fascist guildhead might code the line so that even offline players hear anything he says on the line. :) The second remote function is remote_treat_message. This is used to give the coder a chance to modify what a player hears between when it's sent and when it's received. The Sadclub example mentioned above would operate using this. Other than that, treat_message is largely internal and you probably won't need to know anything more about it. But it is good to know that it's there. Both remote functions are described below. NOTE
It is possible that the second argument to this function, the player, might be 0. This case is probably the line reviewer, which also calls treat_message().
FUNCTION
NAME
remote_pass_offline_message - Allow a message to reach an offline player.SYNTAX
int remote_pass_offline_message(object control, object player, string message, int priority_code)DESCRIPTION
The message is processed in respect to line names, but not linebroken or modified by remote_treat_message. The priority code is a number, as detailed above in the description of set_offline().RETURN VALUES
A true value means the message reaches the player.A false value means the message doesn't reach the player.NOTE
Just because you return 1 here doesn't mean the player is certain to get the message. If they are linecursed they will miss the message anyway, unless it's high-priority.
FUNCTION
NAME
remote_treat_message - Process the text of a message.SYNTAX
string remote_treat_message(object control, string message, string linename, object player)DESCRIPTION
If a string is returned, that message is sent to the player instead of 'message' variable. Note that a return of "" will still allow the message to pass through to the player, as the linename with nothing trailing.NOTE
This is a cpu-intensive function, as it will be executed once for every player that hears the message sent. So if you use it, make sure that this function has as low a cpu-cost as possible. Particularly, avoid using catch, call_other, and long loops if at all possible.
FUNCTION
NAME
send_line_message - Send a system message across the line.SYNTAX
void send_line_message(string message,int priority_flag)DESCRIPTION
This function sends a system message across the line. The first argument is the message to send. The second argument, if true, sends the message at high priority. If the second argument is false, the message is sent at low priority. The logic behind this is that the only messages blocked by OFFLINE_STD should be messages sent from other players. This way a player can turn off chatter on the line without turning off messages sent by the line itself.NOTE
This is a support function separate from the actual 'send' command and players should never have access to it directly.NOTE
Use this message to generate a system message instead of any other means-- this is the one that will be maintained, in respect to how priority codes are handled (it may change in the future).
FUNCTION
NAME
remote_check_one_player - A callback after a player's data has gone through a sanity check.SYNTAX
void remote_check_one_player(object control, object player, mixed *entry)DESCRIPTION
This function is simply here so that when a player's data survives a sanity check, you have the opportunity to run a sanity check of your own.NOTE
This function is never called if the player's database entry fails a sanity test: at that point the entry is erased.
FUNCTION
NAME
remote_prevent_init - remote_prevent_initSYNTAX
int remote_prevent_init(object control, object player, object linemark)DESCRIPTION
It happens when init() is run in a player's line mark. It executes when a player tries to connect to the line for the first time. A true result prevents the player from being allowed to join the line, but their line mark is not destructed.NOTE
remote_signal_login happens even before remote_prevent_init executes.
FUNCTION
NAME
remote_init - remote_initSYNTAX
void remote_init(object control, object player, mixed *database_entry)DESCRIPTION
It happens when init() is run in a player's line mark. It is run after a player has successfully connected to the line for the first time. At this point, the player is totally ready to start sending messages on the line.
FUNCTION
NAME
remote_reinit - remote_reinitSYNTAX
void remote_reinit(object control, object player, object linemark)DESCRIPTION
It happens when init() is run in a player's line mark. It happens when the player has reconnected to the line or when init() has been recalled in the object for some other reason. It is probably not useful, except for sanity checks.
FUNCTION
NAME
remote_signal_login - remote_signal_loginSYNTAX
void remote_signal_login(object control, object player, string init_argument)DESCRIPTION
It runs if connect reports are active. It prints a message to the line, and is triggered by init_arg in the player's line mark.NOTE
remote_signal_login happens even before remote_prevent_init executes.NOTE
remote_signal_login is executed in the line control if no remote object has been defined. This is the only remote function in stdline where this is the case.
FUNCTION
NAME
remote_prevent_exit - remote_prevent_exitSYNTAX
int remote_prevent_exit(object control, object player, object linemark)DESCRIPTION
When remote_prevent_exit returns a true value, it prevents the player's data from being taken off the line even though the linemark is desting; there is probably never a valid reason for this-- rather, it is a sort of last chance to do something that requires that the player's line data still be there.
FUNCTION
NAME
remote_exit - remote_exitSYNTAX
void remote_exit(object control, object player, object linemark)DESCRIPTION
It simply runs immediately after all the data has been removed. It's a chance to do any additional cleanup which is associated with the player leaving the line.
FUNCTION
NAME
cmd_line - The default 'send' command.SYNTAX
int cmd_line(string junk,string message)DESCRIPTION
These are the default commands for stdline. You link them into your line with add_command() in your line_control: add_command("Test %s","@cmd_line()"); Where 'Test' is the send command. See the line object in the examples directory for a more complete example. In the SYNTAX section above, the functions with arguments need an add_command like this: add_command("Test %s","@cmd_line()"); but the ones without arguments need not use the %s. If you want your send command without arguments to be your who command, you can do: add_command("Test %s","@cmd_line()"); add_command("Test","@cmd_linewho()"); If any of the commands are unsatisfactory for any reason, all you need to do is write your own-- you can use the command in /std/line/line_control.c as a template on which to base your new command.NOTE
Note that if you have a remote object other than your line controller defined, you will have to change the code thus: add_command("Test %s","@line_control->cmd_line()"); where line_control is the filename of your line controller.NOTE
If you have add_command()'ed cmd_review, but your line controller has no reviewer in it, cmd_review will still be a valid command, not even producing a 'What?'.NOTE
You probably don't need to define print_offline_status as a command by way of add_command-- cmd_offline and cmd_online both call it already. But you might want to redefine it to give a little bit more or less information, or to give the information in a different layout.
FUNCTION
NAME
cmd_lineto - The default 'sendto' command.SYNTAX
int cmd_lineto(string junk, string destination+message)DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
cmd_reply - The default 'sendreply' command.SYNTAX
int cmd_reply(string junk,string message)DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
cmd_simple_online - The simple way to go online.SYNTAX
int cmd_simple_online()DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
cmd_simple_offline - The simple way to go offline.SYNTAX
int cmd_simple_offline()DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
cmd_online - The smart way to go online.SYNTAX
int cmd_online(string junk,string message)DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
cmd_offline - The smart way to go offline.SYNTAX
int cmd_offline(string junk,string message)DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
cmd_linewho - The default linewho command.SYNTAX
int cmd_linewho()DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
cmd_review - The review command.SYNTAX
int cmd_review()DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
print_offline_status - Print offline status.SYNTAX
int print_offline_status()DESCRIPTION
See the descriptions and notes from cmd_line.
FUNCTION
NAME
remote_block_send - Prevent a message from being sent.SYNTAX
int remote_block_send(object control, object player, string message)DESCRIPTION
remote_block_send, remote_block_lineto and remote_do_lineto are used to get a little bit of extra control over the cmd_line and cmd_lineto functions, so that there won't be as much of a need to redefine them. remote_block_send and remote_block_lineto both block their respective actions from happening when a true value is returned.
FUNCTION
NAME
remote_block_lineto - Prevent a lineto from being sent.SYNTAX
int remote_block_lineto(object control, string target, string message)DESCRIPTION
remote_block_send, remote_block_lineto and remote_do_lineto are used to get a little bit of extra control over the cmd_line and cmd_lineto functions, so that there won't be as much of a need to redefine them. remote_block_send and remote_block_lineto both block their respective actions from happening when a true value is returned.NOTE
The message in remote_block_lineto is unprocessed, while the message in remote_do_lineto is processed. The message in remote_block_lineto is unprocessed.
FUNCTION
NAME
remote_do_lineto - Callback after a lineto has been sent.SYNTAX
void remote_do_lineto(object control, object player, object target_line_player, string message)DESCRIPTION
remote_block_send, remote_block_lineto and remote_do_lineto are used to get a little bit of extra control over the cmd_line and cmd_lineto functions, so that there won't be as much of a need to redefine them. remote_do_lineto executes after the lineto has been sent.NOTE
The message in remote_block_lineto is unprocessed, while the message in remote_do_lineto is processed.
FUNCTION
NAME
add_reviewer - A function for add_object() to add a reviewer to the line.SYNTAX
object add_reviewer(mixed x)DESCRIPTION
This function is the means of adding a reviewer to the line. You do so by the syntax used in the example below. The argument is the number of lines stored in the reviewer. If none is given it defaults to 20. The property use_reviewer can be used to give a non-standard reviewer object.NOTE
Just like with cmd_line() and the other default command functions, if you have a remote object other than your line controller, you must do "@line_control->add_reviewer(20)" instead.EXAMPLE
add_object("@add_reviewer()");EXAMPLE
add_object("@add_reviewer(20)");