Refactored and fixed a lot of bugs. Creates the database but still does not properly load the settings file.
This commit is contained in:
parent
c96c5a1fc7
commit
0c9bf08c5a
15 changed files with 150 additions and 80 deletions
|
|
@ -448,13 +448,15 @@ def init_game_directory(path):
|
||||||
|
|
||||||
# testing the main library import. If there are errors in importing
|
# testing the main library import. If there are errors in importing
|
||||||
# the main library, it should show here.
|
# the main library, it should show here.
|
||||||
importlib.import_module("evennia")
|
evennia = importlib.import_module("evennia")
|
||||||
|
evennia.init()
|
||||||
|
|
||||||
# check all dependencies
|
# check all dependencies
|
||||||
from evennia.utils.utils import check_evennia_dependencies
|
from evennia.utils.utils import check_evennia_dependencies
|
||||||
if not check_evennia_dependencies:
|
if not check_evennia_dependencies:
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
# set up the Evennia executables and log file locations
|
# set up the Evennia executables and log file locations
|
||||||
global SERVER_PY_FILE, PORTAL_PY_FILE
|
global SERVER_PY_FILE, PORTAL_PY_FILE
|
||||||
global SERVER_LOGFILE, PORTAL_LOGFILE, HTTP_LOGFILE
|
global SERVER_LOGFILE, PORTAL_LOGFILE, HTTP_LOGFILE
|
||||||
|
|
@ -772,7 +774,7 @@ def error_check_python_modules():
|
||||||
imp(settings.COMMAND_PARSER)
|
imp(settings.COMMAND_PARSER)
|
||||||
imp(settings.SEARCH_AT_RESULT)
|
imp(settings.SEARCH_AT_RESULT)
|
||||||
imp(settings.SEARCH_AT_MULTIMATCH_INPUT)
|
imp(settings.SEARCH_AT_MULTIMATCH_INPUT)
|
||||||
imp(settings.CONNECTION_SCREEN_MODULE, split=False)
|
imp(settings.CONNECTION_SCREEN_MODULE)
|
||||||
#imp(settings.AT_INITIAL_SETUP_HOOK_MODULE, split=False)
|
#imp(settings.AT_INITIAL_SETUP_HOOK_MODULE, split=False)
|
||||||
for path in settings.LOCK_FUNC_MODULES:
|
for path in settings.LOCK_FUNC_MODULES:
|
||||||
imp(path, split=False)
|
imp(path, split=False)
|
||||||
|
|
|
||||||
|
|
@ -12,54 +12,117 @@ See www.evennia.com for full documentation.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if False:
|
# Delayed loading of properties
|
||||||
|
|
||||||
######################################################################
|
# Typeclasses
|
||||||
# set Evennia version in __version__ property
|
DefaultPlayer = None
|
||||||
######################################################################
|
DefaultGuest = None
|
||||||
import os
|
DefaultObject = None
|
||||||
try:
|
DefaultCharacter = None
|
||||||
|
DefaultRoom = None
|
||||||
|
DefaultExit = None
|
||||||
|
Channel = None
|
||||||
|
Script = None
|
||||||
|
|
||||||
|
# Database models
|
||||||
|
ObjectDB = None
|
||||||
|
PlayerDB = None
|
||||||
|
ScriptDB = None
|
||||||
|
ChannelDB = None
|
||||||
|
Msg = None
|
||||||
|
|
||||||
|
# commands
|
||||||
|
Command = None
|
||||||
|
default_cmds = None
|
||||||
|
syscmdkeys = None
|
||||||
|
|
||||||
|
# search functions
|
||||||
|
search_object = None
|
||||||
|
search_script = None
|
||||||
|
search_player = None
|
||||||
|
search_channel = None
|
||||||
|
search_help = None
|
||||||
|
|
||||||
|
# create functions
|
||||||
|
create_object = None
|
||||||
|
create_script = None
|
||||||
|
create_player = None
|
||||||
|
create_channel = None
|
||||||
|
create_message = None
|
||||||
|
|
||||||
|
# utilities
|
||||||
|
lockfuncs = None
|
||||||
|
tickerhandler = None
|
||||||
|
logger = None
|
||||||
|
utils = None
|
||||||
|
gametime = None
|
||||||
|
ansi = None
|
||||||
|
spawn = None
|
||||||
|
managers = None
|
||||||
|
|
||||||
|
import os
|
||||||
|
try:
|
||||||
__version__ = "Evennia"
|
__version__ = "Evennia"
|
||||||
with os.path.join(open(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "VERSION.txt", 'r') as f:
|
with os.path.join(open(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "VERSION.txt", 'r') as f:
|
||||||
__version__ += " %s" % f.read().strip()
|
__version__ += " %s" % f.read().strip()
|
||||||
except IOError:
|
except IOError:
|
||||||
__version__ += " (unknown version)"
|
__version__ += " (unknown version)"
|
||||||
del os
|
del os
|
||||||
|
|
||||||
######################################################################
|
|
||||||
# Start Evennia API
|
|
||||||
# (easiest is to import this module interactively to explore it)
|
|
||||||
######################################################################
|
|
||||||
|
|
||||||
# help entries
|
def init():
|
||||||
from help.models import HelpEntry
|
"""
|
||||||
|
This is called only after Evennia has fully initialized all its models.
|
||||||
|
"""
|
||||||
|
def imp(path, variable=True):
|
||||||
|
"Helper function"
|
||||||
|
mod, fromlist = path, "None"
|
||||||
|
if variable:
|
||||||
|
mod, fromlist = path.rsplit('.', 1)
|
||||||
|
return __import__(mod, fromlist=[fromlist])
|
||||||
|
|
||||||
# players
|
global DefaultPlayer, DefaultObject, DefaultGuest, DefaultCharacter, DefaultRoom, DefaultExit, Channel, Script
|
||||||
from players.player import DefaultPlayer
|
global ObjectDB, PlayerDB, ScriptDB, ChannelDB, Msg
|
||||||
|
global Command, default_cmds, syscmdkeys
|
||||||
|
global search_object, search_script, search_player, search_channel, search_help
|
||||||
|
global create_object, create_script, create_player, create_channel, create_message
|
||||||
|
global lockfuncs, tickerhandler, logger, utils, gametime, ansi, spawn, managers
|
||||||
|
|
||||||
|
from players.players import DefaultPlayer
|
||||||
|
from players.players import DefaultGuest
|
||||||
|
from objects.objects import DefaultObject
|
||||||
|
from objects.objects import DefaultCharacter
|
||||||
|
from objects.objects import DefaultRoom
|
||||||
|
from objects.objects import DefaultExit
|
||||||
|
from comms.comms import Channel
|
||||||
|
from scripts.scripts import Script
|
||||||
|
|
||||||
|
# Database models
|
||||||
|
from objects.models import ObjectDB
|
||||||
from players.models import PlayerDB
|
from players.models import PlayerDB
|
||||||
|
from scripts.models import ScriptDB
|
||||||
|
from comms.models import ChannelDB
|
||||||
|
from comms.models import Msg
|
||||||
|
|
||||||
# commands
|
# commands
|
||||||
from commands.command import Command
|
from commands.command import Command
|
||||||
from commands.cmdset import CmdSet
|
|
||||||
# (default_cmds is created below)
|
|
||||||
|
|
||||||
# locks
|
# search functions
|
||||||
|
from utils.search import search_object
|
||||||
|
from utils.search import search_script
|
||||||
|
from utils.search import search_player
|
||||||
|
from utils.search import search_channel
|
||||||
|
from utils.search import search_help
|
||||||
|
|
||||||
|
# create functions
|
||||||
|
from utils.create import create_object
|
||||||
|
from utils.create import create_script
|
||||||
|
from utils.create import create_player
|
||||||
|
from utils.create import create_channel
|
||||||
|
from utils.create import create_message
|
||||||
|
|
||||||
|
# utilities
|
||||||
from locks import lockfuncs
|
from locks import lockfuncs
|
||||||
|
|
||||||
# scripts
|
|
||||||
from scripts.scripts import Script
|
|
||||||
|
|
||||||
# comms
|
|
||||||
from comms.models import Msg, ChannelDB
|
|
||||||
from comms.comms import Channel
|
|
||||||
|
|
||||||
# objects
|
|
||||||
from objects.objects import DefaultObject, DefaultCharacter, DefaultRoom, DefaultExit
|
|
||||||
|
|
||||||
# utils
|
|
||||||
|
|
||||||
from utils.search import *
|
|
||||||
from utils.create import *
|
|
||||||
from scripts.tickerhandler import TICKER_HANDLER as tickerhandler
|
from scripts.tickerhandler import TICKER_HANDLER as tickerhandler
|
||||||
from utils import logger
|
from utils import logger
|
||||||
from utils import utils
|
from utils import utils
|
||||||
|
|
@ -67,25 +130,7 @@ if False:
|
||||||
from utils import ansi
|
from utils import ansi
|
||||||
from utils.spawner import spawn
|
from utils.spawner import spawn
|
||||||
|
|
||||||
######################################################################
|
# API containers
|
||||||
# API containers and helper functions
|
|
||||||
######################################################################
|
|
||||||
|
|
||||||
def help(header=False):
|
|
||||||
"""
|
|
||||||
Main Evennia API.
|
|
||||||
ev.help() views API contents
|
|
||||||
ev.help(True) or ev.README shows module instructions
|
|
||||||
|
|
||||||
See www.evennia.com for the full documentation.
|
|
||||||
"""
|
|
||||||
if header:
|
|
||||||
return __doc__
|
|
||||||
else:
|
|
||||||
import ev
|
|
||||||
names = [str(var) for var in ev.__dict__ if not var.startswith('_')]
|
|
||||||
return ", ".join(names)
|
|
||||||
|
|
||||||
|
|
||||||
class _EvContainer(object):
|
class _EvContainer(object):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -1814,7 +1814,7 @@ class CmdExamine(ObjManipCommand):
|
||||||
obj_name = objdef['name']
|
obj_name = objdef['name']
|
||||||
obj_attrs = objdef['attrs']
|
obj_attrs = objdef['attrs']
|
||||||
|
|
||||||
self.player_mode = utils.inherits_from(caller, "evennia.players.player.Player") or \
|
self.player_mode = utils.inherits_from(caller, "evennia.players.players.Player") or \
|
||||||
"player" in self.switches or obj_name.startswith('*')
|
"player" in self.switches or obj_name.startswith('*')
|
||||||
if self.player_mode:
|
if self.player_mode:
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ from evennia.commands.default.muxcommand import MuxPlayerCommand
|
||||||
from evennia.utils import utils, create, search, prettytable
|
from evennia.utils import utils, create, search, prettytable
|
||||||
|
|
||||||
from settings import MAX_NR_CHARACTERS, MULTISESSION_MODE
|
from settings import MAX_NR_CHARACTERS, MULTISESSION_MODE
|
||||||
|
|
||||||
# limit symbol import for API
|
# limit symbol import for API
|
||||||
__all__ = ("CmdOOCLook", "CmdIC", "CmdOOC", "CmdPassword", "CmdQuit",
|
__all__ = ("CmdOOCLook", "CmdIC", "CmdOOC", "CmdPassword", "CmdQuit",
|
||||||
"CmdCharCreate", "CmdEncoding", "CmdSessions", "CmdWho",
|
"CmdCharCreate", "CmdEncoding", "CmdSessions", "CmdWho",
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ from django.conf import settings
|
||||||
from django.utils.unittest import TestCase
|
from django.utils.unittest import TestCase
|
||||||
from evennia.server.serversession import ServerSession
|
from evennia.server.serversession import ServerSession
|
||||||
from evennia.objects.objects import DefaultObject, DefaultCharacter
|
from evennia.objects.objects import DefaultObject, DefaultCharacter
|
||||||
from evennia.players.player import DefaultPlayer
|
from evennia.players.players import DefaultPlayer
|
||||||
from evennia.utils import create, ansi
|
from evennia.utils import create, ansi
|
||||||
from evennia.server.sessionhandler import SESSIONS
|
from evennia.server.sessionhandler import SESSIONS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ Player that are controlled by the server.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from evennia.players.player import DefaultPlayer
|
from evennia.players.players import DefaultPlayer
|
||||||
from evennia.scripts.scripts import Script
|
from evennia.scripts.scripts import Script
|
||||||
from evennia.commands.command import Command
|
from evennia.commands.command import Command
|
||||||
from evennia.commands.cmdset import CmdSet
|
from evennia.commands.cmdset import CmdSet
|
||||||
|
|
|
||||||
|
|
@ -663,7 +663,7 @@ class DefaultPlayer(PlayerDB):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Guest(DefaultPlayer):
|
class DefaultGuest(DefaultPlayer):
|
||||||
"""
|
"""
|
||||||
This class is used for guest logins. Unlike Players, Guests and their
|
This class is used for guest logins. Unlike Players, Guests and their
|
||||||
characters are deleted after disconnection.
|
characters are deleted after disconnection.
|
||||||
|
|
@ -681,7 +681,7 @@ class Guest(DefaultPlayer):
|
||||||
A Guest's characters aren't meant to linger on the server. When a
|
A Guest's characters aren't meant to linger on the server. When a
|
||||||
Guest disconnects, we remove its character.
|
Guest disconnects, we remove its character.
|
||||||
"""
|
"""
|
||||||
super(Guest, self).at_disconnect()
|
super(DefaultGuest, self).at_disconnect()
|
||||||
characters = self.db._playable_characters
|
characters = self.db._playable_characters
|
||||||
for character in filter(None, characters):
|
for character in filter(None, characters):
|
||||||
character.delete()
|
character.delete()
|
||||||
|
|
@ -690,7 +690,7 @@ class Guest(DefaultPlayer):
|
||||||
"""
|
"""
|
||||||
We repeat at_disconnect() here just to be on the safe side.
|
We repeat at_disconnect() here just to be on the safe side.
|
||||||
"""
|
"""
|
||||||
super(Guest, self).at_server_shutdown()
|
super(DefaultGuest, self).at_server_shutdown()
|
||||||
characters = self.db._playable_characters
|
characters = self.db._playable_characters
|
||||||
for character in filter(None, characters):
|
for character in filter(None, characters):
|
||||||
character.delete()
|
character.delete()
|
||||||
|
|
@ -700,5 +700,5 @@ class Guest(DefaultPlayer):
|
||||||
Guests aren't meant to linger on the server, either. We need to wait
|
Guests aren't meant to linger on the server, either. We need to wait
|
||||||
until after the Guest disconnects to delete it, though.
|
until after the Guest disconnects to delete it, though.
|
||||||
"""
|
"""
|
||||||
super(Guest, self).at_post_disconnect()
|
super(DefaultGuest, self).at_post_disconnect()
|
||||||
self.delete()
|
self.delete()
|
||||||
|
|
@ -280,17 +280,17 @@ PLAYER_TYPECLASS_PATHS = ["typeclasses", "contrib"]
|
||||||
CHANNEL_TYPECLASS_PATHS = ["typeclasses", "contrib"]
|
CHANNEL_TYPECLASS_PATHS = ["typeclasses", "contrib"]
|
||||||
|
|
||||||
# Typeclass for player objects (linked to a character) (fallback)
|
# Typeclass for player objects (linked to a character) (fallback)
|
||||||
BASE_PLAYER_TYPECLASS = "typeclasses.player.Player"
|
BASE_PLAYER_TYPECLASS = "typeclasses.players.Player"
|
||||||
# Typeclass and base for all objects (fallback)
|
# Typeclass and base for all objects (fallback)
|
||||||
BASE_OBJECT_TYPECLASS = "typeclasses.object.Object"
|
BASE_OBJECT_TYPECLASS = "typeclasses.objects.Object"
|
||||||
# Typeclass for character objects linked to a player (fallback)
|
# Typeclass for character objects linked to a player (fallback)
|
||||||
BASE_CHARACTER_TYPECLASS = "typeclasses.character.Character"
|
BASE_CHARACTER_TYPECLASS = "typeclasses.characters.Character"
|
||||||
# Typeclass for rooms (fallback)
|
# Typeclass for rooms (fallback)
|
||||||
BASE_ROOM_TYPECLASS = "typeclasses.room.Room"
|
BASE_ROOM_TYPECLASS = "typeclasses.rooms.Room"
|
||||||
# Typeclass for Exit objects (fallback).
|
# Typeclass for Exit objects (fallback).
|
||||||
BASE_EXIT_TYPECLASS = "typeclasses.exit.Exit"
|
BASE_EXIT_TYPECLASS = "typeclasses.exits.Exit"
|
||||||
# Typeclass for Channel (fallback).
|
# Typeclass for Channel (fallback).
|
||||||
BASE_CHANNEL_TYPECLASS = "typeclasses.channel.Channel"
|
BASE_CHANNEL_TYPECLASS = "typeclasses.channels.Channel"
|
||||||
# Typeclass for Scripts (fallback). You usually don't need to change this
|
# Typeclass for Scripts (fallback). You usually don't need to change this
|
||||||
# but create custom variations of scripts on a per-case basis instead.
|
# but create custom variations of scripts on a per-case basis instead.
|
||||||
BASE_SCRIPT_TYPECLASS = "typeclasses.scripts.Script"
|
BASE_SCRIPT_TYPECLASS = "typeclasses.scripts.Script"
|
||||||
|
|
@ -399,7 +399,7 @@ CLIENT_DEFAULT_HEIGHT = 45 # telnet standard is 24 but does anyone use such
|
||||||
# This enables guest logins, by default via "connect guest"
|
# This enables guest logins, by default via "connect guest"
|
||||||
GUEST_ENABLED = False
|
GUEST_ENABLED = False
|
||||||
# Typeclass for guest player objects (linked to a character)
|
# Typeclass for guest player objects (linked to a character)
|
||||||
BASE_GUEST_TYPECLASS = "typeclasses.player.Guest"
|
BASE_GUEST_TYPECLASS = "typeclasses.players.Guest"
|
||||||
# The permission given to guests
|
# The permission given to guests
|
||||||
PERMISSION_GUEST_DEFAULT = "Guests"
|
PERMISSION_GUEST_DEFAULT = "Guests"
|
||||||
# The default home location used for guests.
|
# The default home location used for guests.
|
||||||
|
|
|
||||||
|
|
@ -174,10 +174,11 @@ channels = search_channels
|
||||||
# category - limit the search to a particular help topic
|
# category - limit the search to a particular help topic
|
||||||
# """
|
# """
|
||||||
|
|
||||||
search_help_entry = HelpEntry.objects.search_help
|
search_help = HelpEntry.objects.search_help
|
||||||
search_help_entries = search_help_entry
|
search_help_entry = search_help
|
||||||
help_entry_search = search_help_entry
|
search_help_entries = search_help
|
||||||
help_entries = search_help_entries
|
help_entry_search = search_help
|
||||||
|
help_entries = search_help
|
||||||
|
|
||||||
|
|
||||||
# Locate Attributes
|
# Locate Attributes
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,23 @@ Player object. A Player is what chats on default channels but has no
|
||||||
other in-game-world existance. Rather the Player puppets Objects (such
|
other in-game-world existance. Rather the Player puppets Objects (such
|
||||||
as Characters) in order to actually participate in the game world.
|
as Characters) in order to actually participate in the game world.
|
||||||
|
|
||||||
|
|
||||||
|
Guest
|
||||||
|
|
||||||
|
Guest players are simple low-level accounts that are created/deleted
|
||||||
|
on the fly and allows users to test the game without the committment
|
||||||
|
of a full registration. Guest accounts are deactivated by default; to
|
||||||
|
activate them, add the following line to your settings file:
|
||||||
|
|
||||||
|
GUEST_ENABLED = True
|
||||||
|
|
||||||
|
You will also need to modify the connection screen to reflect the
|
||||||
|
possibility to connect with a guest account. The setting file accepts
|
||||||
|
several more options for customizing the Guest account system.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from evennia import DefaultPlayer
|
from evennia import DefaultPlayer, DefaultGuest
|
||||||
|
|
||||||
|
|
||||||
class Player(DefaultPlayer):
|
class Player(DefaultPlayer):
|
||||||
"""
|
"""
|
||||||
|
|
@ -79,3 +92,11 @@ class Player(DefaultPlayer):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Guest(DefaultGuest):
|
||||||
|
"""
|
||||||
|
This class is used for guest logins. Unlike Players, Guests and their
|
||||||
|
characters are deleted after disconnection.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
Loading…
Add table
Add a link
Reference in a new issue