Commit graph

139 commits

Author SHA1 Message Date
Griatch
b9c1921a0b Added a new 'contrib' folder for optional code snippets not suitable for the server core. Added contrib/menusystem for implementing a multi-choice menu system. Added contrib/lineeditor - a powerful line editor with commands mimicking VI. Also added an example NPC class using the menu system to allow for a conversation. As part of creating these contributions, lots of bugs were found and fixed. A new and more powerful cmdparser was intruduced as a result - this one is much easier to understand than the old one, while being more efficient and versatile. All testsuites were updated. Also: Resolves issue 165. 2011-05-12 21:51:11 +00:00
Griatch
b8a13a2389 Migrate. Made Exits work differently, by use of commands directly instead of an exithandler assigning commands on-the-fly. This solution is a lot cleaner and also solves an issue where @reload would kill typeclasses in situations where an exit was painting to an object whose typeclass was reloaded (same issue occured if the exit typeclass itself was reloaded). As part of these fixes I cleaned up the merging of cmdsets to now merge in strict priority order, as one would expect them to do. Many small bug-fixes and cleanups all over. Resolves issue 164. Resolves issue 163. 2011-05-01 18:04:15 +00:00
Griatch
4bcd5239b5 Mixed batch of minor bug fixes and cleanups. 2011-04-30 21:09:19 +00:00
Griatch
28fe2ad3f4 Run Migrate. Implemented a full separation between Player and Character - Players (OOC entities) can now also hold cmdsets and execute commands. This means that "disconnecting" from a Character becomes possible, putting the Player in an "OOC" state outside the game. This overall makes the game much more stable since there used to be issues if the character was destroyed. Having an OOC set also avoids the previous problem of @puppeting into an object that didn't have any cmdset of its own - you couldn't get back out! A new default OOC-Cmdset handles commands available to a player while OOC. Commands in this set are applied with a low priority, allowing "IC" mode to give precedence if desired.
This change meant several changes to the lock and permission functionality, since it becomes important if permissions are assigned on the Player or on their Character (lock functions pperm() and pid() etc check on Player rather than Character). This has the boon of allowing Admins to switch and play/test the game as a "Low access" character as they like.

Plenty of bug fixes and adjustments. Migrations should make sure to move over all data properly.
2011-04-23 11:54:08 +00:00
Griatch
1ced5ee8f2 Added more compatibility checks for twisted.words in case IRC is activated. IMC2 implementation is cleaned up and converted to new comm system, but it's not working correctly and not usable. 2011-04-18 22:09:29 +00:00
Griatch
88626842b7 Fixed a bug in serverconfig. Tweaked how the default connection screen is stored, to allow for server updates. 2011-04-12 22:22:04 +00:00
Griatch
2ee54678ae Migration needed. Changed how connection screens are defined, rather than being a database model, they are created on-the fly. I didn't migrate over the screen data into the new module file though, so if you had custom connection screens, you need to manually add them to the new module in gamesrc/world/connection_screen.py. 2011-04-10 14:21:41 +00:00
Griatch
52785e8f3e Obs:Migrate. Made Comm system more generic, including the ability to connect arbitrary protocols to channels. Re-worked the IRC connectivity system - you can now again communicate between IRC and in-game evennia channels. 2011-04-10 12:39:07 +00:00
Griatch
6eff51de20 OBS: Migration needed(objects, scripts, players). This resolves issue 136 by allowing database objects to be nested in lists and dictionaries as
attributes on objects. Behind the scenes, only the DBREF is stored since storing dbobjects cannot be pickled. One used to be able to store single objects this way, but objects hidden in nested iterable structures were not found. Note that ONLY lists and dictionaries are supported to store on attributes - custom iterables will be stored and retrieved as a generic list instead - this is a tradeoff to be able to store database objects.

To migrate, give the following commands from game/:
 migrate.py migrate objects
 migrate.py migrate scripts
 migrate.py migrate players
2011-04-05 23:28:40 +00:00
Griatch
9b9f90d91c gtaylor convinced me to add migrations to the Evennia repo. This means that game/migrate.py is no more. The migrations will help you to adjust your database when Evennia releases a new database change, no need to drop the database or manually adjust tables. To make use of our schema migrations, you need to have Django-South installed.
To convert to django-south operations, easiest is if you are willing to drop your old database (e.g. delete evennia.db if you use default sqlite3). Then do: "game/manage.py syncdb" followed by "game/manage.py migrate". That should do it. If you ever deletes your database, just rerun those two commands.

If you want to convert an existing database, do
game/manage.py convert_to_south comms
game/manage.py convert_to_south config
game/manage.py convert_to_south help
game/manage.py convert_to_south objects
game/manage.py convert_to_south players
game/manage.py convert_to_south scripts


