Commit graph

34 commits

Author SHA1 Message Date
Griatch
f83c2bddf8 Trunk: Merged the Devel-branch (branches/griatch) into /trunk. This constitutes a major refactoring of Evennia. Development will now continue in trunk. See the wiki and the past posts to the mailing list for info. /Griatch 2010-08-29 18:46:58 +00:00
Griatch
7f7306a6e4 - Implemented permission system management inside the game
- changed @chperm to @setperm to avoid confusion with channel commands
- added @setgroup command for adding user group permissions
- Moved permissions/group setup into settings file to allow admins to tweak without going into evennia engine.
- Add all new players to default permission group (defined in settings)
- Defined a basic group hierarchy, removed permission 'genperms.builder' in favour of a group named builders instead, containing all relevant permissions.
- Filtered out all django's automatic permissions in @setperm/list to make permission system more controlled by admin.
- Probably fixed bug that caused new users to not be signed up to channels (more testing needed)
- Added Exception handler in unloggedin method create, this was killing tracebacks upon user creation.
/Griatch
2009-10-03 14:40:34 +00:00
Griatch
5e8a047111 Cleaned spammy output to IMC users from IRC and evennia channels, where channel names tended to be added
after one another several times. IMC is not seeing the IRC channel name anymore, output should be on the standard
simple name@MUD: msg format as far as IMC is concerned.
/Griatch
2009-09-05 07:24:04 +00:00
Griatch
68217072a6 Fixed an issue with "Fuzzy" pattern matching that would not find names at certain times.
For example, before the fix, you could face the following issue: Create a bunch of boxes with @create:
box, box1, box2, box3 ... Now try to examine 'box'. This would not work - the game would tell you that there
were multiple matches - it just found "box" in all entries and went with that. So despite there only being one
thing named solely "box", you could not target it! This fix resolves this by giving precedence to exact matches
whenever they exist. I have only done it for the support routine behind local_and_global_search() though, there
are other search functions that uses django directly for fuzzy __in searches. I don't know how to add a similar
functionality to them.
/Griatch
2009-08-30 20:18:56 +00:00
Griatch
72e55f417a Added the command/irc.py directory that was not committed properly.
Added some more helper commands and changed a bit under the hood on those
previously committed for mapping irc/imc channels to each other.

