<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nlmdejonge</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nlmdejonge"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Nlmdejonge"/>
	<updated>2026-05-17T00:47:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=PblWML&amp;diff=38099</id>
		<title>PblWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=PblWML&amp;diff=38099"/>
		<updated>2010-08-29T14:06:07Z</updated>

		<summary type="html">&lt;p&gt;Nlmdejonge: /* type */ A _lot_ of people use scenario_mp when their add-on contains multiple scenarios.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
&lt;br /&gt;
To upload an add-on you have made, you need a .pbl file.&lt;br /&gt;
&lt;br /&gt;
This is a file with name '''data/add-ons/''addon-name''.pbl'''.  [http://exong.net/wesnoth-attach/files/pblexample_111.png Click here for an example of what we're talking about.]&lt;br /&gt;
&lt;br /&gt;
When you upload a add-on, the file '''data/add-ons/''addon-name''.cfg'''&lt;br /&gt;
and the directory '''data/add-ons/''addon-name''/''' will be published. Alternatively, '''data/add-ons/''addon-name''.cfg''' can be replaced with '''data/add-ons/''addon-name''/_main.cfg.cfg'''. Your add-on must be based entirely on these paths.&lt;br /&gt;
&lt;br /&gt;
Be aware that translations in the .pbl-files are '''not''' used, so don't mark these strings as translatable.&lt;br /&gt;
&lt;br /&gt;
== What goes into a .pbl file? ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''You should '''not''' use special formatting or coloring in any of these keys when uploading to the official server.'''''&lt;br /&gt;
&lt;br /&gt;
The following keys are recognized for .pbl files:&lt;br /&gt;
&lt;br /&gt;
=== icon ===&lt;br /&gt;
: An image, displayed leftmost in the add-ons download dialog. It must be a standard Wesnoth file and not a custom one. A custom file will work for users who already have the relevant add-on installed. This is not related to the icon used for entries in the campaigns menu -- see [[CampaignWML]] for more information.&lt;br /&gt;
&lt;br /&gt;
: If the icon is a unit with magenta team-color bits, please use [[ImagePathFunctionWML]] to recolor it.&lt;br /&gt;
&lt;br /&gt;
=== title ===&lt;br /&gt;
: Displayed to the right of the icon, it is just text. It should usually be the same as the name of your add-on when it is played.&lt;br /&gt;
&lt;br /&gt;
=== version ===&lt;br /&gt;
: Displayed to the right of the title, it is just text. However, starting with Wesnoth 1.6, the ''required'' format is x.y.z where x, y and z are numbers and a value for x greater than 0 implies the add-on is complete feature-wise. Trailing non-numeric elements are allowed, but nothing should appear ''before'' the numbers. This is necessary for the ''Update add-ons'' button to work correctly. ([[#Version Key Examples|See Examples]])&lt;br /&gt;
&lt;br /&gt;
=== author ===&lt;br /&gt;
: Displayed to the right of the version, it is just text. Put your name or nickname here. If several people have contributed significantly to the add-on you may want to all of their names.&lt;br /&gt;
&lt;br /&gt;
=== passphrase ===&lt;br /&gt;
: Not displayed, it prevents others from modifying the version of your add-on on the server. You do not need to input a passphrase when initially publishing a add-on; if you do not, one will be randomly generated for you and replaced in your local copy of the .pbl file.&lt;br /&gt;
&lt;br /&gt;
=== description ===&lt;br /&gt;
: This can be used to provide a brief description of your add-on, and for pre-1.0 versions, let people know how playable it is. The description can be viewed by users by clicking on the Description button in the built-in client, or by moving their mouse over the add-on's icon in the web interface.&lt;br /&gt;
&lt;br /&gt;
=== dependencies ===&lt;br /&gt;
: An optional list of dependencies, which should be provided if your add-on relies on other user-made content to work properly. ([[#Dependency Key Example|See Example]])&lt;br /&gt;
&lt;br /&gt;
=== translate ===&lt;br /&gt;
: If set to '''true''', the add-on will be sent to and updated with [[WesCamp|WesCamp-i18n]]. (NOTE: this is a new and experimental function, which will automatically update the translations in your add-on. Make sure you make backups of your add-on in case of problems.)&lt;br /&gt;
&lt;br /&gt;
: You should make sure your add-on complies with some very specific [[WesCamp#How_to_contribute_to_this_Project|conventions]] required to ease the process for translators.&lt;br /&gt;
&lt;br /&gt;
=== type ===&lt;br /&gt;
: Indicates the type of the add-on, used for the downloads manager dialog. Possible values are:&lt;br /&gt;
&lt;br /&gt;
:* ''campaign'': single player campaign.&lt;br /&gt;
:* ''scenario'': single player scenario.&lt;br /&gt;
:* ''era'': multiplayer era.&lt;br /&gt;
:* ''faction'': multiplayer stand-alone faction, or add-on for other available era.&lt;br /&gt;
:* ''map_pack'': multiplayer map-pack.&lt;br /&gt;
:* ''campaign_mp'': multiplayer campaign.&lt;br /&gt;
:* ''scenario_mp'': multiplayer scenario. (See the note below.)&lt;br /&gt;
:* ''media'': miscellaneous resources for UMC authors/users, for example, music packs, packages of general-purpose WML, etc.&lt;br /&gt;
:* ''other'': The type to use when no other type fits.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If your add-on contains two or more separate multiplayer scenarios, use ''map_pack''.&lt;br /&gt;
&lt;br /&gt;
=== email ===&lt;br /&gt;
: Hidden e-mail address used by the server administrators to contact content authors in case of major issues. Again, this will only be seen by the server administrators and it is ''highly'' recommended that you provide one in case you need to be contacted about your add-on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The add-on server keeps track of some other information about uploaded content, including when they were uploaded, what languages they have been at least partly translated into, how large they are on the server and the number of times they have been downloaded. For more information about this you can read [[CampaignServerWML]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Dependency Key Example ===&lt;br /&gt;
&lt;br /&gt;
The following dependency key could be used when the add-on needs the ''Imperial_Era'' and ''Era_of_Myths'' to be installed before it will work properly:&lt;br /&gt;
&lt;br /&gt;
 dependencies=Imperial_Era,Era_of_Myths&lt;br /&gt;
&lt;br /&gt;
=== Version Key Examples ===&lt;br /&gt;
&lt;br /&gt;
The following are examples of '''good''' version values:&lt;br /&gt;
&lt;br /&gt;
 version=&amp;quot;1.5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 version=&amp;quot;0.11.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 version=&amp;quot;0.1.4beta&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 version=&amp;quot;1.5c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following are examples of '''bad''' version values:&lt;br /&gt;
&lt;br /&gt;
 version=&amp;quot;Beta1.5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 version=&amp;quot;Incomplete (0.3.4)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In both of the above examples the version number as read by the server will be '''0.0.0Beta1.5''' and '''0.0.0Incomplete (0.3.4)'''. You can clearly see why this will not be a good thing with the ''Update add-ons'' feature.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, here are some example version numbers and how they will be interpreted by the ''Update add-ons'' button. The number on the left will be considered an earlier number than the number on the right in each example.&lt;br /&gt;
&lt;br /&gt;
 0.5 &amp;lt; 1.0&lt;br /&gt;
&lt;br /&gt;
 1.5 &amp;lt; 1.5c&lt;br /&gt;
&lt;br /&gt;
 1.0 &amp;lt; 1.0.1&lt;br /&gt;
&lt;br /&gt;
 1.0c &amp;lt; 1.0.1a&lt;br /&gt;
&lt;br /&gt;
 1.0.1a &amp;lt; 1.0.1c&lt;br /&gt;
&lt;br /&gt;
 1.0 Final &amp;lt; 1.0.1 Beta&lt;br /&gt;
&lt;br /&gt;
=== Example .pbl File ===&lt;br /&gt;
&lt;br /&gt;
 title=&amp;quot;My Campaign&amp;quot;&lt;br /&gt;
 type=&amp;quot;campaign&amp;quot;&lt;br /&gt;
 icon=&amp;quot;misc/ball.png&amp;quot;&lt;br /&gt;
 version=&amp;quot;0.1.2&amp;quot;&lt;br /&gt;
 author=&amp;quot;Me, artwork by myself&amp;quot;&lt;br /&gt;
 passphrase=&amp;quot;This is like a password&amp;quot;&lt;br /&gt;
 description=&amp;quot;You get to kill a lot of bad guys. But only the first map is done.&amp;quot;&lt;br /&gt;
 email=&amp;quot;name@example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
* [[BuildingCampaignsThePBLFile]]&lt;br /&gt;
* [[CampaignServerWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Nlmdejonge</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EditingWesnoth&amp;diff=36667</id>
		<title>EditingWesnoth</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EditingWesnoth&amp;diff=36667"/>
		<updated>2010-05-27T04:41:32Z</updated>

		<summary type="html">&lt;p&gt;Nlmdejonge: /* Windows */ this section was messy, tried to clean it up/order it a bit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- single enters on this page are intentional --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game and User Directories ==&lt;br /&gt;
&lt;br /&gt;
Wherever you install the game, there will be a game data directory that contains, of course, the game's data.  This directory should have the following subdirectories: data, music, sounds, and images.  There are several others, but these are the important ones.  In this wiki, the terms &amp;quot;game data&amp;quot;, wesnoth/data,  or ./data refers to the wesnoth/data directory.  You normally do not need to modify these files, but you can if you want to modify a unit or something.&lt;br /&gt;
&lt;br /&gt;
The user data directory allows you to add custom content without modifying the game's own files.  Each OS puts its user data directory in a different place.  In this wiki, &amp;quot;user data&amp;quot;, ''userdata''/''subdirectory'', or (occasionally) ~wesnoth/ refer to this directory.&lt;br /&gt;
&lt;br /&gt;
=== Where is my '''game''' data directory? ===&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
Usually &amp;lt;I&amp;gt;C:\Program Files\Wesnoth\data&amp;lt;/I&amp;gt; but it will be different if you installed the game in a different location: look for the data folder in the folder where you installed the game.&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Downloaded from sourceforge: control-click on the application icon.  Select &amp;quot;Show Package Contents.&amp;quot;  Select &amp;quot;Contents&amp;quot; then &amp;quot;Resources. &lt;br /&gt;
&lt;br /&gt;
If you did not download from sourceforge what do you do? &lt;br /&gt;
&lt;br /&gt;
Command line build: /usr/local/share/wesnoth&lt;br /&gt;
&lt;br /&gt;
====Linux====&lt;br /&gt;
/usr/local/share/wesnoth &amp;lt;br&amp;gt;&lt;br /&gt;
From apt-get (Debian and Ubuntu) or emerge (Gentoo): /usr/share/games/wesnoth &amp;lt;br&amp;gt;&lt;br /&gt;
SUSE 10.0 (pre-installed): /usr/share/wesnoth&amp;lt;br&amp;gt;&lt;br /&gt;
Fedora 5 (Installed from yum repository RPM): /usr/share/wesnoth&amp;lt;br&amp;gt;&lt;br /&gt;
Mandriva 2006.0: /usr/share/games/wesnoth&amp;lt;br&amp;gt;&lt;br /&gt;
Slackware 12 (Installed from .tgz package at LinuxPackages.net): /usr/local/share/wesnoth&amp;lt;br&amp;gt;&lt;br /&gt;
If you don't find it, or if you use another distribution, try &amp;lt;code&amp;gt;find / -iname '*wesnoth*'&amp;lt;/code&amp;gt;. (as yourself, not as superuser)&lt;br /&gt;
&lt;br /&gt;
=== Where is my '''user''' data directory? ===&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
'''Before version 1.8:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;I&amp;gt;Program Files\Wesnoth\userdata&amp;lt;/I&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Version 1.8 and newer:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* in Windows XP: &amp;lt;I&amp;gt;MyDocuments\My Games\Wesnoth1.8&amp;lt;/I&amp;gt;&lt;br /&gt;
* in Vista: &amp;lt;I&amp;gt;Documents\My Games\Wesnoth1.8&amp;lt;/I&amp;gt; or &amp;lt;I&amp;gt;UserName\Documents\AppData\Local\VirtualStore&amp;lt;/I&amp;gt; (which may be a hidden folder)&lt;br /&gt;
&lt;br /&gt;
''Note: If you don't remember where you installed the game, right click on the game's shortcut, open properties, and click on the &amp;quot;Find target&amp;quot; button, then search for the &amp;quot;data&amp;quot; folder.''&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Downloaded from sourceforge: &amp;lt;br&amp;gt;&lt;br /&gt;
*Wesnoth 1.7.x and 1.8.x: ~/Library/Application Support/Wesnoth_1.x/ &amp;lt;br&amp;gt;&lt;br /&gt;
*Earlier versions: ~/Library/Preferences/Wesnoth &amp;lt;br&amp;gt;&lt;br /&gt;
Command line build: &amp;lt;br&amp;gt;&lt;br /&gt;
*~/.wesnoth (same as Linux; see below for details)&lt;br /&gt;
&lt;br /&gt;
====Linux====&lt;br /&gt;
~/.wesnoth &amp;lt;br&amp;gt;&lt;br /&gt;
For newer wesnoth versions it can also be ~/.wesnoth&amp;lt;version&amp;gt;. I.e. ~/.wesnoth1.6 &amp;lt;br&amp;gt;&lt;br /&gt;
If unsure you can check stdout of wesnoth (run from a terminal) on startup where the used directory is mentioned.&lt;br /&gt;
&lt;br /&gt;
== Game data ==&lt;br /&gt;
&lt;br /&gt;
The major directories you need to know about are wesnoth/data, wesnoth/data/core/units, wesnoth/data/campaigns, wesnoth/data/multiplayer, wesnoth/images and wesnoth/data/core/images&lt;br /&gt;
&lt;br /&gt;
Become familiar with what is in ./data/campaigns and ./data/multiplayer/scenarios.  These have the officially distributed campaigns and multiplayer maps.  If you ever want to examine or edit one of the scenario configuration files, this is where you would go.  For example, a common question is how a new player can give himself more turns or gold in scenario X.  This is where you would go to do that.&lt;br /&gt;
&lt;br /&gt;
Two very important directories are ./data/core/units/ and ./images.  You have the ability to drop new units or images in these directories and have the game recognize them.  When specifying an image for something, you do so relative to ./images.&lt;br /&gt;
&lt;br /&gt;
== User Data ==&lt;br /&gt;
The user data directory can do a lot of things.  The game looks here for several things:&lt;br /&gt;
* ''userdata''/data/campaigns - campaign configuration files and subdirectories&lt;br /&gt;
* ''userdata''/editor/maps - multiplayer standalone maps (map data only)&lt;br /&gt;
&lt;br /&gt;
The ''userdata''/data/campaigns directory is particularly useful.  A single configuration file here can selectively point to an entire subdirectory tree of units, images, sounds, scenarios, and macros.  This allows you to wall off parts.  Content included in the userdata units or images directories will be available globally whether you want it or not.&lt;br /&gt;
&lt;br /&gt;
For example, assume you have a campaign called MyCampaign.  This is what the ''userdata''/data/campaigns directory might look like:&lt;br /&gt;
* ''userdata''/data/campaigns/MyCampaign/ - your campaign's directory&lt;br /&gt;
* ''userdata''/data/campaigns/MyCampaign/_main.cfg - a text file containing your instructions for the game about how to load the campaign&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/scenarios&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/units&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/images&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/music&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/sounds&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/utils&lt;br /&gt;
&lt;br /&gt;
{{DevFeature}} Note that in 1.7.0 and later versions, ''add-ons'' replaces ''campaigns'' for these paths.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Create]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #5599FF; margin-top: 10px; margin-bottom: 5px; padding: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
- [[EditingWesnoth|English]] - [[Editer Wesnoth vf|Français]] -&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Create]]&lt;/div&gt;</summary>
		<author><name>Nlmdejonge</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=MultiplayerServerWML&amp;diff=36643</id>
		<title>MultiplayerServerWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=MultiplayerServerWML&amp;diff=36643"/>
		<updated>2010-05-25T22:33:06Z</updated>

		<summary type="html">&lt;p&gt;Nlmdejonge: /* The login procedure */ added a link to HashedPasswords.pdf; file shows how hashed passwords are being generated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Multiplayer Server WML =&lt;br /&gt;