In the future, you will then be able to do ./manage.py migrate when we tell you the schema has changed.
2011-03-21 00:53:58 +00:00
Griatch
126e2ea61f OBS: You need to resync your database! Moved cmdsets into the database rather than being dependent on scripts. Moved the creation of the cmdset- and cmdset-handlers into ObjectDB.__init__ rather than bootstrapping it from the typeclass. Added some more script functionality for testing, includong the @script command for assigning a script to an object. 2011-03-20 19:45:56 +00:00
Griatch
2f78bacd97 Added a check for multiple connected sessions to avoid moving disconnected object more than once. Resolves issue 145. 2011-03-19 22:17:00 +00:00
Griatch
bccd84e480 Fixed some bugs in the access system. Changed the "owner" default permission to "control" instead to more general. Added a new hook for setting locks for objects (the suspicion was that this would give lots of grief to newbies otherwise, now we have a lockdown policy in the absence of lock definitions). 2011-03-17 21:43:18 +00:00
Griatch
08b3de9e5e OBS: You'll need to resync/rebuild your database!
- This implements an updated, clearer and more robust access system. The policy is now to lock that which is not explicitly left open.
- Permission strings -> Lock strings. Separating permissions and locks makes more sense security-wise
- No more permissiongroup table; permissions instead use a simple tuple PERMISSIONS_HIERARCHY to define an access hierarchy
- Cleaner lock-definition syntax, all based on function calls.
- New objects/players/channels get a default security policy during creation (set through typeclass)

