mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
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
|
||||
# the main library, it should show here.
|
||||
importlib.import_module("evennia")
|
||||
evennia = importlib.import_module("evennia")
|
||||
evennia.init()
|
||||
|
||||
# check all dependencies
|
||||
from evennia.utils.utils import check_evennia_dependencies
|
||||
if not check_evennia_dependencies:
|
||||
sys.exit()
|
||||
|
||||
|
||||
# set up the Evennia executables and log file locations
|
||||
global SERVER_PY_FILE, PORTAL_PY_FILE
|
||||
global SERVER_LOGFILE, PORTAL_LOGFILE, HTTP_LOGFILE
|
||||
|
|
@ -766,13 +768,13 @@ def error_check_python_modules():
|
|||
mod, fromlist = path, "None"
|
||||
if split:
|
||||
mod, fromlist = path.rsplit('.', 1)
|
||||
__import__(mod, fromlist=[fromlist])
|
||||
__import__(mod, fromlist=[fromlist])
|
||||
|
||||
# core modules
|
||||
imp(settings.COMMAND_PARSER)
|
||||
imp(settings.SEARCH_AT_RESULT)
|
||||
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)
|
||||
for path in settings.LOCK_FUNC_MODULES:
|
||||
imp(path, split=False)
|
||||
|
|
|
|||
|
|
@ -12,54 +12,117 @@ See www.evennia.com for full documentation.
|
|||
|
||||
"""
|
||||
|
||||
if False:
|
||||
# Delayed loading of properties
|
||||
|
||||
######################################################################
|
||||
# set Evennia version in __version__ property
|
||||
######################################################################
|
||||
import os
|
||||
try:
|
||||
__version__ = "Evennia"
|
||||
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()
|
||||
except IOError:
|
||||
__version__ += " (unknown version)"
|
||||
del os
|
||||
# Typeclasses
|
||||
DefaultPlayer = None
|
||||
DefaultGuest = None
|
||||
DefaultObject = None
|
||||
DefaultCharacter = None
|
||||
DefaultRoom = None
|
||||
DefaultExit = None
|
||||
Channel = None
|
||||
Script = None
|
||||
|
||||
######################################################################
|
||||
# Start Evennia API
|
||||
# (easiest is to import this module interactively to explore it)
|
||||
######################################################################
|
||||
# Database models
|
||||
ObjectDB = None
|
||||
PlayerDB = None
|
||||
ScriptDB = None
|
||||
ChannelDB = None
|
||||
Msg = None
|
||||
|
||||
# help entries
|
||||
from help.models import HelpEntry
|
||||
# commands
|
||||
Command = None
|
||||
default_cmds = None
|
||||
syscmdkeys = None
|
||||
|
||||
# players
|
||||
from players.player import DefaultPlayer
|
||||
# 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"
|
||||
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()
|
||||
except IOError:
|
||||
__version__ += " (unknown version)"
|
||||
del os
|
||||
|
||||
|
||||
def init():
|
||||
"""
|
||||
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])
|
||||
|
||||
global DefaultPlayer, DefaultObject, DefaultGuest, DefaultCharacter, DefaultRoom, DefaultExit, Channel, Script
|
||||
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 scripts.models import ScriptDB
|
||||
from comms.models import ChannelDB
|
||||
from comms.models import Msg
|
||||
|
||||
# commands
|
||||
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
|
||||
|
||||
# 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 utils import logger
|
||||
from utils import utils
|
||||
|
|
@ -67,25 +130,7 @@ if False:
|
|||
from utils import ansi
|
||||
from utils.spawner import spawn
|
||||
|
||||
######################################################################
|
||||
# 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)
|
||||
|
||||
# API containers
|
||||
|
||||
class _EvContainer(object):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -1814,7 +1814,7 @@ class CmdExamine(ObjManipCommand):
|
|||
obj_name = objdef['name']
|
||||
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('*')
|
||||
if self.player_mode:
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ from evennia.commands.default.muxcommand import MuxPlayerCommand
|
|||
from evennia.utils import utils, create, search, prettytable
|
||||
|
||||
from settings import MAX_NR_CHARACTERS, MULTISESSION_MODE
|
||||
|
||||
# limit symbol import for API
|
||||
__all__ = ("CmdOOCLook", "CmdIC", "CmdOOC", "CmdPassword", "CmdQuit",
|
||||
"CmdCharCreate", "CmdEncoding", "CmdSessions", "CmdWho",
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ from django.conf import settings
|
|||
from django.utils.unittest import TestCase
|
||||
from evennia.server.serversession import ServerSession
|
||||
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.server.sessionhandler import SESSIONS
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Player that are controlled by the server.
|
|||
"""
|
||||
|
||||
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.commands.command import Command
|
||||
from evennia.commands.cmdset import CmdSet
|
||||
|
|
|
|||
|
|
@ -663,7 +663,7 @@ class DefaultPlayer(PlayerDB):
|
|||
pass
|
||||
|
||||
|
||||
class Guest(DefaultPlayer):
|
||||
class DefaultGuest(DefaultPlayer):
|
||||
"""
|
||||
This class is used for guest logins. Unlike Players, Guests and their
|
||||
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
|
||||
Guest disconnects, we remove its character.
|
||||
"""
|
||||
super(Guest, self).at_disconnect()
|
||||
super(DefaultGuest, self).at_disconnect()
|
||||
characters = self.db._playable_characters
|
||||
for character in filter(None, characters):
|
||||
character.delete()
|
||||
|
|
@ -690,7 +690,7 @@ class Guest(DefaultPlayer):
|
|||
"""
|
||||
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
|
||||
for character in filter(None, characters):
|
||||
character.delete()
|
||||
|
|
@ -700,5 +700,5 @@ class Guest(DefaultPlayer):
|
|||
Guests aren't meant to linger on the server, either. We need to wait
|
||||
until after the Guest disconnects to delete it, though.
|
||||
"""
|
||||
super(Guest, self).at_post_disconnect()
|
||||
super(DefaultGuest, self).at_post_disconnect()
|
||||
self.delete()
|
||||
|
|
@ -280,17 +280,17 @@ PLAYER_TYPECLASS_PATHS = ["typeclasses", "contrib"]
|
|||
CHANNEL_TYPECLASS_PATHS = ["typeclasses", "contrib"]
|
||||
|
||||
# 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)
|
||||
BASE_OBJECT_TYPECLASS = "typeclasses.object.Object"
|
||||
BASE_OBJECT_TYPECLASS = "typeclasses.objects.Object"
|
||||
# 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)
|
||||
BASE_ROOM_TYPECLASS = "typeclasses.room.Room"
|
||||
BASE_ROOM_TYPECLASS = "typeclasses.rooms.Room"
|
||||
# Typeclass for Exit objects (fallback).
|
||||
BASE_EXIT_TYPECLASS = "typeclasses.exit.Exit"
|
||||
BASE_EXIT_TYPECLASS = "typeclasses.exits.Exit"
|
||||
# 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
|
||||
# but create custom variations of scripts on a per-case basis instead.
|
||||
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"
|
||||
GUEST_ENABLED = False
|
||||
# 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
|
||||
PERMISSION_GUEST_DEFAULT = "Guests"
|
||||
# The default home location used for guests.
|
||||
|
|
|
|||
|
|
@ -174,10 +174,11 @@ channels = search_channels
|
|||
# category - limit the search to a particular help topic
|
||||
# """
|
||||
|
||||
search_help_entry = HelpEntry.objects.search_help
|
||||
search_help_entries = search_help_entry
|
||||
help_entry_search = search_help_entry
|
||||
help_entries = search_help_entries
|
||||
search_help = HelpEntry.objects.search_help
|
||||
search_help_entry = search_help
|
||||
search_help_entries = search_help
|
||||
help_entry_search = search_help
|
||||
help_entries = search_help
|
||||
|
||||
|
||||
# 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
|
||||
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):
|
||||
"""
|
||||
|
|
@ -79,3 +92,11 @@ class Player(DefaultPlayer):
|
|||
|
||||
"""
|
||||
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