Griatch
181abb84a8
Cleanup of the help command, making it a lot easier to read. Also added cos-suggest algorithm to make better help entry suggestions.
2012-04-22 19:45:45 +02:00
Griatch
0c292b5ff2
Changed how command not found errors are handled by default: Implemented a cos-likeness algorithm (Coling 2008) for comparing strings, which allows for decent suggestions and speed.
2012-04-22 16:36:31 +02:00
Griatch
4678234e9a
Multiple fixes to ev and utils:
...
Made utils.variable_from_module more generic (it can now load pretty much any form of module it's given and also supports searching and returning multiple variables).
Removed the variable-load functionality from utils.load_module; this is now purely a loader - use variable_from_module instead.
I found out that one couldn't import from src.commands.default due to the __init__ file being restrictive for the sake of the ev API. Removed that and instead imported the default commands into ev.py with the help of utils.variable_from_module instead. Some more fixes in ev followed on this.
2012-04-22 12:23:42 +02:00
Griatch
3306e36d82
Fixed a bug in @set. Unittests all clear again.
2012-04-21 18:21:38 +02:00
Griatch
8c3b49e704
Changed how the Typeclass system returns errors. Instead of echoing typeclass erros to the MUD-info channel (which is not only not only very spammy for everyone but also very hard to make clean so as to avoid recursion at a stage of typeclass failing), the system instead stores a property on itself called 'typeclass_last_errmsg' that holds eventual errors. This means that the task of reporting errors does not fall on the typeclass system itself but on the calling methods, as it should be. So src.utils.create.create_* functions now takes a new optional keyword "report_to" that holds an object to receive errors. If this keyword is given, the function msg():es that object with the error and returns None as before. If report_to is not set however, the create_* methods now return an Exception containing the error text. All default commands have been changed to accomodate for this behaviour, which allows for much more control over errors.
...
Also, the default ADMIN_MEDIA static files changed location in Django 1.4. The initial_setup function now accounts for this.
2012-04-21 16:15:37 +02:00
Griatch
63329f5420
Added the ability to escape colour codes with \, So using \{g in a text will now result in '{g' being printed instead of the text switching to bright green. This can be useful for documentation.
2012-04-15 23:42:57 +02:00
Griatch
5a2228763f
Fixed a lingering bug with @set that made it not work when assigning normal strings without quotes. Changed so that proper Python constructs (lists, dicts etc) now requires you to entering proper Python syntax (since this is parsed).
2012-04-15 23:09:56 +02:00
Griatch
bcf214ee0d
Changed so object.move_to() traverses exits by default - i.e. you will no longer end up INSIDE the exit object if you move_to the exit, but instead you will go to the exits destination. This should be the most common use. The use_destination keyword to object.move_to can be used to change this behaviour. Also @teleport (which uses move_to()) has gotten a new flag to allow for teleporting into exits if so specifically desired. Resolves issue 224.
2012-04-15 22:04:15 +02:00
Griatch
464aa8ca9e
Added the ability to clear an object from the global cache. This is rarely
...
needed (and can be potentially dangerous if the object depends on certain
startup methods to run and/or holds temporary attributes on themselves -
these will all be lost due to a new instance being created. It is hoever
necessary when it comes to renaming Exits - since the Command on the exit
must then change name too, recaching the Exit will also update the command.
Resolves issue 223.
2012-04-15 21:46:43 +02:00
Griatch
91ec33b9a7
Fixed a spurious error happening with mud clients not properly implementing TTYPE negotiating (sending strings instead of numbers to identify their abilities).
2012-04-15 19:53:03 +02:00
Griatch
6501f30cbc
Fixed an elusive bug in utils.get_variable_from_module() that caused the connection screen to sometimes not load properly, due to the imported modules being erroneously extracted and used.
2012-04-15 19:05:50 +02:00
Griatch
5264dc85bb
@set now supports all forms of nested dicts and lists under Python 2.6. Python2.5 still depends on the old recursive solution that does not support nesting. Maybe time to up the python dependency number? Fixes Issue 225.
2012-04-14 10:55:56 +02:00
Griatch
551a91caef
Editing the ev.py API, removing db_* manager shortcuts in favour of a 'managers' container holding them all. It makes the API slightly less "flat", but makes for a cleaner interface.
2012-03-31 16:50:53 +02:00
Griatch
7c4e0213ce
Fixed a bug since CmdCreate changed name to CmdUnloggedinCreate (to avoid name clashes in API)
2012-03-25 19:59:53 +02:00
Griatch
bdb5ab0123
Removed @ps command, it is superceded by @serverload and was just a placeholder anyway.
2012-03-25 18:47:31 +02:00
Griatch
07a17ac15e
Added ev API support to @py command.
2012-03-25 18:36:23 +02:00
Griatch
88c0087fbd
Updated game/ for the ev API. There will likely be some changes happening in the game/folder, in the way new objects are inherited. This should use the API rather than inherit from the basecommand/baseobject modules (these will probably into the example folders as vanilla templates instead).
2012-03-25 13:09:17 +02:00
Griatch
0d01462077
Adding a new API system to Evennia. This centralizes all access of the evennia driver through a single module "ev". Importing ev one should be able to access (and also importantly, easily explore) Evennia's API much easier. This API goes a long way to "flatten" the structure so that one doesn't need to remember how to find some method in a deeply nested subdirectory.
...
As part of this work, I have also written full listings of all available properties on Typeclassed objects (including those inherited in various ways). Should hopefully make things easier to find.
One can of course still import things directly from src/ as before. But this is a first step towards removing the "base" objects in game/gamesrc and instead making those accessible through the core API.
2012-03-24 23:02:45 +01:00
Griatch
6aac9e6c2b
Fixed permission on @batchcode command.
2012-03-21 11:46:15 +01:00
Griatch
1ca8df9e70
Fixed issues with batch-code processor not working correctly. Also added some better parsing. Resolves issue 221.
2012-03-20 22:29:37 +01:00
ploosh
f09bfdf1d6
Fixed pose command to echo in room only if a pose is actually struck
2012-03-17 03:22:52 -04:00
Griatch
f46a9a1280
Cropped @batchcommand output better. Resolves issue 217.
2012-03-14 21:03:28 +01:00
Griatch
5beee55149
Added ability of @set command to actually store real Python types, not just strings.
2012-03-13 23:56:19 +01:00
Griatch
aae67225a4
Added auto_help as a class property on Commands. This allows to turn on/off auto-help generation on a per-command basis (default is on).
2012-03-13 22:07:51 +01:00
Griatch
690bfadd9d
Added arg_regex, an optional Command class-method for customizing how commands are identified by using a regex to enforce a specific look/grammar to the command argument. Discussed and suggested in issue 213.
2012-02-27 20:56:01 +01:00
Griatch
631020d8a2
Some small fixes to the help command.
2012-02-25 18:24:30 +01:00
Griatch
9e2380decd
Added ' as an alias for the "say" command, common in many muds.
2012-02-22 21:39:27 +01:00
Griatch
641d829154
Added inlineCallback operator for cmdhandler, allowing the system to yield more often.
2012-02-20 21:40:28 +01:00
Griatch
6e53e6a1fd
Added state persistence to commands. For commands that want to, their state will be saved for the next command to access through the self.caller.ndb.last_cmd variable. The state only persists one command before it is cleared or replaced.
2012-02-17 18:53:47 +01:00
Griatch
8b5f3628ab
Added info about creating the tutorial world to the Limbo desc. Also refactored some of the lock functions a bit for efficiency.
2012-02-06 21:48:50 +01:00
Griatch
cdab5a240b
Added RSS feed support to Evennia. This uses the @rss2chan command to tie a feed to an in-game channel. Updates to the feed will henceforth be echoed to the channel. The reader requires the python-feedreader package to be installed.
2012-01-28 20:12:59 +01:00
Griatch
ae251d3892
Fixed an error in the help for @ban.
2012-01-27 23:56:17 +01:00
Griatch
1d40f688e5
Added the @ban and @unban commands to the default command sets, allowing an admin to filter access from users without outright deleting their accounts. The ban list is stored in the database, but the checking is not hard-coded in the server/portal, but done in the normal login command(s), meaning it can be customized easily. Also contrib/menu_login has been updated to check for banned connections.
2012-01-27 23:53:03 +01:00
Griatch
fb78758356
Implemented working MCCP (data compression) and MSSP (mud-listing crawler support). Moved all user-level customization modules from gamesrc/world to gamesrc/conf to reduce clutter.
2011-11-20 11:52:01 +01:00
Griatch
68f0a236cb
Fixed an issue with using WHO when users where OOC. Also made the @ic command able to look for objects globally.
2011-11-14 19:13:30 +01:00
Griatch
a3e4e44a61
Fixed a bug in the creation mechanism.
2011-11-09 09:11:56 +01:00
Griatch
3e8b43d222
More fixes and cleanup in wake of ic/ooc changes.
2011-11-06 23:55:24 +01:00
Griatch
703accdd60
Added an error_check_python_modules function to evennia.py. This basically imports a host of critical modules and quits with tracebacks if there are problems. This catches pure python-syntax errors (i.e. cases where the source-file itself is malformed), something which is hard to properly handle in the running server (where there's also an issue as to how to best report it). Best they fail out already at an early stage.
2011-11-06 21:32:00 +01:00
Griatch
55f6f5b713
Contrib: Added a new, alternative login system, using menus. Also edited the ways unlogged commands are started by the engine, by using a standardized system command name (it does not need to be "look" anymore).
2011-11-06 18:53:10 +01:00
Griatch
2b2d27ed39
Changed the way unloggedin commands work. Rather than the cmdhander having a special state for unlogged-in commands, the session itself simply stores the cmdset from settings.CMDSET_UNLOGGEDIN. Clean and efficient and also gives a lot more freedom for creating custom login mechanisms (notably it opens the door to using menu systems).
2011-11-06 17:38:29 +01:00
Griatch
7195e1e773
Minor fixes to create command.
2011-10-16 00:40:11 +02:00
Griatch
70b4b559a5
Fixed a typeclass access bug in @find. Resolves issue 199.
2011-10-10 09:14:50 +02:00
Griatch
aee147102b
Gave better error messages when a player typeclass has bugs and thus won't load. Also made a better solution for hiding new characters from the start room when first being created (also makes sure that character.location never starts as being None, recovering back to home in that case).
2011-10-09 16:32:55 +02:00
Griatch
2c4af9076d
Made some commands sensible to the new form of obj.typeclass (it's not a typeclass instance, not a class). Changed the way TypedObject.swap_typeclass works, so as to properly manage failures.
2011-10-03 23:53:23 +02:00
Griatch
bc0195bbaa
Worked with admin interface, cleaning up and adding functionality. There are still some strange behaviour that makes e.g. the presence of inlines to auto-create empty database objects for some strange reason. Inlines are turned off at the moment (so there is no convenient way to add attributes from the admin interface at this time). Creating players now work, but one needs to create all three components (User, Player, Character) in one go and tie them together. The User-admin form was changed to also support multi-word usernames (django default didn't allow spaces).
2011-10-02 22:37:07 +02:00
Griatch
23cd9e31b1
Restructured the way typeclasses are loaded. This makes it possible to run at_init() hooks at initiation also for objects without any custom cases for character/players. at_init() hooks are called only when an object is initiated. This means that a room's at_init() hook is only called when someone looks or enters it or a script operates on it, for example, rest of the time these objects are dormant, most efficiently.
2011-10-01 22:00:22 +02:00
Griatch
c8d2e3d6a2
Fixed some issues with the @script command.
2011-10-01 13:13:48 +02:00
Griatch
ecf11b38cd
Fixed an issue with the locks not getting properly set on rooms.
2011-09-20 13:44:26 +02:00
Griatch
475361ad28
Added functionality to Attributes to store and update dicts and lists dynamically. One side effect of this is that dicts and tuples need to be stored as custom object types which means that e.g. isintance(obj.db.mylist) == type(list) will return False. In order to do checks like this, use src.utils.utils.inherits_from() instead. The Attribute system now also supports tuples. All other iterables except dicts, lists and tuples are stored and retrieved as lists, same as before.
...
This fixes issue 189.
2011-09-20 12:37:45 +02:00
Griatch
1995f61d46
Put up a warning about not using BaseObject.at_init() at this time (it's not called, as per issue 188). Also removed the deprecated at_cache() hook (it doesn't work anymore now that the caching system is much more efficient and only caches once).
2011-09-15 10:46:41 +02:00