As part of rebuilding and testing the new lock/permission system I got into testing and debugging several other systems, fixing some
outstanding issues:
- @reload now fully updates the database asynchronously. No need to reboot server when changing cmdsets
- Dozens of new test suites added for about 30 commands so far
- Help for channels made more clever and informative.
2011-03-15 16:08:32 +00:00
Griatch
7ebcefae2e Adjusted the threaded webserver initialization to properly fit into the daemonization process when starting Evennia in threaded mode. Should behave the same way as interactive mode now. Resolves issue 125. 2011-02-23 21:08:02 +00:00
Griatch
f0b4c581f7 Removed the admin media files from the distribution again. Instead the server will now create the necessary symlink (Linux) or copy (Windows) of the default files in django/contrib/admin/media at initial startup. Currently only tested under Linux. If you don't want to re-run the initialization, copy/link the admin directory to ADMIN_MEDIA_PREFIX yourself. This deals with issue 124.
Also added a 'remove' functionality to the migrate.py script, for easily getting back the normal syncdb operation (useful when deleting/resetting the database a lot).
2011-02-20 22:07:35 +00:00
Griatch
6a13d07c55 Fixed some hooks to match wiki docs. 2011-02-14 18:31:16 +00:00
Griatch
923b9ac2ec Added hooks at_pre_cmd() and at_post_cmd() for easy implementation of stuff like prompts.
Added obj.exit property to objects for easily finding all exits from a room.
2011-02-14 17:18:31 +00:00
Griatch
251f94aa7a Evennia now runs on its own Twisted webserver (no need for testserver or Apache if you don't want to). Evennia now also has an ajax long-polling web client running from Twisted. The web client requires no extra dependencies beyond jQuery which is included. The src/server structure has been r
cleaned up and rewritten to make it easier to add new protocols in the future - all new protocols need to inherit from server.session.Session, whi
ch implements a set of hooks that Evennia uses to communicate. The current web client protocol is functional but does not implement any of rcaskey
's suggestions as of yet - it uses a separate data object passed through msg() to communicate between the server and the various protocols. Also the client itself could probably need cleanup and 'prettification'. The fact that the system runs a hybrid of Django and Twisted, getting the best of both worlds should allow for many possibilities in the future. /Griatch
2010-12-07 02:34:59 +00:00
Griatch
ecefbfac01 Set the default settings file to point to the files in game/gamesrc/commands - these now make for good starts for overriding the default systems. The system now also matches the examples given in the wiki. 2010-11-23 18:10:41 +00:00
Griatch
72d40285b8 After lots of discussions, default commands where moved from game/gamesrc/commands/default to src/commands/default in order to make it clearer which parts are updated as part of evennia and which can be tweaked at heart's content. New templates where left in gamesrc/commands that should hopefully make it clearer how to extend the command system. Also game/web was moved to src/web - we'll likely extend this from game/gamesrc/web in the future. If you already did extensions you should just have to edit your import paths and make use of the new cmdset template supplied.
The unit testing was for commands was split out from src/objects/tests.py into the new src/commands/default/test.py in order to keep the testing modules thematically grouped with the things they are testing.
2010-11-23 01:24:56 +00:00
Greg Taylor
a3917073ff Fixing the test runner. Unit test fixes pending. 2010-11-22 15:33:28 +00:00
Griatch
b091cde574 Some bugfixes and cleanup. 2010-11-21 20:01:52 +00:00
Griatch
502ebff1a2 Implemented a unit testing framework for Evennia. Unfortunately it seems it is only usable in latest Django SVN, due to a Django bug; Run "manage.py test-evennia" - if you get errors about SUPPORTS_TRANSACTIONS, you are affected by the bug. Since this is only likely to affect evennia devs at this point I added a few base tests in src/objects/tests.py as a template for those willing to help add unit tests. 2010-11-21 19:02:24 +00:00
Griatch
a7899e0119 Added version-validation of dependent packages upon server start. 2010-11-11 01:28:12 +00:00
Ari Mudev
09bf394284 Fix Issue 118. 2010-11-10 22:44:48 +00:00
Griatch
8aa22fbec8 Fixed bugs in alias and search system, including properly searching inventory. Expanded @alias command with more functionality. 2010-11-09 14:46:39 +00:00
Ari Mudev
f11fbdf739 Make python launching more portable. Re-flow help text to fit within 80 characters for terminals that do not easily resize. (This commit is mostly aimed towards MS Windows installations.) 2010-11-01 05:44:19 +00:00
Griatch
7fb6362dc4 Added optional support for database migrations with south. The game/migrate.py program is a simple wrapper that runs the suitable commands for setting up a database and updating it, respectively. 2010-10-31 18:21:23 +00:00
Griatch
3f703efc2d Made changes to idmapper that might help alleviate issue101 (more people need to run it to make sure). Moved around default command modules to be more logically named and distributed. 2010-10-31 08:10:02 +00:00
Griatch
268328d36a Fixed @py to match the wiki documentation. 2010-10-21 23:06:55 +00:00
Griatch
31edce0ba1 Added utils.utils.run_async as a simple wrapper to the Twisted deferred system. This allows for easily making a long-time-running process or command asynchronous. 2010-10-21 20:15:11 +00:00
Griatch
547eb53b32 Made search(*playername) commands correctly return a Player typeclass and not a character. Initial startup/character creation: Default permissions are now assigned on player level rather than character level (this gives more safety to @puppet operations). Made @puppet command work only on Character objects. 2010-10-21 18:58:47 +00:00
Ari Mudev
c9861e06de Red button typo. 2010-10-19 01:39:25 +00:00
Ari Mudev
04ae472e1a Tweak @create help to provide a working example as intended.
The rest of the documentation for this command should probably be audited, but the copy-paste method of experimentation works now.
2010-10-19 01:30:24 +00:00
Griatch
9459178c43 Fixed character swap mechanisms. Created an example command @puppet for switching control between characters (note that it does not currently check permissions, nor make sure the target has the appropriate cmdsets). 2010-10-18 21:07:26 +00:00
Ari Mudev
922a7d5064 Windows fix. Always start twistd.py using a Python interpreter.
This allows .py files to be associated with an editor. Before this fix, twistd.bat simply "started" twistd.py, which would tend to open the file in an editor if the file associations were set.

This fix simply prepends the python interpreter path to the twistd.py path when twistd.bat is built programmatically so it is always "run as a python program" no matter the current Windows .py file association.
2010-10-18 16:37:07 +00:00
Griatch
151595a042 Turned off Django DEBUG in the default setup. This resolves all issues with memory leakage and resource hogging seen in issue112. 2010-10-11 17:22:39 +00:00
Griatch
7080de4022 Implemented @encoding command as a default way for managing encodings on a per-player level. 2010-10-03 20:34:46 +00:00
Griatch
c29649cd53 Made characters disappear from the room when their controlling player logs off. This is a trivial thing to customize, but the old default (leave the character objects in the room, although "headless") confused people. 2010-10-03 19:49:48 +00:00
Griatch
7904916dba Fixed a simple list-bug in @objects command. This resolves issue111. 2010-09-26 09:21:01 +00:00
Griatch
164eb5b89b Some command bugfixes. Added some more debug messages for pinning down issue101. 2010-09-19 06:57:08 +00:00
Griatch
27b7570aab Fixed a bug in @debug (resolves issue107). Also moved @debug command to commands/default/tests.py instead. 2010-09-12 16:37:00 +00:00
Griatch
af89dd1ef7 Some minor bugfixes. 2010-09-12 16:19:02 +00:00
Griatch
5361bd03d3 Made @create not overwrite a script-defined 'desc' attribute if it exists. Resolves issue109. 2010-09-12 15:14:09 +00:00
Griatch
8bedd4d793 Fixed and debugged object_search to more generically search for any attribute name except 'key' (issue110). Also included alias-search as a last-resort if normal searches fail. This is now also working for global searches (issue106). 2010-09-12 15:07:12 +00:00
Griatch
e125763ea5 Made so the default add_default_cmdset script also removes the added cmdset when stopped. Fixed the function of @delplayer command. 2010-09-05 18:20:39 +00:00
Griatch
212061abb6 Made so the @scripts command properly display when scripts will fire next. 2010-09-05 16:35:39 +00:00
Griatch
a2291953f2 Changed erroneous DateField to DateTimeField in ObjectDB, so you might have to resync your database. Fixed lots of formatting issues in the info and list commands. Resolved issue105. 2010-09-05 14:42:09 +00:00
Griatch
1ed013dc11 Fixed a bug in @open (issue104). Some other refinements. 2010-09-04 21:52:35 +00:00