This page describes the [[WML]] used to communicate with the multiplayer server for Wesnoth, [[wesnothd]].&lt;br /&gt;
&lt;br /&gt;
== The handshake ==&lt;br /&gt;
&lt;br /&gt;
The client sends four bytes, then the server replies with four bytes. To get a new connection number, the client will send these four bytes: 0x00 0x00 0x00 0x00. The server then sends back the connection number (wesnothd calls this number the &amp;quot;socket number&amp;quot;). If the handshake is successful, the server will be the first to send a data package. All packages are in [http://en.wikipedia.org/wiki/Gzip gzip] format and are preceded by four bytes that specify the size of the package to come. Below you'll find information about what data the (unzipped) packages contain.&lt;br /&gt;
&lt;br /&gt;
== The login procedure ==&lt;br /&gt;
&lt;br /&gt;
* server request (optional)&lt;br /&gt;
** '''[version]'''&lt;br /&gt;
&lt;br /&gt;
* client response&lt;br /&gt;
** '''[version]'''&lt;br /&gt;
*** '''version''': The client's version string.&lt;br /&gt;
&lt;br /&gt;
* server request&lt;br /&gt;
** '''[mustlogin]'''&lt;br /&gt;
&lt;br /&gt;
* client response&lt;br /&gt;
** '''[login]'''&lt;br /&gt;
*** '''username''': The username the client would like to have.&lt;br /&gt;
*** '''password_reminder''': If &amp;quot;yes&amp;quot; the client requests the server to send a password reminder for the provided username.&lt;br /&gt;
*** '''password''': The hashed password, created from the password and salt received from the server. More information about how this password is being generated, including a real world example, can be found in the file [http://forum.wesnoth.org/download/file.php?id=41145 HashedPasswords.pdf] (885 KiB).&lt;br /&gt;
&lt;br /&gt;
* server response&lt;br /&gt;
** '''[join_lobby]''' or&lt;br /&gt;
** '''[error]'''&lt;br /&gt;
*** '''message''': The error message.&lt;br /&gt;
*** '''password_request''': If not empty the server asks the client to provide a password for its desired username.&lt;br /&gt;
*** '''phpbb_encryption''': If &amp;quot;yes&amp;quot; the client will encrypt the password using phpbb's algorithm.&lt;br /&gt;
*** '''random_salt''': Random salt sent to the client for mixing with the password hash.&lt;br /&gt;
*** '''hash_seed''': Salt generated from the original hash that is required to recreate it.&lt;br /&gt;
*** '''salt''': Salt generated from the original hash that is required to recreate it.&lt;br /&gt;
*** '''force_confirmation''': Display an ok/cancel dialog with the content of the 'message' key.&lt;br /&gt;
&lt;br /&gt;
* server response&lt;br /&gt;
** '''[gamelist]'''&lt;br /&gt;
*** '''[game]''' (repeated)&lt;br /&gt;
**** '''id''': A unique id of the game.&lt;br /&gt;
**** '''name''': The title of the game.&lt;br /&gt;
**** '''mp_scenario''': The id of the scenario.&lt;br /&gt;
**** '''mp_era''': The id of the used era.&lt;br /&gt;
**** '''mp_use_map_settings''': Does the game use the map settings specified in the scenario.&lt;br /&gt;
**** '''mp_fog''': Does the game use fog.&lt;br /&gt;
**** '''mp_shroud''': Does the game use shroud.&lt;br /&gt;
**** '''mp_village_gold''': The number of gold per village.&lt;br /&gt;
**** '''experience_modifier''': The experience setting.&lt;br /&gt;
**** '''mp_countdown''': Does the game use a timer.&lt;br /&gt;
**** '''mp_countdown_reservoir_time''': Upper limit of the possibly available time.&lt;br /&gt;
**** '''mp_countdown_init_time''': Initial time.&lt;br /&gt;
**** '''mp_countdown_action_bonus''': Time bonus per action.&lt;br /&gt;
**** '''mp_countdown_turn_bonus''': Time bonus per turn.&lt;br /&gt;
**** '''map_data''': The map data. ''Notice: not sent to lobby if the game uses shroud''&lt;br /&gt;
**** '''hash''': The hash value of the map_data.&lt;br /&gt;
**** '''observer''': Are observers allowed or not.&lt;br /&gt;
**** '''human_sides''': The number of sides played by humans.&lt;br /&gt;
**** '''slots''': The number of vacant/max slots.&lt;br /&gt;
**** '''turn''': The current turn/max turn.&lt;br /&gt;
** '''[user]''' (repeated)&lt;br /&gt;
*** '''name''': The username of the player.&lt;br /&gt;
*** '''game_id''': The ID of the game the player is in (version 1.3.7+svn).&lt;br /&gt;
*** '''location''': The name of the game the player is in.&lt;br /&gt;
*** '''available''': &amp;quot;yes&amp;quot; if the player is in the lobby; &amp;quot;no&amp;quot; if in a game.&lt;br /&gt;
Many of the keys under [game] are described more indepth on the [[ScenarioWML]] page.&lt;br /&gt;
&lt;br /&gt;
== Error messages ==&lt;br /&gt;
&lt;br /&gt;
* '''[error]'''&lt;br /&gt;
** '''message''': The error message.&lt;br /&gt;
&lt;br /&gt;
== Chat (lobby and in-game) ==&lt;br /&gt;
&lt;br /&gt;
* '''[message]'''&lt;br /&gt;
** '''sender''': (optional - filled by the server) The sender of the message.&lt;br /&gt;
** '''message''': The message itself.&lt;br /&gt;
** '''room''': The room the message is from/to {{DevFeature}}&lt;br /&gt;
* '''[whisper]'''&lt;br /&gt;
** '''receiver''': The receiver of the whisper&lt;br /&gt;
** '''sender''': (optional - filled by the server) The sender of the whisper.&lt;br /&gt;
** '''message''': The message itself.&lt;br /&gt;
&lt;br /&gt;
== Room commands ==&lt;br /&gt;
Note: the room commands are in general {{DevFeature}} and are subject to change.&lt;br /&gt;
* '''[room_join]'''&lt;br /&gt;
** '''room''': The room name to join&lt;br /&gt;
** '''player''': (filled by server in response message sent to all room members) the player that joins the room&lt;br /&gt;
** '''[members]''': member list sent to the player that joined&lt;br /&gt;
*** '''[member]''': (repeated) members&lt;br /&gt;
**** '''name''': This member's name&lt;br /&gt;
* '''[room_part]'''&lt;br /&gt;
** '''room''': The room name to part (leave). Leaving the lobby is not allowed.&lt;br /&gt;
** '''player''': (filled by server in response message sent to all room members) the player that leaves the room&lt;br /&gt;
* '''[room_query]''': specific room-related queries.&lt;br /&gt;
** '''[rooms]''': List rooms created on the server, or&lt;br /&gt;
** '''[names]''': List members of a given room&lt;br /&gt;
*** '''room''': The room name (if applicable)&lt;br /&gt;
** '''[persist]''': Check or set room persistance&lt;br /&gt;
*** '''value''': (optional) set room persistance to this value (yes/no)&lt;br /&gt;
* '''[room_query_response]''': contains specific response to a room_query.&lt;br /&gt;
** '''message''': optional text message response&lt;br /&gt;
** '''room''': room name (if applicable)&lt;br /&gt;
** '''[rooms]''': room list&lt;br /&gt;
*** '''[room]''': (repeated) rooms&lt;br /&gt;
**** '''name''': This room's name&lt;br /&gt;
** '''[members]''': member list&lt;br /&gt;
*** '''[member]''': (repeated) members&lt;br /&gt;
**** '''name''': This member's name&lt;br /&gt;
&lt;br /&gt;
== Nick registration related commands (lobby and in-game) ==&lt;br /&gt;
&lt;br /&gt;
* '''[nickserv]'''&lt;br /&gt;
** '''[register]'''&lt;br /&gt;
*** '''password''': The password for the nick.&lt;br /&gt;
*** '''mail''': The email address for the nick.&lt;br /&gt;
** '''[drop]''': Drop this username.&lt;br /&gt;
** '''[set]''': Set a detail (e.g. email address) for this nick.&lt;br /&gt;
*** '''detail''': The detail, e.g. &amp;quot;mail&amp;quot;.&lt;br /&gt;
*** '''value''': The new value for this detail, e.g. &amp;quot;user@edomain&amp;quot;&lt;br /&gt;
** '''[info]''': Request info about another username.&lt;br /&gt;
*** '''name''': The username.&lt;br /&gt;
&lt;br /&gt;
== Updating the lobby state ==&lt;br /&gt;
&lt;br /&gt;
* '''[gamelist_diff]''': server message - basically a diff from two [gamelist]s; the keys listed are the ones that actually occure in practice&lt;br /&gt;
** '''index''': The index of a user.&lt;br /&gt;
** '''[insert_child]''' A new user logged on.&lt;br /&gt;
*** '''[user]'''&lt;br /&gt;
**** '''name''': The name of the user.&lt;br /&gt;
**** '''available''' &amp;quot;yes&amp;quot;&lt;br /&gt;
*** '''[delete_child]''' A user logged off.&lt;br /&gt;
** '''[change_child]'''&lt;br /&gt;
*** '''[user]'''&lt;br /&gt;
**** '''[insert]''': A user joined/left a game.&lt;br /&gt;
***** '''available''': &amp;quot;yes&amp;quot; when the user left a game. &amp;quot;no&amp;quot; when the user joined a game&lt;br /&gt;
***** '''location''': The name of the game the user joined.&lt;br /&gt;
**** '''[delete]'''&lt;br /&gt;
***** '''location''': &amp;quot;x&amp;quot; when a game was left.&lt;br /&gt;
*** '''[gamelist]'''&lt;br /&gt;
**** '''index''': Index of the game in question.&lt;br /&gt;
**** '''[insert_child]''': A game started.&lt;br /&gt;
***** '''[game]''' All the usual keys of [game] possible, see above.&lt;br /&gt;
**** '''[delete_child]''': A game ended.&lt;br /&gt;
***** '''[game]'''&lt;br /&gt;
**** '''[change_child]''': Something changed in a game.&lt;br /&gt;
***** '''[game]'''&lt;br /&gt;
****** '''[insert]'''&lt;br /&gt;
******* '''slots''': The number of free slots in the form: free/max slots&lt;br /&gt;
******* '''turn''': The turn number in the form: current turn/max turns&lt;br /&gt;
****** '''[delete]'''&lt;br /&gt;
******* '''map''': &amp;quot;x&amp;quot; comes with every ''turn'' or ''slots'' change for games with shroud&lt;br /&gt;
******* '''mp_scenario''': &amp;quot;x&amp;quot; comes with ''turn'' and ''slots'' changes for games with no scenario id&lt;br /&gt;
&lt;br /&gt;
* '''[observer]''' or '''[observer_quit]''': server message - players joining([observer_quit] - quitting the lobby &amp;quot;game&amp;quot;)/quitting([observer] - joining the lobby &amp;quot;game&amp;quot;) a game&lt;br /&gt;
** '''name''': Username of the player/observer.&lt;br /&gt;
&lt;br /&gt;
== Game setup (the phase from creation to start) ==&lt;br /&gt;
To create a game the client sends:&lt;br /&gt;
* '''[create_game]'''&lt;br /&gt;
** '''name''': The title of the game.&lt;br /&gt;
&lt;br /&gt;
followed by a message with the scenario options as under [game] (see above) plus the scenario data ([time], [era], [side], etc. see [[ScenarioWML]])&lt;br /&gt;
&lt;br /&gt;
* '''[join]'''&lt;br /&gt;
** '''id''': The id of the game.&lt;br /&gt;
** '''observe''': Join the game as an observer.&lt;br /&gt;
&lt;br /&gt;
* '''[scenario_diff]''': [[ScenarioWML]] diff (side changes, etc.)&lt;br /&gt;
&lt;br /&gt;
* '''[start_game]''': sent by the host to start a game&lt;br /&gt;
* '''[leave_game]''': sent by the client when it leaves a game; sent by the server to make a client leave a game&lt;br /&gt;
&lt;br /&gt;
== In-game communication ==&lt;br /&gt;
&lt;br /&gt;
* '''[store_next_scenario]''': sent by the host - the scenario data (see [[ScenarioWML]]) to advance to the next scenario&lt;br /&gt;
* '''[notify_next_scenario]''': sent by the server to tell players that the data for the next scenario is available&lt;br /&gt;
* '''[load_next_scenario]''': sent by the client to request the data for the next scenario&lt;br /&gt;
* '''[next_scenario]''': data for the next scenario (see [[ScenarioWML]]), sent by the server on request&lt;br /&gt;
&lt;br /&gt;
* '''[info]''': sent by the host on game end - info about the game state&lt;br /&gt;
** '''type''': &amp;quot;termination&amp;quot; &lt;br /&gt;
** '''condition''': the termination reason&lt;br /&gt;
&lt;br /&gt;
* '''[change_controller]''': a player (un)droids one of his sides or assigns control to someone else (The host can assign control for any side.)&lt;br /&gt;
** '''side''': the side to change controller&lt;br /&gt;
** '''player''': the nick of the player to take control&lt;br /&gt;
** '''controller''': the new controller: &amp;quot;human&amp;quot; or &amp;quot;human_ai&amp;quot;&lt;br /&gt;
** '''own_side''': &amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If a player leaves this is sent to the host for all sides he owned.&lt;br /&gt;
* '''side_drop''': The number of a side that dropped because a player left.&lt;br /&gt;
* '''controller''': The controller of that side. (&amp;quot;ai&amp;quot;, &amp;quot;network&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* '''[muteall]''': the host mutes/unmutes all observers - toggles&lt;br /&gt;
* '''[mute]''': the host mutes an observer - toggles&lt;br /&gt;
** '''username''': the username of the observer - if not specified the servers returns a list of muted usernames&lt;br /&gt;
* '''[kick]''' or '''[ban]''': the host kicks/bans a player/observer&lt;br /&gt;
** '''username''': the username of the player/observer&lt;br /&gt;
&lt;br /&gt;
* '''[turn]'''&lt;br /&gt;
** '''[command]''': (repeated) can contain all the tags you can find in a replay: [recruit], [move], [end_turn], etc.&lt;br /&gt;
*** '''[speak]'''&lt;br /&gt;
**** '''message''': text of the message&lt;br /&gt;
**** '''id''': the sender&lt;br /&gt;
**** '''team_name''': the name of the team the message is for - empty if it's a public message&lt;br /&gt;
&lt;br /&gt;
== Administrative commands ==&lt;br /&gt;
* '''[query]'''&lt;br /&gt;
** '''type''': The type of query. See [[ServerAdministration]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Nlmdejonge</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=UsefulLinks&amp;diff=36496</id>
		<title>UsefulLinks</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=UsefulLinks&amp;diff=36496"/>
		<updated>2010-05-14T02:29:15Z</updated>

		<summary type="html">&lt;p&gt;Nlmdejonge: /* Other Links */ added WSRSW&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Battle for Wesnoth ===&lt;br /&gt;
 Home Page                         http://www.wesnoth.org/&lt;br /&gt;
 Gna! Project Page                 http://svn.wesnoth.org/&lt;br /&gt;
 Page on TheLinuxGameTome          http://happypenguin.org/show?Battle%20for%20Wesnoth&lt;br /&gt;
 Freshmeat entry                   http://freshmeat.net/projects/wesnoth/&lt;br /&gt;
 Changelog                         http://changelog.wesnoth.org/ [http://stable-changelog.wesnoth.org stable]&lt;br /&gt;
 This wiki                         http://wiki.wesnoth.org/&lt;br /&gt;
 The manual                        http://manual.wesnoth.org/&lt;br /&gt;
 Translation statistics            http://gettext.wesnoth.org/&lt;br /&gt;
 Campaign statistics               http://stats.wesnoth.org/&lt;br /&gt;
 Add-on server web interface       http://addonlist.wesnoth.org/ [http://stable-addons.wesnoth.org stable] [http://dev-addons.wesnoth.org dev]&lt;br /&gt;
 Multiplayer server statistics     http://wesnothd.wesnoth.org/&lt;br /&gt;
                                   http://wesnoth.yi.org/statistics/ &lt;br /&gt;
 Multiplayer replays               http://replays.wesnoth.org&lt;br /&gt;
 Unit advancement tree             http://units.wesnoth.org/&lt;br /&gt;
                                   http://zapicm.freeshell.org/&lt;br /&gt;
 Forum for users and developers    http://forum.wesnoth.org/ [http://forum.wesnoth.org/search.php?search_id=newposts new posts]&lt;br /&gt;
 List of Frequently Proposed Ideas http://fpi.wesnoth.org/&lt;br /&gt;
 IRC channel (Freenode)            irc://irc.wesnoth.org/#wesnoth [http://webchat.freenode.net/?channels=wesnoth webchat]&lt;br /&gt;
 IRC logs                          http://irclog.wesnoth.org/&lt;br /&gt;
                                   http://www.wesnoth.org/irclogs/&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
 SVN web interface                 http://websvn.wesnoth.org/&lt;br /&gt;
 Subversion homepage               http://subversion.tigris.org/&lt;br /&gt;
 SVN book                          http://svnbook.org/&lt;br /&gt;
 Code documentation                http://devdocs.wesnoth.org/&lt;br /&gt;
 Mailing lists                     https://gna.org/mail/?group=wesnoth&lt;br /&gt;
 Bug/Feature tracker               http://bugs.wesnoth.org/&lt;br /&gt;
 Patch tracker                     http://patches.wesnoth.org/&lt;br /&gt;
 CIA statistics                    http://cia.vc/stats/project/wesnoth&lt;br /&gt;
 wesnoth.org server stats          http://collectd.wesnoth.org&lt;br /&gt;
 IRC channel (Freenode)            irc://irc.wesnoth.org/#wesnoth-dev [http://webchat.freenode.net/?channels=wesnoth-dev webchat]&lt;br /&gt;
&lt;br /&gt;
=== Other Links ===&lt;br /&gt;
 1vs1 Wesnoth ladder               http://ladder.subversiva.org/&lt;br /&gt;
 Cruzan.info  (a RAW map maker)    http://www.cruzan.info/wesnoth&lt;br /&gt;
 Voting on scenarios/campaigns     http://www.wsrsw.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Wesnoth Wiki]]&lt;/div&gt;</summary>
		<author><name>Nlmdejonge</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EditingWesnoth&amp;diff=36486</id>
		<title>EditingWesnoth</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EditingWesnoth&amp;diff=36486"/>
		<updated>2010-05-11T14:44:34Z</updated>

		<summary type="html">&lt;p&gt;Nlmdejonge: /* Mac OS X */ and 1.8.x&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- single enters on this page are intentional --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game and User Directories ==&lt;br /&gt;
&lt;br /&gt;
Wherever you install the game, there will be a game data directory that contains, of course, the game's data.  This directory should have the following subdirectories: data, music, sounds, and images.  There are several others, but these are the important ones.  In this wiki, the terms &amp;quot;game data&amp;quot;, wesnoth/data,  or ./data refers to the wesnoth/data directory.  You normally do not need to modify these files, but you can if you want to modify a unit or something.&lt;br /&gt;
&lt;br /&gt;
The user data directory allows you to add custom content without modifying the game's own files.  Each OS puts its user data directory in a different place.  In this wiki, &amp;quot;user data&amp;quot;, ''userdata''/''subdirectory'', or (occasionally) ~wesnoth/ refer to this directory.&lt;br /&gt;
&lt;br /&gt;
=== Where is my '''game''' data directory? ===&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
Usually &amp;lt;I&amp;gt;C:\Program Files\Wesnoth\data&amp;lt;/I&amp;gt; but it will be different if you installed the game in a different location: look for the data folder in the folder where you installed the game.&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Downloaded from sourceforge: control-click on the application icon.  Select &amp;quot;Show Package Contents.&amp;quot;  Select &amp;quot;Contents&amp;quot; then &amp;quot;Resources. &lt;br /&gt;
&lt;br /&gt;
If you did not download from sourceforge what do you do? &lt;br /&gt;
&lt;br /&gt;
Command line build: /usr/local/share/wesnoth&lt;br /&gt;
&lt;br /&gt;
====Linux====&lt;br /&gt;
/usr/local/share/wesnoth &amp;lt;br&amp;gt;&lt;br /&gt;
From apt-get (Debian and Ubuntu) or emerge (Gentoo): /usr/share/games/wesnoth &amp;lt;br&amp;gt;&lt;br /&gt;
SUSE 10.0 (pre-installed): /usr/share/wesnoth&amp;lt;br&amp;gt;&lt;br /&gt;
Fedora 5 (Installed from yum repository RPM): /usr/share/wesnoth&amp;lt;br&amp;gt;&lt;br /&gt;
Mandriva 2006.0: /usr/share/games/wesnoth&amp;lt;br&amp;gt;&lt;br /&gt;
Slackware 12 (Installed from .tgz package at LinuxPackages.net): /usr/local/share/wesnoth&amp;lt;br&amp;gt;&lt;br /&gt;
If you don't find it, or if you use another distribution, try &amp;lt;code&amp;gt;find / -iname '*wesnoth*'&amp;lt;/code&amp;gt;. (as yourself, not as superuser)&lt;br /&gt;
&lt;br /&gt;
=== Where is my '''user''' data directory? ===&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
&amp;lt;I&amp;gt;C:\Program Files\Wesnoth\userdata&amp;lt;/I&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;I&amp;gt;C:\Users\USERNAME\AppData\Local\VirtualStore\Program Files\Wesnoth\userdata&amp;lt;/I&amp;gt;&lt;br /&gt;
on Vista, which has virtual folders. The AppData folder is hidden.&lt;br /&gt;
Or if you don`t remember where you installed it right click on the game`s shortcut open properties and click on the `Find target` button,then search for the `data` folder.&lt;br /&gt;
&lt;br /&gt;
Starting from Wesnoth 1.8 it can be in &amp;lt;I&amp;gt;MyDocuments\My Games\Wesnoth1.8&amp;lt;/I&amp;gt; on Windows XP or &amp;lt;I&amp;gt;Documents\My Games\Wesnoth1.8&amp;lt;/I&amp;gt; on Vista.&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
For Wesnoth 1.7.x and 1.8.x: ~/Library/Application Support/Wesnoth_1.x/ &amp;lt;br&amp;gt;&lt;br /&gt;
Downloaded from sourceforge: ~/Library/Preferences/Wesnoth &amp;lt;br&amp;gt;&lt;br /&gt;
Command line build: ~/.wesnoth (same as Linux; see below for details)&lt;br /&gt;
&lt;br /&gt;
====Linux====&lt;br /&gt;
~/.wesnoth &amp;lt;br&amp;gt;&lt;br /&gt;
For newer wesnoth versions it can also be ~/.wesnoth&amp;lt;version&amp;gt;. I.e. ~/.wesnoth1.6 &amp;lt;br&amp;gt;&lt;br /&gt;
If unsure you can check stdout of wesnoth (run from a terminal) on startup where the used directory is mentioned.&lt;br /&gt;
&lt;br /&gt;
== Game data ==&lt;br /&gt;
&lt;br /&gt;
The major directories you need to know about are wesnoth/data, wesnoth/data/core/units, wesnoth/data/campaigns, wesnoth/data/multiplayer, wesnoth/images and wesnoth/data/core/images&lt;br /&gt;
&lt;br /&gt;
Become familiar with what is in ./data/campaigns and ./data/multiplayer/scenarios.  These have the officially distributed campaigns and multiplayer maps.  If you ever want to examine or edit one of the scenario configuration files, this is where you would go.  For example, a common question is how a new player can give himself more turns or gold in scenario X.  This is where you would go to do that.&lt;br /&gt;
&lt;br /&gt;
Two very important directories are ./data/core/units/ and ./images.  You have the ability to drop new units or images in these directories and have the game recognize them.  When specifying an image for something, you do so relative to ./images.&lt;br /&gt;
&lt;br /&gt;
== User Data ==&lt;br /&gt;
The user data directory can do a lot of things.  The game looks here for several things:&lt;br /&gt;
* ''userdata''/data/campaigns - campaign configuration files and subdirectories&lt;br /&gt;
* ''userdata''/editor/maps - multiplayer standalone maps (map data only)&lt;br /&gt;
&lt;br /&gt;
The ''userdata''/data/campaigns directory is particularly useful.  A single configuration file here can selectively point to an entire subdirectory tree of units, images, sounds, scenarios, and macros.  This allows you to wall off parts.  Content included in the userdata units or images directories will be available globally whether you want it or not.&lt;br /&gt;
&lt;br /&gt;
For example, assume you have a campaign called MyCampaign.  This is what the ''userdata''/data/campaigns directory might look like:&lt;br /&gt;
* ''userdata''/data/campaigns/MyCampaign/ - your campaign's directory&lt;br /&gt;
* ''userdata''/data/campaigns/MyCampaign/_main.cfg - a text file containing your instructions for the game about how to load the campaign&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/scenarios&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/units&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/images&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/music&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/sounds&lt;br /&gt;
** ''userdata''/data/campaigns/MyCampaign/utils&lt;br /&gt;
&lt;br /&gt;
{{DevFeature}} Note that in 1.7.0 and later versions, ''add-ons'' replaces ''campaigns'' for these paths.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Create]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #5599FF; margin-top: 10px; margin-bottom: 5px; padding: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
- [[EditingWesnoth|English]] - [[Editer Wesnoth vf|Français]] -&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Create]]&lt;/div&gt;</summary>
		<author><name>Nlmdejonge</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=MultiplayerServerWML&amp;diff=36425</id>
		<title>MultiplayerServerWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=MultiplayerServerWML&amp;diff=36425"/>
		<updated>2010-05-06T17:43:55Z</updated>

		<summary type="html">&lt;p&gt;Nlmdejonge: /* The handshake */ receded-&amp;gt;preceded&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Multiplayer Server WML =&lt;br /&gt;
This page describes the [[WML]] used to communicate with the multiplayer server for Wesnoth, [[wesnothd]].&lt;br /&gt;
&lt;br /&gt;
== The handshake ==&lt;br /&gt;
&lt;br /&gt;
The client sends four bytes, then the server replies with four bytes. To get a new connection number, the client will send these four bytes: 0x00 0x00 0x00 0x00. The server then sends back the connection number (wesnothd calls this number the &amp;quot;socket number&amp;quot;). If the handshake is successful, the server will be the first to send a data package. All packages are in [http://en.wikipedia.org/wiki/Gzip gzip] format and are preceded by four bytes that specify the size of the package to come. Below you'll find information about what data the (unzipped) packages contain.&lt;br /&gt;
&lt;br /&gt;
== The login procedure ==&lt;br /&gt;
&lt;br /&gt;
* server request (optional)&lt;br /&gt;
** '''[version]'''&lt;br /&gt;
&lt;br /&gt;
* client response&lt;br /&gt;
** '''[version]'''&lt;br /&gt;
*** '''version''': The client's version string.&lt;br /&gt;
&lt;br /&gt;
* server request&lt;br /&gt;
** '''[mustlogin]'''&lt;br /&gt;
&lt;br /&gt;
* client response&lt;br /&gt;
** '''[login]'''&lt;br /&gt;
*** '''username''': The username the client would like to have.&lt;br /&gt;
*** '''password_reminder''': If &amp;quot;yes&amp;quot; the client requests the server to send a password reminder for the provided username.&lt;br /&gt;
*** '''password''': The hashed password, created from the username, the password and salt received from the server.&lt;br /&gt;
&lt;br /&gt;
* server response&lt;br /&gt;
** '''[join_lobby]''' or&lt;br /&gt;
** '''[error]'''&lt;br /&gt;
*** '''message''': The error message.&lt;br /&gt;
*** '''password_request''': If not empty the server asks the client to provide a password for its desired username.&lt;br /&gt;
*** '''phpbb_encryption''': If &amp;quot;yes&amp;quot; the client will encrypt the password using phpbb's algorithm.&lt;br /&gt;
*** '''random_salt''': Random salt sent to the client for mixing with the password hash.&lt;br /&gt;
*** '''hash_seed''': Salt generated from the original hash that is required to recreate it.&lt;br /&gt;
*** '''salt''': Salt generated from the original hash that is required to recreate it.&lt;br /&gt;
*** '''force_confirmation''': Display an ok/cancel dialog with the content of the 'message' key.&lt;br /&gt;
&lt;br /&gt;
* server response&lt;br /&gt;
** '''[gamelist]'''&lt;br /&gt;
*** '''[game]''' (repeated)&lt;br /&gt;
**** '''id''': A unique id of the game.&lt;br /&gt;
**** '''name''': The title of the game.&lt;br /&gt;
**** '''mp_scenario''': The id of the scenario.&lt;br /&gt;
**** '''mp_era''': The id of the used era.&lt;br /&gt;
**** '''mp_use_map_settings''': Does the game use the map settings specified in the scenario.&lt;br /&gt;
**** '''mp_fog''': Does the game use fog.&lt;br /&gt;
**** '''mp_shroud''': Does the game use shroud.&lt;br /&gt;
**** '''mp_village_gold''': The number of gold per village.&lt;br /&gt;
**** '''experience_modifier''': The experience setting.&lt;br /&gt;
**** '''mp_countdown''': Does the game use a timer.&lt;br /&gt;
**** '''mp_countdown_reservoir_time''': Upper limit of the possibly available time.&lt;br /&gt;
**** '''mp_countdown_init_time''': Initial time.&lt;br /&gt;
**** '''mp_countdown_action_bonus''': Time bonus per action.&lt;br /&gt;
**** '''mp_countdown_turn_bonus''': Time bonus per turn.&lt;br /&gt;
**** '''map_data''': The map data. ''Notice: not sent to lobby if the game uses shroud''&lt;br /&gt;
**** '''hash''': The hash value of the map_data.&lt;br /&gt;
**** '''observer''': Are observers allowed or not.&lt;br /&gt;
**** '''human_sides''': The number of sides played by humans.&lt;br /&gt;
**** '''slots''': The number of vacant/max slots.&lt;br /&gt;
**** '''turn''': The current turn/max turn.&lt;br /&gt;
** '''[user]''' (repeated)&lt;br /&gt;
*** '''name''': The username of the player.&lt;br /&gt;
*** '''game_id''': The ID of the game the player is in (version 1.3.7+svn).&lt;br /&gt;
*** '''location''': The name of the game the player is in.&lt;br /&gt;
*** '''available''': &amp;quot;yes&amp;quot; if the player is in the lobby; &amp;quot;no&amp;quot; if in a game.&lt;br /&gt;
Many of the keys under [game] are described more indepth on the [[ScenarioWML]] page.&lt;br /&gt;
&lt;br /&gt;
== Error messages ==&lt;br /&gt;
&lt;br /&gt;
* '''[error]'''&lt;br /&gt;
** '''message''': The error message.&lt;br /&gt;
&lt;br /&gt;
== Chat (lobby and in-game) ==&lt;br /&gt;
&lt;br /&gt;
* '''[message]'''&lt;br /&gt;
** '''sender''': (optional - filled by the server) The sender of the message.&lt;br /&gt;
** '''message''': The message itself.&lt;br /&gt;
** '''room''': The room the message is from/to {{DevFeature}}&lt;br /&gt;
* '''[whisper]'''&lt;br /&gt;
** '''receiver''': The receiver of the whisper&lt;br /&gt;
** '''sender''': (optional - filled by the server) The sender of the whisper.&lt;br /&gt;
** '''message''': The message itself.&lt;br /&gt;
&lt;br /&gt;
== Room commands ==&lt;br /&gt;
Note: the room commands are in general {{DevFeature}} and are subject to change.&lt;br /&gt;
* '''[room_join]'''&lt;br /&gt;
** '''room''': The room name to join&lt;br /&gt;
** '''player''': (filled by server in response message sent to all room members) the player that joins the room&lt;br /&gt;
** '''[members]''': member list sent to the player that joined&lt;br /&gt;
*** '''[member]''': (repeated) members&lt;br /&gt;
**** '''name''': This member's name&lt;br /&gt;
* '''[room_part]'''&lt;br /&gt;
** '''room''': The room name to part (leave). Leaving the lobby is not allowed.&lt;br /&gt;
** '''player''': (filled by server in response message sent to all room members) the player that leaves the room&lt;br /&gt;
* '''[room_query]''': specific room-related queries.&lt;br /&gt;
** '''[rooms]''': List rooms created on the server, or&lt;br /&gt;
** '''[names]''': List members of a given room&lt;br /&gt;
*** '''room''': The room name (if applicable)&lt;br /&gt;
** '''[persist]''': Check or set room persistance&lt;br /&gt;
*** '''value''': (optional) set room persistance to this value (yes/no)&lt;br /&gt;
* '''[room_query_response]''': contains specific response to a room_query.&lt;br /&gt;
** '''message''': optional text message response&lt;br /&gt;
** '''room''': room name (if applicable)&lt;br /&gt;
** '''[rooms]''': room list&lt;br /&gt;
*** '''[room]''': (repeated) rooms&lt;br /&gt;
**** '''name''': This room's name&lt;br /&gt;
** '''[members]''': member list&lt;br /&gt;
*** '''[member]''': (repeated) members&lt;br /&gt;
**** '''name''': This member's name&lt;br /&gt;
&lt;br /&gt;
== Nick registration related commands (lobby and in-game) ==&lt;br /&gt;
&lt;br /&gt;
* '''[nickserv]'''&lt;br /&gt;
** '''[register]'''&lt;br /&gt;
*** '''password''': The password for the nick.&lt;br /&gt;
*** '''mail''': The email address for the nick.&lt;br /&gt;
** '''[drop]''': Drop this username.&lt;br /&gt;
** '''[set]''': Set a detail (e.g. email address) for this nick.&lt;br /&gt;
*** '''detail''': The detail, e.g. &amp;quot;mail&amp;quot;.&lt;br /&gt;
*** '''value''': The new value for this detail, e.g. &amp;quot;user@edomain&amp;quot;&lt;br /&gt;
** '''[info]''': Request info about another username.&lt;br /&gt;
*** '''name''': The username.&lt;br /&gt;
&lt;br /&gt;
== Updating the lobby state ==&lt;br /&gt;
&lt;br /&gt;
* '''[gamelist_diff]''': server message - basically a diff from two [gamelist]s; the keys listed are the ones that actually occure in practice&lt;br /&gt;
** '''index''': The index of a user.&lt;br /&gt;
** '''[insert_child]''' A new user logged on.&lt;br /&gt;
*** '''[user]'''&lt;br /&gt;
**** '''name''': The name of the user.&lt;br /&gt;
**** '''available''' &amp;quot;yes&amp;quot;&lt;br /&gt;
*** '''[delete_child]''' A user logged off.&lt;br /&gt;
** '''[change_child]'''&lt;br /&gt;
*** '''[user]'''&lt;br /&gt;
**** '''[insert]''': A user joined/left a game.&lt;br /&gt;
***** '''available''': &amp;quot;yes&amp;quot; when the user left a game. &amp;quot;no&amp;quot; when the user joined a game&lt;br /&gt;
***** '''location''': The name of the game the user joined.&lt;br /&gt;
**** '''[delete]'''&lt;br /&gt;
***** '''location''': &amp;quot;x&amp;quot; when a game was left.&lt;br /&gt;
*** '''[gamelist]'''&lt;br /&gt;
**** '''index''': Index of the game in question.&lt;br /&gt;
**** '''[insert_child]''': A game started.&lt;br /&gt;
***** '''[game]''' All the usual keys of [game] possible, see above.&lt;br /&gt;
**** '''[delete_child]''': A game ended.&lt;br /&gt;
***** '''[game]'''&lt;br /&gt;
**** '''[change_child]''': Something changed in a game.&lt;br /&gt;
***** '''[game]'''&lt;br /&gt;
****** '''[insert]'''&lt;br /&gt;
******* '''slots''': The number of free slots in the form: free/max slots&lt;br /&gt;
******* '''turn''': The turn number in the form: current turn/max turns&lt;br /&gt;
****** '''[delete]'''&lt;br /&gt;
******* '''map''': &amp;quot;x&amp;quot; comes with every ''turn'' or ''slots'' change for games with shroud&lt;br /&gt;
******* '''mp_scenario''': &amp;quot;x&amp;quot; comes with ''turn'' and ''slots'' changes for games with no scenario id&lt;br /&gt;
&lt;br /&gt;
* '''[observer]''' or '''[observer_quit]''': server message - players joining([observer_quit] - quitting the lobby &amp;quot;game&amp;quot;)/quitting([observer] - joining the lobby &amp;quot;game&amp;quot;) a game&lt;br /&gt;
** '''name''': Username of the player/observer.&lt;br /&gt;
&lt;br /&gt;
== Game setup (the phase from creation to start) ==&lt;br /&gt;
To create a game the client sends:&lt;br /&gt;
* '''[create_game]'''&lt;br /&gt;
** '''name''': The title of the game.&lt;br /&gt;
&lt;br /&gt;
followed by a message with the scenario options as under [game] (see above) plus the scenario data ([time], [era], [side], etc. see [[ScenarioWML]])&lt;br /&gt;
&lt;br /&gt;
* '''[join]'''&lt;br /&gt;
** '''id''': The id of the game.&lt;br /&gt;
** '''observe''': Join the game as an observer.&lt;br /&gt;
&lt;br /&gt;
* '''[scenario_diff]''': [[ScenarioWML]] diff (side changes, etc.)&lt;br /&gt;
&lt;br /&gt;
* '''[start_game]''': sent by the host to start a game&lt;br /&gt;
* '''[leave_game]''': sent by the client when it leaves a game; sent by the server to make a client leave a game&lt;br /&gt;
&lt;br /&gt;
== In-game communication ==&lt;br /&gt;
&lt;br /&gt;
* '''[store_next_scenario]''': sent by the host - the scenario data (see [[ScenarioWML]]) to advance to the next scenario&lt;br /&gt;
* '''[notify_next_scenario]''': sent by the server to tell players that the data for the next scenario is available&lt;br /&gt;
* '''[load_next_scenario]''': sent by the client to request the data for the next scenario&lt;br /&gt;
* '''[next_scenario]''': data for the next scenario (see [[ScenarioWML]]), sent by the server on request&lt;br /&gt;
&lt;br /&gt;
* '''[info]''': sent by the host on game end - info about the game state&lt;br /&gt;
** '''type''': &amp;quot;termination&amp;quot; &lt;br /&gt;
** '''condition''': the termination reason&lt;br /&gt;
&lt;br /&gt;
* '''[change_controller]''': a player (un)droids one of his sides or assigns control to someone else (The host can assign control for any side.)&lt;br /&gt;
** '''side''': the side to change controller&lt;br /&gt;
** '''player''': the nick of the player to take control&lt;br /&gt;
** '''controller''': the new controller: &amp;quot;human&amp;quot; or &amp;quot;human_ai&amp;quot;&lt;br /&gt;
** '''own_side''': &amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If a player leaves this is sent to the host for all sides he owned.&lt;br /&gt;
* '''side_drop''': The number of a side that dropped because a player left.&lt;br /&gt;
* '''controller''': The controller of that side. (&amp;quot;ai&amp;quot;, &amp;quot;network&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* '''[muteall]''': the host mutes/unmutes all observers - toggles&lt;br /&gt;
* '''[mute]''': the host mutes an observer - toggles&lt;br /&gt;
** '''username''': the username of the observer - if not specified the servers returns a list of muted usernames&lt;br /&gt;
* '''[kick]''' or '''[ban]''': the host kicks/bans a player/observer&lt;br /&gt;
** '''username''': the username of the player/observer&lt;br /&gt;
&lt;br /&gt;
* '''[turn]'''&lt;br /&gt;
** '''[command]''': (repeated) can contain all the tags you can find in a replay: [recruit], [move], [end_turn], etc.&lt;br /&gt;
*** '''[speak]'''&lt;br /&gt;
**** '''message''': text of the message&lt;br /&gt;
**** '''id''': the sender&lt;br /&gt;
**** '''team_name''': the name of the team the message is for - empty if it's a public message&lt;br /&gt;
&lt;br /&gt;
== Administrative commands ==&lt;br /&gt;
* '''[query]'''&lt;br /&gt;
** '''type''': The type of query. See [[ServerAdministration]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Nlmdejonge</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=MultiplayerServerWML&amp;diff=36424</id>
		<title>MultiplayerServerWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=MultiplayerServerWML&amp;diff=36424"/>
		<updated>2010-05-06T17:38:07Z</updated>

		<summary type="html">&lt;p&gt;Nlmdejonge: added information about the handshake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Multiplayer Server WML =&lt;br /&gt;
This page describes the [[WML]] used to communicate with the multiplayer server for Wesnoth, [[wesnothd]].&lt;br /&gt;
&lt;br /&gt;
== The handshake ==&lt;br /&gt;
&lt;br /&gt;
The client sends four bytes, then the server replies with four bytes. To get a new connection number, the client will send these four bytes: 0x00 0x00 0x00 0x00. The server then sends back the connection number (wesnothd calls this number the &amp;quot;socket number&amp;quot;). If the handshake is successful, the server will be the first to send a data package. All packages are in [http://en.wikipedia.org/wiki/Gzip gzip] format and are receded by four bytes that specify the size of the package to come. Below you'll find information about what data the (unzipped) packages contain.&lt;br /&gt;
&lt;br /&gt;
== The login procedure ==&lt;br /&gt;
&lt;br /&gt;
* server request (optional)&lt;br /&gt;
** '''[version]'''&lt;br /&gt;
&lt;br /&gt;
* client response&lt;br /&gt;
** '''[version]'''&lt;br /&gt;
*** '''version''': The client's version string.&lt;br /&gt;
&lt;br /&gt;
* server request&lt;br /&gt;
** '''[mustlogin]'''&lt;br /&gt;
&lt;br /&gt;
* client response&lt;br /&gt;
** '''[login]'''&lt;br /&gt;
*** '''username''': The username the client would like to have.&lt;br /&gt;
*** '''password_reminder''': If &amp;quot;yes&amp;quot; the client requests the server to send a password reminder for the provided username.&lt;br /&gt;
*** '''password''': The hashed password, created from the username, the password and salt received from the server.&lt;br /&gt;
&lt;br /&gt;
* server response&lt;br /&gt;
** '''[join_lobby]''' or&lt;br /&gt;
** '''[error]'''&lt;br /&gt;
*** '''message''': The error message.&lt;br /&gt;
*** '''password_request''': If not empty the server asks the client to provide a password for its desired username.&lt;br /&gt;
*** '''phpbb_encryption''': If &amp;quot;yes&amp;quot; the client will encrypt the password using phpbb's algorithm.&lt;br /&gt;
*** '''random_salt''': Random salt sent to the client for mixing with the password hash.&lt;br /&gt;
*** '''hash_seed''': Salt generated from the original hash that is required to recreate it.&lt;br /&gt;
*** '''salt''': Salt generated from the original hash that is required to recreate it.&lt;br /&gt;
*** '''force_confirmation''': Display an ok/cancel dialog with the content of the 'message' key.&lt;br /&gt;
&lt;br /&gt;
* server response&lt;br /&gt;
** '''[gamelist]'''&lt;br /&gt;
*** '''[game]''' (repeated)&lt;br /&gt;
**** '''id''': A unique id of the game.&lt;br /&gt;
**** '''name''': The title of the game.&lt;br /&gt;
**** '''mp_scenario''': The id of the scenario.&lt;br /&gt;
**** '''mp_era''': The id of the used era.&lt;br /&gt;
**** '''mp_use_map_settings''': Does the game use the map settings specified in the scenario.&lt;br /&gt;
**** '''mp_fog''': Does the game use fog.&lt;br /&gt;
**** '''mp_shroud''': Does the game use shroud.&lt;br /&gt;
**** '''mp_village_gold''': The number of gold per village.&lt;br /&gt;
**** '''experience_modifier''': The experience setting.&lt;br /&gt;
**** '''mp_countdown''': Does the game use a timer.&lt;br /&gt;
**** '''mp_countdown_reservoir_time''': Upper limit of the possibly available time.&lt;br /&gt;
**** '''mp_countdown_init_time''': Initial time.&lt;br /&gt;
**** '''mp_countdown_action_bonus''': Time bonus per action.&lt;br /&gt;
**** '''mp_countdown_turn_bonus''': Time bonus per turn.&lt;br /&gt;
**** '''map_data''': The map data. ''Notice: not sent to lobby if the game uses shroud''&lt;br /&gt;
**** '''hash''': The hash value of the map_data.&lt;br /&gt;
**** '''observer''': Are observers allowed or not.&lt;br /&gt;
**** '''human_sides''': The number of sides played by humans.&lt;br /&gt;
**** '''slots''': The number of vacant/max slots.&lt;br /&gt;
**** '''turn''': The current turn/max turn.&lt;br /&gt;
** '''[user]''' (repeated)&lt;br /&gt;
*** '''name''': The username of the player.&lt;br /&gt;
*** '''game_id''': The ID of the game the player is in (version 1.3.7+svn).&lt;br /&gt;
*** '''location''': The name of the game the player is in.&lt;br /&gt;
*** '''available''': &amp;quot;yes&amp;quot; if the player is in the lobby; &amp;quot;no&amp;quot; if in a game.&lt;br /&gt;
Many of the keys under [game] are described more indepth on the [[ScenarioWML]] page.&lt;br /&gt;
&lt;br /&gt;
== Error messages ==&lt;br /&gt;
&lt;br /&gt;
* '''[error]'''&lt;br /&gt;
** '''message''': The error message.&lt;br /&gt;
&lt;br /&gt;
== Chat (lobby and in-game) ==&lt;br /&gt;
&lt;br /&gt;
* '''[message]'''&lt;br /&gt;
** '''sender''': (optional - filled by the server) The sender of the message.&lt;br /&gt;
** '''message''': The message itself.&lt;br /&gt;
** '''room''': The room the message is from/to {{DevFeature}}&lt;br /&gt;
* '''[whisper]'''&lt;br /&gt;
** '''receiver''': The receiver of the whisper&lt;br /&gt;
** '''sender''': (optional - filled by the server) The sender of the whisper.&lt;br /&gt;
** '''message''': The message itself.&lt;br /&gt;
&lt;br /&gt;
== Room commands ==&lt;br /&gt;
Note: the room commands are in general {{DevFeature}} and are subject to change.&lt;br /&gt;
* '''[room_join]'''&lt;br /&gt;
** '''room''': The room name to join&lt;br /&gt;
** '''player''': (filled by server in response message sent to all room members) the player that joins the room&lt;br /&gt;
** '''[members]''': member list sent to the player that joined&lt;br /&gt;
*** '''[member]''': (repeated) members&lt;br /&gt;
**** '''name''': This member's name&lt;br /&gt;
* '''[room_part]'''&lt;br /&gt;
** '''room''': The room name to part (leave). Leaving the lobby is not allowed.&lt;br /&gt;
** '''player''': (filled by server in response message sent to all room members) the player that leaves the room&lt;br /&gt;
* '''[room_query]''': specific room-related queries.&lt;br /&gt;
** '''[rooms]''': List rooms created on the server, or&lt;br /&gt;
** '''[names]''': List members of a given room&lt;br /&gt;
*** '''room''': The room name (if applicable)&lt;br /&gt;
** '''[persist]''': Check or set room persistance&lt;br /&gt;
*** '''value''': (optional) set room persistance to this value (yes/no)&lt;br /&gt;
* '''[room_query_response]''': contains specific response to a room_query.&lt;br /&gt;
** '''message''': optional text message response&lt;br /&gt;
** '''room''': room name (if applicable)&lt;br /&gt;
** '''[rooms]''': room list&lt;br /&gt;
*** '''[room]''': (repeated) rooms&lt;br /&gt;
**** '''name''': This room's name&lt;br /&gt;
** '''[members]''': member list&lt;br /&gt;
*** '''[member]''': (repeated) members&lt;br /&gt;
**** '''name''': This member's name&lt;br /&gt;
&lt;br /&gt;
== Nick registration related commands (lobby and in-game) ==&lt;br /&gt;
&lt;br /&gt;
* '''[nickserv]'''&lt;br /&gt;
** '''[register]'''&lt;br /&gt;
*** '''password''': The password for the nick.&lt;br /&gt;
*** '''mail''': The email address for the nick.&lt;br /&gt;
** '''[drop]''': Drop this username.&lt;br /&gt;
** '''[set]''': Set a detail (e.g. email address) for this nick.&lt;br /&gt;
*** '''detail''': The detail, e.g. &amp;quot;mail&amp;quot;.&lt;br /&gt;
*** '''value''': The new value for this detail, e.g. &amp;quot;user@edomain&amp;quot;&lt;br /&gt;
** '''[info]''': Request info about another username.&lt;br /&gt;
*** '''name''': The username.&lt;br /&gt;
&lt;br /&gt;
== Updating the lobby state ==&lt;br /&gt;
&lt;br /&gt;
* '''[gamelist_diff]''': server message - basically a diff from two [gamelist]s; the keys listed are the ones that actually occure in practice&lt;br /&gt;
** '''index''': The index of a user.&lt;br /&gt;
** '''[insert_child]''' A new user logged on.&lt;br /&gt;
*** '''[user]'''&lt;br /&gt;
**** '''name''': The name of the user.&lt;br /&gt;
**** '''available''' &amp;quot;yes&amp;quot;&lt;br /&gt;
*** '''[delete_child]''' A user logged off.&lt;br /&gt;
** '''[change_child]'''&lt;br /&gt;
*** '''[user]'''&lt;br /&gt;
**** '''[insert]''': A user joined/left a game.&lt;br /&gt;
***** '''available''': &amp;quot;yes&amp;quot; when the user left a game. &amp;quot;no&amp;quot; when the user joined a game&lt;br /&gt;
***** '''location''': The name of the game the user joined.&lt;br /&gt;
**** '''[delete]'''&lt;br /&gt;
***** '''location''': &amp;quot;x&amp;quot; when a game was left.&lt;br /&gt;
*** '''[gamelist]'''&lt;br /&gt;
**** '''index''': Index of the game in question.&lt;br /&gt;
**** '''[insert_child]''': A game started.&lt;br /&gt;
***** '''[game]''' All the usual keys of [game] possible, see above.&lt;br /&gt;
**** '''[delete_child]''': A game ended.&lt;br /&gt;
***** '''[game]'''&lt;br /&gt;
**** '''[change_child]''': Something changed in a game.&lt;br /&gt;
***** '''[game]'''&lt;br /&gt;
****** '''[insert]'''&lt;br /&gt;
******* '''slots''': The number of free slots in the form: free/max slots&lt;br /&gt;
******* '''turn''': The turn number in the form: current turn/max turns&lt;br /&gt;
****** '''[delete]'''&lt;br /&gt;
******* '''map''': &amp;quot;x&amp;quot; comes with every ''turn'' or ''slots'' change for games with shroud&lt;br /&gt;
******* '''mp_scenario''': &amp;quot;x&amp;quot; comes with ''turn'' and ''slots'' changes for games with no scenario id&lt;br /&gt;
&lt;br /&gt;
* '''[observer]''' or '''[observer_quit]''': server message - players joining([observer_quit] - quitting the lobby &amp;quot;game&amp;quot;)/quitting([observer] - joining the lobby &amp;quot;game&amp;quot;) a game&lt;br /&gt;
** '''name''': Username of the player/observer.&lt;br /&gt;
&lt;br /&gt;
== Game setup (the phase from creation to start) ==&lt;br /&gt;
To create a game the client sends:&lt;br /&gt;
* '''[create_game]'''&lt;br /&gt;
** '''name''': The title of the game.&lt;br /&gt;
&lt;br /&gt;
followed by a message with the scenario options as under [game] (see above) plus the scenario data ([time], [era], [side], etc. see [[ScenarioWML]])&lt;br /&gt;
&lt;br /&gt;
* '''[join]'''&lt;br /&gt;
** '''id''': The id of the game.&lt;br /&gt;
** '''observe''': Join the game as an observer.&lt;br /&gt;
&lt;br /&gt;
* '''[scenario_diff]''': [[ScenarioWML]] diff (side changes, etc.)&lt;br /&gt;
&lt;br /&gt;
* '''[start_game]''': sent by the host to start a game&lt;br /&gt;
* '''[leave_game]''': sent by the client when it leaves a game; sent by the server to make a client leave a game&lt;br /&gt;
&lt;br /&gt;
== In-game communication ==&lt;br /&gt;
&lt;br /&gt;
* '''[store_next_scenario]''': sent by the host - the scenario data (see [[ScenarioWML]]) to advance to the next scenario&lt;br /&gt;
* '''[notify_next_scenario]''': sent by the server to tell players that the data for the next scenario is available&lt;br /&gt;
* '''[load_next_scenario]''': sent by the client to request the data for the next scenario&lt;br /&gt;
* '''[next_scenario]''': data for the next scenario (see [[ScenarioWML]]), sent by the server on request&lt;br /&gt;
&lt;br /&gt;
* '''[info]''': sent by the host on game end - info about the game state&lt;br /&gt;
** '''type''': &amp;quot;termination&amp;quot; &lt;br /&gt;
** '''condition''': the termination reason&lt;br /&gt;
&lt;br /&gt;
* '''[change_controller]''': a player (un)droids one of his sides or assigns control to someone else (The host can assign control for any side.)&lt;br /&gt;
** '''side''': the side to change controller&lt;br /&gt;
** '''player''': the nick of the player to take control&lt;br /&gt;
** '''controller''': the new controller: &amp;quot;human&amp;quot; or &amp;quot;human_ai&amp;quot;&lt;br /&gt;
** '''own_side''': &amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If a player leaves this is sent to the host for all sides he owned.&lt;br /&gt;
* '''side_drop''': The number of a side that dropped because a player left.&lt;br /&gt;
* '''controller''': The controller of that side. (&amp;quot;ai&amp;quot;, &amp;quot;network&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* '''[muteall]''': the host mutes/unmutes all observers - toggles&lt;br /&gt;
* '''[mute]''': the host mutes an observer - toggles&lt;br /&gt;
** '''username''': the username of the observer - if not specified the servers returns a list of muted usernames&lt;br /&gt;
* '''[kick]''' or '''[ban]''': the host kicks/bans a player/observer&lt;br /&gt;
** '''username''': the username of the player/observer&lt;br /&gt;
&lt;br /&gt;
* '''[turn]'''&lt;br /&gt;
** '''[command]''': (repeated) can contain all the tags you can find in a replay: [recruit], [move], [end_turn], etc.&lt;br /&gt;
*** '''[speak]'''&lt;br /&gt;
**** '''message''': text of the message&lt;br /&gt;
**** '''id''': the sender&lt;br /&gt;
**** '''team_name''': the name of the team the message is for - empty if it's a public message&lt;br /&gt;
&lt;br /&gt;
== Administrative commands ==&lt;br /&gt;
* '''[query]'''&lt;br /&gt;
** '''type''': The type of query. See [[ServerAdministration]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Nlmdejonge</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Talk:Competitive_Gaming&amp;diff=30745</id>
		<title>Talk:Competitive Gaming</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Talk:Competitive_Gaming&amp;diff=30745"/>
		<updated>2009-06-18T11:29:25Z</updated>

		<summary type="html">&lt;p&gt;Nlmdejonge: New page: == Using an AI == Another way to cheat, apart from those mentioned under ''The Facts'' would be to use any kind of AI, for example that which comes with Wesnoth itself. -~~~~&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using an AI ==&lt;br /&gt;
Another way to cheat, apart from those mentioned under ''The Facts'' would be to use any kind of AI, for example that which comes with Wesnoth itself. -[[User:Nlmdejonge|Nlmdejonge]] 11:29, 18 June 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Nlmdejonge</name></author>
		
	</entry>
</feed>