From c4f2c493d9712219021da1d10d02fe9d670c11a6 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 19 Feb 2012 10:49:59 +0100 Subject: [PATCH] Updated ReST docs, fixed some things in Swedish translation. --- contrib/tutorial_world/objects.py | 3 + contrib/tutorial_world/rooms.py | 2 +- docs/sphinx/source/wiki/AdminDocs.rst | 6 + docs/sphinx/source/wiki/Attributes.rst | 17 +- .../source/wiki/ChoosingAnSQLServer.rst | 27 +- docs/sphinx/source/wiki/Commands.rst | 16 +- docs/sphinx/source/wiki/DeveloperCentral.rst | 1 + docs/sphinx/source/wiki/DirectoryOverview.rst | 47 +- .../source/wiki/EvenniaIntroduction.rst | 1 + docs/sphinx/source/wiki/GettingStarted.rst | 153 ++- .../source/wiki/Internationalization.rst | 5 +- docs/sphinx/source/wiki/Licensing.rst | 38 +- docs/sphinx/source/wiki/Links.rst | 3 + docs/sphinx/source/wiki/Objects.rst | 93 +- docs/sphinx/source/wiki/PortalAndServer.rst | 7 +- docs/sphinx/source/wiki/Scripts.rst | 87 +- docs/sphinx/source/wiki/Typeclasses.rst | 20 +- locale/sv/LC_MESSAGES/django.mo | Bin 26811 -> 8440 bytes locale/sv/LC_MESSAGES/django.po | 1156 +++++++++-------- 19 files changed, 937 insertions(+), 745 deletions(-) diff --git a/contrib/tutorial_world/objects.py b/contrib/tutorial_world/objects.py index 0dc26b1a9..da4444a57 100644 --- a/contrib/tutorial_world/objects.py +++ b/contrib/tutorial_world/objects.py @@ -10,10 +10,12 @@ Objects: TutorialObject Readable +Climbable Obelisk LightSource CrumblingWall Weapon +WeaponRack """ @@ -729,6 +731,7 @@ class CmdAttack(Command): if target.db.combat_parry_mode: # target is defensive; even harder to hit! + target.msg("{GYou defend, trying to avoid the attack.{n") hit *= 0.5 if random.random() <= hit: diff --git a/contrib/tutorial_world/rooms.py b/contrib/tutorial_world/rooms.py index 0be37cc0a..1251abf96 100644 --- a/contrib/tutorial_world/rooms.py +++ b/contrib/tutorial_world/rooms.py @@ -545,7 +545,7 @@ class BridgeRoom(TutorialRoom): self.db.west_exit - - | - - self.db.east_exit 0 1 2 3 4 - The position is handled by a variabled stored on the player when entering and giving + The position is handled by a variable stored on the player when entering and giving special move commands will increase/decrease the counter until the bridge is crossed. """ diff --git a/docs/sphinx/source/wiki/AdminDocs.rst b/docs/sphinx/source/wiki/AdminDocs.rst index b3f77f641..17055932e 100644 --- a/docs/sphinx/source/wiki/AdminDocs.rst +++ b/docs/sphinx/source/wiki/AdminDocs.rst @@ -21,6 +21,12 @@ Customizing the server - `Changing text encodings used by the server `_ - `How to connect Evennia to IRC channels `_ - `How to connect Evennia to an IMC2 network `_ +- `How to connect Evennia to RSS feeds `_ + +Administrating the running game +------------------------------- + +- `Banning `_ Banning and deleting users Working with Evennia -------------------- diff --git a/docs/sphinx/source/wiki/Attributes.rst b/docs/sphinx/source/wiki/Attributes.rst index 147199e3c..b71d73ac2 100644 --- a/docs/sphinx/source/wiki/Attributes.rst +++ b/docs/sphinx/source/wiki/Attributes.rst @@ -223,27 +223,24 @@ However: :: - obj.db.mydict[1][2] = "test" # fails! + obj.db.mydict[1][2] = "test" # silently fails! + val = obj.db.mydict[1][2] # still returns 3 will not work - trying to edit the nested structure will fail silently and nothing will have changed. No, this is not consistent with normal Python operation, it's where the database magic fails. Sorry, but there does not seem to be a way around this (if you know one, let us know!) All is not lost however. In order to change a nested structure, you -simply need to use a temporary variable: +simply need to use a temporary variable to update: :: - # retrieve old db data into temporary variable - mydict = obj.db.mydict - # update temporary variable - mydict[1][2] = "test" - # save back to database - obj.db.mydict = mydict - # test + temp = obj.db.mydict + temp[1][2] = "test" + obj.db.mydict = temp val = obj.db.mydict[1][2] # now correctly returns "test" -mydict was updated and recreated in the database. +This is cumbersome, but always works as expected. Notes ----- diff --git a/docs/sphinx/source/wiki/ChoosingAnSQLServer.rst b/docs/sphinx/source/wiki/ChoosingAnSQLServer.rst index 144c82281..bd0cf8ed8 100644 --- a/docs/sphinx/source/wiki/ChoosingAnSQLServer.rst +++ b/docs/sphinx/source/wiki/ChoosingAnSQLServer.rst @@ -13,17 +13,19 @@ SQLite ------ This is the default database used, and for the vast majority of Evennia -installs it will probably be more than adequate. No server process is -needed, the administrative overhead is tiny (as is resource -consumption). The database will appear as a simple file -(``game/evennia.db3``). It is not tested how well Evennia performs with -SQLite under a heavier load, but it should probably be fine for most -normal mud-related usage. +installs it will probably be more than adequate for a long time. No +server process is needed, the administrative overhead is tiny (as is +resource consumption). The database will appear as a simple file +(``game/evennia.db3``). SQLite is excellent for development and easy +testing. The database is however hampered in speed by not allowing +concurrent reads. For a full production game with many users accessing +the database, a more fully featured database engine (MySQL, Postgres +etc) is probably better. **Note:** If you run Windows and for some reason need to use a third-party web server like Apache rather than Evennia's internal web -server, sqlite is probably not be the best choice. This is due to the -possibility of clashes with file-locking of the database file under +server, sqlite is probably also not be the best choice. This is due to +the possibility of clashes with file-locking of the database file under Windows. Postgres @@ -34,12 +36,17 @@ aspiring to grow to a larger size. While not as fast as SQLite for simple purposes, it will scale infinitely better than SQLite, especially if your game has an extensive web presence. +**Warning:** Postgres has issues with Evennia on some installs at the +moment. "http://code.google.com/p/evennia/issues/detail?id + +151">Issue 151 outlines this. If unsure, avoid Postgres for now. + MySQL ----- MySQL **may** be slightly faster than Postgres depending on your setup -and software versions involved. Older versions had some peculiarities -though, so check out Django's `Notes about supported +and software versions involved. Older versions of MySQL had some +peculiarities though, so check out Django's `Notes about supported Databases `_ to make sure you use the correct version. diff --git a/docs/sphinx/source/wiki/Commands.rst b/docs/sphinx/source/wiki/Commands.rst index f53006ab9..517433cb1 100644 --- a/docs/sphinx/source/wiki/Commands.rst +++ b/docs/sphinx/source/wiki/Commands.rst @@ -124,6 +124,11 @@ Beyond the properties Evennia always assigns to the command at runtime - ``help_category`` (optional) - setting this helps to structure the auto-help into categories. If none is set, this will be set to *General*. +- ``save_for_next`` (optional). This defaults to ``False``. If + ``True``, this command object (along with any changes you have done + to it) will be stored by the system and can be accessed by the next + command called by retrieving ``self.caller.ndb.last_cmd``. The next + run command will either clear or replace the storage. You should also implement at least two methods, ``parse()`` and ``func()`` (You could also implement ``perm()``, but that's not needed @@ -602,10 +607,9 @@ Here are the exceptional situations that triggers system commands: - No input (``cmdhandler.CMD_NOINPUT``) - the player just pressed return without any input. Default is to do nothing, but it can be - -useful for certain implementations such as line editors that interpret -non-commands as text input. - + useful to do something here for certain implementations such as line + editors that interpret non-commands as text input (an empty line in + the editing buffer). - Command not found (``cmdhandler.CMD_NOMATCH``) - No matching command was found. Default is to display the "Huh?" error message. - Several matching commands where found (``cmdhandler.CMD_MULTIMATCH``) @@ -738,3 +742,7 @@ functionality at all by default (all default commands simply returns ``None``) and it's probably not relevant to any but the most advanced/exotic designs (one might use it to create a "nested" command structure for example). + +The ``save_for_next`` class variable can be used to implement +state-persistent commands. For example it can make a command operate on +"it", where it is determined by what the previous command operated on. diff --git a/docs/sphinx/source/wiki/DeveloperCentral.rst b/docs/sphinx/source/wiki/DeveloperCentral.rst index a8d0d603f..72c45eb94 100644 --- a/docs/sphinx/source/wiki/DeveloperCentral.rst +++ b/docs/sphinx/source/wiki/DeveloperCentral.rst @@ -64,6 +64,7 @@ Programming Evennia - `Running and Testing Python code from inside the game `_ +- `Useful coding utilities `_ - `Running and writing unit tests for Evennia `_ - `Removing Colour from your game - tutorial on redefining typeclass methods `_ diff --git a/docs/sphinx/source/wiki/DirectoryOverview.rst b/docs/sphinx/source/wiki/DirectoryOverview.rst index 646c7275c..d9107d438 100644 --- a/docs/sphinx/source/wiki/DirectoryOverview.rst +++ b/docs/sphinx/source/wiki/DirectoryOverview.rst @@ -1,8 +1,17 @@ Evennia directory overview ========================== +:: + + evennia/ + contrib/ + docs/ + game/ + locale/ + src/ + Evennia's main directory (``evennia``) is divided into five sub -directories - ``src/``, ``game/``, ``contrib/``, ``locale`` and +directories - ``src/``, ``game/``, ``contrib/`` , ``locale`` and ``doc/``. The first two are the most important ones. ``game/`` is the place where you will create your own game, whereas ``src/`` is the home of the Evennia server itself. Your code should usually just import @@ -35,8 +44,8 @@ create a nice browsable web-index of all the sources and comments. In the same way you could in theory also create nice ``LaTeX``-formatted PDFs of the Evennia source (all 400+ pages of it ...). -The ``locale`` directory ------------------------- +The ``locale/`` directory +------------------------- This contains internationalization strings for translating the Evennia core server to different languages. See @@ -217,8 +226,8 @@ point to your copy. ~~~~~~~~~~~~~~ ``src/comms/`` defines all aspects of OOC -`communication `_, notably *channels* and the basic -operations for storing listeners to channels. +`communication `_, notably *channels*, *messages* +and the basic operators for connecting external listeners to channels. ``src/help/`` ~~~~~~~~~~~~~ @@ -244,8 +253,8 @@ lock functions are found here. ~~~~~~~~~~~~~~~~ The `Player `_ is the OOC-represention of the person -behind the game character. This directory defines the database handling -and methods acting on the Player object. +connected to the game. This directory defines the database handling and +methods acting on the Player object. ``src/scripts/`` ~~~~~~~~~~~~~~~~ @@ -259,9 +268,10 @@ connection timeouts) are also defined here. ~~~~~~~~~~~~~~~ This directory is the heart of Evennia. It holds the server process -itself (started from ``game/evennia.py``) and all `sessions and -protocols `_ that allow users to connect to it. -It also knows how to store dynamic server info in the database. +itself (started from ``game/evennia.py``), the portal and all `sessions +and protocols `_ that allow users to connect to +the game. It also knows how to store dynamic server info in the +database. ``src/typeclasses/`` ~~~~~~~~~~~~~~~~~~~~ @@ -300,10 +310,13 @@ Assorted notes Whereas ``game/gamesrc/`` contains a set of directories already, you might find that another structure suits your development better. For -example, it could sometimes easier to put all the commands and scripts a -certain object needs in the same module as that object, rather than -slavishly split them out into their respective directories and import. -Don't be shy to define your own directory structure as needed. A basic -rule of thumb should nevertheless be to avoid code-duplication. So if a -certain script or command could be useful for other objects, break it -out into its own module and import from it. +example, it could sometimes be easier to put all the commands and +scripts a certain object needs in the same module as that object, rather +than slavishly split them out into their respective directories and +import. Don't be shy to define your own directory structure as needed. A +basic rule of thumb should nevertheless be to avoid code-duplication. So +if a certain script or command could be useful for other objects, break +it out into its own module and import from it. Don't forget that if you +add a new directory, it must contain an ``__init__.py`` file (it can be +empty) in order for Python to recognize it as a place it can import +modules from. diff --git a/docs/sphinx/source/wiki/EvenniaIntroduction.rst b/docs/sphinx/source/wiki/EvenniaIntroduction.rst index b350bd16b..251babb07 100644 --- a/docs/sphinx/source/wiki/EvenniaIntroduction.rst +++ b/docs/sphinx/source/wiki/EvenniaIntroduction.rst @@ -117,6 +117,7 @@ Standards/Protocols supported database as game. - IRC/IMC2 - external IRC and/or IMC2 channels can be connected to in-game chat channels +- RSS feeds can be echoed to in-game channels - ANSI, xterm256 colours - Several different databases supported (SQLite3, MySQL, ...) diff --git a/docs/sphinx/source/wiki/GettingStarted.rst b/docs/sphinx/source/wiki/GettingStarted.rst index 9c4fb02ed..e27256bbe 100644 --- a/docs/sphinx/source/wiki/GettingStarted.rst +++ b/docs/sphinx/source/wiki/GettingStarted.rst @@ -4,20 +4,27 @@ Getting Started This will help you download, install and start Evennia for the first time. +*Note: You don't need to make anything visible to the 'net in order to +run and test out Evennia. Apart from installing and updating you don't +even need to have an internet connection. Of course you'll probably want +to put your game online once it matures enough, but until then it works +fine to develop and play around completely in the sanctity and isolation +of your local machine.* + Quick start ----------- For you who are extremely impatient, here's the gist of getting a vanilla Evennia install running. -#. *Get the pre-requisites (mainly Python, Django, Twisted and - Mercurial)*. +#. *Get the pre-requisites (Python, Django, Twisted and Mercurial)*. #. *Start a command terminal/dos prompt and change directory to where you want to have your 'evennia' folder appear*. #. ``hg clone https://code.google.com/p/evennia/ evennia`` #. *Change directory to evennia/game*. #. ``python manage.py`` #. ``python manage.py syncdb`` +#. ``python manage.py migrate`` (only if using South) #. ``python evennia.py -i start`` Evennia should now be running and you can connect to it by pointing a @@ -26,8 +33,8 @@ web browser to ``http://localhost:8000`` or a MUD telnet client to Read on for more detailed instructions and configurations. -Pre-Requesites --------------- +Prerequisites +------------- As far as operating systems go, any system with Python support should work. @@ -44,9 +51,7 @@ Evennia: **Python** (http://www.python.org) -- Version 2.5+. Obs- Python3.x is not supported yet. -- The default database system SQLite3 only comes as part of Python2.5 - and later. +- Version 2.5+. Obs- Python3.x is not supported. - Windows users are recommended to use ActivePython (http://www.activestate.com/activepython/downloads) @@ -75,7 +80,7 @@ Optional packages: **South** (http://south.aeracode.org/) - Version 0.7+ -- Optional. Used for database migrations. +- Optional, but highly recommended. Used for database migrations. **Apache2** (http://httpd.apache.org) @@ -84,16 +89,17 @@ Optional packages: equivalent web servers with a Python interpreter module can also be used. -*Note: You don't need to make anything visible to the 'net in order to -run and test out Evennia. Apart from downloading/updating Evennia itself -you don't even need to have an internet connection. Of course you'll -probably want that as your game matures, but until then it works nicely -to develop and play around completely in the sanctity and isolation of -your local machine.* - Installing pre-requisites ~~~~~~~~~~~~~~~~~~~~~~~~~ +**All platforms** can set up an *virtual Python environment* and install +Evennia to that. All you need pre-installed is Python. Setup is +described in detail +`here `_. +Windows users will probably want to go the ActivePython way instead +though (see below), there are issues with installing certain extensions +in Windows. + **Linux** package managers should usually handle all this for you. Python itself is definitely available through all distributions. On Debian-derived systems (such as Ubuntu) you can do something like this @@ -101,7 +107,7 @@ Debian-derived systems (such as Ubuntu) you can do something like this :: - apt-get install python python-django python-twisted mercurial + apt-get install python python-django python-twisted mercurial python-django-south Few distros actually keep the latest updated security updates (notably django and twisted) in their repos though. So it might be worth to use @@ -113,33 +119,43 @@ or all of these instead: :: - easy_install django twisted pil mercurial + easy_install django twisted pil mercurial south :: - pip install django twisted pil mercurial + pip install django twisted pil mercurial south + +**Mac** users should be able to get most dependencies through +``easy_install`` or ``pip`` like Linux users do. There are however +reports that you might need to get the +`Xcode `_ development system to +install the packages that requites extension compiling. You can also +retrieve the dependencies directly and install them through their native +installers or python setups. **Windows** users may choose to install `ActivePython `_ instead of the usual Python. If ActivePython is installed, you can use `pypm `_ in the same manner as ``easy_install``/``pip`` above. This *greatly* simplifies -getting started on Windows: +getting started on Windows since that platform is otherwise missing many +of the background developer systems that Linux users take for granted. +After installing ActivePython you may need to open a new DOS window to +make this new command available on the command line: :: - pypm install Django Twisted PIL Mercurial + pypm install Django Twisted PIL Mercurial South -Another simple alternative (for all platforms) is to set up a *virtual -Python environment* and install to that - in that case you can even -experiment with different library versions without affecting your main -system configuration. This is covered -`here `_. +This installs everything you need in one go. Windows users not using ActivePython or virtual environments will have -to manually download and install the packages in turn - most have normal -Windows installers, but in some cases you'll need to know how to use the -Windows command prompt to execute some python install scripts. +to manually download and install the packages in turn (including their +own dependencies in the list above). Most have normal Windows +installers, but in some cases you'll need to know how to use the Windows +command prompt to execute python install scripts (usually it's not +harder than running ``python setup.py install`` from the downloaded +package's folder). Step 1: Obtaining the Server ---------------------------- @@ -227,7 +243,7 @@ need to do this: This will migrate the server to the latest version. If you don't use ``South``, migrations will not be used and your server will already be at the latest version (but your existing database might have to be -manually edited to match future server changes). +manually edited to match eventual future schema changes that we do). Step 3: Starting and Stopping the Server ---------------------------------------- @@ -244,19 +260,6 @@ starts in *interactive mode*, as a foreground process. You will see debug/log messages directly in the terminal window instead of logging them to a file. -Running the server in interactive mode is very useful for development -and debugging but is not recommended for production environments. For -the latter you'll want to run it as a *daemon* by skipping the ``-i`` -flag: - -:: - - python evennia.py start - -This will start the server as a background process. Server messages will -be logged to a file you specify in your configuration file (default is a -file in ``game/logs``). - To stop Evennia, do: :: @@ -285,45 +288,35 @@ the ajax web client. Welcome to Evennia! Why not try `building something `_ next? -Optional: Database migrations with South -======================================== - -Evennia supports database migrations using -`South `_, a Django database schema -migration tool. Installing South is optional, but if it is installed, -Evennia *will* use it automatically, meaning this section comes into -play. You can install South from -`http://south.aeracode.org/. `_ It is also -available through the normal package distributions, easy\_install, pip, -or pypm (see above notes). - -After your first run of ``migrate.py syncdb`` and whenever you see a -commit or mailing list message telling you that "the Database Schema has -changed", simply do the following from within the ``evennia/game`` -directory: - -:: - - python manage.py migrate - -You should see migrations being applied, and should be left with an -updated DB schema afterwards. - Optional: A separate installation environment with virtualenv ============================================================= Apart from installing the packages and versions as above, you can also -set up a very fast self-contained Evennia install using the -`virtualenv `_ program. +set up a very easy self-contained Evennia install using the +`virtualenv `_ program. If you +are unsure how to get it, just grab the ``virtualenv.py`` file from that +page and run it directly in the terminal with ``python virtualenv.py``. + Virtualenv sets aside a folder on your harddrive as a stand-alone Python -environment. It should work both on Linux and Windows. First, install -Python as normal, then get virtualenv and install it so you can run it -from the command line. This is an example for setting up Evennia in an -isolated new folder *mudenv*: +environment. It should work both on Linux/Unix and Windows. First, +install Python as normal, then get virtualenv and install it so you can +run it from the command line. This is an example for setting up Evennia +in an isolated new folder *mudenv*: :: python virtualenv mudenv --no-site-packages + +Or, if you grabbed ``virtualenv.py`` and is running it directly: + +:: + + python virtualenv.py mudenv --no-site-packages + +Followed by + +:: + cd mudenv Now we should be in our new directory *mudenv*. Next we activate the @@ -331,27 +324,27 @@ virtual environment in here. :: - # for Linux: + # for Linux/Unix: source bin/activate # for Windows: - \bin\activate.bat + \Scripts\activate.bat -Next we get all the requirements with *pip*, which is included with +The virtual environment within our *mudenv* folder is now active. Next +we get all the requirements with *pip*, which is included with virtualenv: :: - pip install django twisted pil mercurial + pip install django twisted pil mercurial south -(The difference from the normal install described earlier is that these +The difference from the normal install described earlier is that these installed packages are *only* localized to the virtual environment, they do not affect the normal versions of programs you run in the rest of your system. So you could for example experiment with bleeding-edge, unstable libraries or go back to older versions without having to worry about messing up other things. It's also very easy to uninstall the -whole thing in one go - just delete your ``mudenv`` folder.) +whole thing in one go - just delete your ``mudenv`` folder. You can now refer to **Step 1** above and continue on from there to install Evennia into *mudenv*. In the future, just go into the folder -and activate it to make this separate virtual environment available to -Evennia. +and activate it before starting or working with Evennia. diff --git a/docs/sphinx/source/wiki/Internationalization.rst b/docs/sphinx/source/wiki/Internationalization.rst index a28535417..9c5c711cd 100644 --- a/docs/sphinx/source/wiki/Internationalization.rst +++ b/docs/sphinx/source/wiki/Internationalization.rst @@ -12,7 +12,10 @@ Note, what is translated in this way are hard-coded strings from the server, things like "Connection closed" or "Server restarted". Basically, the things users are not supposed to change on their own. This means that the default command set is *not* translated. The reason -for this is that commands are *intended* to be modified by users. +for this is that commands are *intended* to be modified by users. Adding +*i18n* code to commands tend to add complexity to code that will be +changed anyway. One of the goals of Evennia is to keep the +user-changeable code as clean and easy-to-read as possible. Changing server language ------------------------ diff --git a/docs/sphinx/source/wiki/Licensing.rst b/docs/sphinx/source/wiki/Licensing.rst index 633a35bd5..ef0f6565d 100644 --- a/docs/sphinx/source/wiki/Licensing.rst +++ b/docs/sphinx/source/wiki/Licensing.rst @@ -6,19 +6,19 @@ License*. You can find the license as ``LICENCE`` in the Evennia root directory. You can also read the full license file `here `_. -You should read the full license file to know what it says exactly, but +You should read the full license text to know what it says exactly, but here are some answers to common questions. Q: When creating a game using Evennia, what does the licence permit me to do with it? ------------------------------------------------------------------------------------- -**A:** It's your own world to do with as you please! To summarize, a MUD -world you create using Evennia (i.e. the files you create in ``game``) -falls under **§6** of the license (it's a sort of "library"). So your -game world and all its contents belongs to you (as it should be). Keep -it to yourself or re-distribute it under any license of your choice - or -sell it and become filthy rich for all we care. +**A:** It's your own game world to do with as you please! To summarize, +a MUD world you create using Evennia (i.e. the files you create in +``/game/``) falls under **§6** of the license (it's a sort of +"library"). So your game world and all its contents belongs to you (as +it should be). Keep it to yourself or re-distribute it under any license +of your choice - or sell it and become filthy rich for all we care. Q: I have modified Evennia itself, what does the license say about that? ------------------------------------------------------------------------ @@ -30,18 +30,20 @@ is referred to as "The Package, Standard version" in the license. you don't *have* to do anything to appease the license. Regardless, we'd of course appreciate it if you submitted bugs/fixes to us so Evennia becomes more complete!. -- If you made other modifications or added new features to the server, +- If you made bigger modifications or added new features to the server, that's also ok, but falls under **§3** - you must make a clear note - of the changes as well as put the changes into the public domain or - make separate arrangements with us (since it's then no longer a - "Standard version"). Of course, if you plan to add new features to - the server, the easiest way to do so is to simply become an Evennia - developer! + of the changes you did and put those changes into public domain + (since it's then no longer a "Standard version"). You could also + contact the Evennia developers to make separate arrangements ... but + of course, if you plan to add new features to the server, the easiest + way to do so is to simply become an Evennia developer! -Q: Can I re-distribute Evennia along with my custom game implementation? ------------------------------------------------------------------------- +Q: Can I re-distribute the Evennia server package along with my custom +game implementation? +------------------------------------------------------------------------------------------- **A:** Sure. This is covered in **§4** - just package the "Standard -version" (that is, the one you download from us) with your package. Make -sure to include the original license and disclaimers and note where -users may get it if they want to download it of their own. +version" (that is, the one you download from us) with your game files. +Also make sure to include the original license and disclaimers and note +where users may get "plain" Evennia should they want to download it of +their own. diff --git a/docs/sphinx/source/wiki/Links.rst b/docs/sphinx/source/wiki/Links.rst index f89d805e6..8ac25fe05 100644 --- a/docs/sphinx/source/wiki/Links.rst +++ b/docs/sphinx/source/wiki/Links.rst @@ -32,6 +32,9 @@ Third-party Evennia links - `Evennia on PyPi `_ +- `Avaloria `_ (MUD under + development, using Evennia) + General mud/game development ideas and discussions -------------------------------------------------- diff --git a/docs/sphinx/source/wiki/Objects.rst b/docs/sphinx/source/wiki/Objects.rst index 58d9d3aa1..4be069739 100644 --- a/docs/sphinx/source/wiki/Objects.rst +++ b/docs/sphinx/source/wiki/Objects.rst @@ -23,7 +23,7 @@ Here's how to define a new Object typeclass in code: """ This creates a simple rose object """ - at_object_creation(self): + def at_object_creation(self): "this is called only once, when object is first created" # add a persistent attribute 'desc' to object. self.db.desc = "This is a pretty rose with thorns." @@ -44,20 +44,23 @@ To create a new object in code, use the method from src.utils import create new_rose = create.create_object("game.gamesrc.objects.flowers.Rose", key="MyRose") -(You have to give the full path to the class in this case. +(You have to give the full path to the class in this case - ``create.create_object`` is a powerful function that should be used for -all coded creating. Check out the module for more info on which -arguments you can give the function.) +all coded creating, for example if you create your own command that +creates some objects as it runs. Check out the ``src.utils.create`` +module for more info on which arguments you can give the function.) -This particular class doesn't really do much, all it does it make sure -the attribute ``desc``(which is what the ``look`` command looks for) is -pre-set. You could just as well do the same with the ``@describe`` -command. The ``Object`` typeclass offers many more hooks that is -available to use though. Look at the ``Object`` class in -``game/gamesrc/objects/baseobjects.py`` to orient yourself. If you -define a new Object class (inheriting from the base one), and wants that -to be the default instead, set ``BASE_OBJECT_TYPECLASS`` in -``settings.py`` to point to your new class. +This particular Rose class doesn't really do much, all it does it make +sure the attribute ``desc``(which is what the ``look`` command looks +for) is pre-set, which is pretty pointless since you will usually want +to change this at build time (using the ``@describe`` command). The +``Object`` typeclass offers many more hooks that is available to use +though - see next section. + +If you define a new Object class (inheriting from the base one), and +wants the default create command (``@create``) to default to that +instead, set ``BASE_OBJECT_TYPECLASS`` in ``settings.py`` to point to +your new class. Properties and functions on Objects ----------------------------------- @@ -67,36 +70,41 @@ Beyond those properties assigned to all following custom properties: - ``aliases`` - a list of alternative names for the object. Aliases are - stored database objects, but the ``aliases`` property receives and - returns lists - so assign to it like normal, e.g. - ``obj.aliases=['flower', 'red blossom']`` -- ``location`` - a reference to the object currently storing this + stored in the database and can be searched for very fast. The + ``aliases`` property receives and returns lists - so assign to it + like normal, e.g. ``obj.aliases=['flower', 'red blossom']`` +- ``location`` - a reference to the object currently containing this object. - ``home`` is a backup location. The main motivation is to have a safe place to move the object to if its ``location`` is destroyed. All - objects should usually have a home location for this reason. + objects should usually have a home location for safety. - ``destination`` - this holds a reference to another object this object links to in some way. Its main use is for `Exits `_, it's otherwise usually unset. - ``nicks`` - as opposed to aliases, a `Nick `_ holds a convenient nickname replacement for a real name, word or sequence, - only valid for this object. Nicks are stored in the database and are - a bit more complex than aliases since they have a *type* that defines - where Evennia tries to do the substituion. Use nicks.get(alias, type) - to get a nick, or nicks.add(alias, realname) to add a new one. + only valid for this object. This mainly makes sense if the Object is + used as a game character - it can then store briefer shorts, example + so as to quickly reference game commands or other characters. Nicks + are stored in the database and are a bit more complex than aliases + since they have a *type* that defines where Evennia tries to do the + substituion. In code, use nicks.get(alias, type) to get a nick, or + nicks.add(alias, realname) to add a new one. - ``player`` - this holds a reference to a connected `Player `_ controlling this object (if any). Note that this is set also if the controlling player is *not* currently online - - to test if a server is online, use ``has_player`` instead. + - to test if a player is online, use the ``has_player`` property + instead. - ``sessions`` - if ``player`` field is set *and the player is online*, this is a list of all active sessions (server connections) to contact - them through. + them through (it may be more than one if multiple connections are + allowed in settings). - ``permissions`` - a list of `permission strings `_ for - defining access rights. -- ``has_player`` - a shorthand for checking if an online player is + defining access rights for this Object. +- ``has_player`` - a shorthand for checking if an *online* player is currently connected to this object. -- ``contents`` - this is a list referencing all objects 'inside' this - object, that is which has this object set as their ``location``. +- ``contents`` - this returns a list referencing all objects 'inside' + this object (i,e. which has this object set as their ``location``). - ``exits`` - this returns all objects inside this object that are *Exits*, that is, has the ``destination`` property set. @@ -113,8 +121,11 @@ headers in ``src/objects/models.py`` for arguments and more details. - ``msg`` - this function is used to send messages from the server to a player connected to this object. - ``msg_contents`` - calls ``msg`` on all objects inside this object. -- ``search`` - this is a convenient way to search for a specific - object, at a given location or globally. +- ``search`` - this is a convenient shorthand to search for a specific + object, at a given location or globally. It's mainly useful when + defining commands (in which case the object executing the command is + named ``caller`` and one can do ``caller.search()`` to find objects + in the room to operate on). - ``execute_cmd`` - Lets the object execute the given string as if it was given on the command line. - ``move_to`` - perform a full move of this object to a new location. @@ -127,11 +138,12 @@ headers in ``src/objects/models.py`` for arguments and more details. - ``delete`` - deletes this object, first calling ``clear_exits()`` and ``clear_contents()``. -Objects also define a host of *hook methods* beyond -``at_object_creation``. When implementing your custom objects, you will -inherit from the base parent and overload these hooks with your own -custom code. See ``game.gamesrc.baseobjects`` for an updated list of all -the available hooks. +The Object Typeclass defines many more *hook methods* beyond +``at_object_creation``. Evennia calls these hooks at various points. +When implementing your custom objects, you will inherit from the base +parent and overload these hooks with your own custom code. See +``game.gamesrc.baseobjects`` for an updated list of all the available +hooks. Subclasses of *Object* ---------------------- @@ -140,8 +152,9 @@ There are three special subclasses of *Object* in default Evennia - *Characters*, *Rooms* and *Exits*. The reason they are separated is because these particular object types are fundamental, something you will always need and in some cases requires some extra attention in -order to be recognized by the game engine. In practice they are all -pretty similar to the base Object. You will import them all from +order to be recognized by the game engine (there is nothing stopping you +from redefining them though). In practice they are all pretty similar to +the base Object. You will import them all from ``game.gamesrc.objects.baseobjects``. Characters @@ -154,9 +167,9 @@ attribute. A ``Character`` object must have a `Default Commandset `_ set on itself at creation, or the player will not be able to issue any commands! If you just inherit your own class from ``baseobjects.Character`` and make sure the parent -methods are run you should not have to worry about this. You can change -the default typeclass assigned to new Players in your settings with -``BASE_CHARACTER_TYPECLASS``. +methods are not stopped from running you should not have to worry about +this. You can change the default typeclass assigned to new Players in +your settings with ``BASE_CHARACTER_TYPECLASS``. Rooms ~~~~~ diff --git a/docs/sphinx/source/wiki/PortalAndServer.rst b/docs/sphinx/source/wiki/PortalAndServer.rst index ad612a050..357d22ea1 100644 --- a/docs/sphinx/source/wiki/PortalAndServer.rst +++ b/docs/sphinx/source/wiki/PortalAndServer.rst @@ -5,11 +5,16 @@ Evennia consists of two processes, known as *Portal* and *Server*. They can be controlled from inside the game or from the command line as described `here `_. +If you are new to the concept, the main purpose of separating the two is +to have players connect to the Portal but keep the MUD running on the +Server. This way one can restart/reload the game (the Server part) +without Players getting disconnected. + https://2498159658166209538-a-1802744773732722657-s-sites.googlegroups.com/site/evenniaserver/file-cabinet/evennia*server*portal.png The Server and Portal are glued together via an AMP (Asynchronous Messaging Protocol) connection. This allows the two programs to -communicate. +communicate seamlessly. Portal and Server Sessions -------------------------- diff --git a/docs/sphinx/source/wiki/Scripts.rst b/docs/sphinx/source/wiki/Scripts.rst index faf8c2881..8bf56c3cf 100644 --- a/docs/sphinx/source/wiki/Scripts.rst +++ b/docs/sphinx/source/wiki/Scripts.rst @@ -43,11 +43,12 @@ database model). Scripts have no in-game representation and you cannot define them with any default commands. They have to be created in python code modules and imported from there into the game. -The vast majority of scripts are always run 'on' -`Objects `_ affecting that object and maybe its -surroundings or contents. Scripts unrelated to objects are called -*Global* scripts and could handle things like game-time, weather and -other tickers. +Scripts may run directly 'on' `Objects `_, affecting that +object and maybe its surroundings or contents. An alternative way to +affect many objects (rather than one script per object) is to create one +Script and have it call all objects that "subscribe" to it at regular +intervals (a *ticker*). Scripts not defined directly 'on' objects are +called *Global* scripts. Custom script modules are usually stored in ``game/gamesrc/scripts``. As a convenience you can inherit all scripts from @@ -64,7 +65,7 @@ can try it out with an example script: This should cause some random messages. The ``/stop`` switch will kill the script again. -In code, you add scripts to `Objects `_ and the script can +In code, if you add scripts to `Objects `_ the script can then manipulate the object as desired. The script is added to the object's *script handler*, called simply ``scripts``. The handler takes care of all initialization and startup of the script for you. @@ -72,12 +73,27 @@ care of all initialization and startup of the script for you. :: # adding a script to an existing object 'myobj' - myobj.scripts.add("game.gamesrc.scripts.myscripts.CoolScript") + myobj.scripts.add("game.gamesrc.scripts.myscripts.CoolScript") + # alternative way + from src.utils.create import create_script + create_script("game.gamesrc.scripts.myscripts.CoolScript", obj=myobj) -The ``myobj.scripts.add()`` method also takes an argument *key* that -allows you to name your script uniquely before adding it. This is not -necessary, but is useful if you add many scripts of the same class and -later plan to use ``myobj.scripts.delete`` to remove individual scripts. +The creation method(s) takes an optional argument *key* that allows you +to name your script uniquely before adding it. This can be useful if you +add many scripts of the same type and later plan to use +``myobj.scripts.delete`` to remove individual scripts. + +You can create global scripts with ``src.utils.create.create_script()``. +Just don't supply an object to store it on. + +:: + + # adding a global script + from src.utils.create import create_script + create_script("game.gamesrc.scripts.globals.MyGlobalEconomy", key="economy", obj=None) + +Assuming the Script ``game.gamesrc.scripts.globals.MyGlobalEconomy`` +exists, this will create and start it as a global script. Properties and functions defined on Scripts ------------------------------------------- @@ -85,12 +101,13 @@ Properties and functions defined on Scripts It's important to know the variables controlling the script before one can create one. Beyond those properties assigned to all typeclassed objects (see `Typeclasses `_), such as ``key``, -``db``, ``ndb`` etc, all Scripts also has the following properties: +``db``, ``ndb`` etc, all Scripts also have the following properties: - ``desc`` - an optional description of the script's function. Seen in - listings. + script listings. - ``interval`` - how often the script should run. If ``interval == 0`` - (default), it runs forever (it will not accept a negative value). + (default), it runs forever, without any repeating (it will not accept + a negative value). - ``start_delay`` - (bool), if we should wait ``interval`` seconds before firing for the first time or not. - ``repeats`` - How many times we should repeat, assuming @@ -102,8 +119,9 @@ There is one special property: - ``obj`` - the `Object `_ this script is attached to (if any). You should not need to set this manually. If you add the script - to the Object with ``myobj.scripts.add(myscriptpath)``, the ``obj`` - property will be set to ``myobj`` for you. + to the Object with ``myobj.scripts.add(myscriptpath)`` or give + ``myobj`` as an argument to the ``utils.create.create_script`` + function, the ``obj`` property will be set to ``myobj`` for you. It's also imperative to know the hook functions. Normally, overriding these are all the customization you'll need to do in Scripts. You can @@ -129,6 +147,10 @@ find longer descriptions of these in ``gamesrc/scripts/basescript.py``. before calling. - ``at_stop()`` - this is called when the script stops for whatever reason. It's a good place to do custom cleanup. +- ``at_server_reload()`` - this is called whenever the server is + warm-rebooted (e.g. with the ``@reload`` command). It's a good place + to save non-persistent data you might want to survive a reload. +- ``at_server_shutdown()`` - this is called on a full systems shutdown. Running methods (usually called automatically by the engine, but possible to also invoke manually) @@ -140,16 +162,17 @@ possible to also invoke manually) script from a handler will stop it auomatically. ``at_stop()`` will be called. - ``pause()`` - this pauses a running script, rendering it inactive, - but not deleting it. Timers are saved and can be resumed. This is - called automatically when the server reloads. No hooks are called - + but not deleting it. All properties are saved and timers can be + resumed. This is called automatically when the server reloads. No + hooks are called - as far as the script knows, it never stopped - this is a suspension of the script, not a change of state. - ``unpause()`` - resumes a previously paused script. Timers etc are restored to what they were before pause. The server unpauses all paused scripts after a server reload. No hooks are called - as far as the script is concerned, it never stopped running. - ``time_until_next_repeat()`` - for timed scripts, this returns the - time in seconds until it next fires. Returns None if not a timed - script. + time in seconds until it next fires. Returns ``None`` if + ``interval==0``. Example script -------------- @@ -188,27 +211,19 @@ above. Here we put it on a room called ``myroom``: :: - # Assuming Script is found in game/gamesrc/scripts/weather.py myroom.scripts.add(weather.Weather) +In code you can also use the create function directly if you know how to +locate the room you want: + +:: + + from src.utils.create import create_script + create_script('game.gamesrc.scripts.weather.Weather', obj=myroom) + Or, from in-game, use the ``@script`` command: :: @script here = weather.Weather -Global scripts --------------- - -You can create scripts that are not attached to a given object - -*Global* scripts. You can create such a script with -``src.utils.create.create_script()`` by refrainnig from supplying an -object to store it on. - -:: - - from src.utils.create import create_script - create_script(globals.MyGlobalEconomy, key="economy", obj=None) - -Assuming ``game.gamesrc.scripts.global.MyGlobalEconomy`` can be found, -this will create and start it as a global script. diff --git a/docs/sphinx/source/wiki/Typeclasses.rst b/docs/sphinx/source/wiki/Typeclasses.rst index a846c5e8b..cbddc3965 100644 --- a/docs/sphinx/source/wiki/Typeclasses.rst +++ b/docs/sphinx/source/wiki/Typeclasses.rst @@ -16,19 +16,21 @@ Python object management for free. There are three main game 'entities' in Evennia that are what we call *typeclassed*. They are `Players `_, -`Objects `_ and `Scripts `_. As said, this -basically means that they are (almost) normal Python classes that hide -underlying database models ... +`Objects `_ and `Scripts `_. This means that +they are *almost* normal Python classes - they behave and can be +inherited from etc just like normal Python classes except that for +storing data they hide underlying database models ... ... and that's basically all you *really* need to know about how typeclasses work behind the scenes. -To work with them you should however know that all the listed game -entities inherit a common interface from the typeclass system, -properties you can *always* expect a typeclassed entity to have *beyond* -the more specialized properties unique to each sub-type. Typeclasses -also do some special things with their in-built class methods that you -shouldn't edit. +To work with them you should however know that Objects, Scripts and +Players all inherit a lot of helper methods from the typeclass system, +properties you can *always* expect a typeclassed entity to have. In +addition to these, each of the three sub types also offer a host of help +methods and properties you can use. The database handling is hidden, but +it means that typeclasses do some special things with their in-built +class methods that you shouldn't edit. Properties available to all typeclassed entities (Players, Objects, Scripts) diff --git a/locale/sv/LC_MESSAGES/django.mo b/locale/sv/LC_MESSAGES/django.mo index c55b3129a17ed4619687287d3855b762fb0635a0..7c07e2f8deece621a3383fd413b4601c2cee0a8d 100644 GIT binary patch delta 2224 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 diff --git a/locale/sv/LC_MESSAGES/django.po b/locale/sv/LC_MESSAGES/django.po index da462a3ee..a123dce36 100644 --- a/locale/sv/LC_MESSAGES/django.po +++ b/locale/sv/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-11-03 20:21+0100\n" -"PO-Revision-Date: 2011-11-03 22:23+0100\n" +"POT-Creation-Date: 2012-02-19 10:36+0100\n" +"PO-Revision-Date: 2012-02-19 10:45+0100\n" "Last-Translator: Griatch \n" "Language-Team: Griatch \n" "Language: \n" @@ -20,385 +20,6 @@ msgstr "" "X-Poedit-Country: Sweden\n" "X-Poedit-SourceCharset: utf-8\n" -#: game/evennia.py:27 -#, python-format -msgid "" -"\n" -" (version %s) \n" -"\n" -"This program launches Evennia with various options. You can access all\n" -"this functionality directly from the command line; for example option\n" -"five (restart server) would be \"evennia.py restart server\". Use\n" -"\"evennia.py -h\" for command line options.\n" -"\n" -"Evennia consists of two separate programs that both must be running\n" -"for the game to work as it should:\n" -"\n" -"Portal - the connection to the outside world (via telnet, web, ssh\n" -" etc). This is normally running as a daemon and don't need to\n" -" be reloaded unless you are debugging a new connection\n" -" protocol. As long as this is running, players won't loose\n" -" their connection to your game. Only one instance of Portal\n" -" will be started, more will be ignored.\n" -"Server - the game server itself. This will often need to be reloaded\n" -" as you develop your game. The Portal will auto-connect to the\n" -" Server whenever the Server activates. We will also make sure\n" -" to automatically restart this whenever it is shut down (from\n" -" here or from inside the game or via task manager etc). Only\n" -" one instance of Server will be started, more will be ignored.\n" -"\n" -"In a production environment you will want to run with the default\n" -"option (1), which runs as much as possible as a background\n" -"process. When developing your game it is however convenient to\n" -"directly see tracebacks on standard output, so starting with options\n" -"2-4 may be a good bet. As you make changes to your code, reload the\n" -"server (option 5) to make it available to users.\n" -"\n" -"Reload and stop is not well supported in Windows. If you have issues, log\n" -"into the game to stop or restart the server instead. \n" -msgstr "" -"\n" -" (version %s) \n" -"\n" -"Detta program startar Evennia med olika funktionalitet. Du kan se alla\n" -"functioner direkt från kommandoraden; t.ex så motsvarar val nummer 5\n" -"(starta om servern) kommandot \"evennia.py restart server\" Använd \n" -"\"evennia.py -h för att lista alla möjliga kommandon. \n" -"\n" -"Evennia består av tvp separata program som båda måste vara igång\n" -"för att servern ska fungera:\n" -"\n" -"Portal - Kopplingen till omvärlden (via telnet, web, ssh etc). Portalen\n" -" körs vanligen som en \"demon\" och behöver inte startas om\n" -" såtillvida du inte debuggar ett nytt nätverksprotokoll. Så länge\n" -" Portalen kör så kommer inte spelare att förlora kontakten med\n" -" spelet. Bara en instans av Portalen kan starts p¨ en gång, ytterligare\n" -" instanser kommer att ignoreras\n" -"Server - Spelservern själv. Denna kan ofta behöva starts om medan\n" -" du utvecklar ditt spel. Portalen kommer att automatiskt ansluta\n" -" till Servern så fort denna startar. Servern startar också automatiskt\n" -" om så fort den stängs ner (innfrån spelet eller via operativsystemet).\n" -" Bara en instans av Server kan vara igång samtidigt. \n" -"\n" -"När servern är öppen för allmänheten är det lämpligt att använda val (1)\n" -"som innebär att så mycket som möjligt jörs i bakgrunden.\n" -" När man utvecklar sitt spel är det dock bekvämt att direkt se felmeddanden\n" -"i terminalen. För detta är val 2-4 bra val. Starta om servern när ny kod är\n" -"på plats genom att använda val (5).\n" -"\n" -"Omstart och stopp fungerar inte så bra i Windows. Om du har problem, \n" -"loggin in i spelet och starta om innifrån istället.\n" - -#: game/evennia.py:63 -msgid "" -"\n" -"+---------------------------------------------------------------------------+\n" -"| |\n" -"| Welcome to the Evennia launcher! |\n" -"| |\n" -"| Pick an option below. Use 'h' to get help. |\n" -"| |\n" -"+--- Starting (will not restart already running processes) -----------------+\n" -"| |\n" -"| 1) (default): Start Server and Portal. Portal starts in daemon mode.|\n" -"| All output is to logfiles. |\n" -"| 2) (game debug): Start Server and Portal. Portal starts in daemon mode.|\n" -"| Server outputs to stdout instead of logfile. |\n" -"| 3) (portal debug): Start Server and Portal. Portal starts in non-daemon |\n" -"| mode (can be reloaded) and logs to stdout. |\n" -"| 4) (full debug): Start Server and Portal. Portal starts in non-daemon |\n" -"| mode (can be reloaded). Both log to stdout. |\n" -"| |\n" -"+--- Restarting (must first be started) ------------------------------------+\n" -"| |\n" -"| 5) Reload the Server |\n" -"| 6) Reload the Portal (only works in non-daemon mode. If running |\n" -"| in daemon mode, Portal needs to be restarted manually (option 1-4)) |\n" -"| |\n" -"+--- Stopping (must first be started) --------------------------------------+\n" -"| |\n" -"| 7) Stopping both Portal and Server. Server will not restart. |\n" -"| 8) Stopping only Server. Server will not restart. |\n" -"| 9) Stopping only Portal. |\n" -"| |\n" -"+---------------------------------------------------------------------------+\n" -"| h) Help |\n" -"| q) Quit |\n" -"+---------------------------------------------------------------------------+\n" -msgstr "" -"\n" -"+---------------------------------------------------------------------------+\n" -"| |\n" -"| Välkommen till Evennia! |\n" -"| |\n" -"| Välj nedan. Ge '-h' för att få hjälp. |\n" -"| |\n" -"+--- Starta (kommer inte att starta om existerande processer)-------------+\n" -"| |\n" -"| 1) (förvalt): Start Server och Portal. Portalen startar som demon|n| Alla meddelanden till loggfiler |\n" -"| 2) (spelutveckling): Starta Server och Portal. Portalen startar som .|\n" -"| demon. Server meddelar till terminal. |\n" -"| 3) (portal debug): StartaServer and Portal. Portal startar som |\n" -"| icke-demon. |\n" -"| 4) (full debug): StartaServer and Portal. Båda startar som |\n" -"| icke-demon. Båda meddear till terminal. |\n" -"| |\n" -"+--- Starta om (måste först vara startad)-----------------------------------+\n" -"| |\n" -"| 5) Starta om Server |\n" -"| 6) Starta om Portalen (funkar bara som icke-demon). Om man kör |\n" -"| som demon så måste Portalen startas om manuellt (val 1-4) |\n" -"| |\n" -"+--- Stopp (måste först vara startad) --------------------------------------+\n" -"| |\n" -"| 7) Stoppa både Portal och Server. Server startar inte om. |\n" -"| 8) Stoppa bara Server. Server kommer inte att starta om. |\n" -"| 9) Stoppa bara Portalen. |\n" -"| |\n" -"+---------------------------------------------------------------------------+\n" -"| h) Hjälp |\n" -"| q) Avsluta |\n" -"+---------------------------------------------------------------------------+\n" - -#: game/evennia.py:112 -msgid " No settings.py file found. launching manage.py ..." -msgstr " Filen \"settings.py\" hittades inte. Startar manage.py ..." - -#: game/evennia.py:116 -msgid "" -"\n" -" ... A new settings file was created. Edit this file to configure\n" -" Evennia as desired by copy&pasting options from\n" -" src/settings_default.py.\n" -"\n" -" You should then also create/configure the database using\n" -"\n" -" python manage.py syncdb\n" -"\n" -" Make sure to create a new admin user when prompted -- this will be\n" -" user #1 in-game. If you use django-south, you'll see mentions of\n" -" migrating things in the above run. You then also have to run\n" -"\n" -" python manage.py migrate\n" -"\n" -" If you use default sqlite3 database, you will find a file\n" -" evennia.db appearing. This is the database file. Just delete this\n" -" and repeat the above manage.py steps to start with a fresh\n" -" database.\n" -"\n" -" When you are set up, run evennia.py again to start the server." -msgstr "" -"\n" -" ... En ny settings-fil har skapats. Modifiera denna fil för att konfigurera\n" -" Evennia som önskas genom att klippa och klistra från originalet i \n" -" src/settings_default.py.\n" -"\n" -" Du bör sedan återskapa databasen med\n" -"\n" -" python manage.py syncdb\n" -"\n" -" Se till att skapa ett nytt admin-lösenord när så tillfrågas - detta används\n" -" för användare #1 i spelet. Om nu använder django-south kommer du \n" -" se ett omnämnande om migrationer efter de ovanstående kommandona.\n" -" Du måste då köra: \n" -" python manage.py migrate\n" -"\n" -" Om du använder sqlite3-databasen kommer du att hitta en fil\n" -" evennia.db i game/. Detta är databas-filen. Radera denna fil \n" -" och upprepa de ovannämnda stegen för att starta om med en \n" -" ny, tom databas. \n" -"\n" -" När allt är klart, kör evennia.py igen rör att starta servern." - -#: game/evennia.py:161 -msgid "" -"\n" -" Your database does not seem to be set up correctly.\n" -"\n" -" Please run:\n" -" \n" -" python manage.py syncdb\n" -"\n" -" (make sure to create an admin user when prompted). If you use\n" -" pyhon-south you will get mentions of migrating in the above\n" -" run. You then need to also run\n" -"\n" -" python manage.py migrate\n" -"\n" -" When you have a database set up, rerun evennia.py.\n" -" " -msgstr "" -"\n" -" Din databas verkar inte korrekt konfigurerad.\n" -"\n" -" Vänligen kör:\n" -" \n" -" python manage.py syncdb\n" -"\n" -" (Se till att skapa ett administrationskonto när det tillfrågas.\n" -" Om du använder pyhon-south kommer du att se omnämnande om \n" -" Se till att då också köra\n" -"\n" -" python manage.py migrate\n" -"\n" -" När databasen fungeran, kör evennia.py igen.\n" -" " - -#: game/evennia.py:192 -msgid "" -"\n" -" ERROR: Unable to import win32api, which Twisted requires to run.\n" -" You may download it from:\n" -"\n" -" http://sourceforge.net/projects/pywin32\n" -" or\n" -" http://starship.python.net/crew/mhammond/win32/Downloads.html" -msgstr "" -"\n" -" FEL: Kunde inte importera win32api. Twisted behöver detta. \n" -" Ladda ner från:\n" -"\n" -" http://sourceforge.net/projects/pywin32\n" -" eller\n" -" http://starship.python.net/crew/mhammond/win32/Downloads.html" - -#: game/evennia.py:216 -msgid "" -"\n" -" INFO: Since you are running Windows, a file 'twistd.bat' was\n" -" created for you. This is a simple batch file that tries to call\n" -" the twisted executable. Evennia determined this to be:\n" -"\n" -" %{twistd_path}s\n" -"\n" -" If you run into errors at startup you might need to edit\n" -" twistd.bat to point to the actual location of the Twisted\n" -" executable (usually called twistd.py) on your machine.\n" -"\n" -" This procedure is only done once. Run evennia.py again when you\n" -" are ready to start the server.\n" -" " -msgstr "" -"\n" -" INFO: Efersom du kör Windows har en fil 'twistd.bat' skapats\n" -" Detta är en enkel batch-file som försöker anropa twisted:s\n" -" exeutiva fil. Evennia bedömde att detta är:\n" -"\n" -" %{twistd_path}s\n" -"\n" -" Om du stöter på fel under starten så kanske du behöver \n" -" modifiera twistd.dat så att den hittar Twisted:s binärfil (vanligen\n" -" kallad twistd.py) just på din dator.\n" -"\n" -" Denna procedur behöver bara göras en gång. Kör evennia.py\n" -" igen när du är redo att starta servern.\n" -" " - -#: game/evennia.py:266 -msgid "Windows requires Python 2.7 or higher for this operation." -msgstr "Windows kräver Python 2.7 för att utföra detta. " - -#: game/evennia.py:276 -#, python-format -msgid "Process %(pid)s could not be signalled. The PID file '%(pidfile)s' seems stale. Try removing it." -msgstr "Processen %(pid)s kunde inte signaleras. PID-filen '%(pidfile)s' verkar vara ur synk. Ta bort den manuellt." - -#: game/evennia.py:293 -msgid " option > " -msgstr "val >" - -#: game/evennia.py:300 -msgid "press to continue ..." -msgstr "tryck för att fortsätta ..." - -#: game/evennia.py:307 -#: game/evennia.py:340 -msgid "Not a valid option." -msgstr "Inte ett lämpligt val." - -#: game/evennia.py:309 -#: game/evennia.py:355 -#, python-format -msgid "The %s does not seem to be running." -msgstr "%s verkar inte köra. " - -#: game/evennia.py:323 -msgid "This operation is not supported under Windows. Log into the game to restart/reload the server." -msgstr "Detta stöds inte under Windows. Logga in för att starta om servern." - -#: game/evennia.py:325 -#: game/evennia.py:379 -msgid "Server reloaded." -msgstr "Servern startades om." - -#: game/evennia.py:328 -msgid "This operation is not supported under Windows." -msgstr "Detta stöds inte under Windows." - -#: game/evennia.py:330 -msgid "Portal reloaded (or stopped if in daemon mode)." -msgstr "Portalen startades om (eller stoppades, om den körde some demon)" - -#: game/evennia.py:332 -#: game/evennia.py:337 -msgid "Stopped Portal." -msgstr "Stoppade Portalen." - -#: game/evennia.py:333 -#: game/evennia.py:335 -msgid "Stopped Server." -msgstr "Stoppade Portalen." - -#: game/evennia.py:376 -msgid "Restarting from command line is not supported under Windows. Log into the game to restart." -msgstr "Att starta om från kommandoraden stöds inte under Windows. Logga in för att starta om. " - -#: game/evennia.py:381 -msgid "Note: Portal usually don't need to be reloaded unless you are debugging in interactive mode." -msgstr "Obs: Portalen behöver oftast inte startas om såtillvida man inte håller på att debugga portalen. " - -#: game/evennia.py:382 -msgid "If Portal was running in default Daemon mode, it cannot be restarted. In that case you have " -msgstr "Om Portalen kördes som en demon så kan den inte startas om. I såfall måste du" - -#: game/evennia.py:383 -msgid "to restart it manually with 'evennia.py start portal'" -msgstr "starta om den manuellt med 'evennia.py start portal'" - -#: game/evennia.py:384 -msgid "Portal reloaded (or stopped, if it was in daemon mode)." -msgstr "Portalen startades om (eller stoppades om den kördes som demon)" - -#: game/evennia.py:387 -msgid "Server reload." -msgstr "Serven laddades om." - -#: game/evennia.py:392 -#: game/evennia.py:397 -msgid "Server stopped." -msgstr "Servern stoppades." - -#: game/evennia.py:394 -#: game/evennia.py:396 -msgid "Portal stopped." -msgstr "Portalen stoppades." - -#: game/evennia.py:406 -msgid "This is the main Evennia launcher. It handles the Portal and Server, the two services making up Evennia. Default is to operate on both services. Use --interactive together with start to launch services as 'interactive'. Note that when launching 'all' services with the --interactive flag, both services will be started, but only Server will actually be started in interactive mode. This is simply because this is the most commonly useful state. To activate interactive mode also for Portal, launch the two services explicitly as two separate calls to this program. You can also use the menu." -msgstr "Detta är Evennias huvudprogram. Det hanterar Portalen och Servern, de två program so utgör Evennia. Normal verkar alla kommandon på båda programmen. Använd --interactive tillsammans med start för att starta interaktiva lägen. Notera att normalt startar bara Servern i interaktivt läge eftersom detta är det oftast använda läget. För att aktivera interaktivt läge även för Portalen så måste man starta programmen var för sig. Man kan också använde menyn. " - -#: game/evennia.py:408 -msgid "Start given processes in interactive mode (log to stdout, don't start as a daemon)." -msgstr "Starta den angivna processen i interaktivt läge (alla meddelanden till terminalen, starta inte som demon)" - -#: game/evennia.py:423 -msgid "mode should be none or one of 'menu', 'start', 'reload' or 'stop'." -msgstr "'mode' (om den anges) måste antingen vara 'menu', 'start', 'reload' eller 'stop'." - -#: game/evennia.py:426 -msgid "service should be none or 'server', 'portal' or 'all'." -msgstr "'service' (om den anges) måste antingen vara 'server', 'portal' eller 'all'." - #: game/manage.py:116 #, python-format msgid "" @@ -444,117 +65,21 @@ msgstr "" " för att skapa databasen och ditt superuser-konto.\n" " " -#: game/runner.py:43 -msgid "No settings.py file found. Run evennia.py to create it." -msgstr "Ingen settings.py-fil kunde hittas. Kör evennia.py för att skapa den. " - -#: game/runner.py:75 -msgid "Twisted binary for Windows is not ready to use. Please run evennia.py." -msgstr "Twisted:s Windows-binärfil är inte klar att användas. Vänligen kör evennia.py först. " - -#: game/runner.py:149 -#, python-format -msgid "Server process error: %(e)s" -msgstr "Server: Process-fel: %(e)s" - -#: game/runner.py:156 -#, python-format -msgid "Portal process error: %(e)s" -msgstr "Portal: Process-fel: %(e)s" - -#: game/runner.py:182 -msgid "Evennia Server stopped. Restarting ..." -msgstr "Evennia:s Serverprocess stoppades. Startar om ..." - -#: game/runner.py:188 -msgid "Evennia Portal stopped in interactive mode. Restarting ..." -msgstr "Evennia:s Portal-process stoppades i interaktivt läge. Startar om ..." - -#: game/runner.py:201 -msgid "This runner should normally *not* be called directly - it is called automatically from the evennia.py main program. It manages the Evennia game server and portal processes an hosts a threaded loop to restart the Server whenever it is stopped (this constitues Evennia's reload mechanism)." -msgstr "Detta program bör normalt *inte* anropas direkt - det startas automatiskt från evennia.py. Programmet styr Evennia:s Server- och Portal-processer med hj'lp av en trådbaserad loop som gör att Servern kan startas om. " - -#: game/runner.py:204 -msgid "Do not start Server process" -msgstr "Starta inte Server-processen." - -#: game/runner.py:207 -msgid "Do not start Portal process" -msgstr "Starta inte Portal-processen" - -#: game/runner.py:210 -msgid "output server log to stdout instead of logfile" -msgstr "Avge Server-data till stdout istället för till en logfil" - -#: game/runner.py:213 -msgid "output portal log to stdout. Does not make portal a daemon." -msgstr "Avge Portal-data till stdout. Starta inte som demon." - -#: game/runner.py:235 -#, python-format -msgid "" -"\n" -"Evennia Server is already running as process %(pid)s. Not restarted." -msgstr "" -"\n" -" Evennias Server-process kör redan som %(pid)s. Behöver inte startas. " - -#: game/runner.py:244 -msgid "" -"\n" -"Starting Evennia Server (output to stdout)." -msgstr "" -"\n" -"Startar Evennias Server-process (meddelanden till terminalen)." - -#: game/runner.py:246 -msgid "" -"\n" -"Starting Evennia Server (output to server logfile)." -msgstr "" -"\n" -"Startar Evennias Server (meddelanden till logfil)." - -#: game/runner.py:253 -#, python-format -msgid "" -"\n" -"Evennia Portal is already running as process %(pid)s. Not restarted." -msgstr "" -"\n" -"Evennias portal kör redan som %(pid)s. Behöver inte startas." - -#: game/runner.py:263 -msgid "" -"\n" -"Starting Evennia Portal in non-Daemon mode (output to stdout)." -msgstr "" -"\n" -"Startar Evennias Portal-process som icke-demon (meddelanden till terminalen)" - -#: game/runner.py:266 -msgid "" -"\n" -"Starting Evennia Portal in Daemon mode (output to portal logfile)." -msgstr "" -"\n" -"Startar Evennias Portal-process som en demon (meddelanden till logfil)." - -#: src/server/amp.py:113 +#: src/server/amp.py:109 msgid " Portal lost connection to Server." msgstr "Portalen förlorade sin koppling till terminalen. " -#: src/server/amp.py:202 +#: src/server/amp.py:218 msgid " ... Server restarted." msgstr "... Servern startades om. " -#: src/server/amp.py:211 +#: src/server/amp.py:227 #, python-format msgid "AMP Error for %(info)s: %(e)s" msgstr "AMP-fel: %(info)s: %(e)s" -#: src/server/amp.py:308 -#: src/server/amp.py:370 +#: src/server/amp.py:366 +#: src/server/amp.py:428 #, python-format msgid "operation %(op)s not recognized." msgstr "kommando av typ %(op)s kunde inte kännas igen." @@ -567,56 +92,56 @@ msgstr "Skapar objekt (Spelare #1 och Limbo) ..." msgid "#1 could not be created. Check the Player/Character typeclass for bugs." msgstr "#1 kunde inte skapas. Kolla efter fel i typklassen för Player/Character. " -#: src/server/initial_setup.py:66 +#: src/server/initial_setup.py:65 msgid "This is User #1." msgstr "Detta är användare #1." -#: src/server/initial_setup.py:74 +#: src/server/initial_setup.py:73 msgid "Limbo" msgstr "Limbo" -#: src/server/initial_setup.py:95 +#: src/server/initial_setup.py:96 msgid " Creating default channels ..." msgstr "Skapar standardkanaler ..." -#: src/server/initial_setup.py:118 +#: src/server/initial_setup.py:119 msgid " Importing MUX help database (devel reference only) ..." msgstr "Importerar MUX:s hjälpdatabas (enbart för utvecklare)..." -#: src/server/initial_setup.py:122 +#: src/server/initial_setup.py:123 #, python-format msgid " Moving imported help db to help category '%(default)s'." msgstr "Flyttar de importerade hjälpfileran till hjälpkategorin '%(default)s'." -#: src/server/initial_setup.py:133 +#: src/server/initial_setup.py:134 msgid " Creating and starting global scripts ..." msgstr "Skapar och startar globala skript ..." -#: src/server/initial_setup.py:142 +#: src/server/initial_setup.py:143 msgid " Error creating system scripts." msgstr "Fel under skapandet av System-skript." -#: src/server/initial_setup.py:151 +#: src/server/initial_setup.py:152 msgid " Starting in-game time ..." msgstr "Startar spelets tid ..." -#: src/server/initial_setup.py:170 +#: src/server/initial_setup.py:171 msgid " ADMIN_MEDIA_ROOT already exists. Ignored." msgstr "ADMIN_MEDIA_ROOT existerar redan. Ignorerar." -#: src/server/initial_setup.py:173 +#: src/server/initial_setup.py:174 msgid " Admin-media files copied to ADMIN_MEDIA_ROOT (Windows mode)." msgstr "Admin-media-filer kopierades till ADMIN_MEDIA_ROOT (Windows-läge)" -#: src/server/initial_setup.py:178 +#: src/server/initial_setup.py:179 msgid " Admin-media symlinked to ADMIN_MEDIA_ROOT." msgstr "Admin-media länkades till ADMIN_MEDIA_ROOT." -#: src/server/initial_setup.py:180 +#: src/server/initial_setup.py:181 msgid " Admin-media files should be copied manually to ADMIN_MEDIA_ROOT." msgstr "Admin-media-filer bör kopieras manuellt till ADMIN_MEDIA_ROOT." -#: src/server/initial_setup.py:193 +#: src/server/initial_setup.py:194 msgid " Running at_initial_setup() hook." msgstr "Kör kroken at_initial_setup()." @@ -625,36 +150,40 @@ msgstr "Kör kroken at_initial_setup()." msgid "ServerConfig cannot store db objects! (%s)" msgstr "ServerConfig kan inte lagra databas-objekt! (%s)" -#: src/server/portal.py:108 -#: src/server/server.py:160 +#: src/server/portal.py:106 #, python-format msgid " %(servername)s Portal (%(version)s) started." msgstr " %(servername)s Portal (%(version)s) startades." -#: src/server/portal.py:140 +#: src/server/portal.py:138 #, python-format msgid "writing mode=%(mode)s to %(portal_restart)s" msgstr "writing mode = %(mode)s till %(portal_restart)s" -#: src/server/server.py:132 +#: src/server/server.py:137 msgid " Server started for the first time. Setting defaults." msgstr "Servern startades för första gången. Sätter standardvärden." -#: src/server/server.py:140 +#: src/server/server.py:145 #, python-format msgid " Resuming initial setup from step %(last)s." msgstr "Startar om uppstarten från steg nummer %(last)s." -#: src/server/serversession.py:101 +#: src/server/server.py:165 +#, fuzzy, python-format +msgid " %(servername)s Server (%(version)s) started." +msgstr " %(servername)s Portal (%(version)s) startades." + +#: src/server/serversession.py:109 #, python-format msgid "Logged in: %(self)s" msgstr "%(self)s loggade in. " -#: src/server/sessionhandler.py:201 +#: src/server/sessionhandler.py:204 msgid "Logged in from elsewhere. Disconnecting." msgstr "Inloggad från någon annanstans. Kopplas ifrån." -#: src/server/sessionhandler.py:217 +#: src/server/sessionhandler.py:220 msgid "Idle timeout exceeded, disconnecting." msgstr "Passivitetstimer överskriden. Kopplas ifrån." @@ -724,49 +253,640 @@ msgstr "Evennia webside-admin" msgid "Evennia database administration" msgstr "Evennia databas-administration" -#: src/web/templates/admin/index.html:30 -#: src/web/templates/admin/index.html:72 -#: src/web/templates/admin/index.html:116 +#: src/web/templates/admin/index.html:29 +#: src/web/templates/admin/index.html:73 +#: src/web/templates/admin/index.html:117 #, python-format msgid "Models available in the %(name)s application." msgstr "Modeller tillgängliga i %(name)s." -#: src/web/templates/admin/index.html:31 -#: src/web/templates/admin/index.html:73 -#: src/web/templates/admin/index.html:117 +#: src/web/templates/admin/index.html:30 +#: src/web/templates/admin/index.html:74 +#: src/web/templates/admin/index.html:118 #, python-format msgid "%(name)s" msgstr "%(name)s" #: src/web/templates/admin/index.html:41 -#: src/web/templates/admin/index.html:83 -#: src/web/templates/admin/index.html:127 +#: src/web/templates/admin/index.html:84 +#: src/web/templates/admin/index.html:128 +#: src/web/templates/admin/players/change_form.html:23 msgid "Add" msgstr "Lägg till" #: src/web/templates/admin/index.html:47 -#: src/web/templates/admin/index.html:89 -#: src/web/templates/admin/index.html:133 +#: src/web/templates/admin/index.html:90 +#: src/web/templates/admin/index.html:134 msgid "Change" msgstr "Ändra" -#: src/web/templates/admin/index.html:148 +#: src/web/templates/admin/index.html:149 msgid "You don't have permission to edit anything." msgstr "Du har inte tillstånd att ändra någonting." -#: src/web/templates/admin/index.html:156 +#: src/web/templates/admin/index.html:157 msgid "Recent Actions" msgstr "Senaste Handlingar" -#: src/web/templates/admin/index.html:157 +#: src/web/templates/admin/index.html:158 msgid "My Actions" msgstr "Mina Handlingar" -#: src/web/templates/admin/index.html:161 +#: src/web/templates/admin/index.html:162 msgid "None yet." msgstr "Inga än." -#: src/web/templates/admin/index.html:175 +#: src/web/templates/admin/index.html:176 msgid "Unknown content" msgstr "Okänt innehåll" +#: src/web/templates/admin/players/add_form.html:6 +msgid "First, enter a username and password. Then you'll be able to edit more Player options." +msgstr "Mata först in ett användarnamn och lösenord. Sedan kommer du att kunna ändra fler Spelarinställningar." + +#: src/web/templates/admin/players/add_form.html:8 +msgid "Enter a username and password." +msgstr "Mata in ett användarnamn och lösenord." + +#: src/web/templates/admin/players/change_form.html:20 +#: src/web/templates/admin/players/change_list.html:42 +msgid "Home" +msgstr "Hem" + +#: src/web/templates/admin/players/change_form.html:31 +msgid "History" +msgstr "Historia" + +#: src/web/templates/admin/players/change_form.html:32 +#: src/web/templates/admin/players/stacked.html:9 +msgid "View on site" +msgstr "Se på Websida" + +#: src/web/templates/admin/players/change_form.html:43 +#: src/web/templates/admin/players/change_list.html:73 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Vänligen korrigera felet nedan." +msgstr[1] "Vänligen korrigera felen nedan." + +#: src/web/templates/admin/players/change_list.html:64 +#, python-format +msgid "Add %(name)s" +msgstr "Lägg till %(name)s" + +#: src/web/templates/admin/players/change_list.html:84 +msgid "Filter" +msgstr "Filtrera" + +#: src/web/templates/admin/players/stacked.html:67 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "Lägg till ett annat %(verbose_name)s" + +#: src/web/templates/admin/players/stacked.html:70 +msgid "Remove" +msgstr "Ta bort" + +#~ msgid "" +#~ "\n" +#~ " (version %s) \n" +#~ "\n" +#~ "This program launches Evennia with various options. You can access all\n" +#~ "this functionality directly from the command line; for example option\n" +#~ "five (restart server) would be \"evennia.py restart server\". Use\n" +#~ "\"evennia.py -h\" for command line options.\n" +#~ "\n" +#~ "Evennia consists of two separate programs that both must be running\n" +#~ "for the game to work as it should:\n" +#~ "\n" +#~ "Portal - the connection to the outside world (via telnet, web, ssh\n" +#~ " etc). This is normally running as a daemon and don't need to\n" +#~ " be reloaded unless you are debugging a new connection\n" +#~ " protocol. As long as this is running, players won't loose\n" +#~ " their connection to your game. Only one instance of Portal\n" +#~ " will be started, more will be ignored.\n" +#~ "Server - the game server itself. This will often need to be reloaded\n" +#~ " as you develop your game. The Portal will auto-connect to the\n" +#~ " Server whenever the Server activates. We will also make sure\n" +#~ " to automatically restart this whenever it is shut down (from\n" +#~ " here or from inside the game or via task manager etc). Only\n" +#~ " one instance of Server will be started, more will be ignored.\n" +#~ "\n" +#~ "In a production environment you will want to run with the default\n" +#~ "option (1), which runs as much as possible as a background\n" +#~ "process. When developing your game it is however convenient to\n" +#~ "directly see tracebacks on standard output, so starting with options\n" +#~ "2-4 may be a good bet. As you make changes to your code, reload the\n" +#~ "server (option 5) to make it available to users.\n" +#~ "\n" +#~ "Reload and stop is not well supported in Windows. If you have issues, " +#~ "log\n" +#~ "into the game to stop or restart the server instead. \n" +#~ msgstr "" +#~ "\n" +#~ " (version %s) \n" +#~ "\n" +#~ "Detta program startar Evennia med olika funktionalitet. Du kan se alla\n" +#~ "functioner direkt från kommandoraden; t.ex så motsvarar val nummer 5\n" +#~ "(starta om servern) kommandot \"evennia.py restart server\" Använd \n" +#~ "\"evennia.py -h för att lista alla möjliga kommandon. \n" +#~ "\n" +#~ "Evennia består av tvp separata program som båda måste vara igång\n" +#~ "för att servern ska fungera:\n" +#~ "\n" +#~ "Portal - Kopplingen till omvärlden (via telnet, web, ssh etc). Portalen\n" +#~ " körs vanligen som en \"demon\" och behöver inte startas om\n" +#~ " såtillvida du inte debuggar ett nytt nätverksprotokoll. Så " +#~ "länge\n" +#~ " Portalen kör så kommer inte spelare att förlora kontakten med\n" +#~ " spelet. Bara en instans av Portalen kan starts p¨ en gång, " +#~ "ytterligare\n" +#~ " instanser kommer att ignoreras\n" +#~ "Server - Spelservern själv. Denna kan ofta behöva starts om medan\n" +#~ " du utvecklar ditt spel. Portalen kommer att automatiskt ansluta\n" +#~ " till Servern så fort denna startar. Servern startar också " +#~ "automatiskt\n" +#~ " om så fort den stängs ner (innfrån spelet eller via " +#~ "operativsystemet).\n" +#~ " Bara en instans av Server kan vara igång samtidigt. \n" +#~ "\n" +#~ "När servern är öppen för allmänheten är det lämpligt att använda val (1)\n" +#~ "som innebär att så mycket som möjligt jörs i bakgrunden.\n" +#~ " När man utvecklar sitt spel är det dock bekvämt att direkt se " +#~ "felmeddanden\n" +#~ "i terminalen. För detta är val 2-4 bra val. Starta om servern när ny kod " +#~ "är\n" +#~ "på plats genom att använda val (5).\n" +#~ "\n" +#~ "Omstart och stopp fungerar inte så bra i Windows. Om du har problem, \n" +#~ "loggin in i spelet och starta om innifrån istället.\n" + +#~ msgid "" +#~ "\n" +#~ "+---------------------------------------------------------------------------" +#~ "+\n" +#~ "| " +#~ "|\n" +#~ "| Welcome to the Evennia " +#~ "launcher! |\n" +#~ "| " +#~ "|\n" +#~ "| Pick an option below. Use 'h' to get " +#~ "help. |\n" +#~ "| " +#~ "|\n" +#~ "+--- Starting (will not restart already running processes) " +#~ "-----------------+\n" +#~ "| " +#~ "|\n" +#~ "| 1) (default): Start Server and Portal. Portal starts in daemon " +#~ "mode.|\n" +#~ "| All output is to " +#~ "logfiles. |\n" +#~ "| 2) (game debug): Start Server and Portal. Portal starts in daemon " +#~ "mode.|\n" +#~ "| Server outputs to stdout instead of " +#~ "logfile. |\n" +#~ "| 3) (portal debug): Start Server and Portal. Portal starts in non-" +#~ "daemon |\n" +#~ "| mode (can be reloaded) and logs to " +#~ "stdout. |\n" +#~ "| 4) (full debug): Start Server and Portal. Portal starts in non-" +#~ "daemon |\n" +#~ "| mode (can be reloaded). Both log to " +#~ "stdout. |\n" +#~ "| " +#~ "|\n" +#~ "+--- Restarting (must first be started) " +#~ "------------------------------------+\n" +#~ "| " +#~ "|\n" +#~ "| 5) Reload the " +#~ "Server |\n" +#~ "| 6) Reload the Portal (only works in non-daemon mode. If " +#~ "running |\n" +#~ "| in daemon mode, Portal needs to be restarted manually (option " +#~ "1-4)) |\n" +#~ "| " +#~ "|\n" +#~ "+--- Stopping (must first be started) " +#~ "--------------------------------------+\n" +#~ "| " +#~ "|\n" +#~ "| 7) Stopping both Portal and Server. Server will not " +#~ "restart. |\n" +#~ "| 8) Stopping only Server. Server will not " +#~ "restart. |\n" +#~ "| 9) Stopping only " +#~ "Portal. |\n" +#~ "| " +#~ "|\n" +#~ "+---------------------------------------------------------------------------" +#~ "+\n" +#~ "| h) " +#~ "Help |\n" +#~ "| q) " +#~ "Quit |\n" +#~ "+---------------------------------------------------------------------------" +#~ "+\n" +#~ msgstr "" +#~ "\n" +#~ "+---------------------------------------------------------------------------" +#~ "+\n" +#~ "| " +#~ "|\n" +#~ "| Välkommen till " +#~ "Evennia! |\n" +#~ "| " +#~ "|\n" +#~ "| Välj nedan. Ge '-h' för att få " +#~ "hjälp. |\n" +#~ "| " +#~ "|\n" +#~ "+--- Starta (kommer inte att starta om existerande processer)-------------" +#~ "+\n" +#~ "| " +#~ "|\n" +#~ "| 1) (förvalt): Start Server och Portal. Portalen startar som demon|" +#~ "n| Alla meddelanden till " +#~ "loggfiler |\n" +#~ "| 2) (spelutveckling): Starta Server och Portal. Portalen startar " +#~ "som .|\n" +#~ "| demon. Server meddelar till " +#~ "terminal. |\n" +#~ "| 3) (portal debug): StartaServer and Portal. Portal startar " +#~ "som |\n" +#~ "| icke-" +#~ "demon. |\n" +#~ "| 4) (full debug): StartaServer and Portal. Båda startar " +#~ "som |\n" +#~ "| icke-demon. Båda meddear till " +#~ "terminal. |\n" +#~ "| " +#~ "|\n" +#~ "+--- Starta om (måste först vara " +#~ "startad)-----------------------------------+\n" +#~ "| " +#~ "|\n" +#~ "| 5) Starta om " +#~ "Server |\n" +#~ "| 6) Starta om Portalen (funkar bara som icke-demon). Om man " +#~ "kör |\n" +#~ "| som demon så måste Portalen startas om manuellt (val " +#~ "1-4) |\n" +#~ "| " +#~ "|\n" +#~ "+--- Stopp (måste först vara startad) " +#~ "--------------------------------------+\n" +#~ "| " +#~ "|\n" +#~ "| 7) Stoppa både Portal och Server. Server startar inte " +#~ "om. |\n" +#~ "| 8) Stoppa bara Server. Server kommer inte att starta " +#~ "om. |\n" +#~ "| 9) Stoppa bara " +#~ "Portalen. |\n" +#~ "| " +#~ "|\n" +#~ "+---------------------------------------------------------------------------" +#~ "+\n" +#~ "| h) " +#~ "Hjälp |\n" +#~ "| q) " +#~ "Avsluta |\n" +#~ "+---------------------------------------------------------------------------" +#~ "+\n" + +#~ msgid " No settings.py file found. launching manage.py ..." +#~ msgstr " Filen \"settings.py\" hittades inte. Startar manage.py ..." + +#~ msgid "" +#~ "\n" +#~ " ... A new settings file was created. Edit this file to configure\n" +#~ " Evennia as desired by copy&pasting options from\n" +#~ " src/settings_default.py.\n" +#~ "\n" +#~ " You should then also create/configure the database using\n" +#~ "\n" +#~ " python manage.py syncdb\n" +#~ "\n" +#~ " Make sure to create a new admin user when prompted -- this will be\n" +#~ " user #1 in-game. If you use django-south, you'll see mentions of\n" +#~ " migrating things in the above run. You then also have to run\n" +#~ "\n" +#~ " python manage.py migrate\n" +#~ "\n" +#~ " If you use default sqlite3 database, you will find a file\n" +#~ " evennia.db appearing. This is the database file. Just delete this\n" +#~ " and repeat the above manage.py steps to start with a fresh\n" +#~ " database.\n" +#~ "\n" +#~ " When you are set up, run evennia.py again to start the server." +#~ msgstr "" +#~ "\n" +#~ " ... En ny settings-fil har skapats. Modifiera denna fil för att " +#~ "konfigurera\n" +#~ " Evennia som önskas genom att klippa och klistra från originalet i \n" +#~ " src/settings_default.py.\n" +#~ "\n" +#~ " Du bör sedan återskapa databasen med\n" +#~ "\n" +#~ " python manage.py syncdb\n" +#~ "\n" +#~ " Se till att skapa ett nytt admin-lösenord när så tillfrågas - detta " +#~ "används\n" +#~ " för användare #1 i spelet. Om nu använder django-south kommer du \n" +#~ " se ett omnämnande om migrationer efter de ovanstående kommandona.\n" +#~ " Du måste då köra: \n" +#~ " python manage.py migrate\n" +#~ "\n" +#~ " Om du använder sqlite3-databasen kommer du att hitta en fil\n" +#~ " evennia.db i game/. Detta är databas-filen. Radera denna fil \n" +#~ " och upprepa de ovannämnda stegen för att starta om med en \n" +#~ " ny, tom databas. \n" +#~ "\n" +#~ " När allt är klart, kör evennia.py igen rör att starta servern." + +#~ msgid "" +#~ "\n" +#~ " Your database does not seem to be set up correctly.\n" +#~ "\n" +#~ " Please run:\n" +#~ " \n" +#~ " python manage.py syncdb\n" +#~ "\n" +#~ " (make sure to create an admin user when prompted). If you use\n" +#~ " pyhon-south you will get mentions of migrating in the above\n" +#~ " run. You then need to also run\n" +#~ "\n" +#~ " python manage.py migrate\n" +#~ "\n" +#~ " When you have a database set up, rerun evennia.py.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " Din databas verkar inte korrekt konfigurerad.\n" +#~ "\n" +#~ " Vänligen kör:\n" +#~ " \n" +#~ " python manage.py syncdb\n" +#~ "\n" +#~ " (Se till att skapa ett administrationskonto när det tillfrågas.\n" +#~ " Om du använder pyhon-south kommer du att se omnämnande om \n" +#~ " Se till att då också köra\n" +#~ "\n" +#~ " python manage.py migrate\n" +#~ "\n" +#~ " När databasen fungeran, kör evennia.py igen.\n" +#~ " " + +#~ msgid "" +#~ "\n" +#~ " ERROR: Unable to import win32api, which Twisted requires to run.\n" +#~ " You may download it from:\n" +#~ "\n" +#~ " http://sourceforge.net/projects/pywin32\n" +#~ " or\n" +#~ " http://starship.python.net/crew/mhammond/win32/Downloads.html" +#~ msgstr "" +#~ "\n" +#~ " FEL: Kunde inte importera win32api. Twisted behöver detta. \n" +#~ " Ladda ner från:\n" +#~ "\n" +#~ " http://sourceforge.net/projects/pywin32\n" +#~ " eller\n" +#~ " http://starship.python.net/crew/mhammond/win32/Downloads.html" + +#~ msgid "" +#~ "\n" +#~ " INFO: Since you are running Windows, a file 'twistd.bat' was\n" +#~ " created for you. This is a simple batch file that tries to call\n" +#~ " the twisted executable. Evennia determined this to be:\n" +#~ "\n" +#~ " %{twistd_path}s\n" +#~ "\n" +#~ " If you run into errors at startup you might need to edit\n" +#~ " twistd.bat to point to the actual location of the Twisted\n" +#~ " executable (usually called twistd.py) on your machine.\n" +#~ "\n" +#~ " This procedure is only done once. Run evennia.py again when you\n" +#~ " are ready to start the server.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " INFO: Efersom du kör Windows har en fil 'twistd.bat' skapats\n" +#~ " Detta är en enkel batch-file som försöker anropa twisted:s\n" +#~ " exeutiva fil. Evennia bedömde att detta är:\n" +#~ "\n" +#~ " %{twistd_path}s\n" +#~ "\n" +#~ " Om du stöter på fel under starten så kanske du behöver \n" +#~ " modifiera twistd.dat så att den hittar Twisted:s binärfil (vanligen\n" +#~ " kallad twistd.py) just på din dator.\n" +#~ "\n" +#~ " Denna procedur behöver bara göras en gång. Kör evennia.py\n" +#~ " igen när du är redo att starta servern.\n" +#~ " " + +#~ msgid "Windows requires Python 2.7 or higher for this operation." +#~ msgstr "Windows kräver Python 2.7 för att utföra detta. " + +#~ msgid "" +#~ "Process %(pid)s could not be signalled. The PID file '%(pidfile)s' seems " +#~ "stale. Try removing it." +#~ msgstr "" +#~ "Processen %(pid)s kunde inte signaleras. PID-filen '%(pidfile)s' verkar " +#~ "vara ur synk. Ta bort den manuellt." + +#~ msgid " option > " +#~ msgstr "val >" + +#~ msgid "press to continue ..." +#~ msgstr "tryck för att fortsätta ..." + +#~ msgid "Not a valid option." +#~ msgstr "Inte ett lämpligt val." + +#~ msgid "The %s does not seem to be running." +#~ msgstr "%s verkar inte köra. " + +#~ msgid "" +#~ "This operation is not supported under Windows. Log into the game to " +#~ "restart/reload the server." +#~ msgstr "Detta stöds inte under Windows. Logga in för att starta om servern." + +#~ msgid "Server reloaded." +#~ msgstr "Servern startades om." + +#~ msgid "This operation is not supported under Windows." +#~ msgstr "Detta stöds inte under Windows." + +#~ msgid "Portal reloaded (or stopped if in daemon mode)." +#~ msgstr "Portalen startades om (eller stoppades, om den körde some demon)" + +#~ msgid "Stopped Portal." +#~ msgstr "Stoppade Portalen." + +#~ msgid "Stopped Server." +#~ msgstr "Stoppade Portalen." + +#~ msgid "" +#~ "Restarting from command line is not supported under Windows. Log into the " +#~ "game to restart." +#~ msgstr "" +#~ "Att starta om från kommandoraden stöds inte under Windows. Logga in för " +#~ "att starta om. " + +#~ msgid "" +#~ "Note: Portal usually don't need to be reloaded unless you are debugging " +#~ "in interactive mode." +#~ msgstr "" +#~ "Obs: Portalen behöver oftast inte startas om såtillvida man inte håller " +#~ "på att debugga portalen. " + +#~ msgid "" +#~ "If Portal was running in default Daemon mode, it cannot be restarted. In " +#~ "that case you have " +#~ msgstr "" +#~ "Om Portalen kördes som en demon så kan den inte startas om. I såfall " +#~ "måste du" + +#~ msgid "to restart it manually with 'evennia.py start portal'" +#~ msgstr "starta om den manuellt med 'evennia.py start portal'" + +#~ msgid "Portal reloaded (or stopped, if it was in daemon mode)." +#~ msgstr "Portalen startades om (eller stoppades om den kördes som demon)" + +#~ msgid "Server reload." +#~ msgstr "Serven laddades om." + +#~ msgid "Server stopped." +#~ msgstr "Servern stoppades." + +#~ msgid "Portal stopped." +#~ msgstr "Portalen stoppades." + +#~ msgid "" +#~ "This is the main Evennia launcher. It handles the Portal and Server, the " +#~ "two services making up Evennia. Default is to operate on both services. " +#~ "Use --interactive together with start to launch services as " +#~ "'interactive'. Note that when launching 'all' services with the --" +#~ "interactive flag, both services will be started, but only Server will " +#~ "actually be started in interactive mode. This is simply because this is " +#~ "the most commonly useful state. To activate interactive mode also for " +#~ "Portal, launch the two services explicitly as two separate calls to this " +#~ "program. You can also use the menu." +#~ msgstr "" +#~ "Detta är Evennias huvudprogram. Det hanterar Portalen och Servern, de två " +#~ "program so utgör Evennia. Normal verkar alla kommandon på båda " +#~ "programmen. Använd --interactive tillsammans med start för att starta " +#~ "interaktiva lägen. Notera att normalt startar bara Servern i interaktivt " +#~ "läge eftersom detta är det oftast använda läget. För att aktivera " +#~ "interaktivt läge även för Portalen så måste man starta programmen var för " +#~ "sig. Man kan också använde menyn. " + +#~ msgid "" +#~ "Start given processes in interactive mode (log to stdout, don't start as " +#~ "a daemon)." +#~ msgstr "" +#~ "Starta den angivna processen i interaktivt läge (alla meddelanden till " +#~ "terminalen, starta inte som demon)" + +#~ msgid "mode should be none or one of 'menu', 'start', 'reload' or 'stop'." +#~ msgstr "" +#~ "'mode' (om den anges) måste antingen vara 'menu', 'start', 'reload' eller " +#~ "'stop'." + +#~ msgid "service should be none or 'server', 'portal' or 'all'." +#~ msgstr "" +#~ "'service' (om den anges) måste antingen vara 'server', 'portal' eller " +#~ "'all'." + +#~ msgid "No settings.py file found. Run evennia.py to create it." +#~ msgstr "" +#~ "Ingen settings.py-fil kunde hittas. Kör evennia.py för att skapa den. " + +#~ msgid "" +#~ "Twisted binary for Windows is not ready to use. Please run evennia.py." +#~ msgstr "" +#~ "Twisted:s Windows-binärfil är inte klar att användas. Vänligen kör " +#~ "evennia.py först. " + +#~ msgid "Server process error: %(e)s" +#~ msgstr "Server: Process-fel: %(e)s" + +#~ msgid "Portal process error: %(e)s" +#~ msgstr "Portal: Process-fel: %(e)s" + +#~ msgid "Evennia Server stopped. Restarting ..." +#~ msgstr "Evennia:s Serverprocess stoppades. Startar om ..." + +#~ msgid "Evennia Portal stopped in interactive mode. Restarting ..." +#~ msgstr "" +#~ "Evennia:s Portal-process stoppades i interaktivt läge. Startar om ..." + +#~ msgid "" +#~ "This runner should normally *not* be called directly - it is called " +#~ "automatically from the evennia.py main program. It manages the Evennia " +#~ "game server and portal processes an hosts a threaded loop to restart the " +#~ "Server whenever it is stopped (this constitues Evennia's reload " +#~ "mechanism)." +#~ msgstr "" +#~ "Detta program bör normalt *inte* anropas direkt - det startas automatiskt " +#~ "från evennia.py. Programmet styr Evennia:s Server- och Portal-processer " +#~ "med hj'lp av en trådbaserad loop som gör att Servern kan startas om. " + +#~ msgid "Do not start Server process" +#~ msgstr "Starta inte Server-processen." + +#~ msgid "Do not start Portal process" +#~ msgstr "Starta inte Portal-processen" + +#~ msgid "output server log to stdout instead of logfile" +#~ msgstr "Avge Server-data till stdout istället för till en logfil" + +#~ msgid "output portal log to stdout. Does not make portal a daemon." +#~ msgstr "Avge Portal-data till stdout. Starta inte som demon." + +#~ msgid "" +#~ "\n" +#~ "Evennia Server is already running as process %(pid)s. Not restarted." +#~ msgstr "" +#~ "\n" +#~ " Evennias Server-process kör redan som %(pid)s. Behöver inte startas. " + +#~ msgid "" +#~ "\n" +#~ "Starting Evennia Server (output to stdout)." +#~ msgstr "" +#~ "\n" +#~ "Startar Evennias Server-process (meddelanden till terminalen)." + +#~ msgid "" +#~ "\n" +#~ "Starting Evennia Server (output to server logfile)." +#~ msgstr "" +#~ "\n" +#~ "Startar Evennias Server (meddelanden till logfil)." + +#~ msgid "" +#~ "\n" +#~ "Evennia Portal is already running as process %(pid)s. Not restarted." +#~ msgstr "" +#~ "\n" +#~ "Evennias portal kör redan som %(pid)s. Behöver inte startas." + +#~ msgid "" +#~ "\n" +#~ "Starting Evennia Portal in non-Daemon mode (output to stdout)." +#~ msgstr "" +#~ "\n" +#~ "Startar Evennias Portal-process som icke-demon (meddelanden till " +#~ "terminalen)" + +#~ msgid "" +#~ "\n" +#~ "Starting Evennia Portal in Daemon mode (output to portal logfile)." +#~ msgstr "" +#~ "\n" +#~ "Startar Evennias Portal-process som en demon (meddelanden till logfil)."