Evennia cheat sheet
I'm creating a MUD using Evennia, a Python framework that is super powerful and extendable. I couldn't find a great cheat sheet online, so here's some notes from their tutorial series. I will update this as I go, and I may end up typesetting this into a PDF.
Evennia commands
These commands are done through the Evennia shell (i.e., through a MUD client). Typically, items can include me for oneself, here for the current location, or a database reference number like #8.
Basic interaction
| Operation | Code |
|---|---|
| Get help |
help [item]
Look around |
look [item]
Get detailed information |
examine [item]
Pick up item |
get [item]
See inventory |
inventory
Use a named exit |
<exit>
Move to a location |
teleport <location>
Global search for something |
find <item/location/exit...>
Creating items
| Operation | Code |
|---|---|
| Create an item (and drop it) |
create[/drop] <item>[:<typeclass]
Add synonyms |
name <item> = <alias>[;<alias>...]
Add descriptions |
desc <item> = <details>
Move item to a location |
teleport <item> = <location>
Delete item |
destroy <item>
Set attribute |
set/<attribute> = <name>
Creating locations
| Operation | Code |
|---|---|
| Add a named location from here |
dig <location> = <exitname>[;<alias>...]
Add a cardinal direction |
tunnel <n[orth]/s/e/w/nw/.../in/out/up/down> = <name>[;<alias>...]
Open from here to a previous location |
open <exitname>[;<alias>...] = <location>
Administration
| Operation | Code |
|---|---|
| Temporarily decrease/restore permissions |
quell/unquell
Add help entry |
sethelp <entryname> = <details>
Reload world and code |
reload
Locks and permissions
Lockfuncs can be defined in server/conf/lockfuncs.py. See Evennia's list of access_types.
| Operation | Code |
|---|---|
| Add/remove lock |
lock[/del] <object> = <lockstring>
Lockstring format |
<accesstype>: [NOT] lockfunc() [[AND/OR] [NOT] lockfunc() ...]
Add/remove account permissions |
perm/account[/del] <user> = <permission>
Account levels | Guest, Player, Helper, Builder, Admin, Developer Add/remove object permissions |
perm[/del] <object> = <permission>
Python commands
These commands can be used in the interactive Python shell (py within a MUD client) or through a Python script.
Creating things
| Operation | Code |
|---|---|
| Create a character, room, exit, or object |
evennia.create_object('<typeclass>', key='<database_key>', [location=...,] [permissions=...,] [locks=...,] [attributes=...,])
Store persistent object values |
<object>.db.<key> = ...
Creating an account, channel, or script |
evennia.create_<account/channel/script>(...)
Object location |
<object>.location
Object contents |
<object>.contents
Exit destination |
<exit>.destination
Add tags |
<object>.tags.add("<tag>"[, category="<category>"])
Creating commands
| Operation | Code |
|---|---|
| Name of command |
<Command>.key
Command function |
<Command>.func()
Argument string provided to command |
<Command>.args
Help function for command | Defined in docstring of
<Command>
Message command caller |
<Command>.msg("<msg>")
Add command to a commandset |
self.add(Command)
in
<CmdSet>.at_cmdset_creation()
Remove command from a commandset |
self.remove(Command)
in
<CmdSet>.at_cmdset_creation()
Searching
See the Evennia docs on Django queries for an explanation on how powerful and flexible Django queries can be.
| Operation | Code |
|---|---|
| Global search for an object |
evennia.search_object("<name>")[0]
Search for an object relative to caller |
<object>.search("<name>")
Search by tag |
evennia.search_tag("<tag>")
Search by location |
evennia.search_object("<name>", candidate=<location>.contents)
Search by attribute |
evennia.search_object("<name>", attribute_name="<attribute>")
Search by typeclass |
evennia.search_object("<name>", typeclass="<typeclass>")
Search by Django query |
<Typeclass>.objects.<all/filter/get/exclude(db_key="<name>")>
Search by Django query (incl. subclasses) |
<Typeclass>.objects.<all_family/filter_family/get_family/exclude_family(db_key="<name>")>
Directories
| Directory | Description |
|---|
commands/
| Commands and command sets
server/
| Server files, see settings at server/conf/settings.py
typeclasses/
| Templates for accounts, characters, scripts, rooms, etc.
web/
| Website and webclient files
world/
| Misc. files, useful for user-defined build scripts and modules
Discussion in the ATmosphere