-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit be7a78f
Showing
51 changed files
with
1,789 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# Welcome to Evennia! | ||
|
||
This is your game directory, set up to let you start with | ||
your new game right away. An overview of this directory is found here: | ||
https://github.com/evennia/evennia/wiki/Directory-Overview#the-game-directory | ||
|
||
You can delete this readme file when you've read it and you can | ||
re-arrange things in this game-directory to suit your own sense of | ||
organisation (the only exception is the directory structure of the | ||
`server/` directory, which Evennia expects). If you change the structure | ||
you must however also edit/add to your settings file to tell Evennia | ||
where to look for things. | ||
|
||
Your game's main configuration file is found in | ||
`server/conf/settings.py` (but you don't need to change it to get | ||
started). If you just created this directory (which means you'll already | ||
have a `virtualenv` running if you followed the default instructions), | ||
`cd` to this directory then initialize a new database using | ||
|
||
evennia migrate | ||
|
||
To start the server, stand in this directory and run | ||
|
||
evennia start | ||
|
||
This will start the server, logging output to the console. Make | ||
sure to create a superuser when asked. By default you can now connect | ||
to your new game using a MUD client on `localhost`, port `4000`. You can | ||
also log into the web client by pointing a browser to | ||
`http://localhost:4001`. | ||
|
||
# Getting started | ||
|
||
From here on you might want to look at one of the beginner tutorials: | ||
http://github.com/evennia/evennia/wiki/Tutorials. | ||
|
||
Evennia's documentation is here: | ||
https://github.com/evennia/evennia/wiki. | ||
|
||
Enjoy! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
""" | ||
This sub-package holds the template for creating a new game folder. | ||
The new game folder (when running evennia --init) is a copy of this | ||
folder. | ||
""" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# commands/ | ||
|
||
This folder holds modules for implementing one's own commands and | ||
command sets. All the modules' classes are essentially empty and just | ||
imports the default implementations from Evennia; so adding anything | ||
to them will start overloading the defaults. | ||
|
||
You can change the organisation of this directory as you see fit, just | ||
remember that if you change any of the default command set classes' | ||
locations, you need to add the appropriate paths to | ||
`server/conf/settings.py` so that Evennia knows where to find them. | ||
Also remember that if you create new sub directories you must put | ||
(optionally empty) `__init__.py` files in there so that Python can | ||
find your modules. |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,188 @@ | ||
""" | ||
Commands | ||
Commands describe the input the account can do to the game. | ||
""" | ||
|
||
from evennia.commands.command import Command as BaseCommand | ||
|
||
# from evennia import default_cmds | ||
|
||
|
||
class Command(BaseCommand): | ||
""" | ||
Inherit from this if you want to create your own command styles | ||
from scratch. Note that Evennia's default commands inherits from | ||
MuxCommand instead. | ||
Note that the class's `__doc__` string (this text) is | ||
used by Evennia to create the automatic help entry for | ||
the command, so make sure to document consistently here. | ||
Each Command implements the following methods, called | ||
in this order (only func() is actually required): | ||
- at_pre_cmd(): If this returns anything truthy, execution is aborted. | ||
- parse(): Should perform any extra parsing needed on self.args | ||
and store the result on self. | ||
- func(): Performs the actual work. | ||
- at_post_cmd(): Extra actions, often things done after | ||
every command, like prompts. | ||
""" | ||
|
||
pass | ||
|
||
|
||
# ------------------------------------------------------------- | ||
# | ||
# The default commands inherit from | ||
# | ||
# evennia.commands.default.muxcommand.MuxCommand. | ||
# | ||
# If you want to make sweeping changes to default commands you can | ||
# uncomment this copy of the MuxCommand parent and add | ||
# | ||
# COMMAND_DEFAULT_CLASS = "commands.command.MuxCommand" | ||
# | ||
# to your settings file. Be warned that the default commands expect | ||
# the functionality implemented in the parse() method, so be | ||
# careful with what you change. | ||
# | ||
# ------------------------------------------------------------- | ||
|
||
# from evennia.utils import utils | ||
# | ||
# | ||
# class MuxCommand(Command): | ||
# """ | ||
# This sets up the basis for a MUX command. The idea | ||
# is that most other Mux-related commands should just | ||
# inherit from this and don't have to implement much | ||
# parsing of their own unless they do something particularly | ||
# advanced. | ||
# | ||
# Note that the class's __doc__ string (this text) is | ||
# used by Evennia to create the automatic help entry for | ||
# the command, so make sure to document consistently here. | ||
# """ | ||
# def has_perm(self, srcobj): | ||
# """ | ||
# This is called by the cmdhandler to determine | ||
# if srcobj is allowed to execute this command. | ||
# We just show it here for completeness - we | ||
# are satisfied using the default check in Command. | ||
# """ | ||
# return super().has_perm(srcobj) | ||
# | ||
# def at_pre_cmd(self): | ||
# """ | ||
# This hook is called before self.parse() on all commands | ||
# """ | ||
# pass | ||
# | ||
# def at_post_cmd(self): | ||
# """ | ||
# This hook is called after the command has finished executing | ||
# (after self.func()). | ||
# """ | ||
# pass | ||
# | ||
# def parse(self): | ||
# """ | ||
# This method is called by the cmdhandler once the command name | ||
# has been identified. It creates a new set of member variables | ||
# that can be later accessed from self.func() (see below) | ||
# | ||
# The following variables are available for our use when entering this | ||
# method (from the command definition, and assigned on the fly by the | ||
# cmdhandler): | ||
# self.key - the name of this command ('look') | ||
# self.aliases - the aliases of this cmd ('l') | ||
# self.permissions - permission string for this command | ||
# self.help_category - overall category of command | ||
# | ||
# self.caller - the object calling this command | ||
# self.cmdstring - the actual command name used to call this | ||
# (this allows you to know which alias was used, | ||
# for example) | ||
# self.args - the raw input; everything following self.cmdstring. | ||
# self.cmdset - the cmdset from which this command was picked. Not | ||
# often used (useful for commands like 'help' or to | ||
# list all available commands etc) | ||
# self.obj - the object on which this command was defined. It is often | ||
# the same as self.caller. | ||
# | ||
# A MUX command has the following possible syntax: | ||
# | ||
# name[ with several words][/switch[/switch..]] arg1[,arg2,...] [[=|,] arg[,..]] | ||
# | ||
# The 'name[ with several words]' part is already dealt with by the | ||
# cmdhandler at this point, and stored in self.cmdname (we don't use | ||
# it here). The rest of the command is stored in self.args, which can | ||
# start with the switch indicator /. | ||
# | ||
# This parser breaks self.args into its constituents and stores them in the | ||
# following variables: | ||
# self.switches = [list of /switches (without the /)] | ||
# self.raw = This is the raw argument input, including switches | ||
# self.args = This is re-defined to be everything *except* the switches | ||
# self.lhs = Everything to the left of = (lhs:'left-hand side'). If | ||
# no = is found, this is identical to self.args. | ||
# self.rhs: Everything to the right of = (rhs:'right-hand side'). | ||
# If no '=' is found, this is None. | ||
# self.lhslist - [self.lhs split into a list by comma] | ||
# self.rhslist - [list of self.rhs split into a list by comma] | ||
# self.arglist = [list of space-separated args (stripped, including '=' if it exists)] | ||
# | ||
# All args and list members are stripped of excess whitespace around the | ||
# strings, but case is preserved. | ||
# """ | ||
# raw = self.args | ||
# args = raw.strip() | ||
# | ||
# # split out switches | ||
# switches = [] | ||
# if args and len(args) > 1 and args[0] == "/": | ||
# # we have a switch, or a set of switches. These end with a space. | ||
# switches = args[1:].split(None, 1) | ||
# if len(switches) > 1: | ||
# switches, args = switches | ||
# switches = switches.split('/') | ||
# else: | ||
# args = "" | ||
# switches = switches[0].split('/') | ||
# arglist = [arg.strip() for arg in args.split()] | ||
# | ||
# # check for arg1, arg2, ... = argA, argB, ... constructs | ||
# lhs, rhs = args, None | ||
# lhslist, rhslist = [arg.strip() for arg in args.split(',')], [] | ||
# if args and '=' in args: | ||
# lhs, rhs = [arg.strip() for arg in args.split('=', 1)] | ||
# lhslist = [arg.strip() for arg in lhs.split(',')] | ||
# rhslist = [arg.strip() for arg in rhs.split(',')] | ||
# | ||
# # save to object properties: | ||
# self.raw = raw | ||
# self.switches = switches | ||
# self.args = args.strip() | ||
# self.arglist = arglist | ||
# self.lhs = lhs | ||
# self.lhslist = lhslist | ||
# self.rhs = rhs | ||
# self.rhslist = rhslist | ||
# | ||
# # if the class has the account_caller property set on itself, we make | ||
# # sure that self.caller is always the account if possible. We also create | ||
# # a special property "character" for the puppeted object, if any. This | ||
# # is convenient for commands defined on the Account only. | ||
# if hasattr(self, "account_caller") and self.account_caller: | ||
# if utils.inherits_from(self.caller, "evennia.objects.objects.DefaultObject"): | ||
# # caller is an Object/Character | ||
# self.character = self.caller | ||
# self.caller = self.caller.account | ||
# elif utils.inherits_from(self.caller, "evennia.accounts.accounts.DefaultAccount"): | ||
# # caller was already an Account | ||
# self.character = self.caller.get_puppet(self.session) | ||
# else: | ||
# self.character = None |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
""" | ||
Command sets | ||
All commands in the game must be grouped in a cmdset. A given command | ||
can be part of any number of cmdsets and cmdsets can be added/removed | ||
and merged onto entities at runtime. | ||
To create new commands to populate the cmdset, see | ||
`commands/command.py`. | ||
This module wraps the default command sets of Evennia; overloads them | ||
to add/remove commands from the default lineup. You can create your | ||
own cmdsets by inheriting from them or directly from `evennia.CmdSet`. | ||
""" | ||
|
||
from evennia import default_cmds | ||
|
||
|
||
class CharacterCmdSet(default_cmds.CharacterCmdSet): | ||
""" | ||
The `CharacterCmdSet` contains general in-game commands like `look`, | ||
`get`, etc available on in-game Character objects. It is merged with | ||
the `AccountCmdSet` when an Account puppets a Character. | ||
""" | ||
|
||
key = "DefaultCharacter" | ||
|
||
def at_cmdset_creation(self): | ||
""" | ||
Populates the cmdset | ||
""" | ||
super().at_cmdset_creation() | ||
# | ||
# any commands you add below will overload the default ones. | ||
# | ||
|
||
|
||
class AccountCmdSet(default_cmds.AccountCmdSet): | ||
""" | ||
This is the cmdset available to the Account at all times. It is | ||
combined with the `CharacterCmdSet` when the Account puppets a | ||
Character. It holds game-account-specific commands, channel | ||
commands, etc. | ||
""" | ||
|
||
key = "DefaultAccount" | ||
|
||
def at_cmdset_creation(self): | ||
""" | ||
Populates the cmdset | ||
""" | ||
super().at_cmdset_creation() | ||
# | ||
# any commands you add below will overload the default ones. | ||
# | ||
|
||
|
||
class UnloggedinCmdSet(default_cmds.UnloggedinCmdSet): | ||
""" | ||
Command set available to the Session before being logged in. This | ||
holds commands like creating a new account, logging in, etc. | ||
""" | ||
|
||
key = "DefaultUnloggedin" | ||
|
||
def at_cmdset_creation(self): | ||
""" | ||
Populates the cmdset | ||
""" | ||
super().at_cmdset_creation() | ||
# | ||
# any commands you add below will overload the default ones. | ||
# | ||
|
||
|
||
class SessionCmdSet(default_cmds.SessionCmdSet): | ||
""" | ||
This cmdset is made available on Session level once logged in. It | ||
is empty by default. | ||
""" | ||
|
||
key = "DefaultSession" | ||
|
||
def at_cmdset_creation(self): | ||
""" | ||
This is the only method defined in a cmdset, called during | ||
its creation. It should populate the set with command instances. | ||
As and example we just add the empty base `Command` object. | ||
It prints some info. | ||
""" | ||
super().at_cmdset_creation() | ||
# | ||
# any commands you add below will overload the default ones. | ||
# |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# server/ | ||
|
||
This directory holds files used by and configuring the Evennia server | ||
itself. | ||
|
||
Out of all the subdirectories in the game directory, Evennia does | ||
expect this directory to exist, so you should normally not delete, | ||
rename or change its folder structure. | ||
|
||
When running you will find four new files appear in this directory: | ||
|
||
- `server.pid` and `portal.pid`: These hold the process IDs of the | ||
Portal and Server, so that they can be managed by the launcher. If | ||
Evennia is shut down uncleanly (e.g. by a crash or via a kill | ||
signal), these files might erroneously remain behind. If so Evennia | ||
will tell you they are "stale" and they can be deleted manually. | ||
- `server.restart` and `portal.restart`: These hold flags to tell the | ||
server processes if it should die or start again. You never need to | ||
modify those files. | ||
- `evennia.db3`: This will only appear if you are using the default | ||
SQLite3 database; it a binary file that holds the entire game | ||
database; deleting this file will effectively reset the game for | ||
you and you can start fresh with `evennia migrate` (useful during | ||
development). | ||
|
||
## server/conf/ | ||
|
||
This subdirectory holds the configuration modules for the server. With | ||
them you can change how Evennia operates and also plug in your own | ||
functionality to replace the default. You usually need to restart the | ||
server to apply changes done here. The most important file is the file | ||
`settings.py` which is the main configuration file of Evennia. | ||
|
||
## server/logs/ | ||
|
||
This subdirectory holds various log files created by the running | ||
Evennia server. It is also the default location for storing any custom | ||
log files you might want to output using Evennia's logging mechanisms. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# -*- coding: utf-8 -*- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# -*- coding: utf-8 -*- |
Oops, something went wrong.