diff --git a/docs/sphinx/source/wiki/ApacheConfig.rst b/docs/sphinx/source/wiki/ApacheConfig.rst
index 19da9bd6f2..b548bfc05a 100644
--- a/docs/sphinx/source/wiki/ApacheConfig.rst
+++ b/docs/sphinx/source/wiki/ApacheConfig.rst
@@ -113,5 +113,8 @@ are trouble.
::
- /evennia/game/web"> Options +ExecCGI Allow from all
+ /evennia/game/web">
+ Options +ExecCGI
+ Allow from all
+
diff --git a/docs/sphinx/source/wiki/AsyncProcess.rst b/docs/sphinx/source/wiki/AsyncProcess.rst
index 60350ac160..14f7c161ad 100644
--- a/docs/sphinx/source/wiki/AsyncProcess.rst
+++ b/docs/sphinx/source/wiki/AsyncProcess.rst
@@ -17,7 +17,9 @@ Consider this piece of code:
::
- print "before call ..." long_running_function() print "after call ..."
+ print "before call ..."
+ long_running_function()
+ print "after call ..."
When run, this will print ``"before call ..."``, after which the
``long_running_function`` gets to work for however long time. Only once
@@ -43,7 +45,10 @@ use of the ``run_async()`` function in ``src/utils/utils.py``.
::
- from src.utils import utils print "before call ..." utils.run_async(long_running_function) print "after call ..."
+ from src.utils import utils
+ print "before call ..."
+ utils.run_async(long_running_function)
+ print "after call ..."
Now, when running this you will find that the program will not wait
around for ``long_running_function`` to finish. Infact you will see
@@ -74,7 +79,8 @@ called automatically.
::
- def at_return(r): print r
+ def at_return(r):
+ print r
- ``at_err(e)`` (the *errback*) is called if the asynchronous function
fails and raises an exception. This exception is passed to the
@@ -93,7 +99,19 @@ An example of making an asynchronous call from inside a
::
- from src.utils import utils from game.gamesrc.commands.basecommand import Command class CmdAsync(Command): key = "asynccommand" def func(self): def long_running_function(): #[... lots of time-consuming code return final_value def at_return(r): self.caller.msg("The final value is %s" % r) def at_err(e): self.caller.msg("There was an error: %s" % e) # do the async call, setting all callbacks utils.run_async(long_running_function, at_return, at_err)
+ from src.utils import utils
+ from game.gamesrc.commands.basecommand import Command
+
+ class CmdAsync(Command): key = "asynccommand" def func(self):
+
+ def long_running_function():
+ #[... lots of time-consuming code
+ return final_value
+
+ def at_return(r):
+ self.caller.msg("The final value is %s" % r) def at_err(e):
+ self.caller.msg("There was an error: %s" % e) # do the async call, setting all callbacks
+ utils.run_async(long_running_function, at_return, at_err)
That's it - from here on we can forget about ``long_running_function``
and go on with what else need to be done. *Whenever* it finishes, the
diff --git a/docs/sphinx/source/wiki/Attributes.rst b/docs/sphinx/source/wiki/Attributes.rst
index fbc1b00f12..143b1d7cb5 100644
--- a/docs/sphinx/source/wiki/Attributes.rst
+++ b/docs/sphinx/source/wiki/Attributes.rst
@@ -29,7 +29,9 @@ assign data to it. Let's try to save some data to a *Rose* (an
::
- # saving rose.has_thorns = True# getting it back is_ouch = rose.has_thorns
+ # saving
+ rose.has_thorns = True# getting it back
+ is_ouch = rose.has_thorns
Whether this data is saved *persistently* to the database or not (i.e.
if it survives a server reboot) depends on the setting of the variable
@@ -41,7 +43,9 @@ of ``FULL_PERSISTENCE``, use the ``db`` (!DataBase) interface.
::
- # saving rose.db.has_thorns = True # getting it back is_ouch = rose.db.has_thorns
+ # saving
+ rose.db.has_thorns = True # getting it back
+ is_ouch = rose.db.has_thorns
This creates a new ``Attribute`` object and links it uniquely to
``rose``. Using ``db`` ``will`` always save data to the database.
@@ -51,7 +55,9 @@ It works in the same way:
::
- # saving rose.ndb.has_thorns = True # getting it back is_ouch = rose.ndb.has_thorns
+ # saving
+ rose.ndb.has_thorns = True # getting it back
+ is_ouch = rose.ndb.has_thorns
(Using ``ndb`` like this will **NEVER** use the database.)
@@ -156,7 +162,18 @@ Examples of valid attribute data:
::
- # a single value obj.db.test1 = 23 obj.db.test1 = False # a database object (will be stored as dbref) obj.db.test2 = myobj # a list of objects obj.db.test3 = [obj1, 45, obj2, 67] # a dictionary obj.db.test4 = 'str':34, 'dex':56, 'agi':22, 'int':77 # a mixed dictionary/list obj.db.test5 = 'members': [obj1,obj2,obj3], 'enemies':[obj4,obj5]# a tuple will stored and returned as a list [1,2,3,4,5]! obj.db.test6 = (1,2,3,4,5)
+ # a single value
+ obj.db.test1 = 23
+ obj.db.test1 = False
+ # a database object (will be stored as dbref)
+ obj.db.test2 = myobj
+ # a list of objects
+ obj.db.test3 = [obj1, 45, obj2, 67]
+ # a dictionary
+ obj.db.test4 = 'str':34, 'dex':56, 'agi':22, 'int':77
+ # a mixed dictionary/list
+ obj.db.test5 = 'members': [obj1,obj2,obj3], 'enemies':[obj4,obj5]# a tuple will stored and returned as a list [1,2,3,4,5]!
+ obj.db.test6 = (1,2,3,4,5)
Notes
-----
diff --git a/docs/sphinx/source/wiki/BatchCodeProcessor.rst b/docs/sphinx/source/wiki/BatchCodeProcessor.rst
index c6e118bf6f..f2beac8bbe 100644
--- a/docs/sphinx/source/wiki/BatchCodeProcessor.rst
+++ b/docs/sphinx/source/wiki/BatchCodeProcessor.rst
@@ -75,7 +75,13 @@ Below is a version of the example file found in
#
# This is an example batch-code build file for Evennia.
- ##HEADER# This will be included in all other #CODE blocksfrom src.utils import create, search from game.gamesrc.objects.examples import red_button from game.gamesrc.objects import baseobjectslimbo = search.objects(caller, 'Limbo', global_search=True)[0]#CODE (create red button)red_button = create.create_object(red_button.RedButton, key="Red button", location=limbo, aliases=["button"])# caller points to the one running the script caller.msg("A red button was created.")#CODE (create table and chair) table, chairtable = create.create_object(baseobjects.Object, key="Blue Table", location=limbo) chair = create.create_object(baseobjects.Object, key="Blue Chair", location=limbo)string = "A %s and %s were created. If debug was active, they were deleted again." caller.msg(string % (table, chair))
+ ##HEADER# This will be included in all other #CODE blocksfrom src.utils import create, search
+ from game.gamesrc.objects.examples import red_button
+ from game.gamesrc.objects import baseobjectslimbo = search.objects(caller, 'Limbo', global_search=True)[0]#CODE (create red button)red_button = create.create_object(red_button.RedButton, key="Red button",
+ location=limbo, aliases=["button"])# caller points to the one running the script
+ caller.msg("A red button was created.")#CODE (create table and chair) table, chairtable = create.create_object(baseobjects.Object, key="Blue Table", location=limbo)
+ chair = create.create_object(baseobjects.Object, key="Blue Chair", location=limbo)string = "A %s and %s were created. If debug was active, they were deleted again."
+ caller.msg(string % (table, chair))
This uses Evennia's Python API to create three objects in sequence.
@@ -137,7 +143,11 @@ batch-processor version of ``look``).
::
- from src.utils import create, search from game.gamesrc.objects.examples import red_button from game.gamesrc.objects import baseobjectslimbo = search.objects(caller, 'Limbo', global_search=True)[0]red_button = create.create_object(red_button.RedButton, key="Red button", location=limbo, aliases=["button"])# caller points to the one running the script caller.msg("A red button was created.")
+ from src.utils import create, search
+ from game.gamesrc.objects.examples import red_button
+ from game.gamesrc.objects import baseobjectslimbo = search.objects(caller, 'Limbo', global_search=True)[0]red_button = create.create_object(red_button.RedButton, key="Red button",
+ location=limbo, aliases=["button"])# caller points to the one running the script
+ caller.msg("A red button was created.")
Compare with the example code given earlier. Notice how the content of
``#HEADER`` has been pasted at the top of the ``#CODE`` block. Use
diff --git a/docs/sphinx/source/wiki/BatchCommandProcessor.rst b/docs/sphinx/source/wiki/BatchCommandProcessor.rst
index 2b13ef817a..c8c8e39bf7 100644
--- a/docs/sphinx/source/wiki/BatchCommandProcessor.rst
+++ b/docs/sphinx/source/wiki/BatchCommandProcessor.rst
@@ -60,7 +60,21 @@ Below is a version of the example file found in
::
- # # This is an example batch build file for Evennia. ## This creates a red button button@create button:examples.red_button.RedButton# (This comment ends input for @create) # Next command. Let's create something. @set button/desc = This is a large red button. Now and then it flashes in an evil, yet strangely tantalizing way. A big sign sits next to it. It says:----------- Press me! ----------- ... It really begs to be pressed! You know you want to! # (This ends the @set command). Note that single line breaks # and extra whitespace in the argument are ignored. Empty lines # translate into line breaks in the output. # Now let's place the button where it belongs (let's say limbo #2 is # the evil lair in our example)@teleport #2# (This comments ends the @teleport command.) # Now we drop it so others can see it. # The very last command in the file needs not be ended with #.drop button
+ #
+ # This is an example batch build file for Evennia.
+ ## This creates a red button button@create button:examples.red_button.RedButton# (This comment ends input for @create)
+ # Next command. Let's create something. @set button/desc =
+ This is a large red button. Now and then
+ it flashes in an evil, yet strangely tantalizing way. A big sign sits next to it. It says:----------- Press me! ----------- ... It really begs to be pressed! You
+ know you want to!
+
+ # (This ends the @set command). Note that single line breaks
+ # and extra whitespace in the argument are ignored. Empty lines
+ # translate into line breaks in the output.
+ # Now let's place the button where it belongs (let's say limbo #2 is
+ # the evil lair in our example)@teleport #2# (This comments ends the @teleport command.)
+ # Now we drop it so others can see it.
+ # The very last command in the file needs not be ended with #.drop button
To test this, run ``@batchcommand`` on the file. A button will be
created, described and dropped in Limbo. All commands will be executed
diff --git a/docs/sphinx/source/wiki/BuildingQuickstart.rst b/docs/sphinx/source/wiki/BuildingQuickstart.rst
index e228558c1e..0710ddb69f 100644
--- a/docs/sphinx/source/wiki/BuildingQuickstart.rst
+++ b/docs/sphinx/source/wiki/BuildingQuickstart.rst
@@ -101,7 +101,8 @@ you log in as another user than #1 and try to get the box now:
::
- > get box You can't get that.
+ > get box
+ You can't get that.
Think the default error message looks dull? The ``get`` command looks
for an `Attribute `_ named ``get_err_msg`` for
diff --git a/docs/sphinx/source/wiki/Colours.rst b/docs/sphinx/source/wiki/Colours.rst
index d8baa197ef..34e768daab 100644
--- a/docs/sphinx/source/wiki/Colours.rst
+++ b/docs/sphinx/source/wiki/Colours.rst
@@ -26,7 +26,8 @@ mark colour:
::
- This is a %crRed text%cn This is normal text again. %cRThis text has red background%cn this is normal text.
+ This is a %crRed text%cn This is normal text again.
+ %cRThis text has red background%cn this is normal text.
``%c#`` - markup works like a switch that is on until you actively turn
it off with ``%cn`` (this returns the text to your default setting).
diff --git a/docs/sphinx/source/wiki/CommandPrompt.rst b/docs/sphinx/source/wiki/CommandPrompt.rst
index 74e6d274ed..c7844a5d66 100644
--- a/docs/sphinx/source/wiki/CommandPrompt.rst
+++ b/docs/sphinx/source/wiki/CommandPrompt.rst
@@ -15,7 +15,9 @@ of the look command, followed by the prompt. As an example:
::
- > look You see nothing special. HP:10, SP:20, MP: 5
+ > look
+ You see nothing special.
+ HP:10, SP:20, MP: 5
MUD clients can be set to detect prompts like this and display them in
various client-specific ways.
@@ -31,7 +33,12 @@ administration for example).
::
- class MyCommand(Command): [...] def at_post_cmd(self): # we assume health/stamina/magic are just stored # as simple attributes on the character. hp = self.caller.db.hp sp = self.caller.db.sp mp = self.caller.db.mp self.caller.msg("HP: %i, SP: %i, MP: %i" % (hp, sp, mp))
+ class MyCommand(Command): [...] def at_post_cmd(self):
+
+ # we assume health/stamina/magic are just stored
+ # as simple attributes on the character. hp = self.caller.db.hp
+ sp = self.caller.db.sp
+ mp = self.caller.db.mp self.caller.msg("HP: %i, SP: %i, MP: %i" % (hp, sp, mp))
Prompt on the same line
-----------------------
@@ -41,7 +48,8 @@ return of every command, on the same line:
::
- > look HP: 10, SP:20, MP:5 -- You see nothing special.
+ > look
+ HP: 10, SP:20, MP:5 -- You see nothing special.
Now, there is an ``at_pre_cmd()`` hook analogous to the hook from last
section except called just *before* parsing of the command. But putting
@@ -50,7 +58,9 @@ before* the function return:
::
- > look HP:10, SP:20, MP: 5 You see nothing special.
+ > look
+ HP:10, SP:20, MP: 5
+ You see nothing special.
... which might be cool too, but not what we wanted. To have the prompt
appear on the same line as the return this, we need to change how
@@ -63,7 +73,8 @@ player. This is defined in ``src/objects/models.py``, on the
::
- def msg(self, outgoing_message, from_obj=None, data=None): ...
+ def msg(self, outgoing_message, from_obj=None, data=None):
+ ...
The only argument we are interested in here is the ``outgoing_message``,
which contains the text that is about to be passed on to the player. We
@@ -74,7 +85,13 @@ custom Character typeclass add this:
::
- def msg(self, outgoing_message, from_obj=None, data=None): # prepend the prompt in front of the message hp = self.db.hp sp = self.db.sp mp = self.db.mp prompt = "%i, %i, %i -- " % (hp, sp, mp) outgoing_message = prompt + outgoing_message # pass this on to the original msg() method on the database object self.dbobj.msg(outgoing_message, from_obj=from_obj, data=data)
+ def msg(self, outgoing_message, from_obj=None, data=None):
+
+ # prepend the prompt in front of the message hp = self.db.hp
+ sp = self.db.sp
+ mp = self.db.mp
+ prompt = "%i, %i, %i -- " % (hp, sp, mp)
+ outgoing_message = prompt + outgoing_message # pass this on to the original msg() method on the database object self.dbobj.msg(outgoing_message, from_obj=from_obj, data=data)
Note that this solution will *always* give you the prompt, also if you
use admin commands, which could get annoying. You might want to have
diff --git a/docs/sphinx/source/wiki/Commands.rst b/docs/sphinx/source/wiki/Commands.rst
index 127ca31e25..e1a9b54518 100644
--- a/docs/sphinx/source/wiki/Commands.rst
+++ b/docs/sphinx/source/wiki/Commands.rst
@@ -124,17 +124,42 @@ to take one example.
pre-parsed input to actually do whatever the command is supposed to do.
This is the main body of the command.
-Finally, you should always make an informative ```__doc__``
+Finally, you should always make an informative `doc
string `_
-at the top of your class. This string is dynamically read by the `Help
-system `_ to create the help entry for this command.
-You should decide on a way to format your help and stick to that.
+(``__doc__``) at the top of your class. This string is dynamically read
+by the `Help system `_ to create the help entry for
+this command. You should decide on a way to format your help and stick
+to that.
Below is how you define a simple alternative "``look at``" command:
::
- from game.gamesrc.commands.basecommand import Commandclass CmdLookAt(Command): """ An alternative (and silly) look command Usage: look at Where may only be 'here' in this example. This initial string (the __doc__ string) is also used to auto-generate the help for this command ... """ key = "look at" # this is the command name to use aliases = ["la", "look a"] # aliases to the command name locks = "cmd:all()" help_category = "General" def parse(self): "Very trivial parser" self.what = self.args.strip() def func(self): "This actually does things" caller = self.caller if not self.what: caller.msg("Look at what?") elif self.what == 'here': # look at the current location description = caller.location.db.desc caller.msg(description) else: # we don't add any more functionality in this example caller.msg("Sorry, you can only look 'here'...")
+ from game.gamesrc.commands.basecommand import Commandclass CmdLookAt(Command):
+ """
+ An alternative (and silly) look command Usage:
+ look at Where may only be 'here' in this example. This initial string (the __doc__ string)
+ is also used to auto-generate the help
+ for this command ...
+ """
+
+ key = "look at" # this is the command name to use
+ aliases = ["la", "look a"] # aliases to the command name
+ locks = "cmd:all()"
+ help_category = "General" def parse(self):
+ "Very trivial parser"
+ self.what = self.args.strip() def func(self):
+ "This actually does things"
+ caller = self.caller
+ if not self.what:
+ caller.msg("Look at what?")
+ elif self.what == 'here':
+ # look at the current location
+ description = caller.location.db.desc
+ caller.msg(description)
+ else:
+ # we don't add any more functionality in this example
+ caller.msg("Sorry, you can only look 'here'...")
The power of having commands as classes and to separate ``parse()`` and
``func()`` lies in the ability to inherit functionality without having
@@ -191,7 +216,17 @@ rules `_ section).
::
- from src.commands.cmdset import CmdSet from game.gamesrc.commands import mycommandsclass MyCmdSet(CmdSet): def at_cmdset_creation(self): """ The only thing this method should need to do is to add commands to the set. """ self.add(mycommands.MyCommand1()) self.add(mycommands.MyCommand2()) self.add(mycommands.MyCommand3())
+ from src.commands.cmdset import CmdSet
+ from game.gamesrc.commands import mycommandsclass MyCmdSet(CmdSet):
+
+ def at_cmdset_creation(self):
+ """
+ The only thing this method should need
+ to do is to add commands to the set.
+ """
+ self.add(mycommands.MyCommand1())
+ self.add(mycommands.MyCommand2())
+ self.add(mycommands.MyCommand3())
The !CmdSet's ``add()`` method can also take another CmdSet as input. In
this case all the commands from that CmdSet will be appended to this one
@@ -199,7 +234,10 @@ as if you added them line by line:
::
- at_cmdset_creation(): ... self.add(AdditionalCmdSet) # adds all command from this set ...
+ at_cmdset_creation():
+ ...
+ self.add(AdditionalCmdSet) # adds all command from this set
+ ...
If you added your command to an existing cmdset (like to the default
cmdset), that set is already loaded into memory. You need to make the
@@ -261,7 +299,19 @@ look:
::
- from game.gamesrc.commands.basecommand import MuxCommandclass MyCommand(MuxCommand): """ Simple command example Usage: mycommand This command simply echoes text back to the caller. (this string is also the help text for the command) """ key = "mycommand" locks = "cmd:all()" def func(self): "This actually does things" if not self.args: self.caller.msg("You didn't enter anything!") else: self.caller.msg("You gave the string: '%s'" % self.args)
+ from game.gamesrc.commands.basecommand import MuxCommandclass MyCommand(MuxCommand):
+ """
+ Simple command example Usage:
+ mycommand This command simply echoes text back to the caller.
+ (this string is also the help text for the command)
+ """ key = "mycommand"
+ locks = "cmd:all()" def func(self):
+ "This actually does things"
+
+ if not self.args:
+ self.caller.msg("You didn't enter anything!")
+ else:
+ self.caller.msg("You gave the string: '%s'" % self.args)
Next we want to make this command available to us. There are many ways
to do this, but all of them involves putting this command in a *Command
@@ -278,7 +328,10 @@ This is what we have now:
::
from game.gamesrc.commands.basecmdset import CmdSet
- from game.gamesrc.commands import mycommandclass MyCmdSet(CmdSet): key = "MyCmdSet" def at_cmdset_creation(self): self.add(mycommand.MyCommand())
+ from game.gamesrc.commands import mycommandclass MyCmdSet(CmdSet):
+
+ key = "MyCmdSet" def at_cmdset_creation(self):
+ self.add(mycommand.MyCommand())
This new command set could of course contain any number of commands. We
will now temporarily *merge* this command set to your current set. This
@@ -342,7 +395,15 @@ class and you will in fact append it to the existing command set.
::
- # file gamesrc/commands/basecmdset.py ... from game.gamesrc.commands import mycommandclass DefaultSet(BaseDefaultSet): key = DefaultMUX def at_cmdset_creation(self): # this first adds all default commands super(DefaultSet, self).at_cmdset_creation() # all commands added after this point will extend or # overwrite the default commands. self.add(mycommand.MyCommand())
+ # file gamesrc/commands/basecmdset.py
+ ...
+ from game.gamesrc.commands import mycommandclass DefaultSet(BaseDefaultSet):
+
+ key = DefaultMUX def at_cmdset_creation(self): # this first adds all default commands
+ super(DefaultSet, self).at_cmdset_creation() # all commands added after this point will extend or
+ # overwrite the default commands.
+
+ self.add(mycommand.MyCommand())
Again, you need to run the ``@reload`` command to make these changes
available.
@@ -431,7 +492,8 @@ Same-key commands are merged by priority.
::
- # Union A1,A2 + B1,B2,B3,B4 = A1,A2,B3,B4
+ # Union
+ A1,A2 + B1,B2,B3,B4 = A1,A2,B3,B4
**Intersect** - Only commands found in *both* cmdsets (i.e. which have
the same keys) end up in the merged cmdset, with the higher-priority
@@ -439,7 +501,8 @@ cmdset replacing the lower one's commands.
::
- # Intersect A1,A3,A5 + B1,B2,B4,B5 = A1,A5
+ # Intersect
+ A1,A3,A5 + B1,B2,B4,B5 = A1,A5
**Replace** - The commands of the higher-prio cmdset completely replaces
the lower-priority cmdset's commands, regardless of if same-key commands
@@ -447,7 +510,8 @@ exist or not.
::
- # Replace A1,A3 + B1,B2,B4,B5 = A1,A3
+ # Replace
+ A1,A3 + B1,B2,B4,B5 = A1,A3
**Remove** - The high-priority command sets removes same-key commands
from the lower-priority cmdset. They are not replaced with anything, so
@@ -456,7 +520,8 @@ high-prio one as a template.
::
- # Remove A1,A3 + B1,B2,B3,B4,B5 = B2,B4,B5
+ # Remove
+ A1,A3 + B1,B2,B3,B4,B5 = B2,B4,B5
Besides ``priority`` and ``mergetype``, a command set also takes a few
other variables to control how they merge:
@@ -483,7 +548,17 @@ More advanced cmdset example:
::
- class MyCmdSet(CmdSet): key = "MyCmdSet" priority = 4 mergetype = "Replace" key_mergetype = 'MyOtherCmdSet':'Union' def at_cmdset_creation(self): """ The only thing this method should need to do is to add commands to the set. """ self.add(mycommands.MyCommand1()) self.add(mycommands.MyCommand2()) self.add(mycommands.MyCommand3())
+ class MyCmdSet(CmdSet): key = "MyCmdSet"
+ priority = 4
+ mergetype = "Replace"
+ key_mergetype = 'MyOtherCmdSet':'Union' def at_cmdset_creation(self):
+ """
+ The only thing this method should need
+ to do is to add commands to the set.
+ """
+ self.add(mycommands.MyCommand1())
+ self.add(mycommands.MyCommand2())
+ self.add(mycommands.MyCommand3())
System commands
---------------
@@ -534,7 +609,12 @@ command must be added to a cmdset as well before it will work.
::
- from src.commands import cmdhandler from game.gamesrc.commands.basecommand import Commandclass MyNoInputCommand(Command): "Usage: Just press return, I dare you" key = cmdhandler.CMD_NOINPUT def func(self): self.caller.msg("Don't just press return like that, talk to me!")
+ from src.commands import cmdhandler
+ from game.gamesrc.commands.basecommand import Commandclass MyNoInputCommand(Command):
+ "Usage: Just press return, I dare you"
+ key = cmdhandler.CMD_NOINPUT
+ def func(self):
+ self.caller.msg("Don't just press return like that, talk to me!")
How commands actually work
--------------------------
diff --git a/docs/sphinx/source/wiki/Communications.rst b/docs/sphinx/source/wiki/Communications.rst
index 615679f1e8..93232fbda7 100644
--- a/docs/sphinx/source/wiki/Communications.rst
+++ b/docs/sphinx/source/wiki/Communications.rst
@@ -80,7 +80,12 @@ send a non-persistent message, also if you send it a ``Msg`` object.
::
- # assume we have a 'sender' object and a channel named 'mychan'# send and store in database from src.utils import create mymsg = create.create_message(sender, "Hello!", channels=[mychan]) mychan.msg(mymsg)# send a one-time message mychan.msg("Hello!")# send a one-time message created from a Msg object mychan.tempmsg(mymsg)
+ # assume we have a 'sender' object and a channel named 'mychan'# send and store in database
+ from src.utils import create
+ mymsg = create.create_message(sender, "Hello!", channels=[mychan])
+ mychan.msg(mymsg)# send a one-time message
+ mychan.msg("Hello!")# send a one-time message created from a Msg object
+ mychan.tempmsg(mymsg)
As a more advanced note, sending text to channels is a "special
exception" as far as commands are concerned, and you may completely
diff --git a/docs/sphinx/source/wiki/ConnectionScreen.rst b/docs/sphinx/source/wiki/ConnectionScreen.rst
index 966b7106cc..39e8f9d4e9 100644
--- a/docs/sphinx/source/wiki/ConnectionScreen.rst
+++ b/docs/sphinx/source/wiki/ConnectionScreen.rst
@@ -8,7 +8,11 @@ tells you how to connect.
::
==============================================================
- Welcome to Evennia, version SVN-Alpha! If you have an existing account, connect to it by typing: connect If you need to create an account, type (without the <>'s): create "" Enter help for more info. look will re-show this screen. ==============================================================
+ Welcome to Evennia, version SVN-Alpha! If you have an existing account, connect to it by typing:
+ connect
+ If you need to create an account, type (without the <>'s):
+ create "" Enter help for more info. look will re-show this screen.
+ ==============================================================
Effective, but not very exciting. You will most likely want to change
this to be more unique for your game.
diff --git a/docs/sphinx/source/wiki/DefaultCommandHelp.rst b/docs/sphinx/source/wiki/DefaultCommandHelp.rst
index 0255f2cf11..1321542cec 100644
--- a/docs/sphinx/source/wiki/DefaultCommandHelp.rst
+++ b/docs/sphinx/source/wiki/DefaultCommandHelp.rst
@@ -34,7 +34,13 @@ module [: reason] Switches: quiet - Silently boot without informing player port - boot by port number instead of name or dbref Boot a player object from the server. If a reason is supplied it will be echoed to the user unless /quiet is set.
+ @boot Usage
+ @boot[/switches] [: reason] Switches:
+ quiet - Silently boot without informing player
+ port - boot by port number instead of name or dbref
+
+ Boot a player object from the server. If a reason is
+ supplied it will be echoed to the user unless /quiet is set.
@boot
~~~~~
@@ -48,7 +54,13 @@ module [: reason] Switches: quiet - Silently boot without informing player port - boot by port number instead of name or dbref Boot a player object from the server. If a reason is supplied it will be echoed to the user unless /quiet is set.
+ @boot Usage
+ @boot[/switches] [: reason] Switches:
+ quiet - Silently boot without informing player
+ port - boot by port number instead of name or dbref
+
+ Boot a player object from the server. If a reason is
+ supplied it will be echoed to the user unless /quiet is set.
@delplayer
~~~~~~~~~~
@@ -62,7 +74,13 @@ module [: reason] Switch: delobj - also delete the player's currently assigned in-game object. Completely deletes a user from the server database, making their nick and e-mail again available.
+ delplayer - delete player from server Usage:
+ @delplayer[/switch] [: reason]
+
+ Switch:
+ delobj - also delete the player's currently
+ assigned in-game object. Completely deletes a user from the server database,
+ making their nick and e-mail again available.
@delplayer
~~~~~~~~~~
@@ -76,7 +94,13 @@ module [: reason] Switch: delobj - also delete the player's currently assigned in-game object. Completely deletes a user from the server database, making their nick and e-mail again available.
+ delplayer - delete player from server Usage:
+ @delplayer[/switch] [: reason]
+
+ Switch:
+ delobj - also delete the player's currently
+ assigned in-game object. Completely deletes a user from the server database,
+ making their nick and e-mail again available.
@emit
~~~~~
@@ -90,7 +114,19 @@ module , , ... =] @remit [, , ... =] @pemit [, , ... =] Switches: room : limit emits to rooms only (default) players : limit emits to players only contents : send to the contents of matched objects too Emits a message to the selected objects or to your immediate surroundings. If the object is a room, send to its contents. @remit and @pemit are just limited forms of @emit, for sending to rooms and to players respectively.
+ @emit Usage:
+ @emit[/switches] [, , ... =]
+ @remit [, , ... =]
+ @pemit [, , ... =] Switches:
+ room : limit emits to rooms only (default)
+ players : limit emits to players only
+ contents : send to the contents of matched objects too
+
+ Emits a message to the selected objects or to
+ your immediate surroundings. If the object is a room,
+ send to its contents. @remit and @pemit are just
+ limited forms of @emit, for sending to rooms and
+ to players respectively.
@perm
~~~~~
@@ -104,7 +140,14 @@ module [= [,,...]] @perm[/switch] * [= [,,...]] Switches: del : delete the given permission from