There seems to be an issue with IMC2 users seeing an echo back to themselves when talking. Investigating.
/Griatch
2009-08-28 18:13:07 +00:00
Griatch
4bd567386f Some code cleanup and clarification in comments. 2009-08-28 01:33:15 +00:00
Griatch
1d4f075ca7 * Updated and expanded the State system; the API changed a bit. You now have to first *create* the state using
GLOBAL_STATE_TABLE.add_state() before adding commands to it. The state can now be much more configured by including as much or as
little of the normal default commands into it as wanted (so you can now have states which are almost as normal, except some
commands are missing or change their behaviour ... illness or darkness comes to mind). The possibilities here are limitless.
* States now also optionally allow traversing exits as well as using command tables defined on objects.
* States now better handle error messages (so if you try 'look' in a state which does not contain a look command you will no
longer get the 'Huh?' but will be told that the command is not available at the moment).
* All examples in commands/examples/ have been updated to use the new State system. Also added a @test_state function for trying out
the functionality.
* Added hooks at_before_move() and at_after_move(), useful for character based move-restrictions and checks (e.g. movement speed)
* Minor tweaks to the event system; avoiding the counters to go negative should they hit an uncaught traceback.
* Small fixes of typos and minor extra safety checks.
/Griatch
2009-08-16 01:18:58 +00:00
Greg Taylor
6c5488aab3 Show the IMC server name for IMC2ChannelMapping objects in the Django admin interface. 2009-04-30 04:21:58 +00:00
Greg Taylor
45f17f6732 In the strange case where someone creates two mappings with the same IMC2 name, handle it gracefully by emitting to all matching mappings instead of just assuming there'll only be one match. 2009-04-30 04:20:03 +00:00
Greg Taylor
9b8f1cf3ea Handle IMC ice-destroy packets. 2009-04-30 04:05:19 +00:00
Greg Taylor
181133d917 Add tracking of IMC2 channels and the new 'imcchanlist' command. 2009-04-30 03:56:52 +00:00
Greg Taylor
50e70327fe Be a good little IMC2 denizen and send is-alive packets when a keepalive-request comes our way. 2009-04-30 03:26:53 +00:00
Greg Taylor
76f14b4779 Clean up send_cmessage() a bit. Changed noheader keyword arg to show_header and defaulted it to True. This should read a little better. Also updated some of the various function calls. More importantly, check to see if the channel argument is a string or unicode object and find the correct channel object as needed, which was the previous behavior. However, if it's not a string or unicode object, assume it's a CommChannel object and avoid querying for it again. This may be a performance win in some cases down the road. 2009-04-30 03:13:46 +00:00
Greg Taylor
547a5dd139 * Fixed channel history to show in the correct order now.
* Two channels are now created by initial_setup.py for informative emits: MUDConnections and MUDInfo.
* MUDConnections now shows a connection/login/logout log.
* MUDInfo shows general informative messages about the server state. For now IMC emits here when things happen (connection, disconnection, etc.).
Eventually we'll want to restrict these to staff only, but it's not high priority atm.
2009-04-29 00:50:44 +00:00
Greg Taylor
9abde7b60f End all 'say' messages with a 'normal' ansi character to prevent bleedage. Also, added the beginnings of an IMC2 ansi parser. 2009-04-25 07:13:19 +00:00
Greg Taylor
ffa03309fc Local object command tables are now in. See game/gamesrc/parents/examples/red_button.py for example. Note that local command matches will override global matches. Command handler short circuits on the first command match. This will typically be the object with the lowest ID. 2009-04-25 06:11:42 +00:00
Greg Taylor
a8434e3c97 Alphabetize imclist output. 2009-04-25 04:32:47 +00:00
Greg Taylor
d8f6074f10 Enable to KeelAliveREquest on IMC2 connection. 2009-04-21 13:36:11 +00:00
Greg Taylor
2d6ef25081 Handle autosetup and tell packets correctly. 2009-04-20 22:34:16 +00:00
Greg Taylor
4121b54e4c Remove some double quotes from version info. 2009-04-17 05:53:27 +00:00
Greg Taylor
5372bb5a05 The IMC2 client now sends and receives. For most, this should be all that is needed. There are a bunch more support commands that will need to be implemented, as well as a few other things, but this is very usable now. 2009-04-17 05:20:55 +00:00
Greg Taylor
9f86a4c586 I've been meaning to do this for a while as well. Break CommChannel and CommChannelMessage out into a separate app. I had them lumped in with objects/models.py due to some funkage with the admin site registering that is now resolved.
NOTE: You will need to syncdb and re-create any channels you may have had. Sorry for the inconvenience, we're still early enough in development where breakages like this may happen once in a blue moon.
2009-04-17 04:15:54 +00:00
Greg Taylor
42f11b208b Remote IMC2 channels can now be listened to via IMC2 bindings. For this to work, create an IMC2ChannelMapping object with the channel you'd like to serve as the gateway to the remote IMC2 channel. Enter the IMC2 channel's name as the imc2_channel_name field and make sure the object is enabled. Any incoming ice-msg-b packets directed at your chosen channel will now be emitted to the appropriate channel as if it were local, with one difference: the user name is sender@origin. Sending messages is hopefully soon to follow. 2009-04-17 03:34:46 +00:00
Greg Taylor
d4f80a526e Pass on KeyError from deleting a non-existant game from the IMC2MudList. 2009-04-13 13:16:13 +00:00
Greg Taylor
31a78f9fb6 * Added the 'imclist' command to show other games connected to IMC.
* Added the automatic cleaning/pruning code to weed out entries that are probably disconnected.
* Added 'imcwhois <player>' command. Still needs some sanitizing on the outgoing string.
* Added the beginnings of a -reply packet handler through reply_listener.py.
* Fleshed out a few more packets in packets.py.
Next up: Make the ANSI system a little more modular. Create a class for ANSI tables so developers can pick and choose different tables on their own, but keep the same API. This will be used so we don't have to copy/paste src/ansi.py to src/imc2/ansi.py and duplicate stuff.
2009-04-13 06:36:51 +00:00
Greg Taylor
317a4f1532 Looks like the 'who' packet doesn't have a target element in the target@destination segment of the packet. Handle this semi-intelligently when ran into. 2009-04-13 04:38:05 +00:00
Greg Taylor
859166a41c I guess I could just go down my keyboard and hit all of the special characters instead of do this one-by-one BS :) 2009-04-13 01:38:32 +00:00
Greg Taylor
bc67af89b6 Add the period character to the list of wordchars for continuous tokens. Silly me for forgetting it. 2009-04-12 17:01:17 +00:00
Greg Taylor
dd8a05c40a Improved the IMC2 packet lexxer to handle single quotes as regular tokenizable characters. 2009-04-12 08:36:10 +00:00
Greg Taylor
46f35bc574 Protect against extra equal signs in packet extra data. 2009-04-11 22:13:34 +00:00
Greg Taylor
4963dd6098 IMC2Packet class is looking pretty stout now. We should be ready to start sub-classing it to the various IMC2 packet types. 2009-04-11 21:52:56 +00:00
Greg Taylor
4428fbd336 Added stubs for all of the IMC packets. Also re-named the event. 2009-04-11 07:26:58 +00:00
Greg Taylor
191f49ff4c Adding a periodic IMC2 keepalive event. Other IMC2-connected games are now aware of our presence via the keepalive. Woot. 2009-04-11 06:59:25 +00:00
Greg Taylor
a7e89c1e54 Adding the beginnings of IMC2 support. We are now able to connect and authenticate with an IMC2 network, theoretically without blocking our server thread. We can't actually do anything useful just yet, but stay tuned. 2009-04-11 05:55:26 +00:00